diff --git a/.github/workflows/opttest.yml b/.github/workflows/opttest.yml deleted file mode 100644 index 23e10c8a302..00000000000 --- a/.github/workflows/opttest.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Optional Tests - -on: - workflow_dispatch: - schedule: - - cron: "0 0 */10 * *" - -jobs: - optional-tests: - continue-on-error: false - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, windows-latest] - java: [21] - name: ["proof_references", "symbolic_execution"] - runs-on: ${{matrix.os}} - steps: - - uses: actions/checkout@v7 - - name: Set up JDK ${{matrix.java}} - uses: actions/setup-java@v5 - with: - java-version: ${{matrix.java}} - distribution: 'corretto' - cache: 'gradle' - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v6 - - name: Test with Gradle - run: ./gradlew --continue :key.core.${{ matrix.name }}:test - - - name: Upload test results - uses: actions/upload-artifact@v7 - if: success() || failure() - with: - name: test-results-${{ matrix.os }}-${{ matrix.name }} - path: | - **/build/test-results/*/*.xml - **/build/reports/ diff --git a/.github/workflows/release-tests.yml b/.github/workflows/release-tests.yml index 0ed9fa78668..fd4203a6102 100644 --- a/.github/workflows/release-tests.yml +++ b/.github/workflows/release-tests.yml @@ -50,10 +50,7 @@ jobs: run: ./gradlew --parallel assemble - name: Test mandatory modules with Gradle - run: ./gradlew test --continue -x :key.core.symbolic_execution:test -x :key.core.proof_references:test - - - name: Test optional modules with Gradle - run: ./gradlew :key.core.symbolic_execution:test -x :key.core.proof_references:test + run: ./gradlew test --continue - name: Upload test results uses: actions/upload-artifact@v7 diff --git a/build.gradle b/build.gradle index beedf004aa4..c389f1c0a31 100644 --- a/build.gradle +++ b/build.gradle @@ -419,10 +419,7 @@ tasks.register('alldoc', Javadoc){ group("keyext.ui.testgen", "de.uka.ilkd.key.gui.testgen") group("keyext.exploration","org.key_project.exploration") group("keyext.caching", "de.uka.ilkd.key.gui.plugins.caching") - group("key.core.symbolic_execution",// "de.uka.ilkd.key.proof", - "de.uka.ilkd.key.rule.label", "de.uka.ilkd.key.strategy", - "de.uka.ilkd.key.symbolic_execution") - group("key.core.proof_references", "de.uka.ilkd.key.proof_references")*/ + */ } } @@ -449,4 +446,4 @@ def envOrPropertyValue(String key) { }else{ return project.properties.getOrDefault(key, "") } -} \ No newline at end of file +} diff --git a/key.core.proof_references/build.gradle b/key.core.proof_references/build.gradle deleted file mode 100644 index 3c857464238..00000000000 --- a/key.core.proof_references/build.gradle +++ /dev/null @@ -1,5 +0,0 @@ -description = "API for using KeY for maintaining references between objects in proofs" - -dependencies { - implementation project(":key.core") -} diff --git a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/ProofReferenceUtil.java b/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/ProofReferenceUtil.java deleted file mode 100644 index f6f98d9d91a..00000000000 --- a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/ProofReferenceUtil.java +++ /dev/null @@ -1,214 +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.proof_references; - -import java.util.LinkedHashSet; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.ProofVisitor; -import de.uka.ilkd.key.proof_references.analyst.*; -import de.uka.ilkd.key.proof_references.reference.IProofReference; - -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.CollectionUtil; - -/** - *

- * This class provides static methods to compute proof references. A proof reference is a source - * code member used during proof like methods, instance or class variables or operation contracts. - *

- *

- * A found proof reference is an instance of {@link IProofReference}. - *

- *

- * Proof references are computed for each {@link Node} separately based on the applied rule. - * Instances of {@link IProofReferencesAnalyst} are used to implement the rule specific extraction - * of such references. - *

- *

- * This functionality is used by the Eclipse Projects like Visual DbC. - *

- * - * @author Martin Hentschel - * @see IProofReference - * @see IProofReferencesAnalyst - */ -public final class ProofReferenceUtil { - /** - * The default {@link IProofReferencesAnalyst}s. - */ - public static final ImmutableList DEFAULT_ANALYSTS = - ImmutableList.nil().append( - new MethodBodyExpandProofReferencesAnalyst(), new MethodCallProofReferencesAnalyst(), - new ContractProofReferencesAnalyst(), new ProgramVariableReferencesAnalyst(), - new ClassAxiomAndInvariantProofReferencesAnalyst()); - - /** - * Forbid instances. - */ - private ProofReferenceUtil() { - } - - /** - *

- * Computes all proof references in the given {@link Proof} by iterating over all {@link Node}s - * in breath first order. - *

- *

- * Changes during computation of the proof tree are not detected and should be avoided. - * Otherwise it is possible that the result is wrong. - *

- * - * @param proof The {@link Proof} to compute its references. - * @return The found {@link IProofReference}s. - */ - public static LinkedHashSet> computeProofReferences(Proof proof) { - return computeProofReferences(proof, DEFAULT_ANALYSTS); - } - - /** - *

- * Computes all proof references in the given {@link Proof} by iterating over all {@link Node}s - * in breath first order. - *

- *

- * Changes during computation of the proof tree are not detected and should be avoided. - * Otherwise it is possible that the result is wrong. - *

- * - * @param proof The {@link Proof} to compute its references. - * @param analysts The {@link IProofReferencesAnalyst} to use. - * @return The found {@link IProofReference}s. - */ - public static LinkedHashSet> computeProofReferences(Proof proof, - ImmutableList analysts) { - if (proof != null) { - Services services = proof.getServices(); - ReferenceAnalaystProofVisitor visitor = - new ReferenceAnalaystProofVisitor(services, analysts); - proof.breadthFirstSearch(proof.root(), visitor); - return visitor.getResult(); - } else { - return new LinkedHashSet<>(); - } - } - - /** - * Utility class used by {@link ProofReferenceUtil}. - * - * @author Martin Hentschel - */ - private static class ReferenceAnalaystProofVisitor implements ProofVisitor { - /** - * The {@link Services} to use. - */ - private final Services services; - - /** - * The {@link IProofReferencesAnalyst}s to use. - */ - private final ImmutableList analysts; - - /** - * The result. - */ - private final LinkedHashSet> result = - new LinkedHashSet<>(); - - /** - * Constructor. - * - * @param services The {@link Services} to use. - * @param analysts The {@link IProofReferencesAnalyst}s to use. - */ - public ReferenceAnalaystProofVisitor(Services services, - ImmutableList analysts) { - this.services = services; - this.analysts = analysts; - } - - /** - * {@inheritDoc} - */ - @Override - public void visit(Proof proof, Node visitedNode) { - merge(result, computeProofReferences(visitedNode, services, analysts)); - } - - /** - * Returns the result. - * - * @return The result. - */ - public LinkedHashSet> getResult() { - return result; - } - } - - /** - * Computes the {@link IProofReference} of the given {@link Node}. - * - * @param node The {@link Node} to compute its {@link IProofReference}s. - * @param services The {@link Services} to use. - * @return The found {@link IProofReference}s. - */ - public static LinkedHashSet> computeProofReferences(Node node, - Services services) { - return computeProofReferences(node, services, DEFAULT_ANALYSTS); - } - - /** - * Computes the {@link IProofReference} of the given {@link Node}. - * - * @param node The {@link Node} to compute its {@link IProofReference}s. - * @param services The {@link Services} to use. - * @param analysts The {@link IProofReferencesAnalyst} to use. - * @return The found {@link IProofReference}s. - */ - public static LinkedHashSet> computeProofReferences(Node node, - Services services, ImmutableList analysts) { - LinkedHashSet> result = new LinkedHashSet<>(); - if (node != null && analysts != null) { - for (IProofReferencesAnalyst analyst : analysts) { - LinkedHashSet> analystResult = - analyst.computeReferences(node, services); - if (analystResult != null) { - merge(result, analystResult); - } - } - } - return result; - } - - /** - * Merges the {@link IProofReference}s to add into the target. - * - * @param target The target to add to. - * @param toAdd The {@link IProofReference}s to add. - */ - public static void merge(LinkedHashSet> target, - LinkedHashSet> toAdd) { - for (IProofReference reference : toAdd) { - merge(target, reference); - } - } - - /** - * Merges the {@link IProofReference} into the target: - * - * @param target The target to add to. - * @param reference The {@link IProofReference} to add. - */ - public static void merge(LinkedHashSet> target, - final IProofReference reference) { - if (!target.add(reference)) { - // Reference exists before, so merge nodes of both references. - IProofReference existingFirst = - CollectionUtil.search(target, element -> element.equals(reference)); - existingFirst.addNodes(reference.getNodes()); - } - } -} diff --git a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/ClassAxiomAndInvariantProofReferencesAnalyst.java b/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/ClassAxiomAndInvariantProofReferencesAnalyst.java deleted file mode 100644 index 6624776c239..00000000000 --- a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/ClassAxiomAndInvariantProofReferencesAnalyst.java +++ /dev/null @@ -1,118 +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.proof_references.analyst; - -import java.util.Iterator; -import java.util.LinkedHashSet; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.logic.op.IObserverFunction; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofOblInput; -import de.uka.ilkd.key.proof_references.reference.DefaultProofReference; -import de.uka.ilkd.key.proof_references.reference.IProofReference; -import de.uka.ilkd.key.rule.PosTacletApp; -import de.uka.ilkd.key.rule.Taclet; -import de.uka.ilkd.key.speclang.ClassAxiom; -import de.uka.ilkd.key.speclang.ClassInvariant; -import de.uka.ilkd.key.speclang.PartialInvAxiom; -import de.uka.ilkd.key.util.MiscTools; - -import org.key_project.logic.Name; -import org.key_project.logic.sort.Sort; -import org.key_project.util.collection.DefaultImmutableSet; -import org.key_project.util.collection.ImmutableSet; -import org.key_project.util.collection.Pair; - -/** - * Extracts used {@link ClassAxiom} and {@link ClassInvariant}s. - * - * @author Martin Hentschel - */ -public class ClassAxiomAndInvariantProofReferencesAnalyst implements IProofReferencesAnalyst { - /** - * {@inheritDoc} - */ - @Override - public LinkedHashSet> computeReferences(Node node, Services services) { - String name = MiscTools.getRuleName(node); - if (name != null - && (name.toLowerCase().contains("axiom_for") - || name.toLowerCase().contains("represents_clause_for")) - && node.getAppliedRuleApp() instanceof PosTacletApp) { - // Get KeYJavaType which provides the proof obligation because only for its ClassAxioms - // are taclets generated and used during proof. - KeYJavaType proofKjt = findProofsKeYJavaType(services); - if (proofKjt != null) { - // Get applied taclet name - Name tacletName = ((PosTacletApp) node.getAppliedRuleApp()).taclet().name(); - // Search ClassAxiom which provides the applied taclet - ImmutableSet axioms = - services.getSpecificationRepository().getClassAxioms(proofKjt); - ClassAxiom found = null; - Iterator axiomsIterator = axioms.iterator(); - while (found == null && axiomsIterator.hasNext()) { - ClassAxiom ca = axiomsIterator.next(); - ImmutableSet> toLimit = DefaultImmutableSet.nil(); - ImmutableSet taclets = ca.getTaclets(toLimit, services); - Iterator tacletIterator = taclets.iterator(); - while (found == null && tacletIterator.hasNext()) { - Taclet t = tacletIterator.next(); - if (t.name().equals(tacletName)) { - found = ca; - } - } - } - if (found instanceof PartialInvAxiom axiom) { - // Invariant was applied - DefaultProofReference reference = - new DefaultProofReference<>(IProofReference.USE_INVARIANT, - node, axiom.getInv()); - LinkedHashSet> result = - new LinkedHashSet<>(); - result.add(reference); - return result; - } else if (found != null) { - // ClassAxiom was applied - DefaultProofReference reference = - new DefaultProofReference<>(IProofReference.USE_AXIOM, node, - found); - LinkedHashSet> result = - new LinkedHashSet<>(); - result.add(reference); - return result; - } else { - throw new IllegalStateException("ClassAxiom for taclet \"" + name - + "\" was not found applied in node \"" + node.serialNr() + "\"."); - } - } else { - return null; // Proof might be disposed. - } - } else { - return null; - } - } - - /** - * Returns the {@link KeYJavaType} which provides the proof obligation of the current proof. - * - * @param services The {@link Services} to use. - * @return The {@link KeYJavaType} which provides the proof obligation or {@code null} if it was - * not possible to compute it. - */ - protected KeYJavaType findProofsKeYJavaType(Services services) { - ProofOblInput problem = - services.getSpecificationRepository().getProofOblInput(services.getProof()); - if (problem != null) { - KeYJavaType type = problem.getContainerType(); - if (type == null) { - throw new IllegalStateException("Problem \"" + problem + "\" is not supported."); - } - return type; - } else { - return null; // Proof might be disposed. - } - } -} diff --git a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/ContractProofReferencesAnalyst.java b/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/ContractProofReferencesAnalyst.java deleted file mode 100644 index 6345d9615c1..00000000000 --- a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/ContractProofReferencesAnalyst.java +++ /dev/null @@ -1,36 +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.proof_references.analyst; - -import java.util.LinkedHashSet; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof_references.reference.DefaultProofReference; -import de.uka.ilkd.key.proof_references.reference.IProofReference; -import de.uka.ilkd.key.rule.AbstractContractRuleApp; -import de.uka.ilkd.key.speclang.Contract; - -/** - * Extracts used contracts. - * - * @author Martin Hentschel - */ -public class ContractProofReferencesAnalyst implements IProofReferencesAnalyst { - /** - * {@inheritDoc} - */ - @Override - public LinkedHashSet> computeReferences(Node node, Services services) { - if (node.getAppliedRuleApp() instanceof AbstractContractRuleApp contractRuleApp) { - DefaultProofReference reference = new DefaultProofReference<>( - IProofReference.USE_CONTRACT, node, contractRuleApp.getInstantiation()); - LinkedHashSet> result = new LinkedHashSet<>(); - result.add(reference); - return result; - } else { - return null; - } - } -} diff --git a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/IProofReferencesAnalyst.java b/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/IProofReferencesAnalyst.java deleted file mode 100644 index 652233b3dea..00000000000 --- a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/IProofReferencesAnalyst.java +++ /dev/null @@ -1,38 +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.proof_references.analyst; - -import java.util.LinkedHashSet; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof_references.ProofReferenceUtil; -import de.uka.ilkd.key.proof_references.reference.IProofReference; - -/** - *

- * Instances of this class are used to compute {@link IProofReference} for a given {@link Node} - * based on the applied rule. Each instance of this class has the knowledge to extract the - * references for a single rule or a group of similar rules. - *

- *

- * The complete extraction is done via static methods of {@link ProofReferenceUtil}. - *

- * - * @author Martin Hentschel - * @see ProofReferenceUtil - * @see IProofReference - */ -public interface IProofReferencesAnalyst { - /** - * Computes the {@link IProofReference} for the given {@link Node} which can be {@code null} or - * an empty set if the applied rule is not supported by this {@link IProofReferencesAnalyst}. - * - * @param node The {@link Node} to compute its {@link IProofReference}s. - * @param services The {@link Services} to use. - * @return The found {@link IProofReference} or {@code null}/empty set if the applied rule is - * not supported. - */ - LinkedHashSet> computeReferences(Node node, Services services); -} diff --git a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/MethodBodyExpandProofReferencesAnalyst.java b/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/MethodBodyExpandProofReferencesAnalyst.java deleted file mode 100644 index 9b8e27e7f1e..00000000000 --- a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/MethodBodyExpandProofReferencesAnalyst.java +++ /dev/null @@ -1,44 +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.proof_references.analyst; - -import java.util.LinkedHashSet; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.statement.MethodBodyStatement; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof_references.reference.DefaultProofReference; -import de.uka.ilkd.key.proof_references.reference.IProofReference; - -/** - * Extracts inlined methods. - * - * @author Martin Hentschel - */ -public class MethodBodyExpandProofReferencesAnalyst implements IProofReferencesAnalyst { - /** - * {@inheritDoc} - */ - @Override - public LinkedHashSet> computeReferences(Node node, Services services) { - if (node.getAppliedRuleApp() != null && node.getNodeInfo() != null) { - NodeInfo info = node.getNodeInfo(); - if (info.getActiveStatement() instanceof MethodBodyStatement mbs) { - IProgramMethod pm = mbs.getProgramMethod(services); - DefaultProofReference reference = - new DefaultProofReference<>(IProofReference.INLINE_METHOD, node, - pm); - LinkedHashSet> result = new LinkedHashSet<>(); - result.add(reference); - return result; - } else { - return null; - } - } else { - return null; - } - } -} diff --git a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/MethodCallProofReferencesAnalyst.java b/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/MethodCallProofReferencesAnalyst.java deleted file mode 100644 index f2eca312174..00000000000 --- a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/MethodCallProofReferencesAnalyst.java +++ /dev/null @@ -1,143 +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.proof_references.analyst; - -import java.util.LinkedHashSet; - -import de.uka.ilkd.key.java.JavaTools; -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.ProgramElement; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.expression.Assignment; -import de.uka.ilkd.key.java.ast.reference.ExecutionContext; -import de.uka.ilkd.key.java.ast.reference.MethodReference; -import de.uka.ilkd.key.java.ast.reference.TypeRef; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.JavaBlock; -import de.uka.ilkd.key.logic.ProgramElementName; -import de.uka.ilkd.key.logic.TermBuilder; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof_references.ProofReferenceUtil; -import de.uka.ilkd.key.proof_references.reference.DefaultProofReference; -import de.uka.ilkd.key.proof_references.reference.IProofReference; -import de.uka.ilkd.key.rule.PosTacletApp; -import de.uka.ilkd.key.util.MiscTools; - -import org.key_project.logic.Name; -import org.key_project.logic.op.sv.SchemaVariable; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableArray; -import org.key_project.util.collection.ImmutableList; - -/** - * Extracts called methods. - * - * @author Martin Hentschel - */ -public class MethodCallProofReferencesAnalyst implements IProofReferencesAnalyst { - /** - * {@inheritDoc} - */ - @Override - public LinkedHashSet> computeReferences(Node node, Services services) { - String name = MiscTools.getRuleName(node); - if (name != null && name.toLowerCase().contains("methodcall")) { - NodeInfo info = node.getNodeInfo(); - if (info != null) { - if (info.getActiveStatement() instanceof MethodReference) { - ExecutionContext context = extractContext(node, services); - IProofReference reference = createReference(node, services, - context, (MethodReference) info.getActiveStatement()); - LinkedHashSet> result = - new LinkedHashSet<>(); - result.add(reference); - return result; - } else if (info.getActiveStatement() instanceof Assignment assignment) { - ExecutionContext context = extractContext(node, services); - LinkedHashSet> result = - new LinkedHashSet<>(); - for (int i = 0; i < assignment.getChildCount(); i++) { - ProgramElement child = assignment.getChildAt(i); - if (child instanceof MethodReference) { - IProofReference reference = - createReference(node, services, context, (MethodReference) child); - ProofReferenceUtil.merge(result, reference); - } - } - return result; - } else { - return null; - } - } else { - return null; - } - } else { - return null; - } - } - - /** - * Extracts the {@link ExecutionContext}. - * - * @param node The {@link Node} to extract {@link ExecutionContext} from. - * @param services The {@link Services} to use. - * @return The found {@link ExecutionContext} or {@code null} if not available. - */ - protected ExecutionContext extractContext(Node node, Services services) { - RuleApp app = node.getAppliedRuleApp(); - PosInOccurrence pio = app.posInOccurrence(); - JavaBlock jb = TermBuilder.goBelowUpdates((JTerm) pio.subTerm()).javaBlock(); - return JavaTools.getInnermostExecutionContext(jb, services); - } - - /** - * Creates an {@link IProofReference} to the called {@link IProgramMethod}. - * - * @param node - * The {@link Node} which caused the reference. - * @param services - * The {@link Services} to use. - * @param context - * The {@link ExecutionContext} to use. - * @param mr - * The {@link MethodReference}. - * @return The created {@link IProofReference}. - */ - protected IProofReference createReference(Node node, Services services, - ExecutionContext context, MethodReference mr) { - if (context != null) { - KeYJavaType refPrefixType = mr.determineStaticPrefixType(services, context); - IProgramMethod pm = mr.method(services, refPrefixType, context); - return new DefaultProofReference<>(IProofReference.CALL_METHOD, node, pm); - } else { - if (!(node.getAppliedRuleApp() instanceof PosTacletApp app)) { - throw new IllegalArgumentException("PosTacletApp expected."); - } - if (!"staticMethodCallStaticWithAssignmentViaTypereference" - .equals(MiscTools.getRuleName(node))) { - throw new IllegalArgumentException( - "Rule \"staticMethodCallStaticWithAssignmentViaTypereference\" expected, but is \"" - + MiscTools.getRuleName(node) + "\"."); - } - SchemaVariable methodSV = app.instantiations().lookupVar(new Name("#mn")); - SchemaVariable typeSV = app.instantiations().lookupVar(new Name("#t")); - SchemaVariable argsSV = app.instantiations().lookupVar(new Name("#elist")); - - ProgramElementName method = - (ProgramElementName) app.instantiations().getInstantiation(methodSV); - TypeRef type = (TypeRef) app.instantiations().getInstantiation(typeSV); - ImmutableArray args = - (ImmutableArray) app.instantiations().getInstantiation(argsSV); - if (!args.isEmpty()) { - throw new IllegalArgumentException("Empty argument list expected."); - } - IProgramMethod pm = services.getJavaInfo().getProgramMethod(type.getKeYJavaType(), - method.toString(), ImmutableList.nil(), type.getKeYJavaType()); - return new DefaultProofReference<>(IProofReference.CALL_METHOD, node, pm); - } - } -} diff --git a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/ProgramVariableReferencesAnalyst.java b/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/ProgramVariableReferencesAnalyst.java deleted file mode 100644 index 3c01ebf7b92..00000000000 --- a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/ProgramVariableReferencesAnalyst.java +++ /dev/null @@ -1,90 +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.proof_references.analyst; - -import java.util.LinkedHashSet; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.ExpressionContainer; -import de.uka.ilkd.key.java.ast.ProgramElement; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.expression.operator.CopyAssignment; -import de.uka.ilkd.key.java.ast.reference.FieldReference; -import de.uka.ilkd.key.java.ast.reference.ReferencePrefix; -import de.uka.ilkd.key.java.ast.statement.If; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.logic.op.ProgramVariable; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof_references.ProofReferenceUtil; -import de.uka.ilkd.key.proof_references.reference.DefaultProofReference; -import de.uka.ilkd.key.proof_references.reference.IProofReference; - -/** - * Extracts read and write access to fields ({@link IProgramVariable}) via assignments. - * - * @author Martin Hentschel - */ -public class ProgramVariableReferencesAnalyst implements IProofReferencesAnalyst { - /** - * {@inheritDoc} - */ - @Override - public LinkedHashSet> computeReferences(Node node, Services services) { - if (node.getAppliedRuleApp() != null && node.getNodeInfo() != null) { - SourceElement statement = node.getNodeInfo().getActiveStatement(); - if (statement instanceof CopyAssignment) { - LinkedHashSet> result = new LinkedHashSet<>(); - listReferences(node, (CopyAssignment) statement, - services.getJavaInfo().getArrayLength(), result, true); - return result; - } else if (statement instanceof If) { - LinkedHashSet> result = new LinkedHashSet<>(); - listReferences(node, ((If) statement).getExpression(), - services.getJavaInfo().getArrayLength(), result, false); - return result; - } else { - return null; - } - } else { - return null; - } - } - - /** - * Extracts the proof references recursive. - * - * @param node The node. - * @param pe The current {@link ProgramElement}. - * @param arrayLength The {@link ProgramVariable} used for array length which is ignored. - * @param toFill The {@link LinkedHashSet} to fill. - * @param includeExpressionContainer Include {@link ExpressionContainer}? - */ - protected void listReferences(Node node, ProgramElement pe, ProgramVariable arrayLength, - LinkedHashSet> toFill, boolean includeExpressionContainer) { - if (pe instanceof ProgramVariable pv) { - if (pv.isMember()) { - DefaultProofReference reference = - new DefaultProofReference<>(IProofReference.ACCESS, node, - (ProgramVariable) pe); - ProofReferenceUtil.merge(toFill, reference); - } - } else if (pe instanceof FieldReference fr) { - ReferencePrefix ref = fr.getReferencePrefix(); - if (ref != null) { - listReferences(node, ref, arrayLength, toFill, includeExpressionContainer); - } - ProgramVariable pv = fr.getProgramVariable(); - if (pv != arrayLength) { - DefaultProofReference reference = - new DefaultProofReference<>(IProofReference.ACCESS, node, pv); - ProofReferenceUtil.merge(toFill, reference); - } - } else if (includeExpressionContainer && pe instanceof ExpressionContainer ec) { - for (int i = ec.getChildCount() - 1; i >= 0; i--) { - ProgramElement element = ec.getChildAt(i); - listReferences(node, element, arrayLength, toFill, includeExpressionContainer); - } - } - } -} diff --git a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/reference/DefaultProofReference.java b/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/reference/DefaultProofReference.java deleted file mode 100644 index 18fe6e1daf1..00000000000 --- a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/reference/DefaultProofReference.java +++ /dev/null @@ -1,142 +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.proof_references.reference; - -import java.util.Collection; -import java.util.LinkedHashSet; -import java.util.Objects; - -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; - -import org.key_project.util.Strings; - -/** - * Default implementation of {@link IProofReference}. - * - * @author Martin Hentschel - */ -public class DefaultProofReference implements IProofReference { - /** - * The reference kind as human readable {@link String}. - */ - private final String kind; - - /** - * The source {@link Proof}. - */ - private final Proof source; - - /** - * The target source member. - */ - private final T target; - - /** - * The {@link Node} in which the reference was found. - */ - private final LinkedHashSet nodes = new LinkedHashSet<>(); - - /** - * Constructor - * - * @param kind The reference kind as human readable {@link String}. - * @param node Node to access the source {@link Proof} (or null). - * @param target The target source member. - */ - public DefaultProofReference(String kind, Node node, T target) { - this.kind = kind; - this.source = node != null ? node.proof() : null; - this.target = target; - this.nodes.add(node); - } - - /** - * {@inheritDoc} - */ - @Override - public T getTarget() { - return target; - } - - /** - * {@inheritDoc} - */ - @Override - public LinkedHashSet getNodes() { - return nodes; - } - - /** - * {@inheritDoc} - */ - @Override - public void addNodes(Collection nodes) { - this.nodes.addAll(nodes); - } - - /** - * {@inheritDoc} - */ - @Override - public String getKind() { - return kind; - } - - /** - * {@inheritDoc} - */ - @Override - public Proof getSource() { - return source; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof IProofReference other) { - return Objects.equals(getKind(), other.getKind()) - && Objects.equals(getSource(), other.getSource()) - && Objects.equals(getTarget(), other.getTarget()); - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() { - int result = 17; - result = 31 * result + (getKind() != null ? getKind().hashCode() : 0); - result = 31 * result + (getSource() != null ? getSource().hashCode() : 0); - result = 31 * result + (getTarget() != null ? getTarget().hashCode() : 0); - return result; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append(getKind()); - sb.append(" Proof Reference to \""); - sb.append(getTarget()); - sb.append("\""); - if (!getNodes().isEmpty()) { - sb.append(" at node(s) "); - sb.append(Strings.formatAsList(getNodes(), "", ", ", "", Node::serialNr)); - } - if (getSource() != null) { - sb.append(" of proof \""); - sb.append(getSource()); - sb.append("\""); - } - return sb.toString(); - } -} diff --git a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/reference/IProofReference.java b/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/reference/IProofReference.java deleted file mode 100644 index 6d10d0ddad4..00000000000 --- a/key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/reference/IProofReference.java +++ /dev/null @@ -1,129 +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.proof_references.reference; - -import java.util.Collection; -import java.util.LinkedHashSet; - -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof_references.ProofReferenceUtil; -import de.uka.ilkd.key.proof_references.analyst.IProofReferencesAnalyst; -import de.uka.ilkd.key.speclang.ClassAxiom; -import de.uka.ilkd.key.speclang.ClassInvariant; -import de.uka.ilkd.key.speclang.Contract; - -/** - * A proof reference which points to a source member used during proof. By default, instances are - * created via {@link IProofReferencesAnalyst}s during reference computation via static methods of - * {@link ProofReferenceUtil}. - * - * @author Martin Hentschel - * @see ProofReferenceUtil - * @see IProofReferencesAnalyst - */ -public interface IProofReference { - /** - *

- * A method call which determines the possible implementations of a called method. - *

- *

- * References of this kind should provide an {@link IProgramMethod} as target - * ({@link #getTarget()}). - *

- */ - String CALL_METHOD = "Call Method"; - - /** - *

- * The proof step "methodBodyExpand" that inlines methods. - *

- *

- * References of this kind should provide an {@link IProgramMethod} as target - * ({@link #getTarget()}). - *

- */ - String INLINE_METHOD = "Inline Method"; - - /** - *

- * The proof step "Use Operation Contract" which approximates a method call via its method - * contract and also the usage of dependency contracts. - *

- *

- * References of this kind should provide a {@link Contract} as target ({@link #getTarget()}). - *

- */ - String USE_CONTRACT = "Use Contract"; - - /** - *

- * Read/Write access of a field like instance or class variables during proof. - *

- *

- * References of this kind should provide an {@link IProgramVariable} as target - * ({@link #getTarget()}). - *

- */ - String ACCESS = "Access"; - - /** - *

- * Used invariants during proof. - *

- *

- * References of this kind should provide an {@link ClassInvariant} as target - * ({@link #getTarget()}). - *

- */ - String USE_INVARIANT = "Use Invariant"; - - /** - *

- * Used axioms during proof. - *

- *

- * References of this kind should provide an {@link ClassAxiom} as target - * ({@link #getTarget()}). - *

- */ - String USE_AXIOM = "Use Axiom"; - - /** - * Returns the reference kind which is a human readable {@link String}. - * - * @return The reference kind as human readable {@link String}. - */ - String getKind(); - - /** - * Returns the {@link Node}s in which the reference was found. - * - * @return The {@link Node}s in which the reference was found. - */ - LinkedHashSet getNodes(); - - /** - * Adds the given {@link Node}s to the own {@link Node}s. - * - * @param nodes The {@link Node}s to add. - */ - void addNodes(Collection nodes); - - /** - * Returns the target source member. - * - * @return The target source member. - */ - T getTarget(); - - /** - * Returns the source {@link Proof}. - * - * @return The source {@link Proof}. - */ - Proof getSource(); -} diff --git a/key.core.proof_references/src/main/resources/MANIFEST.MF b/key.core.proof_references/src/main/resources/MANIFEST.MF deleted file mode 100644 index 10fc211bcb4..00000000000 --- a/key.core.proof_references/src/main/resources/MANIFEST.MF +++ /dev/null @@ -1,4 +0,0 @@ -Manifest-Version: 1.0 -Permissions: all-permissions -Class-Path: key.util.jar ../libs/antlr.jar ../libs/recoderKey.jar key.core.jar -Codebase: formal.iti.kit.edu diff --git a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/AbstractProofReferenceTestCase.java b/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/AbstractProofReferenceTestCase.java deleted file mode 100644 index 1ecfb7533d7..00000000000 --- a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/AbstractProofReferenceTestCase.java +++ /dev/null @@ -1,476 +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.proof_references.testcase; - -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.Map; -import java.util.function.Predicate; - -import de.uka.ilkd.key.control.KeYEnvironment; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.logic.op.IObserverFunction; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof_references.ProofReferenceUtil; -import de.uka.ilkd.key.proof_references.analyst.IProofReferencesAnalyst; -import de.uka.ilkd.key.proof_references.reference.IProofReference; -import de.uka.ilkd.key.settings.ChoiceSettings; -import de.uka.ilkd.key.settings.ProofIndependentSettings; -import de.uka.ilkd.key.settings.ProofSettings; -import de.uka.ilkd.key.speclang.ClassAxiom; -import de.uka.ilkd.key.speclang.Contract; -import de.uka.ilkd.key.speclang.FunctionalOperationContract; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.util.HelperClassForTests; - -import org.key_project.logic.Choice; -import org.key_project.util.collection.DefaultImmutableSet; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.ImmutableSet; -import org.key_project.util.helper.FindResources; -import org.key_project.util.java.CollectionUtil; - -import org.jspecify.annotations.Nullable; - -import static org.junit.jupiter.api.Assertions.*; - -/** - * Provides the basic functionality to test the proof reference API. - * - * @author Martin Hentschel - */ -public abstract class AbstractProofReferenceTestCase { - public static final @Nullable Path TESTCASE_DIRECTORY = FindResources.getTestCasesDirectory(); - - static { - assertNotNull(TESTCASE_DIRECTORY, "Could not find test case directory"); - } - - /** - * Executes the test steps of test methods. - * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The name of the type which contains the method. - * @param targetName The target name to search. - * @param useContracts Use contracts or inline method bodies instead. - * @param analyst The {@link IProofReferencesAnalyst} to use. - * @param expectedReferences The expected proof references. - * @throws Exception Occurred Exception. - */ - protected void doReferenceFunctionTest(@Nullable Path baseDir, String javaPathInBaseDir, - String containerTypeName, String targetName, boolean useContracts, - IProofReferencesAnalyst analyst, ExpectedProofReferences... expectedReferences) - throws Exception { - doReferenceFunctionTest(baseDir, javaPathInBaseDir, containerTypeName, targetName, - useContracts, analyst, - null, expectedReferences); - } - - /** - * Executes the test steps of test methods. - * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The name of the type which contains the method. - * @param targetName The target name to search. - * @param useContracts Use contracts or inline method bodies instead. - * @param analyst The {@link IProofReferencesAnalyst} to use. - * @param currentReferenceFilter An optional {@link Predicate} to limit the references to test. - * @param expectedReferences The expected proof references. - * @throws Exception Occurred Exception. - */ - protected void doReferenceFunctionTest(@Nullable Path baseDir, String javaPathInBaseDir, - String containerTypeName, String targetName, boolean useContracts, - IProofReferencesAnalyst analyst, Predicate> currentReferenceFilter, - ExpectedProofReferences... expectedReferences) throws Exception { - IProofTester tester = - createReferenceMethodTester(analyst, currentReferenceFilter, expectedReferences); - doProofFunctionTest(baseDir, javaPathInBaseDir, containerTypeName, targetName, useContracts, - tester); - } - - /** - * Executes the test steps of test methods. - * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The name of the type which contains the method. - * @param methodFullName The method name to search. - * @param useContracts Use contracts or inline method bodies instead. - * @param analyst The {@link IProofReferencesAnalyst} to use. - * @param expectedReferences The expected proof references. - * @throws Exception Occurred Exception. - */ - protected void doReferenceMethodTest(@Nullable Path baseDir, String javaPathInBaseDir, - String containerTypeName, String methodFullName, boolean useContracts, - IProofReferencesAnalyst analyst, ExpectedProofReferences... expectedReferences) - throws Exception { - doReferenceMethodTest(baseDir, javaPathInBaseDir, containerTypeName, methodFullName, - useContracts, analyst, null, expectedReferences); - } - - /** - * Executes the test steps of test methods. - * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The name of the type which contains the method. - * @param methodFullName The method name to search. - * @param useContracts Use contracts or inline method bodies instead. - * @param analyst The {@link IProofReferencesAnalyst} to use. - * @param currentReferenceFilter An optional {@link Predicate} to limit the references to test. - * @param expectedReferences The expected proof references. - * @throws Exception Occurred Exception. - */ - protected void doReferenceMethodTest(@Nullable Path baseDir, String javaPathInBaseDir, - String containerTypeName, String methodFullName, boolean useContracts, - IProofReferencesAnalyst analyst, Predicate> currentReferenceFilter, - ExpectedProofReferences... expectedReferences) throws Exception { - IProofTester tester = - createReferenceMethodTester(analyst, currentReferenceFilter, expectedReferences); - doProofMethodTest(baseDir, javaPathInBaseDir, containerTypeName, methodFullName, - useContracts, tester); - } - - /** - * Creates the {@link IProofTester} used by - * {@link #doProofFunctionTest(Path, String, String, String, boolean, IProofTester)} and - * {@link #doProofMethodTest(Path, String, String, String, boolean, IProofTester)}. - * - * @param analyst The {@link IProofReferencesAnalyst} to use. - * @param currentReferenceFilter An optional {@link Predicate} to limit the references to test. - * @param expectedReferences The expected proof references. - * @return The created {@link IProofTester}. - */ - protected IProofTester createReferenceMethodTester(final IProofReferencesAnalyst analyst, - final Predicate> currentReferenceFilter, - final ExpectedProofReferences... expectedReferences) { - return (environment, proof) -> { - // Compute proof references - ImmutableList analysts = ImmutableList.nil(); - if (analyst != null) { - analysts = analysts.append(analyst); - } - LinkedHashSet> references = - ProofReferenceUtil.computeProofReferences(proof, analysts); - // Filter references - if (currentReferenceFilter != null) { - LinkedHashSet> filteredReferences = - new LinkedHashSet<>(); - for (IProofReference reference : references) { - if (currentReferenceFilter.test(reference)) { - filteredReferences.add(reference); - } - } - references = filteredReferences; - } - // Assert proof references - assertReferences(references, expectedReferences); - }; - } - - /** - * Extracts all {@link IProofReference}s of the given once which are extracted from the given - * {@link Node}. - * - * @param references The {@link IProofReference}s to search in. - * @param node The {@link Node} to look for. - * @return The contained {@link IProofReference}s with the given node. - */ - protected LinkedHashSet> findReferences( - LinkedHashSet> references, Node node) { - LinkedHashSet> result = new LinkedHashSet<>(); - for (IProofReference reference : references) { - if (reference.getNodes().contains(node)) { - result.add(reference); - } - } - return result; - } - - /** - * Tests the given {@link IProofReference}s. - * - * @param expected The expected {@link IProofReference}s. - * @param current The current {@link IProofReference}s. - */ - protected void assertReferences(LinkedHashSet> expected, - LinkedHashSet> current) { - assertNotNull(current); - assertNotNull(expected); - assertEquals(current.size(), expected.size()); - Iterator> expectedIter = expected.iterator(); - Iterator> currentIter = current.iterator(); - while (expectedIter.hasNext() && currentIter.hasNext()) { - IProofReference expectedReference = expectedIter.next(); - IProofReference currentReference = currentIter.next(); - assertEquals(expectedReference.getKind(), currentReference.getKind()); - if (expectedReference.getTarget() instanceof ClassAxiom) { - assertTrue(currentReference.getTarget() instanceof ClassAxiom); - assertEquals(expectedReference.getTarget().toString(), - currentReference.getTarget().toString()); // Instances might be different. - } else { - assertEquals(expectedReference.getTarget(), currentReference.getTarget()); - } - } - assertFalse(expectedIter.hasNext()); - assertFalse(currentIter.hasNext()); - } - - /** - * Tests the given {@link IProofReference}s. - * - * @param current The current {@link IProofReference}s. - * @param expected The expected {@link ExpectedProofReferences}s. - */ - protected void assertReferences(LinkedHashSet> current, - ExpectedProofReferences... expected) { - assertNotNull(current); - assertNotNull(expected); - assertEquals(expected.length, current.size(), "Computed References: " + current); - int i = 0; - for (IProofReference currentReference : current) { - ExpectedProofReferences expectedReference = expected[i]; - assertEquals(expectedReference.kind(), currentReference.getKind()); - if (expectedReference.target() != null) { - assertNotNull(currentReference.getTarget()); - assertEquals(expectedReference.target(), - currentReference.getTarget().toString()); - } else { - assertNull(currentReference.getTarget()); - } - i++; - } - } - - /** - * Defines the values of an expected proof reference. - * - * @param kind The expected kind. - * @param target The expected target. - * @author Martin Hentschel - */ - protected record ExpectedProofReferences(String kind, String target) { - /** - * Constructor. - * - * @param kind The expected kind. - * @param target The expected target. - */ - public ExpectedProofReferences { - } - - /** - * Returns the expected kind. - * - * @return The expected kind. - */ - @Override - public String kind() { - return kind; - } - - /** - * Returns the expected target. - * - * @return The expected target. - */ - @Override - public String target() { - return target; - } - } - - /** - * Does some test steps with a {@link Proof}. - * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The name of the type which contains the method. - * @param targetName The target name to search. - * @param useContracts Use contracts or inline method bodies instead. - * @param tester The {@link IProofTester} which executes the test steps. - * @throws Exception Occurred Exception. - */ - protected void doProofFunctionTest(@Nullable Path baseDir, String javaPathInBaseDir, - String containerTypeName, final String targetName, boolean useContracts, - IProofTester tester) throws Exception { - assertNotNull(tester); - KeYEnvironment environment = null; - Proof proof = null; - Map originalTacletOptions = null; - boolean usePrettyPrinting = ProofIndependentSettings.isUsePrettyPrinting(); - try { - // Disable pretty printing to make tests more robust against different term - // representations - ProofIndependentSettings.setUsePrettyPrinting(false); - // Make sure that required files exists - if (javaPathInBaseDir.startsWith("/")) { - javaPathInBaseDir = javaPathInBaseDir.substring(1); - } - Path javaFile = baseDir.resolve(javaPathInBaseDir); - assertTrue(Files.exists(javaFile)); - // Make sure that the correct taclet options are defined. - originalTacletOptions = HelperClassForTests.setDefaultTacletOptionsForTarget(javaFile, - containerTypeName, targetName); - if (!useContracts) { - // set non modular reasoning - ChoiceSettings choiceSettings = ProofSettings.DEFAULT_SETTINGS.getChoiceSettings(); - ImmutableSet cs = DefaultImmutableSet.nil(); - cs = cs.add(new Choice("noRestriction", "methodExpansion")); - choiceSettings.updateWith(cs); - } - // Load java file - environment = KeYEnvironment.load(javaFile, null, null, null); - // Search type - KeYJavaType containerKJT = - environment.getJavaInfo().getTypeByClassName(containerTypeName, null); - assertNotNull(containerKJT); - // Search observer function - ImmutableSet targets = - environment.getSpecificationRepository().getContractTargets(containerKJT); - IObserverFunction target = - CollectionUtil.search(targets, element -> targetName.equals(element.toString())); - assertNotNull(target); - // Find first contract. - ImmutableSet contracts = - environment.getSpecificationRepository().getContracts(containerKJT, target); - assertFalse(contracts.isEmpty()); - Contract contract = contracts.iterator().next(); - // Start proof - proof = environment - .createProof(contract.createProofObl(environment.getInitConfig(), contract)); - assertNotNull(proof); - // Start auto mode - doProofTest(environment, proof, useContracts, tester); - } finally { - ProofIndependentSettings.setUsePrettyPrinting(usePrettyPrinting); - // Restore taclet options - HelperClassForTests.restoreTacletOptions(originalTacletOptions); - // Dispose proof and environment - if (proof != null) { - proof.dispose(); - } - if (environment != null) { - environment.dispose(); - } - } - } - - /** - * Does some test steps with a {@link Proof}. - * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The name of the type which contains the method. - * @param methodFullName The method name to search. - * @param useContracts Use contracts or inline method bodies instead. - * @param tester The {@link IProofTester} which executes the test steps. - * @throws Exception Occurred Exception. - */ - protected void doProofMethodTest(@Nullable Path baseDir, String javaPathInBaseDir, - String containerTypeName, String methodFullName, boolean useContracts, - IProofTester tester) throws Exception { - assertNotNull(tester); - KeYEnvironment environment = null; - Proof proof = null; - Map originalTacletOptions = null; - boolean usePrettyPrinting = ProofIndependentSettings.isUsePrettyPrinting(); - try { - // Disable pretty printing to make tests more robust against different term - // representations - ProofIndependentSettings.setUsePrettyPrinting(false); - // Make sure that required files exists - if (javaPathInBaseDir.startsWith("/")) { - javaPathInBaseDir = javaPathInBaseDir.substring(1); - } - Path javaFile = baseDir.resolve(javaPathInBaseDir); - assertTrue(Files.exists(javaFile)); - // Make sure that the correct taclet options are defined. - originalTacletOptions = - HelperClassForTests.setDefaultTacletOptions(baseDir, javaPathInBaseDir); - - if (!useContracts) { - // set non modular reasoning - ChoiceSettings choiceSettings = ProofSettings.DEFAULT_SETTINGS.getChoiceSettings(); - ImmutableSet cs = DefaultImmutableSet.nil(); - cs = cs.add(new Choice("noRestriction", "methodExpansion")); - choiceSettings.updateWith(cs); - } - // Load java file - environment = KeYEnvironment.load(javaFile, null, null, null); - // Search method to proof - IProgramMethod pm = HelperClassForTests.searchProgramMethod(environment.getServices(), - containerTypeName, methodFullName); - // Find first contract. - ImmutableSet operationContracts = environment - .getSpecificationRepository().getOperationContracts(pm.getContainerType(), pm); - assertFalse(operationContracts.isEmpty()); - FunctionalOperationContract foc = operationContracts.iterator().next(); - // Start proof - proof = environment.createProof(foc.createProofObl(environment.getInitConfig(), foc)); - assertNotNull(proof); - // Start auto mode - doProofTest(environment, proof, useContracts, tester); - } finally { - ProofIndependentSettings.setUsePrettyPrinting(usePrettyPrinting); - // Restore taclet options - HelperClassForTests.restoreTacletOptions(originalTacletOptions); - // Dispose proof and environment - if (proof != null) { - proof.dispose(); - } - if (environment != null) { - environment.dispose(); - } - } - } - - /** - * Does some test steps with a {@link Proof}. - * - * @param environment The {@link KeYEnvironment} which provides the {@link Proof}. - * @param proof The {@link Proof} to test. - * @param useContracts Use contracts or inline method bodies instead. - * @param tester The {@link IProofTester} which executes the test steps. - * @throws Exception Occurred Exception. - */ - protected void doProofTest(KeYEnvironment environment, Proof proof, boolean useContracts, - IProofTester tester) throws Exception { - // Test parameters - assertNotNull(environment); - assertNotNull(proof); - assertNotNull(tester); - // Start auto mode - StrategyProperties sp = new StrategyProperties(); - StrategyProperties.setDefaultStrategyProperties(sp, true, useContracts, false, false, false, - false); - proof.getSettings().getStrategySettings().setActiveStrategyProperties(sp); - proof.getSettings().getStrategySettings().setMaxSteps(1000); - environment.getProofControl().startAndWaitForAutoMode(proof); - // Do test - tester.doTest(environment, proof); - } - - /** - * Executes some proof steps with on given {@link Proof}. - * - * @author Martin Hentschel - */ - protected interface IProofTester { - /** - * Execute the test. - * - * @param environment The {@link KeYEnvironment} to test. - * @param proof The {@link Proof} to test. - * @throws Exception Occurred Exception. - */ - void doTest(KeYEnvironment environment, Proof proof) throws Exception; - } -} diff --git a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/TestKeYTypeUtil.java b/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/TestKeYTypeUtil.java deleted file mode 100644 index 0a812386886..00000000000 --- a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/TestKeYTypeUtil.java +++ /dev/null @@ -1,179 +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.proof_references.testcase; - - -import de.uka.ilkd.key.control.KeYEnvironment; -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.util.KeYTypeUtil; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -/** - * Tests {@link KeYTypeUtil}. - * - * @author Martin Hentschel - */ -public class TestKeYTypeUtil extends AbstractProofReferenceTestCase { - /** - * Tests {@link KeYTypeUtil#isInnerType(Services, KeYJavaType)}. - */ - @Test - public void testIsInnerType() throws Exception { - KeYEnvironment environment = KeYEnvironment.load( - TESTCASE_DIRECTORY.resolve("proofReferences/InnerAndAnonymousTypeTest"), - null, null, null); - try { - Services services = environment.getServices(); - assertNotNull(services); - // Get KeYJavaTypes to test - KeYJavaType typeWithoutPackage = - KeYTypeUtil.getType(services, "InnerAndAnonymousTypeTest"); - assertNotNull(typeWithoutPackage); - KeYJavaType typeWithPackage = - KeYTypeUtil.getType(services, "model.InnerAndAnonymousTypeTest"); - assertNotNull(typeWithPackage); - KeYJavaType innerTypeWithoutPackage = - KeYTypeUtil.getType(services, "InnerAndAnonymousTypeTest.IGetter"); - assertNotNull(innerTypeWithoutPackage); - KeYJavaType innerTypeWithPackage = - KeYTypeUtil.getType(services, "model.InnerAndAnonymousTypeTest.IGetter"); - assertNotNull(innerTypeWithPackage); - // Test null - assertFalse(KeYTypeUtil.isInnerType(services, null)); - assertFalse(KeYTypeUtil.isInnerType(null, typeWithoutPackage)); - assertFalse(KeYTypeUtil.isInnerType(null, null)); - // Test class without package - assertFalse(KeYTypeUtil.isInnerType(services, typeWithoutPackage)); - // Test class with package - assertFalse(KeYTypeUtil.isInnerType(services, typeWithPackage)); - // Test inner class without package - assertTrue(KeYTypeUtil.isInnerType(services, innerTypeWithoutPackage)); - // Test inner class with package - assertTrue(KeYTypeUtil.isInnerType(services, innerTypeWithPackage)); - } finally { - environment.dispose(); - } - } - - /** - * Tests {@link KeYTypeUtil#getParentName(Services, KeYJavaType)}. - */ - @Test - public void testGetParentName() throws Exception { - KeYEnvironment environment = KeYEnvironment.load( - TESTCASE_DIRECTORY.resolve("proofReferences/InnerAndAnonymousTypeTest"), - null, null, null); - try { - Services services = environment.getServices(); - assertNotNull(services); - // Get KeYJavaTypes to test - KeYJavaType typeWithoutPackage = - KeYTypeUtil.getType(services, "InnerAndAnonymousTypeTest"); - assertNotNull(typeWithoutPackage); - KeYJavaType typeWithPackage = - KeYTypeUtil.getType(services, "model.InnerAndAnonymousTypeTest"); - assertNotNull(typeWithPackage); - KeYJavaType innerTypeWithoutPackage = - KeYTypeUtil.getType(services, "InnerAndAnonymousTypeTest.IGetter"); - assertNotNull(innerTypeWithoutPackage); - KeYJavaType innerTypeWithPackage = - KeYTypeUtil.getType(services, "model.InnerAndAnonymousTypeTest.IGetter"); - assertNotNull(innerTypeWithPackage); - // Test null - assertNull(KeYTypeUtil.getParentName(services, null)); - assertNull(KeYTypeUtil.getParentName(null, typeWithoutPackage)); - assertNull(KeYTypeUtil.getParentName(null, null)); - // Test class without package - assertNull(KeYTypeUtil.getParentName(services, typeWithoutPackage)); - // Test class with package - assertEquals("model", KeYTypeUtil.getParentName(services, typeWithPackage)); - // Test inner class without package - assertEquals("InnerAndAnonymousTypeTest", - KeYTypeUtil.getParentName(services, innerTypeWithoutPackage)); - // Test inner class with package - assertEquals("model.InnerAndAnonymousTypeTest", - KeYTypeUtil.getParentName(services, innerTypeWithPackage)); - } finally { - environment.dispose(); - } - } - - /** - * Tests {@link KeYTypeUtil#isType(Services, String)}. - */ - @Test - public void testIsType() throws Exception { - KeYEnvironment environment = KeYEnvironment.load( - TESTCASE_DIRECTORY.resolve("proofReferences/InnerAndAnonymousTypeTest"), - null, null, null); - try { - Services services = environment.getServices(); - assertNotNull(services); - // Test null - assertFalse(KeYTypeUtil.isType(services, null)); - assertFalse(KeYTypeUtil.isType(null, "InnerAndAnonymousTypeTest")); - assertFalse(KeYTypeUtil.isType(null, null)); - // Test invalid names - assertFalse(KeYTypeUtil.isType(services, "Invalid")); - assertFalse(KeYTypeUtil.isType(services, "model.Invalid")); - assertFalse(KeYTypeUtil.isType(services, "invalid.Invalid")); - assertFalse(KeYTypeUtil.isType(services, "InnerAndAnonymousTypeTest.Invalid")); - assertFalse(KeYTypeUtil.isType(services, "model.InnerAndAnonymousTypeTest.Invalid")); - // Test class without package - assertTrue(KeYTypeUtil.isType(services, "InnerAndAnonymousTypeTest")); - // Test class with package - assertTrue(KeYTypeUtil.isType(services, "model.InnerAndAnonymousTypeTest")); - // Test inner class without package - assertTrue(KeYTypeUtil.isType(services, "InnerAndAnonymousTypeTest.IGetter")); - // Test inner class with package - assertTrue( - KeYTypeUtil.isType(services, "model.InnerAndAnonymousTypeTest.IGetter")); - } finally { - environment.dispose(); - } - } - - /** - * Tests {@link KeYTypeUtil#getType(de.uka.ilkd.key.java.Services, String)}. - */ - @Test - public void testGetType() throws Exception { - KeYEnvironment environment = KeYEnvironment.load( - TESTCASE_DIRECTORY.resolve("proofReferences/InnerAndAnonymousTypeTest"), - null, null, null); - try { - Services services = environment.getServices(); - assertNotNull(services); - // Test null - assertNull(KeYTypeUtil.getType(services, null)); - assertNull(KeYTypeUtil.getType(null, "InnerAndAnonymousTypeTest")); - assertNull(KeYTypeUtil.getType(null, null)); - // Test invalid names - assertNull(KeYTypeUtil.getType(services, "Invalid")); - assertNull(KeYTypeUtil.getType(services, "model.Invalid")); - assertNull(KeYTypeUtil.getType(services, "invalid.Invalid")); - assertNull(KeYTypeUtil.getType(services, "InnerAndAnonymousTypeTest.Invalid")); - assertNull( - KeYTypeUtil.getType(services, "model.InnerAndAnonymousTypeTest.Invalid")); - // Test class without package - KeYJavaType kjt = KeYTypeUtil.getType(services, "InnerAndAnonymousTypeTest"); - assertEquals("InnerAndAnonymousTypeTest", kjt.getFullName()); - // Test class with package - kjt = KeYTypeUtil.getType(services, "model.InnerAndAnonymousTypeTest"); - assertEquals("model.InnerAndAnonymousTypeTest", kjt.getFullName()); - // Test inner class without package - kjt = KeYTypeUtil.getType(services, "InnerAndAnonymousTypeTest.IGetter"); - assertEquals("InnerAndAnonymousTypeTest.IGetter", kjt.getFullName()); - // Test inner class with package - kjt = KeYTypeUtil.getType(services, "model.InnerAndAnonymousTypeTest.IGetter"); - assertEquals("model.InnerAndAnonymousTypeTest.IGetter", kjt.getFullName()); - } finally { - environment.dispose(); - } - } -} diff --git a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/TestProofReferenceUtil.java b/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/TestProofReferenceUtil.java deleted file mode 100644 index a18c903bd53..00000000000 --- a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/TestProofReferenceUtil.java +++ /dev/null @@ -1,131 +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.proof_references.testcase; - -import java.nio.file.Path; -import java.util.LinkedHashSet; - -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof_references.ProofReferenceUtil; -import de.uka.ilkd.key.proof_references.analyst.ContractProofReferencesAnalyst; -import de.uka.ilkd.key.proof_references.analyst.IProofReferencesAnalyst; -import de.uka.ilkd.key.proof_references.analyst.MethodBodyExpandProofReferencesAnalyst; -import de.uka.ilkd.key.proof_references.reference.IProofReference; - -import org.key_project.util.collection.ImmutableList; - -import org.jspecify.annotations.Nullable; -import org.junit.jupiter.api.Test; - -/** - * Tests for {@link ProofReferenceUtil}. - * - * @author Martin Hentschel - */ -public class TestProofReferenceUtil extends AbstractProofReferenceTestCase { - /** - * Tests {@link ProofReferenceUtil#computeProofReferences(Proof, ImmutableList)} - */ - @Test - public void testReferenceComputation_ExpandAndContract() throws Exception { - doAPITest(TESTCASE_DIRECTORY, - "/proofReferences/UseOperationContractTest/UseOperationContractTest.java", - "UseOperationContractTest", "main", true, - ImmutableList.nil().append( - new MethodBodyExpandProofReferencesAnalyst(), new ContractProofReferencesAnalyst()), - new ExpectedProofReferences(IProofReference.INLINE_METHOD, - "UseOperationContractTest::main"), - new ExpectedProofReferences(IProofReference.USE_CONTRACT, - "pre: {heap=java.lang.Object::$inv(heap,self)<>}; mby: null; post: {heap=and(and(equals(result_magic42,Z(2(4(#))))<>,java.lang.Object::$inv(heap,self)<>)<>,equals(exc<>,null)<>)}free post: {heap=true, savedHeap=null}; modifiable: {heap=allLocs, savedHeap=null}; hasModifiable: {heap=true, savedHeap=true}; termination: diamond; transaction: false")); - } - - /** - * Tests {@link ProofReferenceUtil#computeProofReferences(Proof, ImmutableList)} - */ - @Test - public void testReferenceComputation_NoAnalysts() throws Exception { - doAPITest(TESTCASE_DIRECTORY, "/proofReferences/MethodBodyExpand/MethodBodyExpand.java", - "MethodBodyExpand", "main", false, ImmutableList.nil()); - } - - /** - * Tests {@link ProofReferenceUtil#computeProofReferences(Proof, ImmutableList)} - */ - @Test - public void testReferenceComputation_ContractOnly() throws Exception { - doAPITest(TESTCASE_DIRECTORY, "/proofReferences/MethodBodyExpand/MethodBodyExpand.java", - "MethodBodyExpand", "main", false, ImmutableList.nil() - .append(new ContractProofReferencesAnalyst())); - } - - /** - * Tests {@link ProofReferenceUtil#computeProofReferences(Proof, ImmutableList)} - */ - @Test - public void testReferenceComputation_ExpandOnly() throws Exception { - doAPITest(TESTCASE_DIRECTORY, "/proofReferences/MethodBodyExpand/MethodBodyExpand.java", - "MethodBodyExpand", "main", false, - ImmutableList.nil() - .append(new MethodBodyExpandProofReferencesAnalyst()), - new ExpectedProofReferences(IProofReference.INLINE_METHOD, "MethodBodyExpand::main"), - new ExpectedProofReferences(IProofReference.INLINE_METHOD, - "MethodBodyExpand::magic42")); - } - - /** - * Tests {@link ProofReferenceUtil#computeProofReferences(Proof)} and - * {@link ProofReferenceUtil#computeProofReferences(Node)}. - */ - @Test - public void testReferenceComputation_DefaultAnalysts() throws Exception { - doAPITest(TESTCASE_DIRECTORY, "/proofReferences/MethodBodyExpand/MethodBodyExpand.java", - "MethodBodyExpand", "main", false, null, - new ExpectedProofReferences(IProofReference.USE_AXIOM, - "equiv(java.lang.Object::$inv(heap,self),true)"), - new ExpectedProofReferences(IProofReference.INLINE_METHOD, "MethodBodyExpand::main"), - new ExpectedProofReferences(IProofReference.CALL_METHOD, "MethodBodyExpand::magic42"), - new ExpectedProofReferences(IProofReference.INLINE_METHOD, - "MethodBodyExpand::magic42")); - } - - /** - * Executes the test steps of test methods. - * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The name of the type which contains the method. - * @param methodFullName The method name to search. - * @param useContracts Use method contracts or inline method bodies instead? - * @param analysts The {@link IProofReferencesAnalyst} to use. - * @param expectedReferences The expected proof references. - * @throws Exception Occurred Exception. - */ - protected void doAPITest(@Nullable Path baseDir, String javaPathInBaseDir, - String containerTypeName, - String methodFullName, boolean useContracts, - final ImmutableList analysts, - final ExpectedProofReferences... expectedReferences) throws Exception { - IProofTester tester = (environment, proof) -> { - // Extract and assert proof references - final LinkedHashSet> references = - analysts != null ? ProofReferenceUtil.computeProofReferences(proof, analysts) - : ProofReferenceUtil.computeProofReferences(proof); - assertReferences(references, expectedReferences); - // Test references of each node individually - proof.breadthFirstSearch(proof.root(), (proof1, visitedNode) -> { - LinkedHashSet> expectedNodeRefs = - findReferences(references, visitedNode); - LinkedHashSet> currentNodeRefs = analysts != null - ? ProofReferenceUtil.computeProofReferences(visitedNode, - proof1.getServices(), analysts) - : ProofReferenceUtil.computeProofReferences(visitedNode, - proof1.getServices()); - assertReferences(expectedNodeRefs, currentNodeRefs); - }); - }; - doProofMethodTest(baseDir, javaPathInBaseDir, containerTypeName, methodFullName, - useContracts, tester); - } -} 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 deleted file mode 100644 index c072c1fa539..00000000000 --- a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestClassAxiomAndInvariantProofReferencesAnalyst.java +++ /dev/null @@ -1,99 +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.proof_references.testcase.analyst; - -import de.uka.ilkd.key.proof_references.analyst.ClassAxiomAndInvariantProofReferencesAnalyst; -import de.uka.ilkd.key.proof_references.reference.IProofReference; -import de.uka.ilkd.key.proof_references.testcase.AbstractProofReferenceTestCase; - -import org.junit.jupiter.api.Test; - -/** - * Tests for {@link ClassAxiomAndInvariantProofReferencesAnalyst}. - * - * @author Martin Hentschel - */ -public class TestClassAxiomAndInvariantProofReferencesAnalyst - extends AbstractProofReferenceTestCase { - /** - * Tests "InvariantInOperationContractOfArgument". - */ - @Test - public void testInvariantInOperationContractOfArgument() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/InvariantInOperationContractOfArgument/InvariantInOperationContractOfArgument.java", - "InvariantInOperationContractOfArgument", "main", false, - new ClassAxiomAndInvariantProofReferencesAnalyst(), - element -> IProofReference.USE_INVARIANT.equals(element.getKind()), - new ExpectedProofReferences(IProofReference.USE_INVARIANT, - "and(geq(select<[int]>(heap,self,Child::$x),Z(0(#))),leq(select<[int]>(heap,self,Child::$x),Z(0(1(#)))))<>")); - } - - /** - * Tests "InvariantInOperationContract". - */ - @Test - public void testInvariantInOperationContract() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/InvariantInOperationContract/InvariantInOperationContract.java", - "InvariantInOperationContract", "main", false, - new ClassAxiomAndInvariantProofReferencesAnalyst(), - element -> IProofReference.USE_AXIOM.equals(element.getKind()), - new ExpectedProofReferences(IProofReference.USE_AXIOM, - "equiv(java.lang.Object::$inv(heap,self),not(equals(Child::select(heap,self,InvariantInOperationContract::$child),null))<>)")); - } - - /** - * Tests "NestedInvariantInOperationContract". - */ - @Test - public void testNestedInvariantInOperationContract() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/NestedInvariantInOperationContract/NestedInvariantInOperationContract.java", - "NestedInvariantInOperationContract", "main", false, - new ClassAxiomAndInvariantProofReferencesAnalyst(), - element -> IProofReference.USE_AXIOM.equals(element.getKind()), - new ExpectedProofReferences(IProofReference.USE_AXIOM, - "equiv(java.lang.Object::$inv(heap,self),not(equals(ChildContainer::select(heap,self,NestedInvariantInOperationContract::$cc),null))<>)")); - } - - /** - * Tests "ModelFieldTest#doubleX". - */ - @Test - public void testModelFieldTest_doubleX() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ModelFieldTest/ModelFieldTest.java", "test.ModelFieldTest", "doubleX", - 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(#)),select<[int]>(heap,self,test.ModelFieldTest::$x)))")); - } - - /** - * Tests "ModelFieldTest#test.ModelFieldTest::$f". - */ - @Test - public void testModelFieldTest_f() throws Exception { - doReferenceFunctionTest(TESTCASE_DIRECTORY, - "/proofReferences/ModelFieldTest/ModelFieldTest.java", "test.ModelFieldTest", - "test.ModelFieldTest::$f", 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(#)),select<[int]>(heap,self,test.ModelFieldTest::$x)))")); - } - - /** - * Tests "AccessibleTest". - */ - public void testAccessibleTest() throws Exception { - doReferenceFunctionTest(TESTCASE_DIRECTORY, - "/proofReferences/AccessibleTest/AccessibleTest.java", "test.B", - "java.lang.Object::$inv", false, new ClassAxiomAndInvariantProofReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.USE_AXIOM, - "equiv(java.lang.Object::$inv(heap,self),java.lang.Object::$inv(heap,test.AccessibleTest::select(heap,self,test.B::$c)))")); - } -} diff --git a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestContractProofReferencesAnalyst.java b/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestContractProofReferencesAnalyst.java deleted file mode 100644 index 6e38cb1600f..00000000000 --- a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestContractProofReferencesAnalyst.java +++ /dev/null @@ -1,29 +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.proof_references.testcase.analyst; - -import de.uka.ilkd.key.proof_references.analyst.ContractProofReferencesAnalyst; -import de.uka.ilkd.key.proof_references.reference.IProofReference; -import de.uka.ilkd.key.proof_references.testcase.AbstractProofReferenceTestCase; - -import org.junit.jupiter.api.Test; - -/** - * Tests for {@link ContractProofReferencesAnalyst}. - * - * @author Martin Hentschel - */ -public class TestContractProofReferencesAnalyst extends AbstractProofReferenceTestCase { - /** - * Tests "UseOperationContractTest". - */ - @Test - public void testUseOperationContracts() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/UseOperationContractTest/UseOperationContractTest.java", - "UseOperationContractTest", "main", true, new ContractProofReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.USE_CONTRACT, - "pre: {heap=java.lang.Object::$inv(heap,self)<>}; mby: null; post: {heap=and(and(equals(result_magic42,Z(2(4(#))))<>,java.lang.Object::$inv(heap,self)<>)<>,equals(exc<>,null)<>)}free post: {heap=true, savedHeap=null}; modifiable: {heap=allLocs, savedHeap=null}; hasModifiable: {heap=true, savedHeap=true}; termination: diamond; transaction: false")); - } -} diff --git a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestMethodBodyExpandProofReferencesAnalyst.java b/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestMethodBodyExpandProofReferencesAnalyst.java deleted file mode 100644 index 39762ced385..00000000000 --- a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestMethodBodyExpandProofReferencesAnalyst.java +++ /dev/null @@ -1,30 +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.proof_references.testcase.analyst; - -import de.uka.ilkd.key.proof_references.analyst.MethodBodyExpandProofReferencesAnalyst; -import de.uka.ilkd.key.proof_references.reference.IProofReference; -import de.uka.ilkd.key.proof_references.testcase.AbstractProofReferenceTestCase; - -import org.junit.jupiter.api.Test; - -/** - * Tests for {@link MethodBodyExpandProofReferencesAnalyst}. - * - * @author Martin Hentschel - */ -public class TestMethodBodyExpandProofReferencesAnalyst extends AbstractProofReferenceTestCase { - /** - * Tests "MethodBodyExpand". - */ - @Test - public void testMethodBodyExpand() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/MethodBodyExpand/MethodBodyExpand.java", "MethodBodyExpand", "main", - false, new MethodBodyExpandProofReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.INLINE_METHOD, "MethodBodyExpand::main"), - new ExpectedProofReferences(IProofReference.INLINE_METHOD, - "MethodBodyExpand::magic42")); - } -} diff --git a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestMethodCallProofReferencesAnalyst.java b/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestMethodCallProofReferencesAnalyst.java deleted file mode 100644 index 68c598bdc6f..00000000000 --- a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestMethodCallProofReferencesAnalyst.java +++ /dev/null @@ -1,146 +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.proof_references.testcase.analyst; - -import de.uka.ilkd.key.proof_references.analyst.MethodCallProofReferencesAnalyst; -import de.uka.ilkd.key.proof_references.reference.IProofReference; -import de.uka.ilkd.key.proof_references.testcase.AbstractProofReferenceTestCase; - -import org.junit.jupiter.api.Test; - -/** - * Tests for {@link MethodCallProofReferencesAnalyst}. - * - * @author Martin Hentschel - */ -public class TestMethodCallProofReferencesAnalyst extends AbstractProofReferenceTestCase { - /** - * Tests "constructorTest". - */ - @Test - public void testConstructorTest() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/constructorTest/ConstructorTest.java", "ConstructorTest", - "ConstructorTest", false, new MethodCallProofReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.CALL_METHOD, - "ConstructorTest::$createObject"), - new ExpectedProofReferences(IProofReference.CALL_METHOD, "ConstructorTest::$allocate"), - new ExpectedProofReferences(IProofReference.CALL_METHOD, - "ConstructorTest::$prepareEnter"), - new ExpectedProofReferences(IProofReference.CALL_METHOD, "java.lang.Object::$prepare"), - new ExpectedProofReferences(IProofReference.CALL_METHOD, "java.lang.Object::$init"), - new ExpectedProofReferences(IProofReference.CALL_METHOD, "A::magic"), - new ExpectedProofReferences(IProofReference.CALL_METHOD, "B::staticMagic")); - } - - /** - * Tests "methodCall". - */ - @Test - public void testMethodCall() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/methodCall/MethodCall.java", - "methodCall.MethodCall", "caller", false, new MethodCallProofReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.CALL_METHOD, "methodCall.Class::a")); - } - - /** - * Tests "methodCallSuper". - */ - @Test - public void testMethodCallSuper() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/methodCallSuper/MethodCallSuper.java", - "methodCallSuper.MethodCallSuper", "caller", false, - new MethodCallProofReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.CALL_METHOD, "methodCallSuper.Super::a")); - } - - /** - * Tests "methodCallWithAssignment". - */ - @Test - public void testMethodCallWithAssignment() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/methodCallWithAssignment/MethodCall.java", - "methodCallWithAssignment.MethodCall", "caller", false, - new MethodCallProofReferencesAnalyst(), new ExpectedProofReferences( - IProofReference.CALL_METHOD, "methodCallWithAssignment.Class::a")); - } - - /** - * Tests "methodCallWithAssignmentSuper". - */ - @Test - public void testMethodCallWithAssignmentSuper() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/methodCallWithAssignmentSuper/MethodCallWithAssignmentSuper.java", - "methodCallWithAssignmentSuper.MethodCallWithAssignmentSuper", "caller", false, - new MethodCallProofReferencesAnalyst(), new ExpectedProofReferences( - IProofReference.CALL_METHOD, "methodCallWithAssignmentSuper.Super::a")); - } - - /** - * Tests "methodCallWithAssignmentWithinClass". - */ - @Test - public void testMethodCallWithAssignmentWithinClass() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/methodCallWithAssignmentWithinClass/MethodCallWithAssignmentWithinClass.java", - "methodCallWithAssignmentWithinClass.MethodCallWithAssignmentWithinClass", "caller", - false, new MethodCallProofReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.CALL_METHOD, - "methodCallWithAssignmentWithinClass.MethodCallWithAssignmentWithinClass::callme")); - } - - /** - * Tests "methodCallWithinClass". - */ - @Test - public void testMethodCallWithinClass() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/methodCallWithinClass/MethodCallWithinClass.java", - "methodCallWithinClass.MethodCallWithinClass", "caller", false, - new MethodCallProofReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.CALL_METHOD, - "methodCallWithinClass.MethodCallWithinClass::callme")); - } - - /** - * Tests "staticMethodCall". - */ - @Test - public void testStaticMethodCall() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/staticMethodCall/StaticMethodCall.java", - "staticMethodCall.StaticMethodCall", "caller", false, - new MethodCallProofReferencesAnalyst(), new ExpectedProofReferences( - IProofReference.CALL_METHOD, "staticMethodCall.StaticClass::callMe")); - } - - /** - * Tests "staticMethodCallStaticViaTypereference". - */ - @Test - public void testStaticMethodCallStaticViaTypereference() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/staticMethodCallStaticViaTypereference/StaticMethodCallStaticViaTypereference.java", - "staticMethodCallStaticViaTypereference.StaticMethodCallStaticViaTypereference", - "caller", false, new MethodCallProofReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.CALL_METHOD, - "staticMethodCallStaticViaTypereference.StaticClass::callMe")); - } - - /** - * Tests "staticMethodCallStaticWithAssignmentViaTypereference". - */ - @Test - public void testStaticMethodCallStaticWithAssignmentViaTypereference() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/staticMethodCallStaticWithAssignmentViaTypereference/StaticMethodCallStaticWithAssignmentViaTypereference.java", - "staticMethodCallStaticWithAssignmentViaTypereference.StaticMethodCallStaticWithAssignmentViaTypereference", - "caller", false, new MethodCallProofReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.CALL_METHOD, - "staticMethodCallStaticWithAssignmentViaTypereference.StaticClass::callMe")); - } -} diff --git a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestProgramVariableReferencesAnalyst.java b/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestProgramVariableReferencesAnalyst.java deleted file mode 100644 index f19c622bea4..00000000000 --- a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestProgramVariableReferencesAnalyst.java +++ /dev/null @@ -1,782 +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.proof_references.testcase.analyst; - -import de.uka.ilkd.key.proof_references.analyst.ProgramVariableReferencesAnalyst; -import de.uka.ilkd.key.proof_references.reference.IProofReference; -import de.uka.ilkd.key.proof_references.testcase.AbstractProofReferenceTestCase; - -import org.junit.jupiter.api.Test; - -/** - * Tests for {@link ProgramVariableReferencesAnalyst}. - * - * @author Martin Hentschel - */ -public class TestProgramVariableReferencesAnalyst extends AbstractProofReferenceTestCase { - /** - * Tests "ConditionalsAndOther#forEquals". - */ - @Test - public void testConditionalsAndOther_forEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "forEquals", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#forBoolean". - */ - @Test - public void testConditionalsAndOther_forBoolean() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "forBoolean", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::b")); - } - - /** - * Tests "ConditionalsAndOther#doWhileEquals". - */ - @Test - public void testConditionalsAndOther_doWhileEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "doWhileEquals", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#doWhileBoolean". - */ - @Test - public void testConditionalsAndOther_doWhileBoolean() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "doWhileBoolean", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::b")); - } - - /** - * Tests "ConditionalsAndOther#whileEquals". - */ - @Test - public void testConditionalsAndOther_whileEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "whileEquals", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#whileBoolean". - */ - @Test - public void testConditionalsAndOther_whileBoolean() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "whileBoolean", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::b")); - } - - /** - * Tests "ConditionalsAndOther#throwsNestedException". - */ - @Test - public void testConditionalsAndOther_throwsNestedException() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "throwsNestedException", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::ew"), - new ExpectedProofReferences(IProofReference.ACCESS, - "ConditionalsAndOther.ExceptionWrapper::wrapped")); - } - - /** - * Tests "ConditionalsAndOther#throwsException". - */ - @Test - public void testConditionalsAndOther_throwsException() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "throwsException", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::e")); - } - - /** - * Tests "ConditionalsAndOther#methodCallCondtional". - */ - @Test - public void testConditionalsAndOther_methodCallConditional() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "methodCallCondtional", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::b")); - } - - /** - * Tests "ConditionalsAndOther#methodCallAssignment". - */ - @Test - public void testConditionalsAndOther_methodCallAssignment() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "methodCallAssignment", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::b")); - } - - /** - * Tests "ConditionalsAndOther#methodCall". - */ - @Test - public void testConditionalsAndOther_methodCall() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "methodCall", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::b")); - } - - /** - * Tests "ConditionalsAndOther#returnComplex". - */ - @Test - public void testConditionalsAndOther_returnComplex() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "returnComplex", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::b")); - } - - /** - * Tests "ConditionalsAndOther#returnEquals". - */ - @Test - public void testConditionalsAndOther_returnEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "returnEquals", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#returnBoolean". - */ - @Test - public void testConditionalsAndOther_returnBoolean() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "returnBoolean", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::b")); - } - - /** - * Tests "ConditionalsAndOther#questionIncrementsAndDecrements". - */ - @Test - public void testConditionalsAndOther_questionIncrementsAndDecrements() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "questionIncrementsAndDecrements", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y")); - } - - /** - * Tests "ConditionalsAndOther#ifIncrementsAndDecrements". - */ - @Test - public void testConditionalsAndOther_ifIncrementsAndDecrements() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "ifIncrementsAndDecrements", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y")); - } - - /** - * Tests "ConditionalsAndOther#questionGreater". - */ - @Test - public void testConditionalsAndOther_questionGreater() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "questionGreater", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#questionGreaterEquals". - */ - @Test - public void testConditionalsAndOther_questionGreaterEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "questionGreaterEquals", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#questionNotEquals". - */ - @Test - public void testConditionalsAndOther_questionNotEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "questionNotEquals", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#questionEquals". - */ - @Test - public void testConditionalsAndOther_questionEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "questionEquals", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#questionLessEquals". - */ - @Test - public void testConditionalsAndOther_questionLessEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "questionLessEquals", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#questionLess". - */ - @Test - public void testConditionalsAndOther_questionLess() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "questionLess", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#questionBoolean". - */ - @Test - public void testConditionalsAndOther_questionBoolean() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "questionBoolean", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::b")); - } - - /** - * Tests "ConditionalsAndOther#ifGreater". - */ - @Test - public void testConditionalsAndOther_ifGreater() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "ifGreater", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#ifGreaterEquals". - */ - @Test - public void testConditionalsAndOther_ifGreaterEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "ifGreaterEquals", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#ifNotEquals". - */ - @Test - public void testConditionalsAndOther_ifNotEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "ifNotEquals", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#ifEquals". - */ - @Test - public void testConditionalsAndOther_ifEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "ifEquals", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#ifLessEquals". - */ - @Test - public void testConditionalsAndOther_ifLessEquals() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "ifLessEquals", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#ifLess". - */ - @Test - public void testConditionalsAndOther_ifLess() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "ifLess", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::y"), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ConditionalsAndOther#ifBoolean". - */ - @Test - public void testConditionalsAndOther_ifBoolean() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "ifBoolean", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::b")); - } - - /** - * Tests "ConditionalsAndOther#switchInt". - */ - @Test - public void testConditionalsAndOther_switchInt() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java", - "ConditionalsAndOther", "switchInt", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ConditionalsAndOther::x")); - } - - /** - * Tests "ArrayLength". - */ - @Test - public void testArrayLength() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/ArrayLength/ArrayLength.java", - "ArrayLength", "main", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "ArrayLength::length"), - new ExpectedProofReferences(IProofReference.ACCESS, "ArrayLength::array"), - new ExpectedProofReferences(IProofReference.ACCESS, "ArrayLength::my"), - new ExpectedProofReferences(IProofReference.ACCESS, "ArrayLength.MyClass::length"), - new ExpectedProofReferences(IProofReference.ACCESS, "ArrayLength.MyClass::array")); - } - - /** - * Tests "Assignments#assignmentWithSelf". - */ - @Test - public void testAssignments_assignmentWithSelf() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "assignmentWithSelf", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::next")); - } - - /** - * Tests "Assignments#nestedArray". - */ - @Test - public void testAssignments_nestedArray() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "nestedArray", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::myClass"), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments.MyClass::child"), - new ExpectedProofReferences(IProofReference.ACCESS, - "Assignments.MyChildClass::childArray")); - } - - /** - * Tests "Assignments#nestedValueAdd". - */ - @Test - public void testAssignments_nestedValueAdd() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "nestedValueAdd", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::myClass"), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments.MyClass::child"), - new ExpectedProofReferences(IProofReference.ACCESS, - "Assignments.MyChildClass::thirdChildValue"), - new ExpectedProofReferences(IProofReference.ACCESS, - "Assignments.MyChildClass::anotherChildValue"), - new ExpectedProofReferences(IProofReference.ACCESS, - "Assignments.MyChildClass::childValue")); - } - - /** - * Tests "Assignments#nestedValue". - */ - @Test - public void testAssignments_nestedValue() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "nestedValue", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::myClass"), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments.MyClass::child"), - new ExpectedProofReferences(IProofReference.ACCESS, - "Assignments.MyChildClass::anotherChildValue"), - new ExpectedProofReferences(IProofReference.ACCESS, - "Assignments.MyChildClass::childValue")); - } - - /** - * Tests "Assignments#assign". - */ - @Test - public void testAssignments_assign() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "assign", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::anotherValue"), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::value")); - } - - /** - * Tests "Assignments#mod". - */ - @Test - public void testAssignments_mod() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "mod", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::anotherValue"), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::value")); - } - - /** - * Tests "Assignments#div". - */ - @Test - public void testAssignments_div() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "div", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::anotherValue"), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::value")); - } - - /** - * Tests "Assignments#mul". - */ - @Test - public void testAssignments_mul() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "mul", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::anotherValue"), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::value")); - } - - /** - * Tests "Assignments#sub". - */ - @Test - public void testAssignments_sub() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "sub", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::anotherValue"), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::value")); - } - - /** - * Tests "Assignments#add". - */ - @Test - public void testAssignments_add() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "add", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::anotherValue"), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::value")); - } - - /** - * Tests "Assignments#decrementArrayBegin". - */ - @Test - public void testAssignments_decrementArrayBegin() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "decrementArrayBegin", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::array"), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::anotherValue")); - } - - /** - * Tests "Assignments#decrementArrayEnd". - */ - @Test - public void testAssignments_decrementArrayEnd() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "decrementArrayEnd", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::array"), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::anotherValue")); - } - - /** - * Tests "Assignments#incrementArrayBegin". - */ - @Test - public void testAssignments_incrementArrayBegin() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "incrementArrayBegin", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::array")); - } - - /** - * Tests "Assignments#incrementArrayEnd". - */ - @Test - public void testAssignments_incrementArrayEnd() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "incrementArrayEnd", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::array")); - } - - /** - * Tests "Assignments#decrementBegin". - */ - @Test - public void testAssignments_decrementBegin() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "decrementBegin", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::value")); - } - - /** - * Tests "Assignments#decrementEnd". - */ - @Test - public void testAssignments_decrementEnd() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "decrementEnd", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::value")); - } - - /** - * Tests "Assignments#incrementBegin". - */ - @Test - public void testAssignments_incrementBegin() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "incrementBegin", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::value")); - } - - /** - * Tests "Assignments#incrementEnd". - */ - @Test - public void testAssignments_incrementEnd() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/Assignments/Assignments.java", - "Assignments", "incrementEnd", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "Assignments::value")); - } - - /** - * Tests "assignment". - */ - @Test - public void testAssignment() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, "/proofReferences/assignment/Assignment.java", - "assignment.Assignment", "caller", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "assignment.Assignment::b"), - new ExpectedProofReferences(IProofReference.ACCESS, "assignment.Enum::b")); - } - - /** - * Tests "assignment_array2". - */ - @Test - public void testAssignment_array2() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/assignment_array2/Assignment_array2.java", - "assignment_array2.Assignment_array2", "caller", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, - "assignment_array2.Assignment_array2::index"), - new ExpectedProofReferences(IProofReference.ACCESS, - "assignment_array2.Assignment_array2::as"), - new ExpectedProofReferences(IProofReference.ACCESS, - "assignment_array2.Assignment_array2::val")); - } - - /** - * Tests "assignment_read_attribute". - */ - @Test - public void testAssignment_read_attribute() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/assignment_read_attribute/Assignment_read_attribute.java", - "assignment_read_attribute.Assignment_read_attribute", "caller", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, - "assignment_read_attribute.Class::b"), - new ExpectedProofReferences(IProofReference.ACCESS, - "assignment_read_attribute.Class::a")); - } - - /** - * Tests "assignment_read_length". - */ - @Test - public void testAssignment_read_length() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/assignment_read_length/Assignment_read_length.java", - "assignment_read_length.Assignment_read_length", "caller", false, - new ProgramVariableReferencesAnalyst(), new ExpectedProofReferences( - IProofReference.ACCESS, "assignment_read_length.Assignment_read_length::b")); - } - - /** - * Tests "assignment_to_primitive_array_component". - */ - @Test - public void testAssignment_to_primitive_array_component() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/assignment_to_primitive_array_component/Assignment_to_primitive_array_component.java", - "assignment_to_primitive_array_component.Assignment_to_primitive_array_component", - "caller", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, - "assignment_to_primitive_array_component.Assignment_to_primitive_array_component::index"), - new ExpectedProofReferences(IProofReference.ACCESS, - "assignment_to_primitive_array_component.Assignment_to_primitive_array_component::bs")); - } - - /** - * Tests "assignment_to_reference_array_component". - */ - @Test - public void testAssignment_to_reference_array_component() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/assignment_to_reference_array_component/Assignment_to_reference_array_component.java", - "assignment_to_reference_array_component.Assignment_to_reference_array_component", - "caller", false, new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, - "assignment_to_reference_array_component.Assignment_to_reference_array_component::bs")); - } - - /** - * Tests "assignment_write_attribute". - */ - @Test - public void testAssignment_write_attribute() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/assignment_write_attribute/Assignment_write_attribute.java", - "assignment_write_attribute.Assignment_write_attribute", "caller", false, - new ProgramVariableReferencesAnalyst(), new ExpectedProofReferences( - IProofReference.ACCESS, "assignment_write_attribute.Class::a")); - } - - /** - * Tests "assignment_write_static_attribute". - */ - @Test - public void testAssignment_write_static_attribute() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/assignment_write_static_attribute/Assignment_write_static_attribute.java", - "assignment_write_static_attribute.Assignment_write_static_attribute", "caller", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, - "assignment_write_static_attribute.Assignment_write_static_attribute::b")); - } - - /** - * Tests "activeUseStaticFieldReadAccess2". - */ - @Test - public void testActiveUseStaticFieldReadAccess2() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/activeUseStaticFieldReadAccess2/ActiveUseStaticFieldReadAccess2.java", - "activeUseStaticFieldReadAccess2.ActiveUseStaticFieldReadAccess2", "caller", false, - new ProgramVariableReferencesAnalyst(), new ExpectedProofReferences( - IProofReference.ACCESS, "activeUseStaticFieldReadAccess2.Class::i")); - } - - /** - * Tests "activeUseStaticFieldWriteAccess2". - */ - @Test - public void testActiveUseStaticFieldWriteAccess2() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/activeUseStaticFieldWriteAccess2/ActiveUseStaticFieldWriteAccess2.java", - "activeUseStaticFieldWriteAccess2.ActiveUseStaticFieldWriteAccess2", "caller", false, - new ProgramVariableReferencesAnalyst(), new ExpectedProofReferences( - IProofReference.ACCESS, "activeUseStaticFieldWriteAccess2.Class::a")); - } - - /** - * Tests "eval_order_access4". - */ - @Test - public void testEval_order_access4() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/eval_order_access4/Eval_order_access4.java", - "eval_order_access4.Eval_order_access4", "caller", false, - new ProgramVariableReferencesAnalyst(), - new ExpectedProofReferences(IProofReference.ACCESS, "eval_order_access4.Class::a")); - } - - /** - * Tests "eval_order_array_access5". - */ - @Test - public void testEval_order_array_access5() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/eval_order_array_access5/Eval_order_array_access5.java", - "eval_order_array_access5.Eval_order_array_access5", "caller", false, - new ProgramVariableReferencesAnalyst(), new ExpectedProofReferences( - IProofReference.ACCESS, "eval_order_array_access5.Class::a")); - } - - /** - * Tests "variableDeclarationAssign". - */ - @Test - public void testVariableDeclarationAssign() throws Exception { - doReferenceMethodTest(TESTCASE_DIRECTORY, - "/proofReferences/variableDeclarationAssign/VariableDeclarationAssign.java", - "variableDeclarationAssign.VariableDeclarationAssign", "caller", false, - new ProgramVariableReferencesAnalyst(), new ExpectedProofReferences( - IProofReference.ACCESS, "variableDeclarationAssign.VariableDeclarationAssign::a")); - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/AccessibleTest/AccessibleTest.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/AccessibleTest/AccessibleTest.java deleted file mode 100644 index 7f29a730820..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/AccessibleTest/AccessibleTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package test; - -public class AccessibleTest { - private int x; - - public AccessibleTest(int x) { - this.x = x; - } -} - -class B { - //@ accessible \inv : this.*, c.*; - public final /*@ nullable @*/ AccessibleTest c; - - //@ invariant \invariant_for(c); - - B(int x) { c = new AccessibleTest(x); } -} \ No newline at end of file diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/ArrayLength/ArrayLength.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/ArrayLength/ArrayLength.java deleted file mode 100644 index 739b5529449..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/ArrayLength/ArrayLength.java +++ /dev/null @@ -1,26 +0,0 @@ - -public class ArrayLength { - private int length; - - private int[] array; - - private MyClass my; - - /*@ requires array != null && my != null && my.array != null; - @ ensures true; - @*/ - public int main() { - int result = 0; - result += length; - result += array.length; - result += my.length; - result += my.array.length; - return result; - } - - public static class MyClass { - public int length; - - public int[] array; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/Assignments/Assignments.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/Assignments/Assignments.java deleted file mode 100644 index 4cc9c05db61..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/Assignments/Assignments.java +++ /dev/null @@ -1,153 +0,0 @@ - -public class Assignments { - int value; - - int anotherValue; - - int[] array; - - MyClass myClass; - - Assignments next; - - /*@ - @ ensures value == \old(value) + 1; - @*/ - public void incrementEnd() { - value++; - } - - /*@ - @ ensures value == \old(value) + 1; - @*/ - public void incrementBegin() { - ++value; - } - - /*@ - @ ensures value == \old(value) - 1; - @*/ - public void decrementEnd() { - value--; - } - - /*@ - @ ensures value == \old(value) - 1; - @*/ - public void decrementBegin() { - --value; - } - - /*@ requires array != null && array.length == 1; - @ ensures array[0] == \old(array[0]) + 1; - @*/ - public void incrementArrayEnd() { - array[0]++; - } - - /*@ requires array != null && array.length == 1; - @ ensures array[0] == \old(array[0]) + 1; - @*/ - public void incrementArrayBegin() { - ++array[0]; - } - - /*@ requires array != null && array.length == 1 && anotherValue == 0; - @ ensures array[anotherValue] == \old(array[anotherValue]) - 1; - @*/ - public void decrementArrayEnd() { - array[anotherValue]--; - } - - /*@ requires array != null && array.length == 1 && anotherValue == 0; - @ ensures array[anotherValue] == \old(array[anotherValue]) - 1; - @*/ - public void decrementArrayBegin() { - --array[anotherValue]; - } - - /*@ - @ ensures value == \old(value) + anotherValue; - @*/ - public void add() { - value += anotherValue; - } - - /*@ - @ ensures value == \old(value) - anotherValue; - @*/ - public void sub() { - value -= anotherValue; - } - - /*@ - @ ensures value == \old(value) * anotherValue; - @*/ - public void mul() { - value *= anotherValue; - } - - /*@ requires anotherValue != 0; - @ ensures value == \old(value) / anotherValue; - @*/ - public void div() { - value /= anotherValue; - } - - /*@ requires anotherValue != 0; - @ ensures value == \old(value) % anotherValue; - @*/ - public void mod() { - value %= anotherValue; - } - - /*@ - @ ensures value == anotherValue; - @*/ - public void assign() { - value = anotherValue; - } - - /*@ requires myClass != null && myClass.child != null; - @ ensures myClass.child.childValue == myClass.child.anotherChildValue; - @*/ - public void nestedValue() { - myClass.child.childValue = myClass.child.anotherChildValue; - } - - /*@ requires myClass != null && myClass.child != null; - @ ensures myClass.child.childValue == myClass.child.anotherChildValue + myClass.child.thirdChildValue; - @*/ - public void nestedValueAdd() { - myClass.child.childValue = myClass.child.anotherChildValue + myClass.child.thirdChildValue; - } - - /*@ requires myClass != null && myClass.child != null && myClass.child.childArray != null; - @ requires myClass.child.childArray.length == 2; - @ ensures myClass.child.childArray[0] == myClass.child.childArray[1]; - @*/ - public void nestedArray() { - myClass.child.childArray[0] = myClass.child.childArray[1]; - } - - public static class MyClass { - public MyChildClass child; - } - - public static class MyChildClass { - public int childValue; - - public int anotherChildValue; - - public int thirdChildValue; - - public int[] childArray; - } - - /*@ - @ ensures next == this; - @*/ - public void assignmentWithSelf() { - this.next = this; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java deleted file mode 100644 index aa9e1693388..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/ConditionalsAndOther/ConditionalsAndOther.java +++ /dev/null @@ -1,289 +0,0 @@ - -public class ConditionalsAndOther { - private int x; - - private int y; - - private boolean b; - - private Exception e; - - private ExceptionWrapper ew; - - /*@ - @ ensures \result == (x == 0); - @*/ - public boolean switchInt() { - switch (x) { - case 0 : return true; - default : return false; - } - } - - /*@ - @ ensures \result == b; - @*/ - public boolean ifBoolean() { - if (b) { - return true; - } - else { - return false; - } - } - - /*@ - @ ensures \result == x < y; - @*/ - public boolean ifLess() { - if (x < y) { - return true; - } - else { - return false; - } - } - - /*@ - @ ensures \result == x <= y; - @*/ - public boolean ifLessEquals() { - if (x <= y) { - return true; - } - else { - return false; - } - } - - /*@ - @ ensures \result == x <= y; - @*/ - public boolean ifEquals() { - if (x == y) { - return true; - } - else { - return false; - } - } - - /*@ - @ ensures \result == (x != y); - @*/ - public boolean ifNotEquals() { - if (x != y) { - return true; - } - else { - return false; - } - } - - /*@ - @ ensures \result == x >= y; - @*/ - public boolean ifGreaterEquals() { - if (x >= y) { - return true; - } - else { - return false; - } - } - - /*@ - @ ensures \result == x > y; - @*/ - public boolean ifGreater() { - if (x > y) { - return true; - } - else { - return false; - } - } - - /*@ - @ ensures \result == b; - @*/ - public boolean questionBoolean() { - return b ? true : false; - } - - /*@ - @ ensures \result == x < y; - @*/ - public boolean questionLess() { - return x < y ? true : false; - } - - /*@ - @ ensures \result == x <= y; - @*/ - public boolean questionLessEquals() { - return x <= y ? true : false; - } - - /*@ - @ ensures \result == x <= y; - @*/ - public boolean questionEquals() { - return x == y ? true : false; - } - - /*@ - @ ensures \result == (x != y); - @*/ - public boolean questionNotEquals() { - return x != y ? true : false; - } - - /*@ - @ ensures \result == x >= y; - @*/ - public boolean questionGreaterEquals() { - return x >= y ? true : false; - } - - /*@ - @ ensures \result == x > y; - @*/ - public boolean questionGreater() { - return x > y ? true : false; - } - - /*@ - @ ensures true; - @*/ - public boolean ifIncrementsAndDecrements() { - if (x++ * y++ > --y * x--) { - return true; - } - else { - return false; - } - } - - /*@ - @ ensures true; - @*/ - public boolean questionIncrementsAndDecrements() { - return x++ * y++ > --y * x-- ? true : false; - } - - /*@ - @ ensures \result == b; - @*/ - public boolean returnBoolean() { - return b; - } - - /*@ - @ ensures \result == (x == y); - @*/ - public boolean returnEquals() { - return x == y; - } - - /*@ - @ ensures \result == true; - @*/ - public boolean returnComplex() { - return x == y && b || !b && x != y; - } - - /*@ - @ ensures true; - @*/ - public void methodCall() { - doNothing(x, b); - } - - /*@ - @ ensures true; - @*/ - public void methodCallAssignment() { - doNothing(x++ + y + 1, b); - } - - /*@ - @ ensures true; - @*/ - public void methodCallCondtional() { - doNothing(x, b || y == 0); - } - - public void doNothing(int localInt, boolean localBoolean) { - } - - /*@ exceptional_behavior - @ requires e != null; - @ signals (Exception e) \not_specified; - @*/ - public void throwsException() throws Exception { - throw e; - } - - /*@ exceptional_behavior - @ requires ew != null && ew.wrapped != null; - @ signals (Exception e) \not_specified; - @*/ - public void throwsNestedException() throws Exception { - throw ew.wrapped; - } - - public static class ExceptionWrapper { - public Exception wrapped; - } - - /*@ requires b == false; - @ ensures true; - @*/ - public void whileBoolean() { - while (b) { - } - } - - /*@ requires x != y; - @ ensures true; - @*/ - public void whileEquals() { - while (x == y) { - } - } - - /*@ requires b == false; - @ ensures true; - @*/ - public void doWhileBoolean() { - do { - } - while (b); - } - - /*@ requires x != y; - @ ensures true; - @*/ - public void doWhileEquals() { - do { - } - while (x == y); - } - - /*@ requires b == false; - @ ensures true; - @*/ - public void forBoolean() { - for(int i = 0; b; i++) { - } - } - - /*@ requires x != y; - @ ensures true; - @*/ - public void forEquals() { - for (int i = 0; x == y; i++) { - } - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/InnerAndAnonymousTypeTest/InnerAndAnonymousTypeTest.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/InnerAndAnonymousTypeTest/InnerAndAnonymousTypeTest.java deleted file mode 100644 index 8d80afb4512..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/InnerAndAnonymousTypeTest/InnerAndAnonymousTypeTest.java +++ /dev/null @@ -1,72 +0,0 @@ - -public class InnerAndAnonymousTypeTest { - /*@ - @ ensures true; - @*/ - public int main() { - IGetter getter = new IGetter() { - public int getValue() { - return 0; - } - }; - return getter.getValue() + - InnerInterface.VALUE + - InnerInterface.InnerInterfaceInterface.VALUE + - InnerInterface.InnerInterfaceClass.VALUE + - InnerClass.VALUE + - InnerClass.InnerClassInterface.VALUE + - InnerClass.InnerClassClass.VALUE + - InnerEnum.VALUE + - InnerEnum.InnerEnumClass.VALUE + - InnerEnum.InnerEnumInterface.VALUE; -// InnerEnum.InnerEnumEnum.VALUE; - } - - public interface IGetter { - public int getValue(); - } - - public class InnerInterface { - public static final int VALUE = 1; - - public class InnerInterfaceInterface { - public static final int VALUE = 2; - } - - public class InnerInterfaceClass { - public static final int VALUE = 3; - } - } - - public class InnerClass { - public static final int VALUE = 4; - - public class InnerClassInterface { - public static final int VALUE = 5; - } - - public class InnerClassClass { - public static final int VALUE = 6; - } - } - - public enum InnerEnum { - INNER_LITERAL; - - public static final int VALUE = 7; - - public class InnerEnumInterface { - public static final int VALUE = 8; - } - - public class InnerEnumClass { - public static final int VALUE = 9; - } - -// public enum InnerEnumEnum { -// INNER_ENUM_LITERAL; -// -// public static final int VALUE = 10; -// } - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/InnerAndAnonymousTypeTest/model/InnerAndAnonymousTypeTest.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/InnerAndAnonymousTypeTest/model/InnerAndAnonymousTypeTest.java deleted file mode 100644 index deecda1d167..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/InnerAndAnonymousTypeTest/model/InnerAndAnonymousTypeTest.java +++ /dev/null @@ -1,73 +0,0 @@ -package model; - -public class InnerAndAnonymousTypeTest { - /*@ - @ ensures true; - @*/ - public int main() { - IGetter getter = new IGetter() { - public int getValue() { - return 0; - } - }; - return getter.getValue() + - InnerInterface.VALUE + - InnerInterface.InnerInterfaceInterface.VALUE + - InnerInterface.InnerInterfaceClass.VALUE + - InnerClass.VALUE + - InnerClass.InnerClassInterface.VALUE + - InnerClass.InnerClassClass.VALUE + - InnerEnum.VALUE + - InnerEnum.InnerEnumClass.VALUE + - InnerEnum.InnerEnumInterface.VALUE; -// InnerEnum.InnerEnumEnum.VALUE; - } - - public interface IGetter { - public int getValue(); - } - - public class InnerInterface { - public static final int VALUE = 1; - - public class InnerInterfaceInterface { - public static final int VALUE = 2; - } - - public class InnerInterfaceClass { - public static final int VALUE = 3; - } - } - - public class InnerClass { - public static final int VALUE = 4; - - public class InnerClassInterface { - public static final int VALUE = 5; - } - - public class InnerClassClass { - public static final int VALUE = 6; - } - } - - public enum InnerEnum { - INNER_LITERAL; - - public static final int VALUE = 7; - - public class InnerEnumInterface { - public static final int VALUE = 8; - } - - public class InnerEnumClass { - public static final int VALUE = 9; - } - -// public enum InnerEnumEnum { -// INNER_ENUM_LITERAL; -// -// public static final int VALUE = 10; -// } - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContract/Child.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContract/Child.java deleted file mode 100644 index d6221f34710..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContract/Child.java +++ /dev/null @@ -1,7 +0,0 @@ - -public class Child { - /*@ - @ public invariant x >= 0 && x <= 10; - @*/ - public int x; -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContract/InvariantInOperationContract.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContract/InvariantInOperationContract.java deleted file mode 100644 index cd75c14b469..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContract/InvariantInOperationContract.java +++ /dev/null @@ -1,13 +0,0 @@ - -public class InvariantInOperationContract { - private Child child; - - private int y; - - /*@ requires \invariant_for(child); - @ ensures y == newValue; - @*/ - public void main(int newValue) { - y = newValue; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContractOfArgument/Child.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContractOfArgument/Child.java deleted file mode 100644 index d6221f34710..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContractOfArgument/Child.java +++ /dev/null @@ -1,7 +0,0 @@ - -public class Child { - /*@ - @ public invariant x >= 0 && x <= 10; - @*/ - public int x; -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContractOfArgument/InvariantInOperationContractOfArgument.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContractOfArgument/InvariantInOperationContractOfArgument.java deleted file mode 100644 index 9c494f12826..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/InvariantInOperationContractOfArgument/InvariantInOperationContractOfArgument.java +++ /dev/null @@ -1,13 +0,0 @@ - -public class InvariantInOperationContractOfArgument { - private static int y; - - /*@ requires \invariant_for(child); - @ ensures child.x == newValue; - @ ensures \invariant_for(child); - @ assignable \everything; - @*/ - public static void main(Child child, int newValue) { - child.x = newValue; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/MethodBodyExpand/MethodBodyExpand.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/MethodBodyExpand/MethodBodyExpand.java deleted file mode 100644 index 98d2bb25404..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/MethodBodyExpand/MethodBodyExpand.java +++ /dev/null @@ -1,15 +0,0 @@ - -public class MethodBodyExpand { - /*@ - @ ensures \result == 84; - @*/ - public int main() { - int first = magic42(); - int second = magic42(); - return first + second; - } - - public int magic42() { - return 42; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/ModelFieldTest/ModelFieldTest.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/ModelFieldTest/ModelFieldTest.java deleted file mode 100644 index 5ab6fd37772..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/ModelFieldTest/ModelFieldTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package test; - -public class ModelFieldTest { - //@ model int f; - //@ accessible f : this.x; - //@ represents f = 2 * x; - - private int x = 4; - - /*@ - @ ensures \result == f; - @*/ - public int doubleX() { - return x + x; - } -} \ No newline at end of file diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/NestedInvariantInOperationContract/Child.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/NestedInvariantInOperationContract/Child.java deleted file mode 100644 index d6221f34710..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/NestedInvariantInOperationContract/Child.java +++ /dev/null @@ -1,7 +0,0 @@ - -public class Child { - /*@ - @ public invariant x >= 0 && x <= 10; - @*/ - public int x; -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/NestedInvariantInOperationContract/ChildContainer.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/NestedInvariantInOperationContract/ChildContainer.java deleted file mode 100644 index dcf6cb2ecfc..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/NestedInvariantInOperationContract/ChildContainer.java +++ /dev/null @@ -1,4 +0,0 @@ - -public class ChildContainer { - public Child child; -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/NestedInvariantInOperationContract/NestedInvariantInOperationContract.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/NestedInvariantInOperationContract/NestedInvariantInOperationContract.java deleted file mode 100644 index 8e377b81f61..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/NestedInvariantInOperationContract/NestedInvariantInOperationContract.java +++ /dev/null @@ -1,13 +0,0 @@ - -public class NestedInvariantInOperationContract { - private ChildContainer cc; - - private int y; - - /*@ requires cc != null && \invariant_for(cc.child); - @ ensures y == newValue; - @*/ - public void main(int newValue) { - y = newValue; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/UseOperationContractTest/UseOperationContractTest.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/UseOperationContractTest/UseOperationContractTest.java deleted file mode 100644 index ef99c1a6d0e..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/UseOperationContractTest/UseOperationContractTest.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class UseOperationContractTest { - /*@ normal_behavior - @ ensures \result == 84; - @*/ - public int main() { - int magic = magic42(); - return magic * 2; - } - - /*@ normal_behavior - @ ensures \result == 42; - @*/ - public int magic42() { - throw new RuntimeException(); - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldReadAccess2/ActiveUseStaticFieldReadAccess2.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldReadAccess2/ActiveUseStaticFieldReadAccess2.java deleted file mode 100644 index 96c08c140c7..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldReadAccess2/ActiveUseStaticFieldReadAccess2.java +++ /dev/null @@ -1,11 +0,0 @@ -package activeUseStaticFieldReadAccess2; - -public class ActiveUseStaticFieldReadAccess2 { - /*@ requires true; - @ ensures true; - @*/ - public void caller(Class callme) { - int i; - i = callme.i + 2; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldReadAccess2/Class.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldReadAccess2/Class.java deleted file mode 100644 index def0730bdf4..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldReadAccess2/Class.java +++ /dev/null @@ -1,7 +0,0 @@ -package activeUseStaticFieldReadAccess2; - -public class Class { - public static boolean a; - - public static int i; -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldWriteAccess2/ActiveUseStaticFieldWriteAccess2.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldWriteAccess2/ActiveUseStaticFieldWriteAccess2.java deleted file mode 100644 index 23b1f64b6a4..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldWriteAccess2/ActiveUseStaticFieldWriteAccess2.java +++ /dev/null @@ -1,10 +0,0 @@ -package activeUseStaticFieldWriteAccess2; - -public class ActiveUseStaticFieldWriteAccess2 { - /*@ requires true; - @ ensures true; - @*/ - public void caller(Class callme) { - callme.a = false; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldWriteAccess2/Class.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldWriteAccess2/Class.java deleted file mode 100644 index b6f52ef8e8c..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/activeUseStaticFieldWriteAccess2/Class.java +++ /dev/null @@ -1,5 +0,0 @@ -package activeUseStaticFieldWriteAccess2; - -public class Class { - public static boolean a; -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment/Assignment.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment/Assignment.java deleted file mode 100644 index 080c29959ee..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment/Assignment.java +++ /dev/null @@ -1,14 +0,0 @@ -package assignment; - -public class Assignment { - private boolean b; - - /*@ requires true; - @ ensures true; - @*/ - public void caller() { - boolean a; - a = b; - Enum c = Enum.b; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment/Enum.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment/Enum.java deleted file mode 100644 index fd844638f3c..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment/Enum.java +++ /dev/null @@ -1,5 +0,0 @@ -package assignment; - -public enum Enum { - b; -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_array2/Assignment_array2.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_array2/Assignment_array2.java deleted file mode 100644 index 8a65b7604cd..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_array2/Assignment_array2.java +++ /dev/null @@ -1,16 +0,0 @@ -package assignment_array2; - -public class Assignment_array2 { - int val; - int[] as; - int index; - - /*@ requires as != null; - @ requires index == 0; - @ requires as.length == 1; - @ ensures val == as[index]; - @*/ - public void caller() { - val = as[index]; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_read_attribute/Assignment_read_attribute.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_read_attribute/Assignment_read_attribute.java deleted file mode 100644 index 52048c2ca51..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_read_attribute/Assignment_read_attribute.java +++ /dev/null @@ -1,10 +0,0 @@ -package assignment_read_attribute; - -public class Assignment_read_attribute { - /*@ requires true; - @ ensures true; - @*/ - public void caller(Class callme) { - callme.a = callme.b + callme.b; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_read_attribute/Class.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_read_attribute/Class.java deleted file mode 100644 index 98fff2bb9d0..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_read_attribute/Class.java +++ /dev/null @@ -1,6 +0,0 @@ -package assignment_read_attribute; - -public class Class { - public int a; - public int b; -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_read_length/Assignment_read_length.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_read_length/Assignment_read_length.java deleted file mode 100644 index b7e4e5d5190..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_read_length/Assignment_read_length.java +++ /dev/null @@ -1,13 +0,0 @@ -package assignment_read_length; - -public class Assignment_read_length { - boolean[] b; - - /*@ requires true; - @ ensures true; - @*/ - public void caller() { - int a; - a = b.length; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_to_primitive_array_component/Assignment_to_primitive_array_component.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_to_primitive_array_component/Assignment_to_primitive_array_component.java deleted file mode 100644 index cc50ae90a2b..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_to_primitive_array_component/Assignment_to_primitive_array_component.java +++ /dev/null @@ -1,14 +0,0 @@ -package assignment_to_primitive_array_component; - -public class Assignment_to_primitive_array_component { - int index; - boolean[] bs; - - /*@ requires bs.length == 1; - @ requires index == 0; - @ ensures true; - @*/ - public void caller() { - bs[index] = false; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_to_reference_array_component/Assignment_to_reference_array_component.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_to_reference_array_component/Assignment_to_reference_array_component.java deleted file mode 100644 index df766a678c0..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_to_reference_array_component/Assignment_to_reference_array_component.java +++ /dev/null @@ -1,12 +0,0 @@ -package assignment_to_reference_array_component; - -public class Assignment_to_reference_array_component { - String[] bs; - - /*@ requires \typeof(bs) == \type(String[]) && bs.length == 1; - @ ensures true; - @*/ - public void caller(String o) { - bs[0] = o; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_write_attribute/Assignment_write_attribute.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_write_attribute/Assignment_write_attribute.java deleted file mode 100644 index fed33fb0c79..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_write_attribute/Assignment_write_attribute.java +++ /dev/null @@ -1,10 +0,0 @@ -package assignment_write_attribute; - -public class Assignment_write_attribute { - /*@ requires true; - @ ensures true; - @*/ - public void caller(Class callme){ - callme.a = false; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_write_attribute/Class.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_write_attribute/Class.java deleted file mode 100644 index c5de77a0eb0..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_write_attribute/Class.java +++ /dev/null @@ -1,5 +0,0 @@ -package assignment_write_attribute; - -public class Class { - public boolean a; -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_write_static_attribute/Assignment_write_static_attribute.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_write_static_attribute/Assignment_write_static_attribute.java deleted file mode 100644 index aaab3d0e1f8..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/assignment_write_static_attribute/Assignment_write_static_attribute.java +++ /dev/null @@ -1,12 +0,0 @@ -package assignment_write_static_attribute; - -public class Assignment_write_static_attribute { - static boolean b; - - /*@ requires true; - @ ensures true; - @*/ - public void caller() { - b = false; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/constructorTest/A.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/constructorTest/A.java deleted file mode 100644 index 005d81c18f3..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/constructorTest/A.java +++ /dev/null @@ -1,9 +0,0 @@ - -public class A { - public int magic() { - return 42; - } - public static int staticMagic() { - return 11; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/constructorTest/B.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/constructorTest/B.java deleted file mode 100644 index 7c5079fee39..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/constructorTest/B.java +++ /dev/null @@ -1,6 +0,0 @@ - -public class B extends A { - public static int staticMagic() { - return -4711; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/constructorTest/ConstructorTest.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/constructorTest/ConstructorTest.java deleted file mode 100644 index f4c7659d0ee..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/constructorTest/ConstructorTest.java +++ /dev/null @@ -1,11 +0,0 @@ - -public class ConstructorTest { - private int value; - - /*@ - @ ensures value == 42 - 4711; - @*/ - public ConstructorTest(int x, B a) { - value = a.magic() + a.staticMagic(); - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_access4/Class.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_access4/Class.java deleted file mode 100644 index 127893de739..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_access4/Class.java +++ /dev/null @@ -1,6 +0,0 @@ -package eval_order_access4; - -public class Class { - public int a; - public int b; -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_access4/Eval_order_access4.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_access4/Eval_order_access4.java deleted file mode 100644 index 5942b6842ea..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_access4/Eval_order_access4.java +++ /dev/null @@ -1,10 +0,0 @@ -package eval_order_access4; - -public class Eval_order_access4 { - /*@ requires true; - @ ensures true; - @*/ - public void caller(Class callme) { - callme.a = 2 + 2; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_array_access5/Class.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_array_access5/Class.java deleted file mode 100644 index 14365ed39b7..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_array_access5/Class.java +++ /dev/null @@ -1,6 +0,0 @@ -package eval_order_array_access5; - -public class Class { - public int a; - public int b; -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_array_access5/Eval_order_array_access5.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_array_access5/Eval_order_array_access5.java deleted file mode 100644 index 00fc8ef6bcf..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/eval_order_array_access5/Eval_order_array_access5.java +++ /dev/null @@ -1,10 +0,0 @@ -package eval_order_array_access5; - -public class Eval_order_array_access5 { - /*@requires as.length == 2; - @ensures true; - @*/ - public void caller(Class callme, int[] as) { - callme.a = as[0 + 1]; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCall/Class.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCall/Class.java deleted file mode 100644 index 94fcd8a3cfe..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCall/Class.java +++ /dev/null @@ -1,7 +0,0 @@ -package methodCall; - -public class Class { - public boolean a() { - return false; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCall/MethodCall.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCall/MethodCall.java deleted file mode 100644 index 854f51bee63..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCall/MethodCall.java +++ /dev/null @@ -1,10 +0,0 @@ -package methodCall; - -public class MethodCall { - /*@requires true; - @ensures true; - @*/ - public void caller(Class callme){ - callme.a(); - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallSuper/MethodCallSuper.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallSuper/MethodCallSuper.java deleted file mode 100644 index 4f1ebbdad85..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallSuper/MethodCallSuper.java +++ /dev/null @@ -1,10 +0,0 @@ -package methodCallSuper; - -public class MethodCallSuper extends Super{ - /*@requires true; - @ensures true; - @*/ - public void caller(){ - super.a(); - } -} \ No newline at end of file diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallSuper/Super.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallSuper/Super.java deleted file mode 100644 index 7388ac5c9f7..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallSuper/Super.java +++ /dev/null @@ -1,7 +0,0 @@ -package methodCallSuper; - -public class Super { - public boolean a() { - return false; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignment/Class.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignment/Class.java deleted file mode 100644 index f39f30a9ac3..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignment/Class.java +++ /dev/null @@ -1,7 +0,0 @@ -package methodCallWithAssignment; - -public class Class { - public boolean a() { - return false; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignment/MethodCall.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignment/MethodCall.java deleted file mode 100644 index 13397eace8c..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignment/MethodCall.java +++ /dev/null @@ -1,10 +0,0 @@ -package methodCallWithAssignment; - -public class MethodCall { - /*@requires true; - @ensures true; - @*/ - public void caller(Class callme){ - boolean fu = callme.a(); - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignmentSuper/MethodCallWithAssignmentSuper.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignmentSuper/MethodCallWithAssignmentSuper.java deleted file mode 100644 index 0c7ae148f61..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignmentSuper/MethodCallWithAssignmentSuper.java +++ /dev/null @@ -1,10 +0,0 @@ -package methodCallWithAssignmentSuper; - -public class MethodCallWithAssignmentSuper extends Super{ - /*@requires true; - @ensures true; - @*/ - public void caller(){ - boolean fu = super.a(); - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignmentSuper/Super.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignmentSuper/Super.java deleted file mode 100644 index ea6c5f346ab..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignmentSuper/Super.java +++ /dev/null @@ -1,7 +0,0 @@ -package methodCallWithAssignmentSuper; - -public class Super { - public boolean a() { - return false; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignmentWithinClass/MethodCallWithAssignmentWithinClass.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignmentWithinClass/MethodCallWithAssignmentWithinClass.java deleted file mode 100644 index 68f235bf71a..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithAssignmentWithinClass/MethodCallWithAssignmentWithinClass.java +++ /dev/null @@ -1,16 +0,0 @@ -package methodCallWithAssignmentWithinClass; - -public class MethodCallWithAssignmentWithinClass { - - /*@requires true; - @ensures true; - @*/ - public void caller(){ - boolean nottrue = callme(); - } - - - public boolean callme(){ - return false; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithinClass/MethodCallWithinClass.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithinClass/MethodCallWithinClass.java deleted file mode 100644 index 11eeea9398e..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/methodCallWithinClass/MethodCallWithinClass.java +++ /dev/null @@ -1,16 +0,0 @@ -package methodCallWithinClass; - -public class MethodCallWithinClass { - - /*@requires true; - @ensures true; - @*/ - public void caller(){ - callme(); - } - - - public void callme(){ - - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCall/StaticClass.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCall/StaticClass.java deleted file mode 100644 index c7a930bf036..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCall/StaticClass.java +++ /dev/null @@ -1,7 +0,0 @@ -package staticMethodCall; - -public class StaticClass { - public static void callMe(){ - - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCall/StaticMethodCall.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCall/StaticMethodCall.java deleted file mode 100644 index 39cd2df3c19..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCall/StaticMethodCall.java +++ /dev/null @@ -1,10 +0,0 @@ -package staticMethodCall; - -public class StaticMethodCall { - /*@requires true; - @ensures true; - @*/ - public void caller(StaticClass staticClass){ - staticClass.callMe(); - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticViaTypereference/StaticClass.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticViaTypereference/StaticClass.java deleted file mode 100644 index 16c6970f293..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticViaTypereference/StaticClass.java +++ /dev/null @@ -1,7 +0,0 @@ -package staticMethodCallStaticViaTypereference; - -public class StaticClass { - public static void callMe(){ - - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticViaTypereference/StaticMethodCallStaticViaTypereference.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticViaTypereference/StaticMethodCallStaticViaTypereference.java deleted file mode 100644 index 377c4ff5c38..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticViaTypereference/StaticMethodCallStaticViaTypereference.java +++ /dev/null @@ -1,10 +0,0 @@ -package staticMethodCallStaticViaTypereference; - -public class StaticMethodCallStaticViaTypereference { - /*@requires true; - @ensures true; - @*/ - public void caller(){ - StaticClass.callMe(); - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticWithAssignmentViaTypereference/StaticClass.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticWithAssignmentViaTypereference/StaticClass.java deleted file mode 100644 index 7e5f1ced76b..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticWithAssignmentViaTypereference/StaticClass.java +++ /dev/null @@ -1,7 +0,0 @@ -package staticMethodCallStaticWithAssignmentViaTypereference; - -public class StaticClass { - public static boolean callMe(){ - return false; - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticWithAssignmentViaTypereference/StaticMethodCallStaticWithAssignmentViaTypereference.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticWithAssignmentViaTypereference/StaticMethodCallStaticWithAssignmentViaTypereference.java deleted file mode 100644 index e1c081d3db0..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/staticMethodCallStaticWithAssignmentViaTypereference/StaticMethodCallStaticWithAssignmentViaTypereference.java +++ /dev/null @@ -1,10 +0,0 @@ -package staticMethodCallStaticWithAssignmentViaTypereference; - -public class StaticMethodCallStaticWithAssignmentViaTypereference { - /*@requires true; - @ensures true; - @*/ - public void caller(){ - boolean nottrue = StaticClass.callMe(); - } -} diff --git a/key.core.proof_references/src/test/resources/testcase/proofReferences/variableDeclarationAssign/VariableDeclarationAssign.java b/key.core.proof_references/src/test/resources/testcase/proofReferences/variableDeclarationAssign/VariableDeclarationAssign.java deleted file mode 100644 index c2dba9fceea..00000000000 --- a/key.core.proof_references/src/test/resources/testcase/proofReferences/variableDeclarationAssign/VariableDeclarationAssign.java +++ /dev/null @@ -1,12 +0,0 @@ -package variableDeclarationAssign; - -public class VariableDeclarationAssign { - boolean a; - - /*@ requires true; - @ ensures true; - @*/ - public void caller() { - boolean fu = a; - } -} diff --git a/key.core.symbolic_execution.example/build.gradle b/key.core.symbolic_execution.example/build.gradle deleted file mode 100644 index 8e005f7c6fd..00000000000 --- a/key.core.symbolic_execution.example/build.gradle +++ /dev/null @@ -1,6 +0,0 @@ -description = "Example project to use KeY's APIs" - -dependencies { - implementation project(":key.core") - implementation project(":key.core.symbolic_execution") -} diff --git a/key.core.symbolic_execution.example/example/Number.java b/key.core.symbolic_execution.example/example/Number.java deleted file mode 100644 index f5a5c574763..00000000000 --- a/key.core.symbolic_execution.example/example/Number.java +++ /dev/null @@ -1,12 +0,0 @@ -public class Number { - private int content; - - public boolean equals(Number n) { - if (content == n.content) { - return true; - } - else { - return false; - } - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution.example/src/main/java/org/key_project/example/Main.java b/key.core.symbolic_execution.example/src/main/java/org/key_project/example/Main.java deleted file mode 100644 index 6d34b614fdd..00000000000 --- a/key.core.symbolic_execution.example/src/main/java/org/key_project/example/Main.java +++ /dev/null @@ -1,171 +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 org.key_project.example; - -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.control.KeYEnvironment; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.AbstractOperationPO; -import de.uka.ilkd.key.settings.ChoiceSettings; -import de.uka.ilkd.key.settings.ProofSettings; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodePreorderIterator; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO; -import de.uka.ilkd.key.symbolic_execution.profile.SymbolicExecutionJavaProfile; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.ExecutedSymbolicExecutionTreeNodesStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.ExceptionBreakpoint; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.IBreakpoint; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; -import de.uka.ilkd.key.util.MiscTools; - -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.StringUtil; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Example application which symbolically executes {@code example/Number#equals(Number)} - * - * @author Martin Hentschel - */ -public class Main { - private static final Logger LOGGER = LoggerFactory.getLogger(Main.class); - - /** - * The program entry point. - * - * @param args - * The start parameters. - */ - public static void main(String[] args) { - Path location = Paths.get("example"); // Path to the source code folder/file or to a *.proof - // file - List classPaths = null; // Optionally: Additional specifications for API classes - Path bootClassPath = null; // Optionally: Different default specifications for Java API - List includes = null; // Optionally: Additional includes to consider - try { - // Ensure that Taclets are parsed - if (!ProofSettings.isChoiceSettingInitialised()) { - KeYEnvironment env = - KeYEnvironment.load(location, classPaths, bootClassPath, includes); - env.dispose(); - } - // Set Taclet options - ChoiceSettings choiceSettings = ProofSettings.DEFAULT_SETTINGS.getChoiceSettings(); - Map oldSettings = choiceSettings.getDefaultChoices(); - Map newSettings = new HashMap<>(oldSettings); - newSettings.putAll(MiscTools.getDefaultTacletOptions()); - newSettings.put("methodExpansion", "methodExpansion:noRestriction"); - choiceSettings.setDefaultChoices(newSettings); - // Load source code - KeYEnvironment env = - KeYEnvironment.load(SymbolicExecutionJavaProfile.getDefaultInstance(), location, - classPaths, bootClassPath, includes, true); // env.getLoadedProof() returns - // performed proof if a *.proof file - // is loaded - try { - // Find method to symbolically execute - KeYJavaType classType = env.getJavaInfo().getKeYJavaType("Number"); - IProgramMethod pm = env.getJavaInfo().getProgramMethod(classType, "equals", - ImmutableList.nil().append(classType), classType); - // Instantiate proof for symbolic execution of the program method (Java semantics) - AbstractOperationPO po = new ProgramMethodPO(env.getInitConfig(), - "Symbolic Execution of: " + pm, pm, null, // An optional precondition - true, // Needs to be true for symbolic execution! - true); // Needs to be true for symbolic execution! - // po = new ProgramMethodSubsetPO(...); // PO for symbolic execution of some - // statements within a method (Java semantics) - // po = new FunctionalOperationContractPO(...) // PO for verification (JML - // semantics) - Proof proof = env.createProof(po); - // Create symbolic execution tree builder - SymbolicExecutionTreeBuilder builder = - new SymbolicExecutionTreeBuilder(proof, false, // Merge branch conditions - false, // Use Unicode? - true, // Use Pretty Printing? - true, // Variables are collected from updates instead of the visible type - // structure - true); // Simplify conditions - builder.analyse(); - // Optionally, create an SymbolicExecutionEnvironment which provides access to all - // relevant objects for symbolic execution - SymbolicExecutionEnvironment symbolicEnv = - new SymbolicExecutionEnvironment<>(env, builder); - printSymbolicExecutionTree("Initial State", builder); - // Configure strategy for full exploration - SymbolicExecutionUtil.initializeStrategy(builder); - SymbolicExecutionEnvironment.configureProofForSymbolicExecution(proof, 100, false, - false, false, false, false); - // Optionally, add a more advanced stop conditions like breakpoints - CompoundStopCondition stopCondition = new CompoundStopCondition(); - // Stop after 100 nodes have been explored on each branch. - stopCondition.addChildren(new ExecutedSymbolicExecutionTreeNodesStopCondition(100)); - // stopCondition.addChildren(new StepOverSymbolicExecutionTreeNodesStopCondition()); - // // Perform only a step over - // stopCondition.addChildren(new - // StepReturnSymbolicExecutionTreeNodesStopCondition()); // Perform only a step - // return - IBreakpoint breakpoint = new ExceptionBreakpoint(proof, - "java.lang.NullPointerException", true, true, true, true, 1); - // Stop at specified breakpoints - stopCondition.addChildren(new SymbolicExecutionBreakpointStopCondition(breakpoint)); - proof.getSettings().getStrategySettings() - .setCustomApplyStrategyStopCondition(stopCondition); - // Perform strategy which will stop at breakpoint - symbolicEnv.getProofControl().startAndWaitForAutoMode(proof); - builder.analyse(); - printSymbolicExecutionTree("Stopped at Breakpoint", builder); - // Perform strategy again to complete symbolic execution tree - symbolicEnv.getProofControl().startAndWaitForAutoMode(proof); - builder.analyse(); - printSymbolicExecutionTree("Stopped at Breakpoint", builder); - } finally { - env.dispose(); // Ensure always that all instances of KeYEnvironment are disposed - } - } catch (Exception e) { - LOGGER.debug("Exception at '{}':", location, e); - } - } - - /** - * Prints the symbolic execution tree as flat list into the console. - * - * @param title - * The title. - * @param builder - * The {@link SymbolicExecutionTreeBuilder} providing the root of the symbolic - * execution tree. - */ - protected static void printSymbolicExecutionTree(String title, - SymbolicExecutionTreeBuilder builder) { - System.out.println(title); - System.out.println(StringUtil.repeat("=", title.length())); - ExecutionNodePreorderIterator iterator = - new ExecutionNodePreorderIterator(builder.getStartNode()); - while (iterator.hasNext()) { - IExecutionNode next = iterator.next(); - System.out.println(next); - // next.getVariables(); // Access the symbolic state. - // next.getCallStack(); // Access the call stack. - // next.getPathCondition(); // Access the path condition. - // next.getFormatedPathCondition(); // Access the formated path condition. - // next... // Additional methods provide access to additional information. - // Check also the specific sub types of IExecutionNode like IExecutionTermination. - } - System.out.println(); - } -} diff --git a/key.core.symbolic_execution/build.gradle b/key.core.symbolic_execution/build.gradle deleted file mode 100644 index 42d92ad7f6c..00000000000 --- a/key.core.symbolic_execution/build.gradle +++ /dev/null @@ -1,11 +0,0 @@ -description = "API for using KeY as a symbolic execution engine for Java programs" - -dependencies { - implementation project(":key.core") -} - -test { - maxHeapSize = "4g" - systemProperty "UPDATE_TEST_ORACLE", System.getProperty("UPDATE_TEST_ORACLE") - systemProperty "ORACLE_DIRECTORY", System.getProperty("ORACLE_DIRECTORY") -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/proof/TermProgramVariableCollectorKeepUpdatesForBreakpointconditions.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/proof/TermProgramVariableCollectorKeepUpdatesForBreakpointconditions.java deleted file mode 100644 index 743ce07fdd5..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/proof/TermProgramVariableCollectorKeepUpdatesForBreakpointconditions.java +++ /dev/null @@ -1,49 +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.proof; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.op.LocationVariable; -import de.uka.ilkd.key.strategy.IBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.AbstractConditionalBreakpoint; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.IBreakpoint; - -import org.key_project.logic.Term; -import org.key_project.logic.op.Modality; - -public class TermProgramVariableCollectorKeepUpdatesForBreakpointconditions - extends TermProgramVariableCollector { - private final IBreakpointStopCondition breakpointStopCondition; - - public TermProgramVariableCollectorKeepUpdatesForBreakpointconditions(Services services, - IBreakpointStopCondition breakpointStopCondition) { - super(services); - this.breakpointStopCondition = breakpointStopCondition; - } - - /** - * {@inheritDoc} - */ - @Override - public void visit(Term t) { - super.visit(t); - if (t.op() instanceof Modality) { - addVarsToKeep(); - } - } - - private void addVarsToKeep() { - for (IBreakpoint breakpoint : breakpointStopCondition.getBreakpoints()) { - if (breakpoint instanceof AbstractConditionalBreakpoint conditionalBreakpoint) { - if (conditionalBreakpoint.getToKeep() != null) { - for (LocationVariable sub : conditionalBreakpoint.getToKeep()) { - if (sub instanceof LocationVariable) { - super.result().add(sub); - } - } - } - } - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/BlockContractValidityTermLabelUpdate.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/BlockContractValidityTermLabelUpdate.java deleted file mode 100644 index 88408fc4a4f..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/BlockContractValidityTermLabelUpdate.java +++ /dev/null @@ -1,58 +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.label; - -import java.util.Set; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.BlockContractValidityTermLabel; -import de.uka.ilkd.key.logic.label.TermLabel; -import de.uka.ilkd.key.logic.label.TermLabelState; -import de.uka.ilkd.key.rule.BlockContractInternalRule; -import de.uka.ilkd.key.rule.LoopContractInternalRule; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Name; -import org.key_project.prover.rules.Rule; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.CollectionUtil; - -/** - * Makes sure that {@link BlockContractValidityTermLabel} is introduced when a - * {@link BlockContractInternalRule} is applied. - * - * @author Martin Hentschel - */ -public class BlockContractValidityTermLabelUpdate implements TermLabelUpdate { - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getSupportedRuleNames() { - return ImmutableList.singleton(BlockContractInternalRule.INSTANCE.name()); - } - - /** - * {@inheritDoc} - */ - @Override - public void updateLabels(TermLabelState state, Services services, - PosInOccurrence applicationPosInOccurrence, JTerm applicationTerm, JTerm modalityTerm, - Rule rule, RuleApp ruleApp, Object hint, JTerm tacletTerm, JTerm newTerm, - Set labels) { - if ((rule instanceof BlockContractInternalRule || rule instanceof LoopContractInternalRule) - && ((BlockContractInternalRule.BlockContractHint) hint) - .getExceptionalVariable() != null - && SymbolicExecutionUtil.hasSymbolicExecutionLabel(modalityTerm)) { - if (CollectionUtil.search(labels, - element -> element instanceof BlockContractValidityTermLabel) == null) { - labels.add(new BlockContractValidityTermLabel( - ((BlockContractInternalRule.BlockContractHint) hint).getExceptionalVariable())); - } - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelMerger.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelMerger.java deleted file mode 100644 index edabc1a3c90..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelMerger.java +++ /dev/null @@ -1,48 +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.label; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.FormulaTermLabel; -import de.uka.ilkd.key.logic.label.TermLabel; - -import org.key_project.prover.sequent.SequentFormula; - -/** - * The {@link TermLabelMerger} used to merge {@link FormulaTermLabel}s. - * - * @author Martin Hentschel - */ -public class FormulaTermLabelMerger implements TermLabelMerger { - /** - * {@inheritDoc} - */ - @Override - public boolean mergeLabels(SequentFormula existingSF, - JTerm existingTerm, - TermLabel existingLabel, SequentFormula rejectedSF, JTerm rejectedTerm, - TermLabel rejectedLabel, List mergedLabels) { - if (existingLabel != null) { - FormulaTermLabel fExisting = (FormulaTermLabel) existingLabel; - FormulaTermLabel fRejected = (FormulaTermLabel) rejectedLabel; - // Compute new label - List newBeforeIds = new ArrayList<>(Arrays.asList(fExisting.getBeforeIds())); - newBeforeIds.add(fRejected.getId()); - newBeforeIds.addAll(Arrays.asList(fRejected.getBeforeIds())); - FormulaTermLabel newLabel = - new FormulaTermLabel(fExisting.getMajorId(), fExisting.getMinorId(), newBeforeIds); - // Remove existing label - mergedLabels.remove(existingLabel); - // Add new label - mergedLabels.add(newLabel); - } else { - mergedLabels.add(rejectedLabel); - } - return true; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelRefactoring.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelRefactoring.java deleted file mode 100644 index c9607d88c29..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelRefactoring.java +++ /dev/null @@ -1,434 +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.label; - -import java.util.*; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.*; -import de.uka.ilkd.key.logic.label.FormulaTermLabel; -import de.uka.ilkd.key.logic.label.LabelCollection; -import de.uka.ilkd.key.logic.label.TermLabel; -import de.uka.ilkd.key.logic.label.TermLabelState; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.rule.SyntacticalReplaceVisitor; -import de.uka.ilkd.key.rule.merge.CloseAfterMerge; -import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil; - -import org.key_project.logic.Name; -import org.key_project.prover.rules.Rule; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.CollectionUtil; - -/** - * The {@link TermLabelRefactoring} used to label predicates with a {@link FormulaTermLabel} on - * applied loop invariants or operation contracts. - * - * @author Martin Hentschel - */ -public class FormulaTermLabelRefactoring implements TermLabelRefactoring { - /** - * Key prefix used in {@link TermLabelState} to store that the innermost label was already - * refactored on a given {@link Goal}. - */ - private static final String INNER_MOST_PARENT_REFACTORED_PREFIX = - "innerMostParentRefactoredAtGoal_"; - - /** - * Key used in {@link TermLabelState} by the {@link StayOnOperatorTermLabelPolicy} to indicate - * that a refactoring below an update ({@link RefactoringScope#APPLICATION_BELOW_UPDATES}) is - * required, which will be performed by - * {@link #refactorBelowUpdates(PosInOccurrence, JTerm, LabelCollection)}. - *

- * This is for instance required for the following rules: - *

    - *
  • {@code concrete_and_1}
  • - *
  • {@code concrete_and_2}
  • - *
  • {@code concrete_and_3}
  • - *
  • {@code concrete_and_4}
  • - *
  • {@code concrete_eq_1}
  • - *
  • {@code concrete_eq_2}
  • - *
  • {@code concrete_eq_3}
  • - *
  • {@code concrete_eq_4}
  • - *
  • {@code concrete_impl_1}
  • - *
  • {@code concrete_impl_2}
  • - *
  • {@code concrete_impl_3}
  • - *
  • {@code concrete_impl_4}
  • - *
  • {@code concrete_not_1}
  • - *
  • {@code concrete_not_2}
  • - *
  • {@code concrete_or_1}
  • - *
  • {@code concrete_or_2}
  • - *
  • {@code concrete_or_3}
  • - *
  • {@code concrete_or_4}
  • - *
- */ - private static final String UPDATE_REFACTORING_REQUIRED = "updateRefactoringRequired"; - - /** - * Key used in {@link TermLabelState} by the {@link FormulaTermLabelUpdate} to indicate that a - * refactoring of parents - * ({@link RefactoringScope#APPLICATION_CHILDREN_AND_GRANDCHILDREN_SUBTREE_AND_PARENTS}) is - * required, which will be performed by - * {@link #refactorInCaseOfNewIdRequired(TermLabelState, Goal, JTerm, Services, LabelCollection)}. - *

- * This is for instance required if a rule is applied on a sub term without a - * {@link FormulaTermLabel} of a parent which has a {@link FormulaTermLabel}. Example rules are: - *

    - *
  • {@code ifthenelse_split}
  • - *
  • {@code arrayLengthNotNegative}
  • - *
- */ - private static final String PARENT_REFACTORING_REQUIRED = "parentRefactoringRequired"; - - /** - * Key used in {@link TermLabelState} by the {@link FormulaTermLabelUpdate} to indicate that a - * refactoring of specified {@link SequentFormula}s ({@link RefactoringScope#SEQUENT}) is - * required, which will be performed by - * {@link #refactorSequentFormulas(TermLabelState, Services, JTerm, LabelCollection)}. - *

- * This is for instance required if the assumes clause of a rule has a {@link FormulaTermLabel} - * but the application does not have it. Example rules are: - *

    - *
  • {@code inEqSimp_contradInEq1}
  • - *
- */ - private static final String SEQUENT_FORMULA_REFACTORING_REQUIRED = - "sequentFormulaRefactoringRequired"; - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getSupportedRuleNames() { - return null; // Support all rules - } - - /** - * {@inheritDoc} - */ - @Override - public RefactoringScope defineRefactoringScope(TermLabelState state, Services services, - PosInOccurrence applicationPosInOccurrence, - JTerm applicationTerm, Rule rule, Goal goal, - Object hint, JTerm tacletTerm) { - if (shouldRefactorSpecificationApplication(rule, goal, hint)) { - return RefactoringScope.APPLICATION_CHILDREN_AND_GRANDCHILDREN_SUBTREE; - } else if (isParentRefactoringRequired(state)) { - return RefactoringScope.APPLICATION_CHILDREN_AND_GRANDCHILDREN_SUBTREE_AND_PARENTS; - } else if (isUpdateRefactoringRequired(state)) { - return RefactoringScope.APPLICATION_BELOW_UPDATES; - } else if (containsSequentFormulasToRefactor(state)) { - return RefactoringScope.SEQUENT; - } else if (SyntacticalReplaceVisitor.SUBSTITUTION_WITH_LABELS_HINT.equals(hint)) { - return RefactoringScope.APPLICATION_BELOW_UPDATES; - } else { - return RefactoringScope.NONE; - } - } - - /** - * Checks if the given hint requires a refactoring. - * - * @param rule The applied {@link Rule}. - * @param goal The {@link Goal}. - * @param hint The hint to check. - * @return {@code true} perform refactoring, {@code false} do not perform refactoring. - */ - private boolean shouldRefactorSpecificationApplication(Rule rule, Goal goal, Object hint) { - return TermLabelRefactoring.shouldRefactorOnBuiltInRule(rule, goal, hint); - } - - /** - * {@inheritDoc} - */ - @Override - public void refactorLabels(TermLabelState state, Services services, - PosInOccurrence applicationPosInOccurrence, - JTerm applicationTerm, Rule rule, Goal goal, - Object hint, JTerm tacletTerm, JTerm term, LabelCollection labels) { - if (shouldRefactorSpecificationApplication(rule, goal, hint)) { - refactorSpecificationApplication(term, services, labels, hint); - } else if (isParentRefactoringRequired(state)) { - refactorInCaseOfNewIdRequired(state, goal, term, services, labels); - } else if (isUpdateRefactoringRequired(state)) { - refactorBelowUpdates(applicationPosInOccurrence, term, labels); - } else if (containsSequentFormulasToRefactor(state)) { - refactorSequentFormulas(state, services, term, labels); - } else if (SyntacticalReplaceVisitor.SUBSTITUTION_WITH_LABELS_HINT.equals(hint)) { - refactorSubstitution(term, tacletTerm, labels); - } - } - - /** - * Refactors a specification application. - * - * @param term The {@link JTerm} which is now refactored. - * @param services The {@link Services} used by the {@link Proof} on which a {@link Rule} is - * applied right now. - * @param labels The new labels the {@link JTerm} will have after the refactoring. - */ - private void refactorSpecificationApplication(JTerm term, Services services, - LabelCollection labels, Object hint) { - if (TruthValueTracingUtil.isPredicate(term) - || (CloseAfterMerge.FINAL_WEAKENING_TERM_HINT.equals(hint) - && TruthValueTracingUtil.isLogicOperator(term))) { - TermLabel existingLabel = term.getLabel(FormulaTermLabel.NAME); - if (existingLabel == null) { - int labelID = - services.getCounter(FormulaTermLabel.PROOF_COUNTER_NAME).getCountPlusPlus(); - int labelSubID = FormulaTermLabel.newLabelSubID(services, labelID); - labels.add(new FormulaTermLabel(labelID, labelSubID)); - } - } - } - - /** - * Refactors in case that the innermost label needs a new ID. - * - * @param state The {@link TermLabelState} of the current rule application. - * @param goal The optional {@link Goal} on which the {@link JTerm} to create will be used. - * @param term The {@link JTerm} which is now refactored. - * @param services The {@link Services} used by the {@link Proof} on which a {@link Rule} is - * applied right now. - * @param labels The new labels the {@link JTerm} will have after the refactoring. - */ - private void refactorInCaseOfNewIdRequired(TermLabelState state, Goal goal, JTerm term, - Services services, LabelCollection labels) { - if (goal != null && !isInnerMostParentRefactored(state, goal)) { - TermLabel existingLabel = term.getLabel(FormulaTermLabel.NAME); - if (existingLabel instanceof FormulaTermLabel pLabel) { - int labelID = pLabel.getMajorId(); - int labelSubID = FormulaTermLabel.newLabelSubID(services, labelID); - labels.remove(existingLabel); - labels.add(new FormulaTermLabel(labelID, labelSubID, - Collections.singletonList(pLabel.getId()))); - setInnerMostParentRefactored(state, goal, true); - } - } - } - - /** - * Refactors the {@link JTerm} below its update. - * - * @param applicationPosInOccurrence The {@link PosInOccurrence} in the previous {@link Sequent} - * which defines the {@link JTerm} that is rewritten. - * @param term The {@link JTerm} which is now refactored. - * @param labels The new labels the {@link JTerm} will have after the refactoring. - */ - private void refactorBelowUpdates( - PosInOccurrence applicationPosInOccurrence, JTerm term, - LabelCollection labels) { - JTerm applicationTerm = - applicationPosInOccurrence != null ? (JTerm) applicationPosInOccurrence.subTerm() - : null; - FormulaTermLabel applicationLabel = applicationTerm != null - ? (FormulaTermLabel) applicationTerm.getLabel(FormulaTermLabel.NAME) - : null; - if (applicationLabel != null) { - FormulaTermLabel termLabel = (FormulaTermLabel) term.getLabel(FormulaTermLabel.NAME); - if (termLabel == null) { - labels.add(applicationLabel); - } else { - labels.remove(termLabel); - Set beforeIds = - new LinkedHashSet<>(Arrays.asList(termLabel.getBeforeIds())); - beforeIds.add(applicationLabel.getId()); - labels.add(new FormulaTermLabel(termLabel.getMajorId(), termLabel.getMinorId(), - beforeIds)); - } - } - } - - /** - * Refactors the specified {@link SequentFormula}s. - * - * @param state The {@link TermLabelState} of the current rule application. - * @param services The {@link Services} used by the {@link Proof} on which a {@link Rule} is - * applied right now. - * @param term The {@link JTerm} which is now refactored. - * @param labels The new labels the {@link JTerm} will have after the refactoring. - */ - private void refactorSequentFormulas(TermLabelState state, Services services, final JTerm term, - LabelCollection labels) { - Set sequentFormulas = - getSequentFormulasToRefactor(state); - if (CollectionUtil.search(sequentFormulas, element -> element.formula() == term) != null) { - FormulaTermLabel termLabel = (FormulaTermLabel) term.getLabel(FormulaTermLabel.NAME); - if (termLabel != null) { - labels.remove(termLabel); - Set beforeIds = new LinkedHashSet<>(); - beforeIds.add(termLabel.getId()); - int labelSubID = FormulaTermLabel.newLabelSubID(services, termLabel); - labels.add(new FormulaTermLabel(termLabel.getMajorId(), labelSubID, beforeIds)); - } - } - } - - /** - * Refactors the given {@link JTerm} after a substitution. - * - * @param term The {@link JTerm} to refactor. - * @param tacletTerm The taclet {@link JTerm} which provides additional labels to be merged with - * the other {@link JTerm}. - * @param labels The new labels the {@link JTerm} will have after the refactoring. - */ - private void refactorSubstitution(JTerm term, JTerm tacletTerm, LabelCollection labels) { - FormulaTermLabel tacletLabel = - (FormulaTermLabel) tacletTerm.getLabel(FormulaTermLabel.NAME); - if (tacletLabel != null) { - FormulaTermLabel existingLabel = - (FormulaTermLabel) term.getLabel(FormulaTermLabel.NAME); - if (existingLabel == null) { - labels.add(tacletLabel); - } else { - List beforeIds = - new ArrayList<>(Arrays.asList(existingLabel.getBeforeIds())); - boolean changed = false; - if (!beforeIds.contains(tacletLabel.getId())) { - changed = true; - beforeIds.add(tacletLabel.getId()); - } - for (String id : tacletLabel.getBeforeIds()) { - if (!beforeIds.contains(id)) { - changed = true; - beforeIds.add(id); - } - } - if (changed) { - labels.remove(existingLabel); - labels.add(new FormulaTermLabel(existingLabel.getMajorId(), - existingLabel.getMinorId(), beforeIds)); - } - } - } - } - - /** - * Checks if the innermost parent was already refactored on the given {@link Goal}. - * - * @param state The {@link TermLabelState} to read from. - * @param goal The {@link Goal} to check. - * @return {@code true} already refactored, {@code false} not refactored yet. - */ - public static boolean isInnerMostParentRefactored(TermLabelState state, Goal goal) { - Map labelState = state.getLabelState(FormulaTermLabel.NAME); - return labelState.containsKey(INNER_MOST_PARENT_REFACTORED_PREFIX + goal.node().serialNr()); - } - - /** - * Defines if the innermost parent was already refactored on the given {@link Goal}. - * - * @param state The {@link TermLabelState} to read from. - * @param goal The {@link Goal} to check. - * @param refactored {@code true} already refactored, {@code false} not refactored yet. - */ - public static void setInnerMostParentRefactored(TermLabelState state, Goal goal, - boolean refactored) { - Map labelState = state.getLabelState(FormulaTermLabel.NAME); - labelState.put(INNER_MOST_PARENT_REFACTORED_PREFIX + goal.node().serialNr(), - refactored); - } - - /** - * Checks if a refactoring below the updates is required. - * - * @param state The {@link TermLabelState} to read from. - * @return {@code true} refactoring required, {@code false} refactoring is not required. - */ - public static boolean isUpdateRefactoringRequired(TermLabelState state) { - Map labelState = state.getLabelState(FormulaTermLabel.NAME); - Object value = labelState.get(UPDATE_REFACTORING_REQUIRED); - return value instanceof Boolean && (Boolean) value; - } - - /** - * Defines if a refactoring below the updates is required. - * - * @param state The {@link TermLabelState} to modify. - * @param required {@code true} refactoring required, {@code false} refactoring is not required. - */ - public static void setUpdateRefactoringRequired(TermLabelState state, boolean required) { - Map labelState = state.getLabelState(FormulaTermLabel.NAME); - labelState.put(UPDATE_REFACTORING_REQUIRED, required); - } - - /** - * Checks if a refactoring of parents is required. - * - * @param state The {@link TermLabelState} to read from. - * @return {@code true} refactoring required, {@code false} refactoring is not required. - */ - public static boolean isParentRefactoringRequired(TermLabelState state) { - Map labelState = state.getLabelState(FormulaTermLabel.NAME); - Object value = labelState.get(PARENT_REFACTORING_REQUIRED); - return value instanceof Boolean && (Boolean) value; - } - - /** - * Defines if a refactoring of parents is required. - * - * @param state The {@link TermLabelState} to modify. - * @param required {@code true} refactoring required, {@code false} refactoring is not required. - */ - public static void setParentRefactoringRequired(TermLabelState state, boolean required) { - Map labelState = state.getLabelState(FormulaTermLabel.NAME); - labelState.put(PARENT_REFACTORING_REQUIRED, required); - } - - /** - * Checks if {@link SequentFormula}s to refactor are specified. - * - * @param state The {@link TermLabelState} to read from. - * @return {@code true} at least one {@link SequentFormula} needs to be refactored, - * {@code false} refactoring is not required. - */ - public static boolean containsSequentFormulasToRefactor(TermLabelState state) { - Map labelState = state.getLabelState(FormulaTermLabel.NAME); - @SuppressWarnings("unchecked") - Set sfSet = - (Set) labelState - .get(SEQUENT_FORMULA_REFACTORING_REQUIRED); - return sfSet != null && !sfSet.isEmpty(); - } - - /** - * Returns the {@link SequentFormula}s to refactor. - * - * @param state The {@link TermLabelState} to read from. - * @return The {@link SequentFormula}s to refactor. - */ - public static Set getSequentFormulasToRefactor( - TermLabelState state) { - Map labelState = state.getLabelState(FormulaTermLabel.NAME); - @SuppressWarnings("unchecked") - Set sfSet = - (Set) labelState - .get(SEQUENT_FORMULA_REFACTORING_REQUIRED); - return sfSet; - } - - /** - * Adds the given {@link SequentFormula} for refactoring purpose. - * - * @param state The {@link TermLabelState} to modify. - * @param sf The {@link SequentFormula} to add. - */ - public static void addSequentFormulaToRefactor(TermLabelState state, - SequentFormula sf) { - Map labelState = state.getLabelState(FormulaTermLabel.NAME); - @SuppressWarnings("unchecked") - Set sfSet = - (Set) labelState - .get(SEQUENT_FORMULA_REFACTORING_REQUIRED); - if (sfSet == null) { - sfSet = new LinkedHashSet<>(); - labelState.put(SEQUENT_FORMULA_REFACTORING_REQUIRED, sfSet); - } - sfSet.add(sf); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelUpdate.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelUpdate.java deleted file mode 100644 index d80e5fe0a9f..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelUpdate.java +++ /dev/null @@ -1,119 +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.label; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.*; -import de.uka.ilkd.key.logic.label.FormulaTermLabel; -import de.uka.ilkd.key.logic.label.TermLabel; -import de.uka.ilkd.key.logic.label.TermLabelManager; -import de.uka.ilkd.key.logic.label.TermLabelState; -import de.uka.ilkd.key.rule.Taclet.TacletLabelHint; -import de.uka.ilkd.key.rule.Taclet.TacletLabelHint.TacletOperation; -import de.uka.ilkd.key.rule.TacletApp; -import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil; - -import org.key_project.logic.Name; -import org.key_project.prover.rules.Rule; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.rules.instantiation.AssumesFormulaInstantiation; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.CollectionUtil; - -/** - * The {@link TermLabelUpdate} used to label predicates with a {@link FormulaTermLabel} of add - * clauses which were not labeled before. - * - * @author Martin Hentschel - */ -public class FormulaTermLabelUpdate implements TermLabelUpdate { - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getSupportedRuleNames() { - return null; // Support all rules. - } - - /** - * {@inheritDoc} - */ - @Override - public void updateLabels(TermLabelState state, Services services, - PosInOccurrence applicationPosInOccurrence, - JTerm applicationTerm, JTerm modalityTerm, - Rule rule, RuleApp ruleApp, Object hint, JTerm tacletTerm, JTerm newTerm, - Set labels) { - if (hint instanceof TacletLabelHint tacletHint) { - if ((TacletOperation.ADD_ANTECEDENT.equals(tacletHint.getTacletOperation()) - || TacletOperation.ADD_SUCCEDENT.equals(tacletHint.getTacletOperation())) - && (TruthValueTracingUtil.isPredicate(newTerm) - || TruthValueTracingUtil.isLogicOperator(newTerm.op(), - newTerm.subs()))) { - if (getTermLabel(labels, FormulaTermLabel.NAME) == null) { - TermLabel label = TermLabelManager.findInnerMostParentLabel( - applicationPosInOccurrence, FormulaTermLabel.NAME); - if (label instanceof FormulaTermLabel oldLabel) { - int labelSubID = FormulaTermLabel.newLabelSubID(services, oldLabel); - FormulaTermLabel newLabel = new FormulaTermLabel(oldLabel.getMajorId(), - labelSubID, Collections.singletonList(oldLabel.getId())); - labels.add(newLabel); - // Let the PredicateTermLabelRefactoring perform the refactoring, see also - // PredicateTermLabelRefactoring#PARENT_REFACTORING_REQUIRED - FormulaTermLabelRefactoring.setParentRefactoringRequired(state, true); - } - } - } - } - if (ruleApp instanceof TacletApp ta) { - if (ta.assumesInstantionsComplete() && ta.assumesFormulaInstantiations() != null) { - Map ifLabels = - new LinkedHashMap<>(); - for (AssumesFormulaInstantiation ifInst : ta.assumesFormulaInstantiations()) { - FormulaTermLabel ifLabel = StayOnFormulaTermLabelPolicy.searchFormulaTermLabel( - ((JTerm) ifInst.getSequentFormula().formula()).getLabels()); - if (ifLabel != null) { - ifLabels.put(ifInst.getSequentFormula(), ifLabel); - } - } - if (!ifLabels.isEmpty()) { - if (TruthValueTracingUtil.isLogicOperator(newTerm.op(), newTerm.subs()) - // || TruthValueEvaluationUtil.isPredicate(newTermOp) - ) { - for (Entry ifEntry : ifLabels - .entrySet()) { - FormulaTermLabel ifLabel = ifEntry.getValue(); - int labelSubID = FormulaTermLabel.newLabelSubID(services, ifLabel); - FormulaTermLabel newLabel = new FormulaTermLabel(ifLabel.getMajorId(), - labelSubID, Collections.singletonList(ifLabel.getId())); - labels.add(newLabel); - FormulaTermLabelRefactoring.addSequentFormulaToRefactor(state, - ifEntry.getKey()); - } - } - } - } - } - } - - /** - * Returns the {@link TermLabel} with the given {@link Name}. - * - * @param labels the {@link TermLabel}s to search in. - * @param name The {@link Name} of the {@link TermLabel} to search. - * @return The found {@link TermLabel} or {@code} null if no element was found. - */ - protected TermLabel getTermLabel(Set labels, final Name name) { - return CollectionUtil.search(labels, - element -> element != null && element.name().equals(name)); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopBodyTermLabelUpdate.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopBodyTermLabelUpdate.java deleted file mode 100644 index 70faae66f69..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopBodyTermLabelUpdate.java +++ /dev/null @@ -1,49 +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.label; - -import java.util.Set; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.TermLabel; -import de.uka.ilkd.key.logic.label.TermLabelState; -import de.uka.ilkd.key.rule.WhileInvariantRule; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Name; -import org.key_project.prover.rules.Rule; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableList; - -/** - * Makes sure that {@link SymbolicExecutionUtil#LOOP_BODY_LABEL} is introduced when a - * {@link WhileInvariantRule} is applied. - * - * @author Martin Hentschel - */ -public class LoopBodyTermLabelUpdate implements TermLabelUpdate { - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getSupportedRuleNames() { - return ImmutableList.singleton(WhileInvariantRule.INSTANCE.name()); - } - - /** - * {@inheritDoc} - */ - @Override - public void updateLabels(TermLabelState state, Services services, - PosInOccurrence applicationPosInOccurrence, JTerm applicationTerm, JTerm modalityTerm, - Rule rule, RuleApp ruleApp, Object hint, JTerm tacletTerm, JTerm newTerm, - Set labels) { - if (rule instanceof WhileInvariantRule && "LoopBodyModality".equals(hint) - && SymbolicExecutionUtil.hasSymbolicExecutionLabel(modalityTerm)) { - labels.add(SymbolicExecutionUtil.LOOP_BODY_LABEL); - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopInvariantNormalBehaviorTermLabelUpdate.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopInvariantNormalBehaviorTermLabelUpdate.java deleted file mode 100644 index d5022ed9661..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopInvariantNormalBehaviorTermLabelUpdate.java +++ /dev/null @@ -1,49 +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.label; - -import java.util.Set; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.TermLabel; -import de.uka.ilkd.key.logic.label.TermLabelState; -import de.uka.ilkd.key.rule.WhileInvariantRule; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Name; -import org.key_project.prover.rules.Rule; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableList; - -/** - * Makes sure that {@link SymbolicExecutionUtil#LOOP_INVARIANT_NORMAL_BEHAVIOR_LABEL} is introduced - * when a {@link WhileInvariantRule} is applied. - * - * @author Martin Hentschel - */ -public class LoopInvariantNormalBehaviorTermLabelUpdate implements TermLabelUpdate { - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getSupportedRuleNames() { - return ImmutableList.singleton(WhileInvariantRule.INSTANCE.name()); - } - - /** - * {@inheritDoc} - */ - @Override - public void updateLabels(TermLabelState state, Services services, - PosInOccurrence applicationPosInOccurrence, JTerm applicationTerm, JTerm modalityTerm, - Rule rule, RuleApp ruleApp, Object hint, JTerm tacletTerm, JTerm newTerm, - Set labels) { - if (rule instanceof WhileInvariantRule && "LoopBodyImplication".equals(hint) - && SymbolicExecutionUtil.hasSymbolicExecutionLabel(modalityTerm)) { - labels.add(SymbolicExecutionUtil.LOOP_INVARIANT_NORMAL_BEHAVIOR_LABEL); - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/RemoveInCheckBranchesTermLabelRefactoring.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/RemoveInCheckBranchesTermLabelRefactoring.java deleted file mode 100644 index 17064ef97bc..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/RemoveInCheckBranchesTermLabelRefactoring.java +++ /dev/null @@ -1,102 +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.label; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.LabelCollection; -import de.uka.ilkd.key.logic.label.TermLabel; -import de.uka.ilkd.key.logic.label.TermLabelState; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.rule.AbstractAuxiliaryContractRule; -import de.uka.ilkd.key.rule.BlockContractExternalRule; -import de.uka.ilkd.key.rule.BlockContractInternalRule; -import de.uka.ilkd.key.rule.LoopContractExternalRule; -import de.uka.ilkd.key.rule.LoopContractInternalRule; -import de.uka.ilkd.key.rule.UseOperationContractRule; -import de.uka.ilkd.key.rule.WhileInvariantRule; - -import org.key_project.logic.Name; -import org.key_project.prover.rules.Rule; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableList; - -/** - * This {@link TermLabelRefactoring} removes the supported {@link TermLabel} in check branches. - * These are: - *
    - *
  • {@link AbstractAuxiliaryContractRule}: Pre
  • - *
  • {@link UseOperationContractRule}: Pre
  • - *
  • {@link UseOperationContractRule}: Null reference
  • - *
  • {@link WhileInvariantRule}: Invariant Initially Valid
  • - *
- * - * @author Martin Hentschel - */ -public class RemoveInCheckBranchesTermLabelRefactoring implements TermLabelRefactoring { - /** - * The {@link Name} of the supported {@link TermLabel}. - */ - private final Name termLabelNameToRemove; - - /** - * Constructor. - * - * @param termLabelNameToRemove The {@link Name} of the supported {@link TermLabel}. - */ - public RemoveInCheckBranchesTermLabelRefactoring(Name termLabelNameToRemove) { - assert termLabelNameToRemove != null; - this.termLabelNameToRemove = termLabelNameToRemove; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getSupportedRuleNames() { - return ImmutableList.singleton(UseOperationContractRule.INSTANCE.name()) - .prepend(WhileInvariantRule.INSTANCE.name()) - .prepend(BlockContractInternalRule.INSTANCE.name()) - .prepend(BlockContractExternalRule.INSTANCE.name()) - .prepend(LoopContractInternalRule.INSTANCE.name()) - .prepend(LoopContractExternalRule.INSTANCE.name()); - } - - /** - * {@inheritDoc} - */ - @Override - public RefactoringScope defineRefactoringScope(TermLabelState state, Services services, - PosInOccurrence applicationPosInOccurrence, - JTerm applicationTerm, Rule rule, Goal goal, - Object hint, JTerm tacletTerm) { - if (goal != null) { - final String branchLabel = goal.node().getNodeInfo().getBranchLabel(); - return switch (rule) { - case UseOperationContractRule ignored when (branchLabel.startsWith("Pre") || - branchLabel.startsWith("Null reference")) -> - RefactoringScope.SEQUENT; - case WhileInvariantRule ignored when branchLabel - .startsWith("Invariant Initially Valid") -> - RefactoringScope.SEQUENT; - case AbstractAuxiliaryContractRule ignored when branchLabel - .startsWith("Precondition") -> - RefactoringScope.SEQUENT; - case null, default -> RefactoringScope.NONE; - }; - } else { - return RefactoringScope.NONE; - } - } - - /** - * {@inheritDoc} - */ - @Override - public void refactorLabels(TermLabelState state, Services services, - PosInOccurrence applicationPosInOccurrence, JTerm applicationTerm, Rule rule, Goal goal, - Object hint, JTerm tacletTerm, JTerm term, LabelCollection labels) { - labels.removeIf(next -> termLabelNameToRemove.equals(next.name())); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/StayOnFormulaTermLabelPolicy.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/StayOnFormulaTermLabelPolicy.java deleted file mode 100644 index 58c2c392fb2..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/StayOnFormulaTermLabelPolicy.java +++ /dev/null @@ -1,173 +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.label; - -import java.util.Deque; -import java.util.LinkedHashSet; -import java.util.Set; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.FormulaTermLabel; -import de.uka.ilkd.key.logic.label.TermLabel; -import de.uka.ilkd.key.logic.label.TermLabelState; -import de.uka.ilkd.key.logic.op.*; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.rule.Taclet.TacletLabelHint; -import de.uka.ilkd.key.rule.Taclet.TacletLabelHint.TacletOperation; -import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil; - -import org.key_project.prover.rules.Rule; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableArray; -import org.key_project.util.java.CollectionUtil; - -/** - * This {@link TermLabelPolicy} maintains a {@link FormulaTermLabel} on predicates. - * - * @author Martin Hentschel - */ -public class StayOnFormulaTermLabelPolicy implements TermLabelPolicy { - /** - * {@inheritDoc} - */ - @Override - public TermLabel keepLabel(TermLabelState state, Services services, - PosInOccurrence applicationPosInOccurrence, JTerm applicationTerm, Rule rule, Goal goal, - Object hint, JTerm tacletTerm, - JTerm newTerm, TermLabel label) { - // Maintain label if new Term is a predicate - if (TruthValueTracingUtil.isPredicate(newTerm.op()) - || TruthValueTracingUtil.isLogicOperator(newTerm.op(), newTerm.subs())) { - assert label instanceof FormulaTermLabel; - FormulaTermLabel formulaLabel = (FormulaTermLabel) label; - FormulaTermLabel originalLabel = searchFormulaTermLabel(newTerm.getLabels()); - FormulaTermLabel mostImportantLabel = - originalLabel != null ? originalLabel : formulaLabel; - // May change sub ID if logical operators like junctors are used - boolean newLabelIdRequired = false; - Set originalLabelIds = new LinkedHashSet<>(); - if (hint instanceof TacletLabelHint tacletHint) { - if (isBelowIfThenElse(tacletHint.getTacletTermStack())) { - return null; // Do not label children of if-then-else. They are labeled when a - // rule rewrites them outside of the if-then-else. - } - if (TacletOperation.ADD_ANTECEDENT.equals(tacletHint.getTacletOperation()) - || TacletOperation.ADD_SUCCEDENT.equals(tacletHint.getTacletOperation()) - || TacletOperation.REPLACE_TO_ANTECEDENT - .equals(tacletHint.getTacletOperation()) - || TacletOperation.REPLACE_TO_SUCCEDENT - .equals(tacletHint.getTacletOperation()) - || TacletOperation.REPLACE_AT_ANTECEDENT - .equals(tacletHint.getTacletOperation()) - || TacletOperation.REPLACE_AT_SUCCEDENT - .equals(tacletHint.getTacletOperation())) { - if (originalLabel == null) { // Do not give a new ID if the term has already one - // (see rule: impRight) - newLabelIdRequired = true; - originalLabelIds.add(mostImportantLabel.getId()); - } - } - if (tacletHint.getSequentFormula() != null) { - if (!TruthValueTracingUtil.isPredicate(tacletHint.getSequentFormula())) { - newLabelIdRequired = true; - } - } else if (tacletHint.getTerm() != null) { - boolean topLevel = isTopLevel(tacletHint, tacletTerm); - if (!topLevel && !TruthValueTracingUtil.isPredicate(tacletHint.getTerm())) { - newLabelIdRequired = true; - } - } - if (mostImportantLabel != formulaLabel || newLabelIdRequired) { // Without support - // of quantors '&& - // topLevel' can be - // added. - originalLabelIds.add(formulaLabel.getId()); - } - } - // Replace label with a new one with increased sub ID. - if (newLabelIdRequired) { - if (originalLabel != null) { - originalLabelIds.add(originalLabel.getId()); - } - int labelSubID = FormulaTermLabel.newLabelSubID(services, mostImportantLabel); - if (!originalLabelIds.isEmpty()) { - return new FormulaTermLabel(mostImportantLabel.getMajorId(), labelSubID, - originalLabelIds); - } else { - return new FormulaTermLabel(mostImportantLabel.getMajorId(), labelSubID); - } - } else { - if (!originalLabelIds.isEmpty()) { - return new FormulaTermLabel(mostImportantLabel.getMajorId(), - mostImportantLabel.getMinorId(), originalLabelIds); - } else { - return label; - } - } - } else if (UpdateApplication.UPDATE_APPLICATION.equals(newTerm.op())) { - JTerm target = newTerm.subs().get(UpdateApplication.targetPos()); - TermLabel targetLabel = target.getLabel(FormulaTermLabel.NAME); - if (targetLabel instanceof FormulaTermLabel) { - if (applicationPosInOccurrence != null) { - JTerm appliationTerm = (JTerm) applicationPosInOccurrence.subTerm(); - TermLabel applicationLabel = appliationTerm.getLabel(FormulaTermLabel.NAME); - if (applicationLabel instanceof FormulaTermLabel) { - // Let the PredicateTermLabelRefactoring perform the refactoring, see also - // PredicateTermLabelRefactoring#UPDATE_REFACTORING_REQUIRED - FormulaTermLabelRefactoring.setUpdateRefactoringRequired(state, true); - } - } - } - return null; - } else if (newTerm.op() instanceof SubstOp) { // Such operations perform for instance - // skolemization (e.g. rule allRight) - return label; - } else { - return null; - } - } - - /** - * Checks if the currently treated taclet {@link JTerm} is a child of an if-then-else operation. - * - * @param visitStack The taclet {@link JTerm} stack. - * @return {@code true} is below if-then-else, {@code false} otherwise. - */ - protected boolean isBelowIfThenElse(Deque visitStack) { - if (visitStack != null) { - return CollectionUtil.search(visitStack, - element -> element.op() == IfThenElse.IF_THEN_ELSE) != null; - } else { - return false; - } - } - - /** - * Searches the {@link FormulaTermLabel} in the given {@link TermLabel}s. - * - * @param labels The {@link TermLabel}s to search in. - * @return The found {@link FormulaTermLabel} or {@code null} if not available. - */ - public static FormulaTermLabel searchFormulaTermLabel(ImmutableArray labels) { - TermLabel result = - CollectionUtil.search(labels, element -> element instanceof FormulaTermLabel); - return (FormulaTermLabel) result; - } - - /** - * Checks if the given taclet {@link JTerm} is top level. - * - * @param tacletHint The {@link TacletLabelHint} to use. - * @param tacletTerm The taclet {@link JTerm} to check. - * @return {@code true} is top level, {@code false} is not top level. - */ - protected boolean isTopLevel(TacletLabelHint tacletHint, JTerm tacletTerm) { - if (TacletOperation.REPLACE_TERM.equals(tacletHint.getTacletOperation())) { - return tacletHint.getTerm() == tacletTerm; - } else { - return tacletHint.getSequentFormula().formula() == tacletTerm; - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/SymbolicExecutionTermLabelUpdate.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/SymbolicExecutionTermLabelUpdate.java deleted file mode 100644 index 381dada7ebe..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/SymbolicExecutionTermLabelUpdate.java +++ /dev/null @@ -1,63 +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.label; - -import java.util.Set; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.SymbolicExecutionTermLabel; -import de.uka.ilkd.key.logic.label.TermLabel; -import de.uka.ilkd.key.logic.label.TermLabelState; -import de.uka.ilkd.key.rule.*; - -import org.key_project.logic.Name; -import org.key_project.prover.rules.Rule; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.CollectionUtil; - -/** - * Makes sure that the ID of {@link SymbolicExecutionTermLabel}s is increased when a - * {@link WhileInvariantRule} is applied. - * - * @author Martin Hentschel - */ -public class SymbolicExecutionTermLabelUpdate implements TermLabelUpdate { - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getSupportedRuleNames() { - return ImmutableList.nil().prepend(WhileInvariantRule.INSTANCE.name()) - .prepend(BlockContractInternalRule.INSTANCE.name()) - .prepend(BlockContractExternalRule.INSTANCE.name()) - .prepend(LoopContractInternalRule.INSTANCE.name()) - .prepend(LoopContractExternalRule.INSTANCE.name()); - } - - /** - * {@inheritDoc} - */ - @Override - public void updateLabels(TermLabelState state, Services services, - PosInOccurrence applicationPosInOccurrence, JTerm applicationTerm, JTerm modalityTerm, - Rule rule, RuleApp ruleApp, Object hint, JTerm tacletTerm, - JTerm newTerm, - Set labels) { - if (rule instanceof WhileInvariantRule && "LoopBodyModality".equals(hint) - || (rule instanceof AbstractAuxiliaryContractRule - && ((AbstractBlockContractRule.BlockContractHint) hint) - .getExceptionalVariable() != null)) { - TermLabel label = CollectionUtil.searchAndRemove(labels, - element -> element instanceof SymbolicExecutionTermLabel); - if (label instanceof SymbolicExecutionTermLabel) { - int labelID = services.getCounter(SymbolicExecutionTermLabel.PROOF_COUNTER_NAME) - .getCountPlusPlus(); - labels.add(new SymbolicExecutionTermLabel(labelID)); - } - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/strategy/IBreakpointStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/strategy/IBreakpointStopCondition.java deleted file mode 100644 index 50c7de51935..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/strategy/IBreakpointStopCondition.java +++ /dev/null @@ -1,40 +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.strategy; - -import java.util.Set; - -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.IBreakpoint; - -import org.key_project.prover.engine.StopCondition; - -/** - * Defines the basic functionality of an {@link StopCondition} which stops applying rules when at - * least one {@link IBreakpoint} is hit. - * - * @author Martin Hentschel - */ -public interface IBreakpointStopCondition extends StopCondition { - /** - * Adds a new {@link IBreakpoint}. - * - * @param breakpoint The {@link IBreakpoint} to add. - */ - void addBreakpoint(IBreakpoint breakpoint); - - /** - * Removes an {@link IBreakpoint}. - * - * @param breakpoint The {@link IBreakpoint} to remove. - */ - void removeBreakpoint(IBreakpoint breakpoint); - - /** - * Returns all available {@link IBreakpoint}s. - * - * @return The available {@link IBreakpoint}s. - */ - Set getBreakpoints(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/AbstractUpdateExtractor.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/AbstractUpdateExtractor.java deleted file mode 100644 index 945fb4d7f2d..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/AbstractUpdateExtractor.java +++ /dev/null @@ -1,1856 +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.symbolic_execution; - -import java.util.*; -import java.util.Map.Entry; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.ldt.HeapLDT; -import de.uka.ilkd.key.ldt.JavaDLTheory; -import de.uka.ilkd.key.logic.*; -import de.uka.ilkd.key.logic.label.OriginTermLabel; -import de.uka.ilkd.key.logic.op.*; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProofSaver; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionAllArrayIndicesVariable; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicLayout; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Name; -import org.key_project.logic.op.Function; -import org.key_project.logic.sort.Sort; -import org.key_project.prover.engine.impl.ApplyStrategyInfo; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.util.Strings; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.CollectionUtil; - -/** - * Provides the basic functionality to extract values from updates. - * - * @author Martin Hentschel - */ -public abstract class AbstractUpdateExtractor { - /** - * Contains the {@link Node} of KeY's proof tree to compute memory layouts for. - */ - protected final Node node; - - /** - * The {@link PosInOccurrence} of the modality or its updates. - */ - protected final PosInOccurrence modalityPio; - - /** - * An incremented number used to give each pre value an unique name. - */ - private int preVariableIndex = 0; - - /** - * Constructor. - * - * @param node The {@link Node} of KeY's proof tree to compute memory layouts for. - * @param modalityPio The {@link PosInOccurrence} of the modality or its updates. - */ - protected AbstractUpdateExtractor(Node node, - PosInOccurrence modalityPio) { - assert node != null; - assert modalityPio != null; - this.node = node; - this.modalityPio = modalityPio; - } - - /** - * Removes all conditions from the given path condition which contains implicit - * {@link IProgramVariable}s. - * - * @param pathCondition The path condition to check. - * @return The new path condition without conditions which uses implicit - * {@link IProgramVariable}s. - */ - protected JTerm removeImplicitSubTermsFromPathCondition(JTerm pathCondition) { - if (Junctor.AND == pathCondition.op()) { - // Path condition with multiple terms combined via AND - List newTerms = new LinkedList<>(); - for (JTerm sub : pathCondition.subs()) { - if (!containsImplicitProgramVariable(sub)) { - newTerms.add(sub); - } - } - return getServices().getTermBuilder().and(newTerms); - } else { - // Only one term in path condition - if (!containsImplicitProgramVariable(pathCondition)) { - return pathCondition; - } else { - return getServices().getTermBuilder().tt(); - } - } - } - - /** - * Checks if the given {@link JTerm} contains an implicit {@link IProgramVariable}. - * - * @param term The {@link JTerm} to check. - * @return {@code true} {@link JTerm} contains implicit {@link IProgramVariable}, {@code false} - * {@link JTerm} contains no implicit {@link IProgramVariable}. - */ - protected boolean containsImplicitProgramVariable(JTerm term) { - if (term.op() instanceof ProgramVariable - && isImplicitProgramVariable((ProgramVariable) term.op())) { - return true; - } - for (int i = 0; i < term.arity(); i++) { - if (containsImplicitProgramVariable(term.sub(i))) { - return true; - } - } - return false; - } - - /** - * Checks if the given {@link ProgramVariable} is implicit. - * - * @param var The {@link ProgramVariable} to check. - * @return {@code true} {@link ProgramVariable} is implicit, {@code false} - * {@link ProgramVariable} is not implicit or {@code null}. - */ - protected boolean isImplicitProgramVariable(ProgramVariable var) { - return var != null && var.isImplicit(); - } - - /** - *

- * Computes objects which should be ignored in the state because they are part of the proof - * obligation and not of the source code. - *

- *

- * By default the set will contain the exc variable and the backup of arguments and the heap. - *

- * - * @param ignoreExceptionVariable Ignore exception variable? - * @param ignoreOldStateVariables Ignore old state variables? - * @return The objects to ignore. - */ - protected Set computeInitialObjectsToIgnore(boolean ignoreExceptionVariable, - boolean ignoreOldStateVariables) { - Set result = new LinkedHashSet<>(); - if (ignoreExceptionVariable) { - // Add exception variable to the ignore list because it is not part of the source code. - IProgramVariable excVar = SymbolicExecutionUtil.extractExceptionVariable(getProof()); - if (excVar instanceof ProgramVariable) { - result.add(getServices().getTermBuilder().var((ProgramVariable) excVar)); - } - } - if (ignoreOldStateVariables) { - // Add initial updates which are used as backup of the heap and method arguments. They - // are not part of the source code and should be ignored. - Sequent sequent = getRoot().sequent(); - for (SequentFormula sf : sequent.succedent()) { - JTerm term = (JTerm) sf.formula(); - if (Junctor.IMP.equals(term.op())) { - fillInitialObjectsToIgnoreRecursively(term.sub(1), result); - } - } - } - return result; - } - - /** - * Utility method of {@link #computeInitialObjectsToIgnore} which computes the objects to - * ignore recursively. - * - * @param term The current {@link JTerm}. - * @param toFill The {@link Set} with {@link JTerm}s to ignore to fill. - */ - protected void fillInitialObjectsToIgnoreRecursively(JTerm term, Set toFill) { - if (term.op() instanceof UpdateApplication) { - JTerm updateTerm = UpdateApplication.getUpdate(term); - fillInitialObjectsToIgnoreRecursively(updateTerm, toFill); - } else if (term.op() == UpdateJunctor.PARALLEL_UPDATE) { - for (int i = 0; i < term.arity(); i++) { - fillInitialObjectsToIgnoreRecursively(term.sub(i), toFill); - } - } else if (term.op() instanceof ElementaryUpdate eu) { - if (eu.lhs() instanceof ProgramVariable) { - toFill.add(term.sub(0)); - } - } - } - - /** - *

- * Computes for each location (value/association of an object) used in the updates of the given - * {@link Sequent} the {@link JTerm}s which allows to compute the object itself and the value of - * the value/association. The result is a {@link Set} of {@link ExtractLocationParameter} which - * contains the computed {@link JTerm}s. - *

- *

- * Objects which are created in the heap during symbolic execution and all objects which are - * used on the right side of associations are also collected and stored in the {@link Set}s - * {@code updateCreatedObjectsToFill}/ {@code updateValueObjectsToFill}. - *

- * - * @param sequent The {@link Sequent} which provides the updates to extract locations from. - * @param locationsToFill The location {@link Set} to fill. - * @param updateCreatedObjectsToFill The new created object {@link Set} to fill. - * @param updateValueObjectsToFill The {@link Set} with objects used on right side of updates to - * fill. - * @param objectsToIgnore The objects to ignore. - * @throws ProofInputException Occurred Exception. - */ - protected void collectLocationsFromUpdates(Sequent sequent, - Set locationsToFill, Set updateCreatedObjectsToFill, - Set updateValueObjectsToFill, Set objectsToIgnore) - throws ProofInputException { - // Go up in parent hierarchy and collect updates on all update applications - PosInOccurrence pio = modalityPio; - while (pio != null) { - JTerm updateApplication = (JTerm) pio.subTerm(); - if (updateApplication.op() == UpdateApplication.UPDATE_APPLICATION) { - JTerm topUpdate = UpdateApplication.getUpdate(updateApplication); - collectLocationsFromTerm(topUpdate, locationsToFill, updateCreatedObjectsToFill, - updateValueObjectsToFill, objectsToIgnore); - } - if (!pio.isTopLevel()) { - pio = pio.up(); - } else { - pio = null; - } - } - } - - /** - *

- * Computes for each location (value/association of an object) used in the the given - * {@link JTerm} the {@link JTerm}s which allows to compute the object itself and the value of - * the - * value/association. The result is a {@link Set} of {@link ExtractLocationParameter} which - * contains the computed {@link JTerm}s. - *

- *

- * Objects which are created in the heap during symbolic execution and all objects which are - * used on the right side of associations are also collected and stored in the {@link Set}s - * {@code updateCreatedObjectsToFill}/ {@code updateValueObjectsToFill}. - *

- * - * @param updateTerm The {@link JTerm} which provides the update to extract locations from. - * @param locationsToFill The location {@link Set} to fill. - * @param updateCreatedObjectsToFill The new created object {@link Set} to fill. - * @param updateValueObjectsToFill The {@link Set} with objects used on right side of updates to - * fill. - * @param objectsToIgnore The objects to ignore. - * @throws ProofInputException Occurred Exception. - */ - protected void collectLocationsFromTerm(JTerm updateTerm, - Set locationsToFill, Set updateCreatedObjectsToFill, - Set updateValueObjectsToFill, Set objectsToIgnore) - throws ProofInputException { - if (updateTerm.op() instanceof UpdateJunctor) { - for (JTerm sub : updateTerm.subs()) { - collectLocationsFromTerm(sub, locationsToFill, updateCreatedObjectsToFill, - updateValueObjectsToFill, objectsToIgnore); - } - } else if (updateTerm.op() instanceof ElementaryUpdate eu) { - if (SymbolicExecutionUtil.isHeapUpdate(getServices(), updateTerm)) { - collectLocationsFromHeapUpdate(updateTerm.sub(0), locationsToFill, - updateCreatedObjectsToFill, updateValueObjectsToFill); - } else if (eu.lhs() instanceof ProgramVariable var) { - final HeapLDT heapLDT = getServices().getTypeConverter().getHeapLDT(); - if (!SymbolicExecutionUtil.isHeap(var, heapLDT)) { - if (!isImplicitProgramVariable(var) - && !objectsToIgnore.contains(getServices().getTermBuilder().var(var)) - && !hasFreeVariables(updateTerm)) { - locationsToFill.add(new ExtractLocationParameter(var, true)); - } - if (SymbolicExecutionUtil.hasReferenceSort(getServices(), updateTerm.sub(0))) { - JTerm objectTerm = updateTerm.sub(0); - objectTerm = SymbolicExecutionUtil.replaceSkolemConstants(node.sequent(), - objectTerm, getServices()); - updateValueObjectsToFill - .add(OriginTermLabel.removeOriginLabels(objectTerm, getServices())); - } - } - } else { - throw new ProofInputException("Unsupported update operator \"" + eu.lhs() + "\"."); - } - } else { - throw new ProofInputException( - "Unsupported update operator \"" + updateTerm.op() + "\"."); - } - } - - /** - *

- * Computes for each location (value/association of an object) used in the the given heap update - * {@link JTerm} the {@link JTerm}s which allows to compute the object itself and the value of - * the - * value/association. The result is a {@link Set} of {@link ExtractLocationParameter} which - * contains the computed {@link JTerm}s. - *

- *

- * Objects which are created in the heap during symbolic execution and all objects which are - * used on the right side of associations are also collected and stored in the {@link Set}s - * {@code updateCreatedObjectsToFill}/ {@code updateValueObjectsToFill}. - *

- * - * @param term The {@link JTerm} which provides the heap update to extract locations from. - * @param locationsToFill The location {@link Set} to fill. - * @param updateCreatedObjectsToFill The new created object {@link Set} to fill. - * @param updateValueObjectsToFill The {@link Set} with objects used on right side of updates to - * fill. - * @throws ProofInputException Occurred Exception. - */ - protected void collectLocationsFromHeapUpdate(JTerm term, - Set locationsToFill, Set updateCreatedObjectsToFill, - Set updateValueObjectsToFill) throws ProofInputException { - final HeapLDT heapLDT = getServices().getTypeConverter().getHeapLDT(); - if (term.op() == heapLDT.getStore()) { - // Add select object term to result - JTerm selectArgument = term.sub(1); - if (heapLDT.getSortOfSelect(selectArgument.op()) != null) { - ProgramVariable var = SymbolicExecutionUtil.getProgramVariable(getServices(), - heapLDT, selectArgument.sub(2)); - if (var != null) { - if (!isImplicitProgramVariable(var) - && !hasFreeVariables(selectArgument.sub(2))) { - locationsToFill - .add(new ExtractLocationParameter(var, selectArgument.sub(1))); - } - } else { - JTerm arrayIndex = SymbolicExecutionUtil.getArrayIndex(getServices(), heapLDT, - selectArgument.sub(2)); - if (arrayIndex != null) { - if (!hasFreeVariables(arrayIndex)) { - locationsToFill.add( - new ExtractLocationParameter(arrayIndex, selectArgument.sub(1))); - } - } else { - throw new ProofInputException( - "Unsupported select statement \"" + term + "\"."); - } - } - } else if (selectArgument.op() instanceof IProgramVariable) { - ProgramVariable var = (ProgramVariable) selectArgument.op(); - if (!isImplicitProgramVariable(var) && !hasFreeVariables(selectArgument)) { - locationsToFill.add(new ExtractLocationParameter(var, false)); - } - } else if (heapLDT.getNull() == selectArgument.op()) { - // Static fields have a null term as select argument. - } else { - for (int i = 0; i < selectArgument.arity(); i++) { - collectLocationsFromHeapUpdate(selectArgument.sub(i), locationsToFill, - updateCreatedObjectsToFill, updateValueObjectsToFill); - } - } - // Add select value term to result - ProgramVariable var = - SymbolicExecutionUtil.getProgramVariable(getServices(), heapLDT, term.sub(2)); - if (var != null) { - if (!isImplicitProgramVariable(var) && !hasFreeVariables(term.sub(2))) { - if (var.isStatic()) { - locationsToFill.add(new ExtractLocationParameter(var, true)); - } else { - locationsToFill.add(new ExtractLocationParameter(var, term.sub(1))); - } - } - } else { - JTerm arrayIndex = - SymbolicExecutionUtil.getArrayIndex(getServices(), heapLDT, term.sub(2)); - if (arrayIndex != null && !hasFreeVariables(arrayIndex)) { - locationsToFill.add(new ExtractLocationParameter(arrayIndex, term.sub(1))); - } else { - throw new ProofInputException("Unsupported select statement \"" + term + "\"."); - } - } - if (SymbolicExecutionUtil.hasReferenceSort(getServices(), term.sub(3)) - && term.sub(3).op() instanceof ProgramVariable) { - JTerm objectTerm = term.sub(3); - objectTerm = SymbolicExecutionUtil.replaceSkolemConstants(node.sequent(), - objectTerm, getServices()); - updateValueObjectsToFill - .add(OriginTermLabel.removeOriginLabels(objectTerm, getServices())); - } - // Iterate over child heap modifications - collectLocationsFromHeapUpdate(term.sub(0), locationsToFill, updateCreatedObjectsToFill, - updateValueObjectsToFill); - } else if (term.op() == heapLDT.getCreate()) { - JTerm newObject = term.sub(1); - newObject = SymbolicExecutionUtil.replaceSkolemConstants(node.sequent(), newObject, - getServices()); - updateCreatedObjectsToFill - .add(OriginTermLabel.removeOriginLabels(newObject, getServices())); - // Iterate over child heap modifications - collectLocationsFromHeapUpdate(term.sub(0), locationsToFill, updateCreatedObjectsToFill, - updateValueObjectsToFill); - } else if (term.op() == heapLDT.getHeap()) { - // Initial Heap, nothing to do - } else if (term.op() == heapLDT.getMemset()) { - // Check modified array range. - JTerm arrayRange = term.sub(1); - if (arrayRange.op() == getServices().getTypeConverter().getLocSetLDT() - .getArrayRange()) { - JTerm array = arrayRange.sub(0); - JTerm startIndex = arrayRange.sub(1); - JTerm endIndex = arrayRange.sub(2); - locationsToFill.add(new ExtractLocationParameter(startIndex, endIndex, array)); - } - // Iterate over child heap modifications - collectLocationsFromHeapUpdate(term.sub(0), locationsToFill, updateCreatedObjectsToFill, - updateValueObjectsToFill); - } else { - for (int i = 0; i < term.arity(); i++) { - collectLocationsFromHeapUpdate(term.sub(i), locationsToFill, - updateCreatedObjectsToFill, updateValueObjectsToFill); - } - } - } - - /** - * Checks if the given {@link JTerm} has free variables. - * - * @param term The {@link JTerm} to check. - * @return {@code true} has free variables, {@code false} does not have free variables. - */ - protected boolean hasFreeVariables(JTerm term) { - return term != null && !term.freeVars().isEmpty(); - } - - /** - * Computes for each location (value/association of an object) used in the given {@link Sequent} - * the {@link JTerm}s which allows to compute the object itself and the value of the - * value/association. The result is a {@link Set} of {@link ExtractLocationParameter} which - * contains the computed {@link JTerm}s. - * - * @param sequent The {@link Sequent} to extract locations from. - * @param objectsToIgnore The objects to ignore. - * @return The found locations. - * @throws ProofInputException Occurred Exception. - */ - protected Set extractLocationsFromSequent(Sequent sequent, - Set objectsToIgnore) throws ProofInputException { - Set result = new LinkedHashSet<>(); - for (SequentFormula sf : sequent) { - result.addAll(extractLocationsFromTerm( - OriginTermLabel.removeOriginLabels((JTerm) sf.formula(), getServices()), - objectsToIgnore)); - } - return result; - } - - /** - * Computes for each location (value/association of an object) used in the given {@link JTerm} - * the {@link JTerm}s which allows to compute the object itself and the value of the - * value/association. The result is a {@link Set} of {@link ExtractLocationParameter} which - * contains the computed {@link JTerm}s. - * - * @param term The {@link JTerm} to extract locations from. - * @param objectsToIgnore The objects to ignore. - * @return The found locations. - * @throws ProofInputException Occurred Exception. - */ - protected Set extractLocationsFromTerm(JTerm term, - Set objectsToIgnore) throws ProofInputException { - Set result = new LinkedHashSet<>(); - collectLocationsFromTerm(result, term, objectsToIgnore); - return result; - } - - /** - * Utility method of {@link #extractLocationsFromTerm(JTerm, Set)} which recursively extracts - * the - * locations. - * - * @param toFill The result {@link Set} to fill. - * @param term The current {@link JTerm}. - * @param objectsToIgnore The objects to ignore. - * @throws ProofInputException Occurred Exception. - */ - protected void collectLocationsFromTerm(Set toFill, JTerm term, - Set objectsToIgnore) throws ProofInputException { - term = OriginTermLabel.removeOriginLabels(term, getServices()); - final HeapLDT heapLDT = getServices().getTypeConverter().getHeapLDT(); - if (term.op() instanceof ProgramVariable var) { - if (!SymbolicExecutionUtil.isHeap(var, heapLDT) && !isImplicitProgramVariable(var) - && !objectsToIgnore.contains(term) && !hasFreeVariables(term)) { - toFill.add(new ExtractLocationParameter(var, true)); - } - } else { - Sort sort = heapLDT.getSortOfSelect(term.op()); - if (sort != null) { - collectLocationsFromHeapTerms(term.sub(1), term.sub(2), heapLDT, toFill, - objectsToIgnore); - } else if (heapLDT.getStore() == term.op()) { - collectLocationsFromHeapTerms(term.sub(1), term.sub(2), heapLDT, toFill, - objectsToIgnore); - } else if (heapLDT.getLength() == term.op()) { - if (!objectsToIgnore.contains(term.sub(0)) && !hasFreeVariables(term)) { - ProgramVariable var = getServices().getJavaInfo().getArrayLength(); - toFill.add(new ExtractLocationParameter(var, term.sub(0))); - } - } else { - for (JTerm sub : term.subs()) { - collectLocationsFromTerm(toFill, sub, objectsToIgnore); - } - } - } - } - - /** - * Collects the {@link ExtractLocationParameter} location from the heap {@link JTerm}s. - * - * @param selectTerm The parent {@link JTerm}. - * @param variableTerm The {@link JTerm} with the {@link ProgramVariable}. - * @param heapLDT The {@link HeapLDT} to use. - * @param toFill The result {@link Set} to fill. - * @param objectsToIgnore The objects to ignore. - * @throws ProofInputException Occurred Exception. - */ - protected void collectLocationsFromHeapTerms(JTerm selectTerm, JTerm variableTerm, - HeapLDT heapLDT, Set toFill, Set objectsToIgnore) - throws ProofInputException { - if (!objectsToIgnore.contains(selectTerm) - && !SymbolicExecutionUtil.isSkolemConstant(selectTerm)) { - ProgramVariable var = - SymbolicExecutionUtil.getProgramVariable(getServices(), heapLDT, variableTerm); - if (var != null) { - if (!isImplicitProgramVariable(var) && !hasFreeVariables(variableTerm)) { - if (var.isStatic()) { - toFill.add(new ExtractLocationParameter(var, true)); - } else { - if (selectTerm.op() instanceof ProgramVariable) { - toFill.add(new ExtractLocationParameter( - (ProgramVariable) selectTerm.op(), true)); - } - toFill.add(new ExtractLocationParameter(var, selectTerm)); - } - } - } else { - JTerm arrayIndex = - SymbolicExecutionUtil.getArrayIndex(getServices(), heapLDT, variableTerm); - if (arrayIndex != null && !hasFreeVariables(arrayIndex)) { - if (selectTerm.op() instanceof ProgramVariable) { - toFill.add( - new ExtractLocationParameter((ProgramVariable) selectTerm.op(), true)); - } - toFill.add(new ExtractLocationParameter(arrayIndex, selectTerm)); - } else { - // Nothing to do, since program variable and array index is undefined. - } - } - } - } - - /** - * Creates a predicate and a {@link JTerm} which can be used to compute the values defined by - * the - * given {@link ExtractLocationParameter}s. - * - * @param valueSelectParameter The {@link ExtractLocationParameter}s to compute in the created - * {@link JTerm}. - * @return The created {@link JTerm} which computes the values of the given - * {@link ExtractLocationParameter}s. - */ - protected JTerm createLocationPredicateAndTerm( - Set valueSelectParameter) { - List argumentsList = new LinkedList<>(); - int argumentIndex = -1; - for (ExtractLocationParameter param : valueSelectParameter) { - argumentsList.add(param.createPreParentTerm()); - param.setParentTermIndexInStatePredicate(++argumentIndex); - argumentsList.add(param.createPreValueTerm()); - param.setValueTermIndexInStatePredicate(++argumentIndex); - } - JTerm[] arguments = argumentsList.toArray(new JTerm[0]); - Sort[] sorts = new Sort[arguments.length]; - for (int i = 0; i < sorts.length; i++) { - sorts[i] = arguments[i].sort(); - } - // Create predicate which will be used in formulas to store the value interested in. - Function newPredicate = - new JFunction(new Name(getServices().getTermBuilder().newName("LayoutPredicate")), - JavaDLTheory.FORMULA, sorts); - // Create formula which contains the value interested in. - JTerm newTerm = getServices().getTermBuilder().func(newPredicate, arguments); - return newTerm; - } - - /** - * Returns the {@link Proof} of the analyzed {@link Node}. - * - * @return The {@link Proof} of the analyzed {@link Node}. - */ - protected Proof getProof() { - return node.proof(); - } - - /** - * Returns the root {@link Node} of the proof. - * - * @return The root {@link Node} of the proof. - */ - protected Node getRoot() { - return getProof().root(); - } - - /** - * Returns the {@link Services} of the analyzed {@link Node}. - * - * @return The {@link Services} of the analyzed {@link Node}. - */ - protected Services getServices() { - return getProof().getServices(); - } - - /** - *

- * Instances of this class provides the {@link JTerm} which are required to compute a location - * (value or association of a given object/state). - *

- *

- * Instances of this class can be used to compute the values in each memory layout. So they are - * instantiated during the analyzation phase {@link SymbolicLayoutExtractor#analyse()} once for - * initial and current memory layout. - *

- * - * @author Martin Hentschel - */ - public class ExtractLocationParameter { - /** - * The {@link ProgramVariable} or {@code null} if an array index is used instead. - */ - private final ProgramVariable programVariable; - - /** - * The array index or {@code null} if not used. - */ - private final JTerm arrayIndex; - - /** - * The array start index or {@code null} if not used. - */ - private final JTerm arrayStartIndex; - - /** - * The array end index or {@code null} if not used. - */ - private final JTerm arrayEndIndex; - - /** - * An optional parent object represented as {@link JTerm}. If it is {@code null} an - * {@link IProgramVariable} of the state is represented. - */ - private final JTerm parentTerm; - - /** - * The index of the parent argument in the predicate used in side proof to compute the - * values. - */ - private int parentTermIndexInStatePredicate; - - /** - * The index of the value argument in the predicate used in side proof to compute the - * values. - */ - private int valueTermIndexInStatePredicate; - - /** - * The {@link LocationVariable} which is used to make sure that the defined parent object of - * the initial state is used, because the expression (e.g. {@code x.next}) might refer to - * different objects in the current state. - */ - private final LocationVariable preVariable; - - /** - * Defines if this location should explicitly be shown on the state. - */ - private final boolean stateMember; - - /** - * The constant used to query an array range. - */ - private final JTerm arrayRangeConstant; - - /** - * The constant representing the fact that no value is available. - */ - private final JTerm notAValue; - - /** - * Constructor for cloning purpose. - * - * @param original The original {@link ExtractLocationParameter} to clone. - * @param newParent The new parent {@link JTerm} to be used instead of the original one. - */ - public ExtractLocationParameter(ExtractLocationParameter original, JTerm newParent) { - this.programVariable = original.programVariable; - this.arrayIndex = original.arrayIndex; - this.parentTerm = OriginTermLabel.removeOriginLabels(newParent, getServices()); - this.parentTermIndexInStatePredicate = original.parentTermIndexInStatePredicate; - this.valueTermIndexInStatePredicate = original.valueTermIndexInStatePredicate; - this.preVariable = original.preVariable; - this.stateMember = original.stateMember; - this.arrayStartIndex = original.arrayStartIndex; - this.arrayEndIndex = original.arrayEndIndex; - this.arrayRangeConstant = original.arrayRangeConstant; - this.notAValue = original.notAValue; - } - - /** - * Constructor. - * - * @param programVariable The {@link ProgramVariable}. - * @param stateMember Defines if this location should explicitly be shown on the state. - * @throws ProofInputException Occurred Exception. - */ - public ExtractLocationParameter(ProgramVariable programVariable, boolean stateMember) - throws ProofInputException { - this(programVariable, null, stateMember); - } - - /** - * Constructor. - * - * @param programVariable The {@link ProgramVariable}. - * @param parentTerm The parent object represented as {@link JTerm}. - * @throws ProofInputException Occurred Exception. - */ - public ExtractLocationParameter(ProgramVariable programVariable, JTerm parentTerm) - throws ProofInputException { - this(programVariable, parentTerm, false); - } - - /** - * Constructor. - * - * @param programVariable The {@link ProgramVariable}. - * @param parentTerm The parent object represented as {@link JTerm}. - * @param stateMember Defines if this location should explicitly be shown on the state. - * @throws ProofInputException Occurred Exception. - */ - protected ExtractLocationParameter(ProgramVariable programVariable, JTerm parentTerm, - boolean stateMember) throws ProofInputException { - assert programVariable != null; - this.programVariable = programVariable; - this.parentTerm = OriginTermLabel.removeOriginLabels(parentTerm, getServices()); - this.preVariable = createLocationVariable("Pre" + preVariableIndex++, - parentTerm != null ? parentTerm.sort() : programVariable.sort()); - this.arrayIndex = null; - this.stateMember = stateMember; - this.arrayStartIndex = null; - this.arrayEndIndex = null; - this.arrayRangeConstant = null; - this.notAValue = null; - } - - /** - * Constructor. - * - * @param arrayIndex The array index. - * @param parentTerm The parent object represented as {@link JTerm}. - * @throws ProofInputException Occurred Exception. - */ - public ExtractLocationParameter(JTerm arrayIndex, JTerm parentTerm) - throws ProofInputException { - assert parentTerm != null; - this.programVariable = null; - this.arrayIndex = OriginTermLabel.removeOriginLabels(arrayIndex, getServices()); - this.parentTerm = OriginTermLabel.removeOriginLabels(parentTerm, getServices()); - this.preVariable = - createLocationVariable("Pre" + preVariableIndex++, parentTerm.sort()); - this.stateMember = false; - this.arrayStartIndex = null; - this.arrayEndIndex = null; - this.arrayRangeConstant = null; - this.notAValue = null; - } - - /** - * Constructor. - * - * @param arrayStartIndex The array start index. - * @param arrayEndIndex The array end index. - * @param parentTerm The parent object represented as {@link JTerm}. - * @throws ProofInputException Occurred Exception. - */ - public ExtractLocationParameter(JTerm arrayStartIndex, JTerm arrayEndIndex, - JTerm parentTerm) - throws ProofInputException { - assert arrayStartIndex != null; - assert arrayEndIndex != null; - assert parentTerm != null; - this.programVariable = null; - this.arrayIndex = null; - this.parentTerm = OriginTermLabel.removeOriginLabels(parentTerm, getServices()); - this.preVariable = - createLocationVariable("Pre" + preVariableIndex++, parentTerm.sort()); - this.stateMember = false; - this.arrayStartIndex = - OriginTermLabel.removeOriginLabels(arrayStartIndex, getServices()); - this.arrayEndIndex = OriginTermLabel.removeOriginLabels(arrayEndIndex, getServices()); - TermBuilder tb = getServices().getTermBuilder(); - Function constantFunction = new JFunction( - new Name(tb.newName(ExecutionAllArrayIndicesVariable.ARRAY_INDEX_CONSTANT_NAME)), - getServices().getTypeConverter().getIntegerLDT().targetSort()); - this.arrayRangeConstant = tb.func(constantFunction); - Function notAValueFunction = new JFunction( - new Name(tb.newName(ExecutionAllArrayIndicesVariable.NOT_A_VALUE_NAME)), - JavaDLTheory.ANY); - this.notAValue = tb.func(notAValueFunction); - } - - /** - * Creates a new {@link LocationVariable} with the given name and {@link Sort}. - * - * @param name The name of the new variable. - * @param sort The {@link Sort} of the new variable. - * @return The created {@link LocationVariable}. - * @throws ProofInputException Occurred Exception. - */ - protected LocationVariable createLocationVariable(String name, Sort sort) - throws ProofInputException { - return new LocationVariable(new ProgramElementName(name), sort); - } - - /** - * Checks if this location should explicitly be shown on the state. - * - * @return Show location on state? - */ - public boolean isStateMember() { - return stateMember; - } - - /** - * Checks if an array index is represented. - * - * @return {@code true} is array index, {@code false} is something else. - */ - public boolean isArrayIndex() { - return arrayIndex != null; - } - - /** - * Checks if an array range is represented. - * - * @return {@code true} is array range, {@code false} is something else. - */ - public boolean isArrayRange() { - return arrayStartIndex != null && arrayEndIndex != null; - } - - /** - * Returns the array index. - * - * @return The array index. - */ - public JTerm getArrayIndex() { - return arrayIndex; - } - - /** - * Returns the array start index. - * - * @return The array start index. - */ - public JTerm getArrayStartIndex() { - return arrayStartIndex; - } - - /** - * Returns the array end index. - * - * @return The array end index. - */ - public JTerm getArrayEndIndex() { - return arrayEndIndex; - } - - /** - * Returns the constant used to query an array range. - * - * @return The constant used to query an array range. - */ - public JTerm getArrayRangeConstant() { - return arrayRangeConstant; - } - - /** - * Returns the constant representing the fact that no value is available. - * - * @return The constant representing the fact that no value is available. - */ - public JTerm getNotAValue() { - return notAValue; - } - - /** - * Returns the pre variable. - * - * @return The pre variable. - */ - public LocationVariable getPreVariable() { - return preVariable; - } - - /** - * Returns the right side of the update created by {@link #createPreUpdate()}. - * - * @return The right side of the update created by {@link #createPreUpdate()}. - */ - public JTerm getPreUpdateTarget() { - return parentTerm != null ? parentTerm - : getServices().getTermBuilder().var(programVariable); - } - - /** - * Creates the pre update to make sure that the parent object defined by the expression is - * evaluated on the initial state because it might be changed in the current state due to - * updates. - * - * @return The created {@link JTerm} with the pre update. - */ - public JTerm createPreUpdate() { - JTerm originalTerm = getPreUpdateTarget(); - return getServices().getTermBuilder().elementary(preVariable, originalTerm); - } - - /** - * Creates the {@link JTerm} to compute the parent object with help of the pre update. - * - * @return The {@link JTerm} to compute the parent object with help of the pre update. - */ - public JTerm createPreParentTerm() { - return getServices().getTermBuilder().var(preVariable); - } - - /** - * Computes the {@link JTerm} to compute the value with help of the pre update. - * - * @return The {@link JTerm} to compute the value with help of the pre update. - */ - public JTerm createPreValueTerm() { - final TermBuilder tb = getServices().getTermBuilder(); - if (parentTerm != null) { - if (isArrayRange()) { - JTerm arrayRange = tb.and(tb.geq(arrayRangeConstant, arrayStartIndex), - tb.leq(arrayRangeConstant, arrayEndIndex)); - return tb.ife(arrayRange, tb.dotArr(parentTerm, arrayRangeConstant), notAValue); - } else if (isArrayIndex()) { - return tb.dotArr(parentTerm, arrayIndex); - } else { - if (getServices().getJavaInfo().getArrayLength() == programVariable) { - // Special handling for length attribute of arrays - Function function = - getServices().getTypeConverter().getHeapLDT().getLength(); - return tb.func(function, createPreParentTerm()); - } else { - Function function = - getServices().getTypeConverter().getHeapLDT().getFieldSymbolForPV( - (LocationVariable) programVariable, getServices()); - return tb.dot(programVariable.sort(), createPreParentTerm(), function); - } - } - } else { - if (programVariable.isStatic()) { - Function function = getServices().getTypeConverter().getHeapLDT() - .getFieldSymbolForPV((LocationVariable) programVariable, getServices()); - return tb.staticDot(programVariable.sort(), function); - } else { - return tb.var(programVariable); - } - } - } - - /** - * Returns the {@link ProgramVariable} or {@code null} if an array index is used instead. - * - * @return The {@link ProgramVariable} or {@code null} if an array index is used instead. - */ - public ProgramVariable getProgramVariable() { - return programVariable; - } - - /** - * Returns the optional parent object represented as {@link JTerm}. If it is {@code null} an - * {@link IProgramVariable} of the state is represented. - * - * @return The optional parent object represented as {@link JTerm}. If it is {@code null} an - * {@link IProgramVariable} of the state is represented. - */ - public JTerm getParentTerm() { - return parentTerm; - } - - /** - * Returns the index of the parent argument in the predicate used in side proof to compute - * the values. - * - * @return The index of the parent argument in the predicate used in side proof to compute - * the values. - */ - public int getParentTermIndexInStatePredicate() { - return parentTermIndexInStatePredicate; - } - - /** - * Sets the index of the parent argument in the predicate used in side proof to compute the - * values. - * - * @param selectParentTermIndexInStatePredicate The index of the parent argument in the - * predicate used in side proof to compute the values. - */ - public void setParentTermIndexInStatePredicate(int selectParentTermIndexInStatePredicate) { - this.parentTermIndexInStatePredicate = selectParentTermIndexInStatePredicate; - } - - /** - * Returns the index of the value argument in the predicate used in side proof to compute - * the values. - * - * @return The index of the value argument in the predicate used in side proof to compute - * the values. - */ - public int getValueTermIndexInStatePredicate() { - return valueTermIndexInStatePredicate; - } - - /** - * Sets the index of the value argument in the predicate used in side proof to compute the - * values. - * - * @param selectValueTermIndexInStatePredicate The index of the value argument in the - * predicate used in side proof to compute the values. - */ - public void setValueTermIndexInStatePredicate(int selectValueTermIndexInStatePredicate) { - this.valueTermIndexInStatePredicate = selectValueTermIndexInStatePredicate; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - if (isArrayRange()) { - return "[" + arrayStartIndex + " to " + arrayEndIndex + "] " - + (parentTerm != null ? " of " + parentTerm : ""); - } else if (isArrayIndex()) { - return "[" + arrayIndex + "] " + (parentTerm != null ? " of " + parentTerm : ""); - } else { - return programVariable + (parentTerm != null ? " of " + parentTerm : ""); - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof ExtractLocationParameter other) { - return Objects.equals(arrayIndex, other.arrayIndex) - && stateMember == other.stateMember - && Objects.equals(parentTerm, other.parentTerm) - && Objects.equals(programVariable, other.programVariable); - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() { - int result = 17; - result = 31 * result + (arrayIndex != null ? arrayIndex.hashCode() : 0); - result = 31 * result + (stateMember ? 1 : 0); - result = 31 * result + (parentTerm != null ? parentTerm.hashCode() : 0); - result = 31 * result + (programVariable != null ? programVariable.hashCode() : 0); - return result; - } - } - - /** - *

- * The method starts a side proof with the given arguments to compute the values and objects of - * the requested memory layout. The {@link ExecutionVariableValuePair} together with the memory - * layout term defines how to access the side proof result. - *

- *

- * The next step is the result extraction from side proof which results in a {@link Set} of - * {@link ExecutionVariableValuePair} instances. Each instance defines a value or association of - * a parent object or the state itself. - *

- * - * @param layoutCondition An optional condition to consider. - * @param layoutTerm The result term to use in side proof. - * @param locations The locations to compute in side proof. - * @param currentLayout {@code true} current layout, {@code false} initial layout. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @return The computed {@link ExecutionVariableValuePair}s. - * @throws ProofInputException Occurred Exception. - */ - protected Set computeVariableValuePairs(JTerm layoutCondition, - JTerm layoutTerm, Set locations, boolean currentLayout, - boolean simplifyConditions) throws ProofInputException { - // Get original updates - ImmutableList originalUpdates = computeOriginalUpdates(modalityPio, currentLayout); - // Combine memory layout with original updates - Map preUpdateMap = new HashMap<>(); - ImmutableList additionalUpdates = ImmutableList.nil(); - for (ExtractLocationParameter evp : locations) { - additionalUpdates = additionalUpdates.append(evp.createPreUpdate()); - preUpdateMap.put(evp.getPreVariable(), evp.getPreUpdateTarget()); - } - // Apply array range conditions - TermBuilder tb = getServices().getTermBuilder(); - // Apply updates - JTerm updateLayoutTerm = tb.applyParallel(originalUpdates, layoutTerm); - updateLayoutTerm = tb.applyParallel(additionalUpdates, updateLayoutTerm); - for (JTerm additionalUpdate : collectAdditionalUpdates()) { - updateLayoutTerm = tb.apply(additionalUpdate, updateLayoutTerm); - } - // New OneStepSimplifier is required because it has an internal state and the default - // instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(getProof(), true); - Sequent sequent = SymbolicExecutionUtil.createSequentToProveWithNewSuccedent(node, - modalityPio, layoutCondition, updateLayoutTerm, null, false); - // Instantiate and run proof - ApplyStrategyInfo info = - SymbolicExecutionSideProofUtil.startSideProof(getProof(), sideProofEnv, sequent, - StrategyProperties.METHOD_CONTRACT, StrategyProperties.LOOP_INVARIANT, - StrategyProperties.QUERY_ON, StrategyProperties.SPLITTING_NORMAL); - try { - if (!info.getProof().closed()) { - @SuppressWarnings("unchecked") - Map>[] paramValueMap = new Map[locations.size()]; - // Group equal values as precondition of computeValueConditions(...) - for (Goal goal : info.getProof().openGoals()) { - JTerm resultTerm = - SymbolicExecutionSideProofUtil.extractOperatorTerm(goal, layoutTerm.op()); - int i = 0; - for (ExtractLocationParameter param : locations) { - Map> valueMap = paramValueMap[i]; - if (valueMap == null) { - valueMap = new LinkedHashMap<>(); - paramValueMap[i] = valueMap; - } - JTerm value = resultTerm.sub(param.getValueTermIndexInStatePredicate()); - value = SymbolicExecutionUtil.replaceSkolemConstants(goal.sequent(), value, - getServices()); - // Replace pre variable with original target - if (value.op() instanceof LocationVariable) { - JTerm originalTarget = preUpdateMap.get(value.op()); - if (originalTarget != null) { - value = originalTarget; - } - } else if (SymbolicExecutionUtil.isSelect(goal.proof().getServices(), - value)) { - JTerm object = value.sub(1); - if (object.op() instanceof LocationVariable) { - JTerm originalTarget = preUpdateMap.get(object.op()); - if (originalTarget != null) { - value = goal.proof().getServices().getTermBuilder().select( - value.sort(), value.sub(0), originalTarget, value.sub(2)); - } - } - } - // Update value list - Set valueList = - valueMap.computeIfAbsent(value, k -> new LinkedHashSet<>()); - valueList.add(goal); - i++; - } - } - // Compute values including conditions - Map branchConditionCache = new HashMap<>(); - Set pairs = - new LinkedHashSet<>(); - int i = 0; - for (ExtractLocationParameter param : locations) { - for (Entry> valueEntry : paramValueMap[i].entrySet()) { - Map conditionsMap = computeValueConditions( - valueEntry.getValue(), branchConditionCache, simplifyConditions); - if (param.isArrayRange()) { - for (Goal goal : valueEntry.getValue()) { - if (valueEntry.getKey() != param.getNotAValue()) { - ExecutionVariableValuePair pair = - new ExecutionVariableValuePair( - OriginTermLabel.removeOriginLabels( - param.getArrayStartIndex(), getServices()), - OriginTermLabel.removeOriginLabels( - param.getArrayEndIndex(), getServices()), - OriginTermLabel.removeOriginLabels( - param.getArrayRangeConstant(), getServices()), - OriginTermLabel.removeOriginLabels( - param.getParentTerm(), getServices()), - OriginTermLabel.removeOriginLabels(valueEntry.getKey(), - getServices()), - OriginTermLabel.removeOriginLabels( - conditionsMap.get(goal), getServices()), - param.isStateMember(), goal.node()); - pairs.add(pair); - } - } - } else if (param.isArrayIndex()) { - for (Goal goal : valueEntry.getValue()) { - ExecutionVariableValuePair pair = new ExecutionVariableValuePair( - OriginTermLabel.removeOriginLabels(param.getArrayIndex(), - getServices()), - OriginTermLabel.removeOriginLabels(param.getParentTerm(), - getServices()), - OriginTermLabel.removeOriginLabels(valueEntry.getKey(), - getServices()), - OriginTermLabel.removeOriginLabels(conditionsMap.get(goal), - getServices()), - param.isStateMember(), goal.node()); - pairs.add(pair); - } - } else { - for (Goal goal : valueEntry.getValue()) { - ExecutionVariableValuePair pair = - new ExecutionVariableValuePair(param.getProgramVariable(), - OriginTermLabel.removeOriginLabels(param.getParentTerm(), - getServices()), - OriginTermLabel.removeOriginLabels(valueEntry.getKey(), - getServices()), - OriginTermLabel.removeOriginLabels(conditionsMap.get(goal), - getServices()), - param.isStateMember(), goal.node()); - pairs.add(pair); - } - } - } - i++; - } - return pairs; - } else { - // Proof is closed, something went wrong, continuation impossible - return null; - } - } finally { - SymbolicExecutionSideProofUtil.disposeOrStore( - "Layout computation on node " + node.serialNr() + " with layout term " - + ProofSaver.printAnything(layoutTerm, getServices()) + ".", - info); - } - } - - /** - * Collects additional updates. - * - * @return The additional updates. - */ - protected List collectAdditionalUpdates() { - return Collections.emptyList(); - } - - /** - * Computes the original updates. - * - * @param pio The {@link PosInOccurrence}. - * @param currentLayout Is current layout? - * @return The original updates. - */ - protected ImmutableList computeOriginalUpdates( - PosInOccurrence pio, - boolean currentLayout) { - ImmutableList originalUpdates; - if (!currentLayout) { - originalUpdates = ImmutableList.nil(); - } else { - if (node.proof().root() == node) { - originalUpdates = SymbolicExecutionUtil.computeRootElementaryUpdates(node); - } else { - JTerm originalModifiedFormula = (JTerm) pio.subTerm(); - originalUpdates = TermBuilder.goBelowUpdates2(originalModifiedFormula).first; - } - } - return originalUpdates; - } - - /** - * This method computes for all given {@link Goal}s representing the same value their path - * conditions. A computed path condition consists only of the branch conditions which contribute - * to the value. Branch conditions of splits which does not contribute to the value are ignored. - *

- * The implemented algorithm works as follows: - *

    - *
  1. The given {@link Goal}s have to be all {@link Goal}s of the side proof providing the same - * value. This means that other branches/goals of the side proof result in different branches. - *
  2. - *
  3. A backward iteration on the parent {@link Node}s starting at the {@link Goal}s is - * performed until the first parent with at least two open children has been found. The - * iteration is only performed on one goal (or the {@link Node} it stops last) at a time. The - * iteration is always performed on the {@link Node} with the highest serial number to ensure - * that different {@link Goal}s will meet at their common parents.
  4. - *
  5. When the iteration of all children of a {@link Node} has met, the branch conditions are - * computed if the split contributes to the value. A split contributes to a value if at least - * one branch is not reached by backward iteration meaning that its {@link Goal}s provide - * different values.
  6. - *
  7. The backward iteration ends when the root is reached.
  8. - *
  9. Finally, for each {@link Goal} is the path condition computed. The path condition is the - * conjunction over all found branch conditions contributing to the value.
  10. - *
- * - * @param valueGoals All {@link Goal}s of the side proof which provide the same value (result). - * @param branchConditionCache A cache of already computed branch conditions. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @return A {@link Map} which contains for each {@link Goal} the computed path condition - * consisting of only required splits. - * @throws ProofInputException Occurred Exception - */ - protected Map computeValueConditions(Set valueGoals, - Map branchConditionCache, boolean simplifyConditions) - throws ProofInputException { - Comparator comparator = (o1, o2) -> { - return o2.getSerialNr() - o1.getSerialNr(); // Descending order - }; - // Initialize condition for each goal with true - Set untriedRealGoals = new HashSet<>(); - Map> goalConditions = new HashMap<>(); - List sortedBranchLeafs = new LinkedList<>(); - for (Goal goal : valueGoals) { - CollectionUtil.binaryInsert(sortedBranchLeafs, new NodeGoal(goal), comparator); - goalConditions.put(goal, new LinkedHashSet<>()); - untriedRealGoals.add(goal.node()); - } - // Compute branch conditions - List waitingBranchLeafs = new LinkedList<>(); - Map> splitMap = new HashMap<>(); - while (!sortedBranchLeafs.isEmpty()) { - // Go back to parent with at least two open goals on maximum outer leaf - NodeGoal maximumOuterLeaf = sortedBranchLeafs.remove(0); // List is sorted in descending - // order - NodeGoal childGoal = iterateBackOnParents(maximumOuterLeaf, - !untriedRealGoals.remove(maximumOuterLeaf.getCurrentNode())); - if (childGoal != null) { // Root is not reached - waitingBranchLeafs.add(childGoal); - List childGoals = - splitMap.computeIfAbsent(childGoal.getParent(), k -> new LinkedList<>()); - childGoals.add(childGoal); - // Check if parent is reached on all child nodes - if (isParentReachedOnAllChildGoals(childGoal.getParent(), sortedBranchLeafs)) { - // Check if the split contributes to the path condition which is the case if at - // least one branch is not present (because it has a different value) - if (childGoals.size() != childGoal.getParent().childrenCount()) { - // Add branch condition to conditions of all child goals - for (NodeGoal nodeGoal : childGoals) { - JTerm branchCondition = - computeBranchCondition(nodeGoal.getCurrentNode(), - branchConditionCache, simplifyConditions); - for (Goal goal : nodeGoal.getStartingGoals()) { - Set conditions = goalConditions.get(goal); - conditions.add(branchCondition); - } - } - } - // Add waiting NodeGoals to working list - for (NodeGoal nodeGoal : childGoals) { - waitingBranchLeafs.remove(nodeGoal); - CollectionUtil.binaryInsert(sortedBranchLeafs, nodeGoal, comparator); - } - } - } - } - // Compute final condition (redundant path conditions are avoided) - Map pathConditionsMap = new LinkedHashMap<>(); - for (Entry> entry : goalConditions.entrySet()) { - JTerm pathCondition = getServices().getTermBuilder().and(entry.getValue()); - pathConditionsMap.put(entry.getKey(), pathCondition); - } - return pathConditionsMap; - } - - /** - * Checks if parent backward iteration on all given {@link NodeGoal} has reached the given - * {@link Node}. - * - * @param currentNode The current {@link Node} to check. - * @param branchLeafs The {@link NodeGoal} on which backward iteration was performed. - * @return {@code true} All {@link NodeGoal}s have passed the given {@link Node}, {@code false} - * if at least one {@link NodeGoal} has not passed the given {@link Node}. - */ - protected boolean isParentReachedOnAllChildGoals(Node currentNode, List branchLeafs) { - if (!branchLeafs.isEmpty()) { - return branchLeafs.get(0).getSerialNr() <= currentNode.serialNr(); - } else { - return true; - } - } - - /** - * Performs a backward iteration on the parents starting at the given {@link NodeGoal} until the - * first parent with at least two open branches has been found. - * - * @param nodeToStartAt The {@link NodeGoal} to start parent backward iteration at. - * @param force {@code true} first parent is not checked, {@code false} also first parent is - * checked. - * @return The first found parent with at least two open child branches or {@code null} if the - * root has been reached. - */ - protected NodeGoal iterateBackOnParents(NodeGoal nodeToStartAt, boolean force) { - // Go back to parent with at least two open branches - Node child = force ? nodeToStartAt.getParent() : nodeToStartAt.getCurrentNode(); - Node parent = child.parent(); - while (parent != null && countOpenChildren(parent) == 1) { - child = parent; - parent = child.parent(); - } - // Store result - if (parent != null) { - return new NodeGoal(child, nodeToStartAt.getStartingGoals()); - } else { - return null; - } - } - - /** - * Counts the number of open child {@link Node}s. - * - * @param node The {@link Node} to count its open children. - * @return The number of open child {@link Node}s. - */ - protected int countOpenChildren(Node node) { - int openChildCount = 0; - for (int i = 0; i < node.childrenCount(); i++) { - Node child = node.child(i); - if (!child.isClosed()) { - openChildCount++; - } - } - return openChildCount; - } - - /** - * Utility class used by {@link AbstractUpdateExtractor#computeValueConditions}. - * Instances of this class store the current {@link Node} and the {@link Goal}s at which - * backward iteration on parents has started. - * - * @author Martin Hentschel - */ - protected static class NodeGoal { - /** - * The current {@link Node}. - */ - private final Node currentNode; - - /** - * The {@link Goal}s at which backward iteration has started. - */ - private final ImmutableList startingGoals; - - /** - * Constructor. - * - * @param goal The current {@link Goal} to start backward iteration at. - */ - public NodeGoal(Goal goal) { - this(goal.node(), ImmutableList.nil().prepend(goal)); - } - - /** - * A reached child node during backward iteration. - * - * @param currentNode The current {@link Node}. - * @param startingGoals The {@link Goal}s at which backward iteration has started. - */ - public NodeGoal(Node currentNode, ImmutableList startingGoals) { - this.currentNode = currentNode; - this.startingGoals = startingGoals; - } - - /** - * Returns the current {@link Node}. - * - * @return The current {@link Node}. - */ - public Node getCurrentNode() { - return currentNode; - } - - /** - * Returns the parent of {@link #getCurrentNode()}. - * - * @return The parent of {@link #getCurrentNode()}. - */ - public Node getParent() { - return currentNode.parent(); - } - - /** - * Returns the serial number of {@link #getCurrentNode()}. - * - * @return The serial number of {@link #getCurrentNode()}. - */ - public int getSerialNr() { - return currentNode.serialNr(); - } - - /** - * Returns the {@link Goal}s at which backward iteration has started. - * - * @return The {@link Goal}s at which backward iteration has started. - */ - public ImmutableList getStartingGoals() { - return startingGoals; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - final StringBuilder sb = new StringBuilder(); - sb.append(currentNode.serialNr()); - sb.append(" starting from goals "); - sb.append(Strings.formatAsList(startingGoals, "", ", ", "", - ((java.util.function.Function) Goal::node).andThen(Node::serialNr))); - return sb.toString(); - } - } - - /** - * Computes the branch condition if not already present in the cache and stores it in the cache. - * If the condition is already present in the cache it is returned from it. - * - * @param node The {@link Node} to compute its branch condition. - * @param branchConditionCache The cache of already computed branch conditions. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @return The computed branch condition. - * @throws ProofInputException Occurred Exception. - */ - protected JTerm computeBranchCondition(Node node, Map branchConditionCache, - boolean simplifyConditions) throws ProofInputException { - JTerm result = branchConditionCache.get(node); - if (result == null) { - result = SymbolicExecutionUtil.computeBranchCondition(node, simplifyConditions, true); - branchConditionCache.put(node, result); - } - return result; - } - - /** - *

- * Represents a location (value or association of a given object/state) in a concrete memory - * layout of the initial or current state. - *

- *

- * They are instantiated lazily when a concrete memory layout is requested the first during - * lazily computation - * {@link SymbolicLayoutExtractor#lazyComputeLayout}. - * The instances exists only temporary until the concrete {@link ISymbolicLayout} was created - * from them. - *

- * - * @author Martin Hentschel - */ - public static class ExecutionVariableValuePair { - /** - * The {@link ProgramVariable} or {@code null} if an array index is used instead. - */ - private final ProgramVariable programVariable; - - /** - * The array index or {@code null} if not used. - */ - private final JTerm arrayIndex; - - /** - * The array start index or {@code null} if not used. - */ - private final JTerm arrayStartIndex; - - /** - * The array end index or {@code null} if not used. - */ - private final JTerm arrayEndIndex; - - /** - * An optional parent object or {@code null} if it is a value/association of the state. - */ - private final JTerm parent; - - /** - * The value or association target. - */ - private final JTerm value; - - /** - * Defines if this location should explicitly be shown on the state. - */ - private final boolean stateMember; - - /** - * An optional condition under which the value is valid. - */ - private final JTerm condition; - - /** - * The {@link Node} on which this result is based on. - */ - private final Node goalNode; - - /** - * Constructor. - * - * @param programVariable The {@link ProgramVariable}. - * @param parent An optional parent object or {@code null} if it is a value/association of - * the state. - * @param value The value or association target. - * @param condition An optional condition under which the value is valid. - * @param stateMember Defines if this location should explicitly be shown on the state. - */ - public ExecutionVariableValuePair(ProgramVariable programVariable, JTerm parent, - JTerm value, - JTerm condition, boolean stateMember, Node goalNode) { - assert programVariable != null; - assert value != null; - this.programVariable = programVariable; - this.parent = parent; - this.value = value; - this.condition = condition; - this.arrayIndex = null; - this.stateMember = stateMember; - this.goalNode = goalNode; - this.arrayStartIndex = null; - this.arrayEndIndex = null; - } - - /** - * Constructor. - * - * @param arrayIndex The array index. - * @param parent The parent object. - * @param value The value or association target. - * @param condition An optional condition under which the value is valid. - * @param stateMember Defines if this location should explicitly be shown on the state. - */ - public ExecutionVariableValuePair(JTerm arrayIndex, JTerm parent, JTerm value, - JTerm condition, - boolean stateMember, Node goalNode) { - assert parent != null; - assert value != null; - this.programVariable = null; - this.arrayIndex = arrayIndex; - this.parent = parent; - this.value = value; - this.condition = condition; - this.stateMember = stateMember; - this.goalNode = goalNode; - this.arrayStartIndex = null; - this.arrayEndIndex = null; - } - - /** - * Constructor. - * - * @param arrayStartIndex The array start index. - * @param arrayEndIndex The array end index. - * @param arrayRangeConstant The constant used to query an array range. - * @param parent The parent object. - * @param value The value or association target. - * @param condition An optional condition under which the value is valid. - * @param stateMember Defines if this location should explicitly be shown on the state. - */ - public ExecutionVariableValuePair(JTerm arrayStartIndex, JTerm arrayEndIndex, - JTerm arrayRangeConstant, JTerm parent, JTerm value, JTerm condition, - boolean stateMember, Node goalNode) { - assert parent != null; - assert value != null; - this.programVariable = null; - this.arrayIndex = arrayRangeConstant; - this.parent = parent; - this.value = value; - this.condition = condition; - this.stateMember = stateMember; - this.goalNode = goalNode; - this.arrayStartIndex = arrayStartIndex; - this.arrayEndIndex = arrayEndIndex; - } - - /** - * Returns the {@link ProgramVariable} or {@code null} if an array index is used instead. - * - * @return The {@link ProgramVariable} or {@code null} if an array index is used instead. - */ - public ProgramVariable getProgramVariable() { - return programVariable; - } - - /** - * Returns the optional parent object or {@code null} if it is a value/association of the - * state. - * - * @return The optional parent object or {@code null} if it is a value/association of the - * state. - */ - public JTerm getParent() { - return parent; - } - - /** - * Returns the value or association target. - * - * @return The value or association target. - */ - public JTerm getValue() { - return value; - } - - /** - * Checks if an array index is represented. - * - * @return {@code true} is array index, {@code false} is something else. - */ - public boolean isArrayIndex() { - return arrayIndex != null && (arrayStartIndex == null || arrayEndIndex == null); - } - - /** - * Checks if an array range is represented. - * - * @return {@code true} is array range, {@code false} is something else. - */ - public boolean isArrayRange() { - return arrayStartIndex != null && arrayEndIndex != null; - } - - /** - * Returns the array index. - * - * @return The array index. - */ - public JTerm getArrayIndex() { - return arrayIndex; - } - - /** - * Returns the array start index. - * - * @return The array start index. - */ - public JTerm getArrayStartIndex() { - return arrayStartIndex; - } - - /** - * Returns the array end index. - * - * @return The array end index. - */ - public JTerm getArrayEndIndex() { - return arrayEndIndex; - } - - /** - * Checks if this location should explicitly be shown on the state. - * - * @return Show location on state? - */ - public boolean isStateMember() { - return stateMember; - } - - /** - * Returns the optional condition under which the value is valid. - * - * @return The optional condition under which the value is valid. - */ - public JTerm getCondition() { - return condition; - } - - /** - * Returns the {@link Node} on which this result is based on. - * - * @return The {@link Node} on which this result is based on. - */ - public Node getGoalNode() { - return goalNode; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof ExecutionVariableValuePair other) { - return isArrayRange() - ? (getArrayStartIndex().equals(other.getArrayStartIndex()) - && getArrayEndIndex().equals(other.getArrayEndIndex())) - : (isArrayIndex() ? getArrayIndex().equals(other.getArrayIndex()) - : getProgramVariable().equals(other.getProgramVariable())) - && getParent() != null - ? getParent().equals(other.getParent()) - : other.getParent() == null && getCondition() != null - ? getCondition().equals(other.getCondition()) - : other.getCondition() == null - && getValue().equals(other.getValue()) - && getGoalNode() - .equals(other.getGoalNode()); - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() { - int result = 17; - if (isArrayRange()) { - result = 31 * result + getArrayStartIndex().hashCode(); - result = 31 * result + getArrayEndIndex().hashCode(); - } else if (isArrayIndex()) { - result = 31 * result + getArrayIndex().hashCode(); - } else { - result = 31 * result + getProgramVariable().hashCode(); - } - result = 31 * result + (getParent() != null ? getParent().hashCode() : 0); - result = 31 * result + (getCondition() != null ? getCondition().hashCode() : 0); - result = 31 * result + getValue().hashCode(); - result = 31 * result + getGoalNode().hashCode(); - return result; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - if (isArrayRange()) { - return "[" + getArrayIndex() + "]" + " between " + getArrayStartIndex() + " and " - + getArrayEndIndex() + (getParent() != null ? " of " + getParent() : "") - + " is " + getValue() - + (getCondition() != null ? " under condition " + getCondition() : "") - + " at goal " + goalNode.serialNr(); - } else if (isArrayIndex()) { - return "[" + getArrayIndex() + "]" - + (getParent() != null ? " of " + getParent() : "") + " is " + getValue() - + (getCondition() != null ? " under condition " + getCondition() : "") - + " at goal " + goalNode.serialNr(); - } else { - return getProgramVariable() + (getParent() != null ? " of " + getParent() : "") - + " is " + getValue() - + (getCondition() != null ? " under condition " + getCondition() : "") - + " at goal " + goalNode.serialNr(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/AbstractWriter.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/AbstractWriter.java deleted file mode 100644 index e519e28039f..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/AbstractWriter.java +++ /dev/null @@ -1,140 +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.symbolic_execution; - -import java.util.Map; -import java.util.Map.Entry; - -import org.key_project.util.java.StringUtil; -import org.key_project.util.java.XMLUtil; - -/** - * Provides the basic functionality for classes like {@link ExecutionNodeWriter} and - * {@link SymbolicLayoutWriter} which encodes an object structure as XML. - * - * @author Martin Hentschel - */ -public abstract class AbstractWriter { - /** - * New line. - */ - public static final String NEW_LINE = StringUtil.NEW_LINE; - - /** - * The used leading white space in each level. - */ - public static final String LEADING_WHITE_SPACE_PER_LEVEL = " "; - - /** - * The default encoding. - */ - public static final String DEFAULT_ENCODING = "UTF-8"; - - /** - * Attribute name to store encodings. - */ - public static final String ATTRIBUTE_ENCODING = "encoding"; - - /** - * Attribute name to store the XML ID. - */ - public static final String ATTRIBUTE_XML_ID = "xml:id"; - - /** - * Appends an empty tag to the given {@link StringBuilder}. - * - * @param level The level. - * @param tagName The tag name. - * @param attributeValues The attributes. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendEmptyTag(int level, String tagName, Map attributeValues, - StringBuilder sb) { - XMLUtil.appendEmptyTag(level, tagName, attributeValues, sb); - } - - /** - * Appends a start tag to the given {@link StringBuilder}. - * - * @param level The level. - * @param tagName The tag name. - * @param attributeValues The attributes. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendStartTag(int level, String tagName, Map attributeValues, - StringBuilder sb) { - appendWhiteSpace(level, sb); - sb.append("<"); - sb.append(tagName); - for (Entry entry : attributeValues.entrySet()) { - appendAttribute(entry.getKey(), entry.getValue(), sb); - } - sb.append(">"); - appendNewLine(sb); - } - - /** - * Appends an end tag to the given {@link StringBuilder}. - * - * @param level The level. - * @param tagName The tag name. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendEndTag(int level, String tagName, StringBuilder sb) { - appendWhiteSpace(level, sb); - sb.append(""); - appendNewLine(sb); - } - - /** - * Adds leading white space to the {@link StringBuilder}. - * - * @param level The level in the tree used for leading white space (formatting). - * @param sb The {@link StringBuilder} to write to. - */ - protected void appendWhiteSpace(int level, StringBuilder sb) { - sb.append(LEADING_WHITE_SPACE_PER_LEVEL.repeat(Math.max(0, level))); - } - - /** - * Adds an XML attribute to the given {@link StringBuilder}. - * - * @param attributeName The attribute name. - * @param value The attribute value. - * @param sb The {@link StringBuilder} to write to. - */ - protected void appendAttribute(String attributeName, String value, StringBuilder sb) { - if (attributeName != null && value != null) { - sb.append(" "); - sb.append(attributeName); - sb.append("=\""); - sb.append(XMLUtil.encodeText(value)); - sb.append("\""); - } - } - - /** - * Adds an XML header to the given {@link StringBuilder}. - * - * @param encoding The encoding to use. - * @param sb The {@link StringBuilder} to write to. - */ - protected void appendXmlHeader(String encoding, StringBuilder sb) { - sb.append(""); - appendNewLine(sb); - } - - /** - * Adds a line break to the given {@link StringBuilder}. - * - * @param sb The {@link StringBuilder} to write to. - */ - protected void appendNewLine(StringBuilder sb) { - sb.append(NEW_LINE); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodePreorderIterator.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodePreorderIterator.java deleted file mode 100644 index ded295278ea..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodePreorderIterator.java +++ /dev/null @@ -1,117 +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.symbolic_execution; - -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; - -/** - *

- * Iterates preorder over the whole sub tree of a given {@link IExecutionNode}. - *

- *

- * Instances of this class should always be used instead of recursive method calls because they - * cause {@link StackOverflowError}s even in small programs. - *

- *

- * Attention: The iteration process does not take care of changes in the model. If the - * containment hierarchy changes during iteration it is possible that elements are left or visited - * multiple times. For this reason it is forbidden to change the model during iteration. But the - * developer has to take care about it. - *

- * - * @author Martin Hentschel - */ -public class ExecutionNodePreorderIterator { - /** - * The element at that the iteration has started used as end condition to make sure that only - * over the subtree of the element is iterated. - */ - private final IExecutionNode start; - - /** - * The next element or {@code null} if no more elements exists. - */ - private IExecutionNode next; - - /** - * Constructor. - * - * @param start The {@link IExecutionNode} to iterate over its sub tree. - */ - public ExecutionNodePreorderIterator(IExecutionNode start) { - this.start = start; - this.next = start; - } - - /** - * Checks if more elements are available. - * - * @return {@code true} has more elements, {@code false} has not more elements. - */ - public boolean hasNext() { - return next != null; - } - - /** - * Returns the next {@link IExecutionNode} in the containment hierarchy. - * - * @return The next {@link IExecutionNode}. - */ - public IExecutionNode next() { - IExecutionNode oldNext = next; - updateNext(); - return oldNext; - } - - /** - * Computes the next element and updates {@link #next()}. - */ - protected void updateNext() { - IExecutionNode newNext = null; - IExecutionNode[] children = next.getChildren(); - if (children.length >= 1) { - newNext = children[0]; - } else { - newNext = getNextOnParent(next); - } - this.next = newNext; - } - - /** - * Returns the next element to select if all children of the given {@link IExecutionNode} are - * visited. - * - * @param node The visited {@link IExecutionNode}. - * @return The next {@link IExecutionNode} to visit. - */ - protected IExecutionNode getNextOnParent(IExecutionNode node) { - IExecutionNode parent = node.getParent(); - while (parent != null) { - boolean IExecutionNodeFound = false; // Indicates that IExecutionNode was found on the - // parent. - IExecutionNode[] children = parent.getChildren(); - IExecutionNode nextChildOnParent = null; // The next child on the parent or the last - // child after iteration has finished - for (IExecutionNode child : children) { - nextChildOnParent = child; - if (nextChildOnParent == start) { - return null; - } - if (IExecutionNodeFound) { - return nextChildOnParent; - } - if (nextChildOnParent == node) { - IExecutionNodeFound = true; - } - } - if (nextChildOnParent != start) { - node = parent; // Continue search on parent without recursive call! - parent = parent.getParent(); - } else { - return null; - } - } - return null; // No more parents available. - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodeReader.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodeReader.java deleted file mode 100644 index 1d1f21eda66..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodeReader.java +++ /dev/null @@ -1,3232 +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.symbolic_execution; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.*; -import java.util.Map.Entry; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; - -import de.uka.ilkd.key.java.*; -import de.uka.ilkd.key.java.ast.*; -import de.uka.ilkd.key.java.ast.expression.Expression; -import de.uka.ilkd.key.java.ast.reference.MethodReference; -import de.uka.ilkd.key.java.ast.statement.*; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.speclang.BlockContract; -import de.uka.ilkd.key.speclang.Contract; -import de.uka.ilkd.key.speclang.LoopSpecification; -import de.uka.ilkd.key.symbolic_execution.model.*; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionTermination.TerminationKind; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicEquivalenceClass; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicLayout; - -import org.key_project.logic.sort.Sort; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.Pair; -import org.key_project.util.java.CollectionUtil; - -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.DefaultHandler; - -/** - * Allows to read XML files which contains an symbolic execution tree written via an - * {@link ExecutionNodeWriter}. - * - * @author Martin Hentschel - * @see ExecutionNodeWriter - */ -public class ExecutionNodeReader { - /** - * Reads the given {@link File}. - * - * @param file The {@link File} to read. - * @return The root of the read symbolic execution tree. - * @throws ParserConfigurationException Occurred Exception. - * @throws SAXException Occurred Exception. - * @throws IOException Occurred Exception. - */ - public IExecutionNode read(File file) - throws ParserConfigurationException, SAXException, IOException { - return read(new FileInputStream(file)); - } - - /** - * Reads from the given {@link InputStream} and closes it. - * - * @param in The {@link InputStream} to read from. - * @return The root of the read symbolic execution tree. - * @throws ParserConfigurationException Occurred Exception. - * @throws SAXException Occurred Exception. - * @throws IOException Occurred Exception. - */ - public IExecutionNode read(InputStream in) - throws ParserConfigurationException, SAXException, IOException { - if (in != null) { - try (in) { - // Parse XML file - SAXParserFactory factory = SAXParserFactory.newInstance(); - factory.setNamespaceAware(true); - SAXParser saxParser = factory.newSAXParser(); - SEDSAXHandler handler = new SEDSAXHandler(); - saxParser.parse(in, handler); - // Get root - IExecutionNode root = handler.getRoot(); - // Construct call stacks - Set, List>> entries = - handler.getCallStackPathEntries().entrySet(); - for (Entry, List> entry : entries) { - for (String path : entry.getValue()) { - IExecutionNode stackEntry = findNode(root, path); - if (stackEntry == null) { - throw new SAXException("Can't find call stack entry \"" + path - + "\" in parsed symbolic execution tree."); - } - entry.getKey().addCallStackEntry(stackEntry); - } - } - // Construct method returns - Set>> methodReturnEntries = - handler.getMethodReturnPathEntries().entrySet(); - for (Entry> entry : methodReturnEntries) { - for (String path : entry.getValue()) { - IExecutionNode returnEntry = findNode(root, path); - if (returnEntry == null) { - throw new SAXException("Can't find method return entry \"" + path - + "\" in parsed symbolic execution tree."); - } - if (!(returnEntry instanceof IExecutionBaseMethodReturn)) { - throw new SAXException("Expected basemethod return on \"" + path - + "\" but is " + returnEntry.getElementType() + "."); - } - entry.getKey().addMethodReturn((IExecutionBaseMethodReturn) returnEntry); - } - } - // Construct completed blocks - Set, List>>> completedBlockEntries = - handler.getCompletedBlockEntries().entrySet(); - for (Entry, List>> entry : completedBlockEntries) { - for (Pair pair : entry.getValue()) { - IExecutionNode returnEntry = findNode(root, pair.first); - if (returnEntry == null) { - throw new SAXException("Can't find completed block entry \"" - + pair.first + "\" in parsed symbolic execution tree."); - } else if (!(returnEntry instanceof IExecutionBlockStartNode)) { - throw new SAXException( - "Found completed block entry is not an instance of IExecutionBlockStartNode."); - } - entry.getKey().addCompletedBlock((IExecutionBlockStartNode) returnEntry, - pair.second); - } - } - // Construct block completions - Set, List>> blockCompletionEntries = - handler.getBlockCompletionEntries().entrySet(); - for (Entry, List> entry : blockCompletionEntries) { - for (String path : entry.getValue()) { - IExecutionNode returnEntry = findNode(root, path); - if (returnEntry == null) { - throw new SAXException("Can't find block completion entry \"" + path - + "\" in parsed symbolic execution tree."); - } - entry.getKey().addBlockCompletion(returnEntry); - } - } - // Construct links - Set, List>> outgoingLinks = - handler.getOutgoingLinks().entrySet(); - for (Entry, List> entry : outgoingLinks) { - for (String path : entry.getValue()) { - IExecutionNode target = findNode(root, path); - if (target == null) { - throw new SAXException("Can't find link targets \"" + path - + "\" in parsed symbolic execution tree."); - } - KeYLessLink link = new KeYLessLink(); - link.setSource(entry.getKey()); - link.setTarget(target); - entry.getKey().addOutgoingLink(link); - ((AbstractKeYlessExecutionNode) target).addIncomingLink(link); - } - } - // Construct terminations - Set>> terminationEntries = - handler.getTerminationPathEntries().entrySet(); - for (Entry> entry : terminationEntries) { - for (String path : entry.getValue()) { - IExecutionNode terminationEntry = findNode(root, path); - if (terminationEntry == null) { - throw new SAXException("Can't find termination entry \"" + path - + "\" in parsed symbolic execution tree."); - } - if (!(terminationEntry instanceof IExecutionTermination)) { - throw new SAXException("Expected termination on \"" + path - + "\" but is " + terminationEntry.getElementType() + "."); - } - entry.getKey().addTermination((IExecutionTermination) terminationEntry); - } - } - // Return result - return root; - } - } else { - return null; - } - } - - /** - * Searches the {@link IExecutionNode} starting at the given root which is defined by the path. - * - * @param root The {@link IExecutionNode} to start search. - * @param path The path. - * @return The found {@link IExecutionNode}. - * @throws SAXException If it was not possible to find the node. - */ - protected IExecutionNode findNode(IExecutionNode root, String path) throws SAXException { - if (path != null && !path.isEmpty()) { - StringTokenizer tokenizer = - new StringTokenizer(path, ExecutionNodeWriter.PATH_SEPARATOR + ""); - while (tokenizer.hasMoreTokens()) { - String next = tokenizer.nextToken(); - try { - int childIndex = Integer.parseInt(next); - if (childIndex < 0) { - throw new SAXException("Path segment \"" + next + "\" of path \"" + path - + "\" is a negative integer."); - } - IExecutionNode[] children = root.getChildren(); - if (childIndex >= children.length) { - throw new SAXException("Path segment \"" + next + "\" of path \"" + path - + "\" is outside of the child array range."); - } - root = children[childIndex]; - } catch (NumberFormatException e) { - throw new SAXException("Path segment \"" + next + "\" of path \"" + path - + "\" is no valid integer.", e); - } - } - } - return root; - } - - /** - * {@link DefaultHandler} implementation used in {@link ExecutionNodeReader#read(InputStream)}. - * - * @author Martin Hentschel - */ - private class SEDSAXHandler extends DefaultHandler { - /** - * The root of the read symbolic execution tree. - */ - private IExecutionNode root; - - /** - * The parent hierarchy filled by {@link #startElement(String, String, String, Attributes)} - * and emptied by {@link #endElement(String, String, String)}. - */ - private final Deque> parentNodeStack = - new LinkedList<>(); - - /** - * The parent hierarchy of {@link IExecutionVariable} and {@link IExecutionValue} filled by - * {@link #startElement(String, String, String, Attributes)} and emptied by - * {@link #endElement(String, String, String)}. - */ - private final Deque parentVariableValueStack = new LinkedList<>(); - - /** - * Maps an {@link AbstractKeYlessExecutionNode} to the path entries of its call stack. - */ - private final Map, List> callStackPathEntries = - new LinkedHashMap<>(); - - /** - * Maps an {@link KeYlessMethodCall} to the path entries of its method returns. - */ - private final Map> methodReturnPathEntries = - new LinkedHashMap<>(); - - /** - * Maps an {@link AbstractKeYlessExecutionNode} to its completed block entries - */ - private final Map, List>> completedBlockEntries = - new LinkedHashMap<>(); - - /** - * Maps an {@link AbstractKeYlessExecutionBlockStartNode} to the path entries of its block - * completions. - */ - private final Map, List> blockCompletionEntries = - new LinkedHashMap<>(); - - /** - * Maps an {@link AbstractKeYlessExecutionNode} to the path entries of its outgoing links. - */ - private final Map, List> outgoingLinks = - new LinkedHashMap<>(); - - /** - * Maps an {@link KeYlessStart} to the path entries of its terminations. - */ - private final Map> terminationPathEntries = - new LinkedHashMap<>(); - - /** - * {@inheritDoc} - */ - @Override - public void startElement(String uri, String localName, String qName, Attributes attributes) - throws SAXException { - AbstractKeYlessExecutionNode parent = parentNodeStack.peekFirst(); - if (isConstraint(uri, localName, qName)) { - Object parentValue = parentVariableValueStack.peekFirst(); - if (parentValue != null) { - if (!(parentValue instanceof KeYlessValue)) { - throw new SAXException("Can't add constraint to variable."); - } - KeYlessConstraint constraint = new KeYlessConstraint(getName(attributes)); - ((KeYlessValue) parentValue).addConstraint(constraint); - } else { - if (!(parent instanceof AbstractKeYlessExecutionNode)) { - throw new SAXException("Can't add constraint to non execution node."); - } - KeYlessConstraint constraint = new KeYlessConstraint(getName(attributes)); - parent.addConstraint(constraint); - } - } else if (isCallStateVariable(uri, localName, qName)) { - Object parentValue = parentVariableValueStack.peekFirst(); - KeYlessVariable variable = createVariable( - parentValue instanceof KeYlessValue ? (KeYlessValue) parentValue : null, uri, - localName, qName, attributes); - if (parentValue != null) { - throw new SAXException( - "Can't add initial state variable to parent variable or value."); - } - if (parent instanceof AbstractKeYlessBaseExecutionNode) { - ((AbstractKeYlessBaseExecutionNode) parent).addCallStateVariable(variable); - } else { - throw new SAXException( - "Can't add call state variable to parent execution node."); - } - parentVariableValueStack.addFirst(variable); - } else if (isVariable(uri, localName, qName)) { - Object parentValue = parentVariableValueStack.peekFirst(); - KeYlessVariable variable = createVariable( - parentValue instanceof KeYlessValue ? (KeYlessValue) parentValue : null, uri, - localName, qName, attributes); - if (parentValue != null) { - ((KeYlessValue) parentValue).addChildVariable(variable); - } else { - if (parent != null) { - parent.addVariable(variable); - } else { - throw new SAXException("Can't add variable to parent execution node."); - } - } - parentVariableValueStack.addFirst(variable); - } else if (isValue(uri, localName, qName)) { - Object parentValue = parentVariableValueStack.peekFirst(); - if (!(parentValue instanceof KeYlessVariable)) { - throw new SAXException("Can't add value to parent variable."); - } - KeYlessValue value = - createValue((KeYlessVariable) parentValue, uri, localName, qName, attributes); - ((KeYlessVariable) parentValue).addValue(value); - parentVariableValueStack.addFirst(value); - } else if (isCallStackEntry(uri, localName, qName)) { - List callStackEntries = - callStackPathEntries.computeIfAbsent(parent, k -> new LinkedList<>()); - callStackEntries.add(getPathInTree(attributes)); - } else if (isMethodReturnEntry(uri, localName, qName)) { - List methodReturnEntries = methodReturnPathEntries.get(parent); - if (methodReturnEntries == null) { - methodReturnEntries = new LinkedList<>(); - methodReturnPathEntries.put((KeYlessMethodCall) parent, methodReturnEntries); - } - methodReturnEntries.add(0, getPathInTree(attributes)); - } else if (isCompletedBlockEntry(uri, localName, qName)) { - List> completedBlocks = - completedBlockEntries.computeIfAbsent(parent, k -> new LinkedList<>()); - completedBlocks.add(new Pair<>(getPathInTree(attributes), - getConditionString(attributes))); - } else if (isBlockCompletionEntry(uri, localName, qName)) { - List blockCompletionPathEntries = blockCompletionEntries.get(parent); - if (blockCompletionPathEntries == null) { - blockCompletionPathEntries = new LinkedList<>(); - blockCompletionEntries.put((AbstractKeYlessExecutionBlockStartNode) parent, - blockCompletionPathEntries); - } - blockCompletionPathEntries.add(getPathInTree(attributes)); - } else if (isOutgoingLink(uri, localName, qName)) { - List linkPaths = - outgoingLinks.computeIfAbsent(parent, k -> new LinkedList<>()); - linkPaths.add(getPathInTree(attributes)); - } else if (isTerminationEntry(uri, localName, qName)) { - List terminationEntries = terminationPathEntries.get(parent); - if (terminationEntries == null) { - terminationEntries = new LinkedList<>(); - terminationPathEntries.put((KeYlessStart) parent, terminationEntries); - } - terminationEntries.add(0, getPathInTree(attributes)); - } else if (isMethodReturnValue(uri, localName, qName)) { - Object parentValue = parentNodeStack.peekFirst(); - if (!(parentValue instanceof KeYlessMethodReturn)) { - throw new SAXException("Can't add method return value to parent."); - } - KeYlessMethodReturnValue returnValue = - createMethodReturnValue(uri, localName, qName, attributes); - ((KeYlessMethodReturn) parentValue).addReturnValue(returnValue); - } else { - AbstractKeYlessExecutionNode child = - createExecutionNode(parent, uri, localName, qName, attributes); - if (root == null) { - root = child; - } - if (parent != null) { - parent.addChild(child); - } - parentNodeStack.addFirst(child); - } - } - - /** - * {@inheritDoc} - */ - @Override - public void endElement(String uri, String localName, String qName) { - if (isConstraint(uri, localName, qName)) { - // Nothing to do. - } else if (isCallStateVariable(uri, localName, qName)) { - parentVariableValueStack.removeFirst(); - } else if (isVariable(uri, localName, qName)) { - parentVariableValueStack.removeFirst(); - } else if (isValue(uri, localName, qName)) { - parentVariableValueStack.removeFirst(); - } else if (isCallStackEntry(uri, localName, qName)) { - // Nothing to do. - } else if (isMethodReturnEntry(uri, localName, qName)) { - // Nothing to do. - } else if (isCompletedBlockEntry(uri, localName, qName)) { - // Nothing to do. - } else if (isBlockCompletionEntry(uri, localName, qName)) { - // Nothing to do. - } else if (isOutgoingLink(uri, localName, qName)) { - // Nothing to do. - } else if (isTerminationEntry(uri, localName, qName)) { - // Nothing to do. - } else if (isMethodReturnValue(uri, localName, qName)) { - // Nothing to do. - } else { - parentNodeStack.removeFirst(); - } - } - - /** - * Returns the root of the read symbolic execution tree. - * - * @return The root of the read symbolic execution tree. - */ - public IExecutionNode getRoot() { - return root; - } - - /** - * Returns the mapping of an {@link AbstractKeYlessExecutionNode} to its call stack entries. - * - * @return The mapping of an {@link AbstractKeYlessExecutionNode} to its call stack entries. - */ - public Map, List> getCallStackPathEntries() { - return callStackPathEntries; - } - - /** - * Returns the mapping of a {@link KeYlessMethodCall} to its method return entries. - * - * @return The mapping of a {@link KeYlessMethodCall} to its method return entries. - */ - public Map> getMethodReturnPathEntries() { - return methodReturnPathEntries; - } - - /** - * Returns the mapping of {@link AbstractKeYlessExecutionNode} to its completed block - * entries. - * - * @return The mapping of {@link AbstractKeYlessExecutionNode} to its completed block - * entries. - */ - public Map, List>> getCompletedBlockEntries() { - return completedBlockEntries; - } - - /** - * Returns the mapping of an {@link AbstractKeYlessExecutionBlockStartNode} to its block - * completion entries. - * - * @return The mapping of an {@link AbstractKeYlessExecutionBlockStartNode} to its block - * completion entries. - */ - public Map, List> getBlockCompletionEntries() { - return blockCompletionEntries; - } - - /** - * Returns the mapping of a {@link KeYlessStart} to its termination entries. - * - * @return The mapping of a {@link KeYlessStart} to its termination entries. - */ - public Map> getTerminationPathEntries() { - return terminationPathEntries; - } - - /** - * Returns the mapping of an {@link AbstractKeYlessExecutionNode} to its outgoing links. - * - * @return The mapping of an {@link AbstractKeYlessExecutionNode} to its outgoing links. - */ - public Map, List> getOutgoingLinks() { - return outgoingLinks; - } - } - - /** - * Checks if the currently parsed tag represents an {@link IExecutionConstraint}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents an {@link IExecutionConstraint}, {@code false} is something - * else. - */ - protected boolean isConstraint(String uri, String localName, String qName) { - return ExecutionNodeWriter.TAG_CONSTRAINT.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an {@link IExecutionVariable}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents an {@link IExecutionVariable}, {@code false} is something - * else. - */ - protected boolean isVariable(String uri, String localName, String qName) { - return ExecutionNodeWriter.TAG_VARIABLE.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an {@link IExecutionVariable}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents an {@link IExecutionVariable}, {@code false} is something - * else. - */ - protected boolean isCallStateVariable(String uri, String localName, String qName) { - return ExecutionNodeWriter.TAG_CALL_STATE_VARIABLE.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an {@link IExecutionMethodReturnValue}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents an {@link IExecutionMethodReturnValue}, {@code false} is - * something else. - */ - protected boolean isMethodReturnValue(String uri, String localName, String qName) { - return ExecutionNodeWriter.TAG_METHOD_RETURN_VALUE.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an {@link IExecutionValue}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents an {@link IExecutionValue}, {@code false} is something else. - */ - protected boolean isValue(String uri, String localName, String qName) { - return ExecutionNodeWriter.TAG_VALUE.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an entry of - * {@link IExecutionNode#getCallStack()}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents call stack entry, {@code false} is something else. - */ - protected boolean isCallStackEntry(String uri, String localName, String qName) { - return ExecutionNodeWriter.TAG_CALL_STACK_ENTRY.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an entry of - * {@link IExecutionMethodCall#getMethodReturns()}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents method return entry, {@code false} is something else. - */ - protected boolean isMethodReturnEntry(String uri, String localName, String qName) { - return ExecutionNodeWriter.TAG_METHOD_RETURN_ENTRY.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an entry of - * {@link IExecutionNode#getCompletedBlocks()}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents completed block entry, {@code false} is something else. - */ - protected boolean isCompletedBlockEntry(String uri, String localName, String qName) { - return ExecutionNodeWriter.TAG_COMPLETED_BLOCK_ENTRY.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an entry of - * {@link IExecutionNode#getOutgoingLinks()}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents block completion entry, {@code false} is something else. - */ - protected boolean isOutgoingLink(String uri, String localName, String qName) { - return ExecutionNodeWriter.TAG_OUTGOING_LINK.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an entry of - * {@link IExecutionBranchStatement#getBlockCompletions()}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents block completion entry, {@code false} is something else. - */ - protected boolean isBlockCompletionEntry(String uri, String localName, String qName) { - return ExecutionNodeWriter.TAG_BLOCK_COMPLETION_ENTRY.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an entry of - * {@link IExecutionStart#getTerminations()}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents termination entry, {@code false} is something else. - */ - protected boolean isTerminationEntry(String uri, String localName, String qName) { - return ExecutionNodeWriter.TAG_TERMINATION_ENTRY.equals(qName); - } - - /** - * Creates a new {@link IExecutionVariable} with the given content. - * - * @param parentValue The parent {@link IExecutionValue}. - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @param attributes The attributes. - * @return The created {@link IExecutionVariable}. - */ - protected KeYlessVariable createVariable(IExecutionValue parentValue, String uri, - String localName, String qName, Attributes attributes) { - return new KeYlessVariable(parentValue, isArrayIndex(attributes), - getArrayIndexString(attributes), getName(attributes)); - } - - /** - * Creates a new {@link IExecutionMethodReturnValue} with the given content. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @param attributes The attributes. - * @return The created {@link IExecutionMethodReturnValue}. - */ - public KeYlessMethodReturnValue createMethodReturnValue(String uri, String localName, - String qName, Attributes attributes) { - return new KeYlessMethodReturnValue(getName(attributes), getReturnValueString(attributes), - getHasCondition(attributes), getConditionString(attributes)); - } - - /** - * Creates a new {@link IExecutionValue} with the given content. - * - * @param parentVariable The parent {@link IExecutionVariable}. - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @param attributes The attributes. - * @return The created {@link IExecutionValue}. - */ - protected KeYlessValue createValue(IExecutionVariable parentVariable, String uri, - String localName, String qName, Attributes attributes) { - return new KeYlessValue(parentVariable, getTypeString(attributes), - getValueString(attributes), getName(attributes), isValueUnknown(attributes), - isValueAnObject(attributes), getConditionString(attributes)); - } - - /** - * Creates a new {@link IExecutionNode} with the given content. - * - * @param parent The parent {@link IExecutionNode}. - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @param attributes The attributes. - * @return The created {@link IExecutionNode}. - * @throws SAXException Occurred Exception. - */ - protected AbstractKeYlessExecutionNode createExecutionNode(IExecutionNode parent, - String uri, String localName, String qName, Attributes attributes) throws SAXException { - if (ExecutionNodeWriter.TAG_BRANCH_CONDITION.equals(qName)) { - return new KeYlessBranchCondition(parent, getName(attributes), - getPathCondition(attributes), isPathConditionChanged(attributes), - getBranchCondition(attributes), isMergedBranchCondition(attributes), - isBranchConditionComputed(attributes), getAdditionalBranchLabel(attributes)); - } else if (ExecutionNodeWriter.TAG_BRANCH_STATEMENT.equals(qName)) { - return new KeYlessBranchStatement(parent, getName(attributes), - getPathCondition(attributes), isPathConditionChanged(attributes), - isBlockOpened(attributes)); - } else if (ExecutionNodeWriter.TAG_LOOP_CONDITION.equals(qName)) { - return new KeYlessLoopCondition(parent, getName(attributes), - getPathCondition(attributes), isPathConditionChanged(attributes), - isBlockOpened(attributes)); - } else if (ExecutionNodeWriter.TAG_LOOP_STATEMENT.equals(qName)) { - return new KeYlessLoopStatement(parent, getName(attributes), - getPathCondition(attributes), isPathConditionChanged(attributes), - isBlockOpened(attributes)); - } else if (ExecutionNodeWriter.TAG_METHOD_CALL.equals(qName)) { - return new KeYlessMethodCall(parent, getName(attributes), getPathCondition(attributes), - isPathConditionChanged(attributes)); - } else if (ExecutionNodeWriter.TAG_METHOD_RETURN.equals(qName)) { - return new KeYlessMethodReturn(parent, getName(attributes), - getPathCondition(attributes), isPathConditionChanged(attributes), - getNameIncludingReturnValue(attributes), getSignature(attributes), - getSignatureIncludingReturnValue(attributes), isReturnValueComputed(attributes), - getMethodReturnCondition(attributes)); - } else if (ExecutionNodeWriter.TAG_EXCEPTIONAL_METHOD_RETURN.equals(qName)) { - return new KeYlessExceptionalMethodReturn(parent, getName(attributes), - getPathCondition(attributes), isPathConditionChanged(attributes), - getSignature(attributes), getMethodReturnCondition(attributes)); - } else if (ExecutionNodeWriter.TAG_START.equals(qName)) { - return new KeYlessStart(getName(attributes), getPathCondition(attributes), - isPathConditionChanged(attributes)); - } else if (ExecutionNodeWriter.TAG_STATEMENT.equals(qName)) { - return new KeYlessStatement(parent, getName(attributes), getPathCondition(attributes), - isPathConditionChanged(attributes)); - } else if (ExecutionNodeWriter.TAG_TERMINATION.equals(qName)) { - return new KeYlessTermination(parent, getName(attributes), getPathCondition(attributes), - isPathConditionChanged(attributes), getTerminationKind(attributes), - getBranchVerified(attributes)); - } else if (ExecutionNodeWriter.TAG_OPERATION_CONTRACT.equals(qName)) { - return new KeYlessOperationContract(parent, getName(attributes), - getPathCondition(attributes), isPathConditionChanged(attributes), - isPreconditionComplied(attributes), isHasNotNullCheck(attributes), - isNotNullCheckComplied(attributes), getResultTerm(attributes), - getExceptionTerm(attributes), getSelfTerm(attributes), - getContractParameters(attributes)); - } else if (ExecutionNodeWriter.TAG_LOOP_INVARIANT.equals(qName)) { - return new KeYlessLoopInvariant(parent, getName(attributes), - getPathCondition(attributes), isPathConditionChanged(attributes), - isInitiallyValid(attributes)); - } else if (ExecutionNodeWriter.TAG_BLOCK_CONTRACT.equals(qName)) { - return new KeYlessBlockContract(parent, getName(attributes), - getPathCondition(attributes), isPathConditionChanged(attributes), - isPreconditionComplied(attributes)); - } else if (ExecutionNodeWriter.TAG_JOIN.equals(qName)) { - return new KeYlessJoin(parent, getName(attributes), getPathCondition(attributes), - isPathConditionChanged(attributes), isWeakeningVerified(attributes)); - } else { - throw new SAXException("Unknown tag \"" + qName + "\"."); - } - } - - /** - * Returns the additional branch label value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getAdditionalBranchLabel(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_ADDITIONAL_BRANCH_LABEL); - } - - /** - * Returns the path in tree value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getPathInTree(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_PATH_IN_TREE); - } - - /** - * Returns the name value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getName(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_NAME); - } - - /** - * Returns the name value including return value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getNameIncludingReturnValue(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_NAME_INCLUDING_RETURN_VALUE); - } - - /** - * Returns the signature value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getSignature(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_SIGNATURE); - } - - /** - * Returns the signature value including return value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getSignatureIncludingReturnValue(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_SIGNATURE_INCLUDING_RETURN_VALUE); - } - - /** - * Returns the termination kind value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected TerminationKind getTerminationKind(Attributes attributes) { - return TerminationKind - .valueOf(attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_TERMINATION_KIND)); - } - - /** - * Returns the precondition complied value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isPreconditionComplied(Attributes attributes) { - return Boolean.parseBoolean( - attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_PRECONDITION_COMPLIED)); - } - - /** - * Returns the has not null check value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isHasNotNullCheck(Attributes attributes) { - return Boolean.parseBoolean( - attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_HAS_NOT_NULL_CHECK)); - } - - /** - * Returns the block opened value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isBlockOpened(Attributes attributes) { - return Boolean - .parseBoolean(attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_BLOCK_OPENED)); - } - - /** - * Returns the is return value computed value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isReturnValueComputed(Attributes attributes) { - return Boolean.parseBoolean( - attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_RETURN_VALUE_COMPUTED)); - } - - /** - * Returns the is branch condition computed value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isBranchConditionComputed(Attributes attributes) { - return Boolean.parseBoolean( - attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_BRANCH_CONDITION_COMPUTED)); - } - - /** - * Returns the not null check complied value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isNotNullCheckComplied(Attributes attributes) { - return Boolean.parseBoolean( - attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_NOT_NULL_CHECK_COMPLIED)); - } - - /** - * Returns the initially valid value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isInitiallyValid(Attributes attributes) { - return Boolean - .parseBoolean(attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_INITIALLY_VALID)); - } - - /** - * Returns the is value an object value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isValueAnObject(Attributes attributes) { - return Boolean.parseBoolean( - attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_IS_VALUE_AN_OBJECT)); - } - - /** - * Returns if the weakening is verified. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isWeakeningVerified(Attributes attributes) { - return Boolean.parseBoolean( - attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_WEAKENING_VERIFIED)); - } - - /** - * Returns the is value unknown value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isValueUnknown(Attributes attributes) { - return Boolean - .parseBoolean(attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_IS_VALUE_UNKNOWN)); - } - - /** - * Returns the value string value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getValueString(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_VALUE_STRING); - } - - /** - * Returns the value condition string value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getConditionString(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_CONDITION_STRING); - } - - /** - * Returns the is has condition value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean getHasCondition(Attributes attributes) { - return Boolean - .parseBoolean(attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_HAS_CONDITION)); - } - - /** - * Returns the is branch verified value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean getBranchVerified(Attributes attributes) { - return Boolean - .parseBoolean(attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_BRANCH_VERIFIED)); - } - - /** - * Returns the return value string value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getReturnValueString(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_RETURN_VALUE_STRING); - } - - /** - * Returns the type string value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getTypeString(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_TYPE_STRING); - } - - /** - * Returns the exception term value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getExceptionTerm(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_EXCEPTION_TERM); - } - - /** - * Returns the result term value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getResultTerm(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_RESULT_TERM); - } - - /** - * Returns the self term value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getSelfTerm(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_SELF_TERM); - } - - /** - * Returns the contract parameters value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getContractParameters(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_CONTRACT_PARAMETERS); - } - - /** - * Returns the array index value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getArrayIndexString(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_ARRAY_INDEX); - } - - /** - * Returns the is array index value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isArrayIndex(Attributes attributes) { - return Boolean - .parseBoolean(attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_IS_ARRAY_INDEX)); - } - - /** - * Returns the branch condition value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getBranchCondition(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_BRANCH_CONDITION); - } - - /** - * Returns the path condition value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getPathCondition(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_PATH_CONDITION); - } - - /** - * Returns the method return condition value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getMethodReturnCondition(Attributes attributes) { - return attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_METHOD_RETURN_CONDITION); - } - - /** - * Returns the path condition changed value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isPathConditionChanged(Attributes attributes) { - return Boolean - .parseBoolean( - attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_PATH_CONDITION_CHANGED)); - } - - /** - * Returns the merged branch condition value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isMergedBranchCondition(Attributes attributes) { - return Boolean.parseBoolean( - attributes.getValue(ExecutionNodeWriter.ATTRIBUTE_MERGED_BRANCH_CONDITION)); - } - - /** - * An abstract implementation of {@link IExecutionElement} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static abstract class AbstractKeYlessExecutionElement implements IExecutionElement { - /** - * The name. - */ - private final String name; - - /** - * Constructor. - * - * @param name The name of this node. - */ - protected AbstractKeYlessExecutionElement(String name) { - this.name = name; - } - - /** - * {@inheritDoc} - */ - @Override - public Services getServices() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public InitConfig getInitConfig() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public Proof getProof() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public RuleApp getAppliedRuleApp() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public Node getProofNode() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public NodeInfo getProofNodeInfo() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getName() { - return name; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return getElementType() + " " + getName(); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isDisposed() { - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public ITreeSettings getSettings() { - return null; - } - } - - /** - * An abstract implementation of {@link IExecutionNode} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static abstract class AbstractKeYlessExecutionNode - extends AbstractKeYlessExecutionElement implements IExecutionNode { - /** - * The parent {@link IExecutionNode}. - */ - private final IExecutionNode parent; - - /** - * The children. - */ - private final List> children = new LinkedList<>(); - - /** - * The formated path condition. - */ - private final String formatedPathCondition; - - /** - * Is the path condition changed compared to parent? - */ - private final boolean pathConditionChanged; - - /** - * The call stack. - */ - private final List> callStack = new LinkedList<>(); - - /** - * The contained constraints. - */ - private final List constraints = - new LinkedList<>(); - - /** - * The contained variables. - */ - private final List variables = new LinkedList<>(); - - /** - * The completed blocks. - */ - private ImmutableList> completedBlocks = ImmutableList.nil(); - - /** - * The formated conditions under which a block is completed. - */ - private final Map, String> formatedCompletedBlockConditions = - new LinkedHashMap<>(); - - /** - * The contained outgoing links. - */ - private ImmutableList outgoingLinks = ImmutableList.nil(); - - /** - * The contained incoming links. - */ - private ImmutableList incomingLinks = ImmutableList.nil(); - - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - */ - protected AbstractKeYlessExecutionNode(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged) { - super(name); - this.parent = parent; - this.formatedPathCondition = formatedPathCondition; - this.pathConditionChanged = pathConditionChanged; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionNode getParent() { - return parent; - } - - /** - * Adds the given child. - * - * @param child The child to add. - */ - public void addChild(IExecutionNode child) { - children.add(child); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionNode[] getChildren() { - return children.toArray(new IExecutionNode[0]); - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getPathCondition() throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedPathCondition() throws ProofInputException { - return formatedPathCondition; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isPathConditionChanged() { - return pathConditionChanged; - } - - /** - * Adds the given entry to the call stack. - * - * @param entry The entry to add to the call stack. - */ - public void addCallStackEntry(IExecutionNode entry) { - callStack.add(entry); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionNode[] getCallStack() { - return callStack.isEmpty() ? null - : callStack.toArray(new IExecutionNode[0]); - } - - /** - * Adds the given {@link IExecutionConstraint}. - * - * @param constraint The {@link IExecutionConstraint} to add. - */ - public void addConstraint(IExecutionConstraint constraint) { - constraints.add(constraint); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionConstraint[] getConstraints() { - return constraints.toArray(new IExecutionConstraint[0]); - } - - /** - * Adds the given {@link IExecutionVariable}. - * - * @param variable The {@link IExecutionVariable} to add. - */ - public void addVariable(IExecutionVariable variable) { - variables.add(variable); - } - - /** - * {@inheritDoc} - */ - @Override - public S getActiveStatement() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public PositionInfo getActivePositionInfo() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionVariable[] getVariables() { - return variables.toArray(new IExecutionVariable[0]); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionVariable[] getVariables(JTerm condition) { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public int getLayoutsCount() throws ProofInputException { - return 0; - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicLayout getInitialLayout(int configurationIndex) throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicLayout getCurrentLayout(int configurationIndex) throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getLayoutsEquivalenceClasses( - int configurationIndex) throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public PosInOccurrence getModalityPIO() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList> getCompletedBlocks() { - return completedBlocks; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getBlockCompletionCondition(IExecutionBlockStartNode completedNode) - throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedBlockCompletionCondition(IExecutionBlockStartNode completedNode) - throws ProofInputException { - return formatedCompletedBlockConditions.get(completedNode); - } - - /** - * Adds the given completed block. - * - * @param completedBlock The completed block. - * @param formatedCondition The formated condition under which the block is completed. - */ - public void addCompletedBlock(IExecutionBlockStartNode completedBlock, - String formatedCondition) { - if (completedBlock != null) { - completedBlocks = completedBlocks.append(completedBlock); - formatedCompletedBlockConditions.put(completedBlock, formatedCondition); - } - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionLink getOutgoingLink(final IExecutionNode target) { - return CollectionUtil.search(outgoingLinks, element -> element.getTarget() == target); - } - - /** - * Adds the outgoing {@link IExecutionLink}. - * - * @param link The outgoing {@link IExecutionLink} to add. - */ - public void addOutgoingLink(IExecutionLink link) { - outgoingLinks = outgoingLinks.append(link); - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getOutgoingLinks() { - return outgoingLinks; - } - - /** - * Adds the incoming {@link IExecutionLink}. - * - * @param link The incoming {@link IExecutionLink} to add. - */ - public void addIncomingLink(IExecutionLink link) { - incomingLinks = incomingLinks.append(link); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionLink getIncomingLink(final IExecutionNode source) { - return CollectionUtil.search(incomingLinks, element -> element.getSource() == source); - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getIncomingLinks() { - return incomingLinks; - } - } - - /** - * An abstract implementation of {@link IExecutionBlockStartNode} which is independent from KeY - * and provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static abstract class AbstractKeYlessExecutionBlockStartNode - extends AbstractKeYlessExecutionNode implements IExecutionBlockStartNode { - /** - * The block completions. - */ - private ImmutableList> blockCompletions = ImmutableList.nil(); - - /** - * Is a block opened? - */ - private final boolean blockOpened; - - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param blockOpened {@code false} block is definitively not opened, {@code true} block is - * or might be opened. - */ - protected AbstractKeYlessExecutionBlockStartNode(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, boolean blockOpened) { - super(parent, name, formatedPathCondition, pathConditionChanged); - this.blockOpened = blockOpened; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList> getBlockCompletions() { - return blockCompletions; - } - - /** - * Adds the given block completion. - * - * @param blockCompletion The block completion to add. - */ - public void addBlockCompletion(IExecutionNode blockCompletion) { - if (blockCompletion != null) { - blockCompletions = blockCompletions.append(blockCompletion); - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isBlockOpened() { - return blockOpened; - } - } - - /** - * An implementation of {@link IExecutionLoopCondition} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessBranchCondition extends AbstractKeYlessExecutionNode - implements IExecutionBranchCondition { - /** - * The formated branch condition. - */ - private final String formatedBranchCondition; - - /** - * Merged branch condition? - */ - private final boolean mergedBranchCondition; - - /** - * Indicates if branch condition is computed or not. - */ - private final boolean branchConditionComputed; - - /** - * The optional additional branch label. - */ - private final String additionalBranchLabel; - - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param formatedBranchCondition The formated branch condition. - * @param mergedBranchCondition Merged branch condition? - * @param branchConditionComputed Is branch condition computed? - * @param additionalBranchLabel The optional additional branch label. - */ - public KeYlessBranchCondition(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, - String formatedBranchCondition, boolean mergedBranchCondition, - boolean branchConditionComputed, String additionalBranchLabel) { - super(parent, name, formatedPathCondition, pathConditionChanged); - this.formatedBranchCondition = formatedBranchCondition; - this.mergedBranchCondition = mergedBranchCondition; - this.branchConditionComputed = branchConditionComputed; - this.additionalBranchLabel = additionalBranchLabel; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Branch Condition"; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getBranchCondition() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedBranchCondition() { - return formatedBranchCondition; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isMergedBranchCondition() { - return mergedBranchCondition; - } - - /** - * {@inheritDoc} - */ - @Override - public Node[] getMergedProofNodes() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm[] getMergedBranchCondtions() throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isBranchConditionComputed() { - return branchConditionComputed; - } - - /** - * {@inheritDoc} - */ - @Override - public String getAdditionalBranchLabel() { - return additionalBranchLabel; - } - } - - /** - * An implementation of {@link IExecutionStart} which is independent from KeY and provides such - * only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessStart extends AbstractKeYlessExecutionNode - implements IExecutionStart { - /** - * The up to now discovered {@link IExecutionTermination}s. - */ - private ImmutableList terminations = ImmutableList.nil(); - - /** - * Constructor. - * - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - */ - public KeYlessStart(String name, String formatedPathCondition, - boolean pathConditionChanged) { - super(null, name, formatedPathCondition, pathConditionChanged); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Start"; - } - - /** - * Adds the given {@link IExecutionTermination}. - * - * @param termination The {@link IExecutionTermination} to add. - */ - public void addTermination(IExecutionTermination termination) { - if (termination != null) { - terminations = terminations.prepend(termination); - } - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getTerminations() { - return terminations; - } - } - - /** - * An implementation of {@link IExecutionTermination} which is independent from KeY and provides - * such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessTermination extends AbstractKeYlessExecutionNode - implements IExecutionTermination { - /** - * The {@link TerminationKind}. - */ - private final TerminationKind terminationKind; - - /** - * The branch verified flag. - */ - private final boolean branchVerified; - - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param terminationKind kind of termination - * @param branchVerified The branch verified flag. - */ - public KeYlessTermination(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, - TerminationKind terminationKind, boolean branchVerified) { - super(parent, name, formatedPathCondition, pathConditionChanged); - this.terminationKind = terminationKind; - this.branchVerified = branchVerified; - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramVariable getExceptionVariable() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public Sort getExceptionSort() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - switch (getTerminationKind()) { - case EXCEPTIONAL: - return "Exceptional Termination"; - case LOOP_BODY: - return "Loop Body Termination"; - case BLOCK_CONTRACT_EXCEPTIONAL: - return "Block Contract Exceptional Termination"; - case BLOCK_CONTRACT_NORMAL: - return "Block Contract Termination"; - default: - return "Termination"; - } - } - - /** - * {@inheritDoc} - */ - @Override - public TerminationKind getTerminationKind() { - return terminationKind; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isBranchVerified() { - return branchVerified; - } - } - - /** - * An implementation of {@link IExecutionBranchStatement} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessBranchStatement - extends AbstractKeYlessExecutionBlockStartNode - implements IExecutionBranchStatement { - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param blockOpened {@code false} block is definitively not opened, {@code true} block is - * or might be opened. - */ - public KeYlessBranchStatement(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, boolean blockOpened) { - super(parent, name, formatedPathCondition, pathConditionChanged, blockOpened); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Branch Statement"; - } - } - - /** - * An implementation of {@link IExecutionLoopCondition} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessLoopCondition - extends AbstractKeYlessExecutionBlockStartNode - implements IExecutionLoopCondition { - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param blockOpened {@code false} block is definitively not opened, {@code true} block is - * or might be opened. - */ - public KeYlessLoopCondition(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, boolean blockOpened) { - super(parent, name, formatedPathCondition, pathConditionChanged, blockOpened); - } - - /** - * {@inheritDoc} - */ - @Override - public Expression getGuardExpression() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public PositionInfo getGuardExpressionPositionInfo() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Loop Condition"; - } - } - - /** - * An implementation of {@link IExecutionLoopStatement} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessLoopStatement - extends AbstractKeYlessExecutionBlockStartNode - implements IExecutionLoopStatement { - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param blockOpened {@code false} block is definitively not opened, {@code true} block is - * or might be opened. - */ - public KeYlessLoopStatement(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, boolean blockOpened) { - super(parent, name, formatedPathCondition, pathConditionChanged, blockOpened); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Loop Statement"; - } - } - - /** - * An implementation of {@link IExecutionMethodCall} which is independent from KeY and provides - * such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessMethodCall extends AbstractKeYlessExecutionNode - implements IExecutionMethodCall { - /** - * The up to now discovered {@link IExecutionBaseMethodReturn}s. - */ - private ImmutableList> methodReturns = ImmutableList.nil(); - - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - */ - public KeYlessMethodCall(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged) { - super(parent, name, formatedPathCondition, pathConditionChanged); - } - - /** - * {@inheritDoc} - */ - @Override - public MethodReference getMethodReference() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramMethod getProgramMethod() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Method Call"; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isImplicitConstructor() { - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public MethodReference getExplicitConstructorMethodReference() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramMethod getExplicitConstructorProgramMethod() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList> getMethodReturns() { - return methodReturns; - } - - /** - * Adds the given {@link IExecutionBaseMethodReturn}. - * - * @param methodReturn The {@link IExecutionBaseMethodReturn} to add. - */ - public void addMethodReturn(IExecutionBaseMethodReturn methodReturn) { - if (methodReturn != null) { - methodReturns = methodReturns.prepend(methodReturn); - } - } - } - - /** - * An implementation of {@link IExecutionBaseMethodReturn} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static abstract class AbstractKeYlessBaseExecutionNode - extends AbstractKeYlessExecutionNode implements IExecutionBaseMethodReturn { - /** - * The contained call state variables. - */ - private final List callStateVariables = - new LinkedList<>(); - - /** - * The signature. - */ - private final String signature; - - /** - * The formated method return condition. - */ - private final String formatedMethodReturn; - - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param signature The signature. - * @param formatedMethodReturn The formated method return condition. - */ - protected AbstractKeYlessBaseExecutionNode(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, String signature, - String formatedMethodReturn) { - super(parent, name, formatedPathCondition, pathConditionChanged); - this.signature = signature; - this.formatedMethodReturn = formatedMethodReturn; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionVariable[] getCallStateVariables() { - return callStateVariables.toArray(new IExecutionVariable[0]); - } - - /** - * Adds the given {@link IExecutionVariable}. - * - * @param variable The {@link IExecutionVariable} to add. - */ - public void addCallStateVariable(IExecutionVariable variable) { - callStateVariables.add(variable); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionMethodCall getMethodCall() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getSignature() throws ProofInputException { - return signature; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getMethodReturnCondition() throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormattedMethodReturnCondition() throws ProofInputException { - return formatedMethodReturn; - } - } - - /** - * An implementation of {@link IExecutionExceptionalMethodReturn} which is independent from KeY - * and provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessExceptionalMethodReturn extends - AbstractKeYlessBaseExecutionNode implements IExecutionExceptionalMethodReturn { - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param signature The signature. - * @param formatedMethodReturn The formated method return condition. - */ - public KeYlessExceptionalMethodReturn(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, String signature, - String formatedMethodReturn) { - super(parent, name, formatedPathCondition, pathConditionChanged, signature, - formatedMethodReturn); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Exceptional Method Return"; - } - } - - /** - * An implementation of {@link IExecutionMethodReturn} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessMethodReturn extends AbstractKeYlessBaseExecutionNode - implements IExecutionMethodReturn { - /** - * The name including the return value. - */ - private final String nameIncludingReturnValue; - - /** - * The signature including the return value. - */ - private final String signatureIncludingReturnValue; - - /** - * Defines if the return value is computed or not. - */ - private final boolean returnValueComputed; - - /** - * The possible return values. - */ - private final List returnValues = - new LinkedList<>(); - - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param formatedPathCondition The formated path condition. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param nameIncludingReturnValue The name including the return value. - * @param signature The signature. - * @param signatureIncludingReturnValue The signature including return value. - * @param returnValueComputed Is the return value computed? - * @param formatedMethodReturn The formated method return condition. - */ - public KeYlessMethodReturn(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, - String nameIncludingReturnValue, String signature, - String signatureIncludingReturnValue, boolean returnValueComputed, - String formatedMethodReturn) { - super(parent, name, formatedPathCondition, pathConditionChanged, signature, - formatedMethodReturn); - this.nameIncludingReturnValue = nameIncludingReturnValue; - this.signatureIncludingReturnValue = signatureIncludingReturnValue; - this.returnValueComputed = returnValueComputed; - } - - /** - * {@inheritDoc} - */ - @Override - public String getNameIncludingReturnValue() throws ProofInputException { - return nameIncludingReturnValue; - } - - /** - * {@inheritDoc} - */ - @Override - public String getSignatureIncludingReturnValue() throws ProofInputException { - return signatureIncludingReturnValue; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Method Return"; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isReturnValuesComputed() { - return returnValueComputed; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionMethodReturnValue[] getReturnValues() throws ProofInputException { - return returnValues.toArray(new IExecutionMethodReturnValue[0]); - } - - /** - * Adds the given {@link IExecutionMethodReturnValue}. - * - * @param returnValue The {@link IExecutionMethodReturnValue} to add. - */ - public void addReturnValue(IExecutionMethodReturnValue returnValue) { - returnValues.add(returnValue); - } - } - - /** - * An implementation of {@link IExecutionMethodReturn} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessMethodReturnValue extends AbstractKeYlessExecutionElement - implements IExecutionMethodReturnValue { - /** - * The human readable return value. - */ - private final String returnValueString; - - /** - * Is a condition available? - */ - private final boolean hasCondition; - - /** - * The optional human readable condition. - */ - private final String conditionString; - - /** - * Constructor. - * - * @param name The name of this node. - * @param returnValueString The human readable return value. - * @param hasCondition Is a condition available? - * @param conditionString The optional human readable condition. - */ - public KeYlessMethodReturnValue(String name, String returnValueString, boolean hasCondition, - String conditionString) { - super(name); - this.returnValueString = returnValueString; - this.hasCondition = hasCondition; - this.conditionString = conditionString; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Return Value"; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getReturnValue() throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getReturnValueString() throws ProofInputException { - return returnValueString; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean hasCondition() throws ProofInputException { - return hasCondition; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getCondition() throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getConditionString() throws ProofInputException { - return conditionString; - } - - /** - * {@inheritDoc} - */ - @Override - public PosInOccurrence getModalityPIO() { - return null; - } - } - - /** - * An implementation of {@link IExecutionStatement} which is independent from KeY and provides - * such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessStatement extends AbstractKeYlessExecutionNode - implements IExecutionStatement { - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param formatedPathCondition The formated path condition. - */ - public KeYlessStatement(IExecutionNode parent, String name, String formatedPathCondition, - boolean pathConditionChanged) { - super(parent, name, formatedPathCondition, pathConditionChanged); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Statement"; - } - } - - /** - * An implementation of {@link IExecutionJoin} which is independent from KeY and provides such - * only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessJoin extends AbstractKeYlessExecutionNode - implements IExecutionJoin { - /** - * Is the weakening verified? - */ - private final boolean weakeningVerified; - - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param formatedPathCondition The formated path condition. - * @param weakeningVerified Is the weakening verified? - */ - public KeYlessJoin(IExecutionNode parent, String name, String formatedPathCondition, - boolean pathConditionChanged, boolean weakeningVerified) { - super(parent, name, formatedPathCondition, pathConditionChanged); - this.weakeningVerified = weakeningVerified; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Join"; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isWeakeningVerified() { - return weakeningVerified; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isWeakeningVerificationSupported() { - return true; - } - } - - /** - * An implementation of {@link IExecutionOperationContract} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessOperationContract extends AbstractKeYlessExecutionNode - implements IExecutionOperationContract { - /** - * Is precondition complied? - */ - private final boolean preconditionComplied; - - /** - * Has not null check? - */ - private final boolean hasNotNullCheck; - - /** - * Is not null check complied? - */ - private final boolean notNullCheckComplied; - - /** - * The formated result term. - */ - private final String formatedResultTerm; - - /** - * The formated exception term. - */ - private final String formatedExceptionTerm; - - /** - * The formated self term. - */ - private final String formatedSelfTerm; - - /** - * The formated contract parameters. - */ - private final String formatedContractParams; - - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param formatedPathCondition The formated path condition. - * @param preconditionComplied Is precondition complied? - * @param hasNotNullCheck Has not null check? - * @param notNullCheckComplied Is not null check complied? - * @param formatedResultTerm The formated result term. - * @param formatedExceptionTerm The formated exception term. - * @param formatedSelfTerm The formated self term. - * @param formatedContractParams The formated contract parameters. - */ - public KeYlessOperationContract(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, - boolean preconditionComplied, boolean hasNotNullCheck, boolean notNullCheckComplied, - String formatedResultTerm, String formatedExceptionTerm, String formatedSelfTerm, - String formatedContractParams) { - super(parent, name, formatedPathCondition, pathConditionChanged); - this.preconditionComplied = preconditionComplied; - this.hasNotNullCheck = hasNotNullCheck; - this.notNullCheckComplied = notNullCheckComplied; - this.formatedResultTerm = formatedResultTerm; - this.formatedExceptionTerm = formatedExceptionTerm; - this.formatedSelfTerm = formatedSelfTerm; - this.formatedContractParams = formatedContractParams; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Operation Contract"; - } - - /** - * {@inheritDoc} - */ - @Override - public Contract getContract() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramMethod getContractProgramMethod() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isPreconditionComplied() { - return preconditionComplied; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean hasNotNullCheck() { - return hasNotNullCheck; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isNotNullCheckComplied() { - return notNullCheckComplied; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getResultTerm() throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getExceptionTerm() throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedResultTerm() throws ProofInputException { - return formatedResultTerm; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedExceptionTerm() throws ProofInputException { - return formatedExceptionTerm; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getSelfTerm() throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getContractParams() throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedSelfTerm() throws ProofInputException { - return formatedSelfTerm; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedContractParams() throws ProofInputException { - return formatedContractParams; - } - } - - /** - * An implementation of {@link IExecutionLoopInvariant} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessLoopInvariant extends AbstractKeYlessExecutionNode - implements IExecutionLoopInvariant { - /** - * Initially valid? - */ - private final boolean initiallyValid; - - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param formatedPathCondition The formated path condition. - * @param initiallyValid Initially valid? - */ - public KeYlessLoopInvariant(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, - boolean initiallyValid) { - super(parent, name, formatedPathCondition, pathConditionChanged); - this.initiallyValid = initiallyValid; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Loop Invariant"; - } - - /** - * {@inheritDoc} - */ - @Override - public LoopSpecification getLoopInvariant() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public While getLoopStatement() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isInitiallyValid() { - return initiallyValid; - } - } - - /** - * An implementation of {@link IExecutionAuxiliaryContract} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessBlockContract extends AbstractKeYlessExecutionNode - implements IExecutionAuxiliaryContract { - /** - * Precondition complied? - */ - private final boolean preconditionComplied; - - /** - * Constructor. - * - * @param parent The parent {@link IExecutionNode}. - * @param name The name of this node. - * @param pathConditionChanged Is the path condition changed compared to parent? - * @param formatedPathCondition The formated path condition. - * @param preconditionComplied Precondition complied? - */ - public KeYlessBlockContract(IExecutionNode parent, String name, - String formatedPathCondition, boolean pathConditionChanged, - boolean preconditionComplied) { - super(parent, name, formatedPathCondition, pathConditionChanged); - this.preconditionComplied = preconditionComplied; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Block Contract"; - } - - /** - * {@inheritDoc} - */ - @Override - public BlockContract getContract() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public StatementBlock getBlock() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isPreconditionComplied() { - return preconditionComplied; - } - } - - /** - * An implementation of {@link IExecutionConstraint} which is independent from KeY and provides - * such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessConstraint extends AbstractKeYlessExecutionElement - implements IExecutionConstraint { - /** - * Constructor. - * - * @param name The name. - */ - public KeYlessConstraint(String name) { - super(name); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Constraint"; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getTerm() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public PosInOccurrence getModalityPIO() { - return null; - } - } - - /** - * An implementation of {@link IExecutionVariable} which is independent from KeY and provides - * such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessVariable extends AbstractKeYlessExecutionElement - implements IExecutionVariable { - /** - * The parent {@link IExecutionValue} if available. - */ - private final IExecutionValue parentValue; - - /** - * The is array flag. - */ - private final boolean isArrayIndex; - - /** - * The array index. - */ - private final String arrayIndexString; - - /** - * The contained values. - */ - private final List values = new LinkedList<>(); - - /** - * Constructor. - * - * @param parentValue The parent {@link IExecutionValue} if available. - * @param isArrayIndex The is array flag. - * @param arrayIndexString The array index. - * @param name The name. - */ - public KeYlessVariable(IExecutionValue parentValue, boolean isArrayIndex, - String arrayIndexString, String name) { - super(name); - this.parentValue = parentValue; - this.isArrayIndex = isArrayIndex; - this.arrayIndexString = arrayIndexString; - } - - /** - * Adds the given child {@link IExecutionValue}. - * - * @param variable The child {@link IExecutionValue} to add. - */ - public void addValue(IExecutionValue variable) { - values.add(variable); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionValue getParentValue() { - return parentValue; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionValue[] getValues() { - return values.toArray(new IExecutionValue[0]); - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getArrayIndex() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getArrayIndexString() { - return arrayIndexString; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isArrayIndex() { - return isArrayIndex; - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramVariable getProgramVariable() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Variable"; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getAdditionalCondition() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public PosInOccurrence getModalityPIO() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm createSelectTerm() { - return null; - } - } - - /** - * An implementation of {@link IExecutionLink} which is independent from KeY and provides such - * only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYLessLink implements IExecutionLink { - /** - * The source. - */ - private IExecutionNode source; - - /** - * The target. - */ - private IExecutionNode target; - - /** - * {@inheritDoc} - */ - @Override - public IExecutionNode getSource() { - return source; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionNode getTarget() { - return target; - } - - /** - * Sets the source. - * - * @param source The source to set. - */ - public void setSource(IExecutionNode source) { - this.source = source; - } - - /** - * Sets the target. - * - * @param target The target to set. - */ - public void setTarget(IExecutionNode target) { - this.target = target; - } - } - - /** - * An implementation of {@link IExecutionValue} which is independent from KeY and provides such - * only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessValue extends AbstractKeYlessExecutionElement - implements IExecutionValue { - /** - * The parent {@link IExecutionVariable} if available. - */ - private final IExecutionVariable variable; - - /** - * The type string. - */ - private final String typeString; - - /** - * The value string. - */ - private final String valueString; - - /** - * Is the value unknown? - */ - private final boolean valueUnknown; - - /** - * Is the value an object? - */ - private final boolean valueAnObject; - - /** - * The child variables. - */ - private final List childVariables = - new LinkedList<>(); - - /** - * The condition as {@link String}. - */ - private final String conditionString; - - /** - * The related {@link IExecutionConstraint}s. - */ - private final List constraints = - new LinkedList<>(); - - /** - * Constructor. - * - * @param variable The parent {@link IExecutionVariable}. - * @param typeString The type string. - * @param valueString The value string. - * @param name The name. - * @param valueUnknown Is the value unknown? - * @param valueAnObject Is the value an object? - * @param conditionString The condition as human readable {@link String}. - */ - public KeYlessValue(IExecutionVariable variable, String typeString, String valueString, - String name, boolean valueUnknown, boolean valueAnObject, String conditionString) { - super(name); - this.variable = variable; - this.typeString = typeString; - this.valueString = valueString; - this.valueUnknown = valueUnknown; - this.valueAnObject = valueAnObject; - this.conditionString = conditionString; - } - - /** - * Adds the given child {@link IExecutionVariable}. - * - * @param variable The child {@link IExecutionVariable} to add. - */ - public void addChildVariable(IExecutionVariable variable) { - childVariables.add(variable); - } - - /** - * {@inheritDoc} - */ - @Override - public String getValueString() throws ProofInputException { - return valueString; - } - - /** - * {@inheritDoc} - */ - @Override - public String getTypeString() { - return typeString; - } - - /** - * {@inheritDoc} - */ - @Override - public String getConditionString() throws ProofInputException { - return conditionString; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionVariable getVariable() { - return variable; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionVariable[] getChildVariables() { - return childVariables.toArray(new IExecutionVariable[0]); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isValueUnknown() throws ProofInputException { - return valueUnknown; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isValueAnObject() throws ProofInputException { - return valueAnObject; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getValue() throws ProofInputException { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Value"; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getCondition() throws ProofInputException { - return null; - } - - /** - * Adds the given {@link IExecutionConstraint}. - * - * @param constraint The {@link IExecutionConstraint} to add. - */ - public void addConstraint(IExecutionConstraint constraint) { - constraints.add(constraint); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionConstraint[] getConstraints() { - return constraints.toArray(new IExecutionConstraint[0]); - } - - /** - * {@inheritDoc} - */ - @Override - public PosInOccurrence getModalityPIO() { - return null; - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodeSymbolicLayoutExtractor.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodeSymbolicLayoutExtractor.java deleted file mode 100644 index 4b6cb070107..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodeSymbolicLayoutExtractor.java +++ /dev/null @@ -1,58 +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.symbolic_execution; - -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -/** - * Special {@link SymbolicLayoutExtractor} for {@link IExecutionNode}s. - * - * @author Martin Hentschel - */ -public class ExecutionNodeSymbolicLayoutExtractor extends SymbolicLayoutExtractor { - /** - * The {@link IExecutionNode} to extract memory layouts from. - */ - private final IExecutionNode executionNode; - - /** - * Constructor. - * - * @param executionNode The {@link IExecutionNode} to extract memory layouts from. - */ - public ExecutionNodeSymbolicLayoutExtractor(IExecutionNode executionNode) { - super(executionNode.getProofNode(), executionNode.getModalityPIO(), - executionNode.getSettings().useUnicode(), - executionNode.getSettings().usePrettyPrinting(), - executionNode.getSettings().simplifyConditions()); - this.executionNode = executionNode; - } - - /** - * {@inheritDoc} - */ - @Override - protected String computeInitialStateName() { - try { - return SymbolicExecutionUtil.getRoot(executionNode).getName() + " resulting in " - + computeCurrentStateName(); - } catch (ProofInputException e) { - return e.getMessage(); - } - } - - /** - * {@inheritDoc} - */ - @Override - protected String computeCurrentStateName() { - try { - return executionNode.getName(); - } catch (ProofInputException e) { - return e.getMessage(); - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodeWriter.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodeWriter.java deleted file mode 100644 index 33c282a19eb..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionNodeWriter.java +++ /dev/null @@ -1,1336 +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.symbolic_execution; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.charset.Charset; -import java.util.Arrays; -import java.util.Map; - -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionAuxiliaryContract; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionBaseMethodReturn; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionBlockStartNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionBranchCondition; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionBranchStatement; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionElement; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionExceptionalMethodReturn; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionJoin; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionLink; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionLoopCondition; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionLoopInvariant; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionLoopStatement; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodCall; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodReturn; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodReturnValue; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionOperationContract; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionStart; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionStatement; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionTermination; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionValue; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionVariable; -import de.uka.ilkd.key.util.LinkedHashMap; - -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.ArrayUtil; - -/** - * Allows to persistent selected properties of {@link IExecutionNode}s as XML file. Such files can - * be read via an {@link ExecutionNodeReader} instance. - * - * @author Martin Hentschel - * @see ExecutionNodeReader - */ -public class ExecutionNodeWriter extends AbstractWriter { - /** - * Attribute name to store {@link IExecutionElement#getName()}. - */ - public static final String ATTRIBUTE_NAME = "name"; - - /** - * Attribute name to store {@link IExecutionMethodReturn#getNameIncludingReturnValue()}. - */ - public static final String ATTRIBUTE_NAME_INCLUDING_RETURN_VALUE = "nameIncludingReturnValue"; - - /** - * Attribute name to store {@link IExecutionMethodReturn#getSignatureIncludingReturnValue()}. - */ - public static final String ATTRIBUTE_SIGNATURE_INCLUDING_RETURN_VALUE = - "signatureIncludingReturnValue"; - - /** - * Attribute name to store {@link IExecutionMethodReturn#getSignature()}. - */ - public static final String ATTRIBUTE_SIGNATURE = "signature"; - - /** - * Attribute exceptional termination to store - * {@link IExecutionTermination#getTerminationKind()}. - */ - public static final String ATTRIBUTE_TERMINATION_KIND = "terminationKind"; - - /** - * Attribute name to store {@link IExecutionValue#getTypeString()}. - */ - public static final String ATTRIBUTE_TYPE_STRING = "typeString"; - - /** - * Attribute name to store {@link IExecutionValue#getValueString()}. - */ - public static final String ATTRIBUTE_VALUE_STRING = "valueString"; - - /** - * Attribute name to store {@link IExecutionValue#getConditionString()}. - */ - public static final String ATTRIBUTE_CONDITION_STRING = "conditionString"; - - /** - * Attribute name to store {@link IExecutionMethodReturnValue#getReturnValueString()}. - */ - public static final String ATTRIBUTE_RETURN_VALUE_STRING = "returnValueString"; - - /** - * Attribute name to store {@link IExecutionMethodReturnValue#hasCondition()}. - */ - public static final String ATTRIBUTE_HAS_CONDITION = "hasCondition"; - - /** - * Attribute name to store {@link IExecutionTermination#isBranchVerified()}. - */ - public static final String ATTRIBUTE_BRANCH_VERIFIED = "branchVerified"; - - /** - * Attribute name to store {@link IExecutionVariable#getArrayIndexString()}. - */ - public static final String ATTRIBUTE_ARRAY_INDEX = "arrayIndex"; - - /** - * Attribute name to store {@link IExecutionVariable#isArrayIndex()}. - */ - public static final String ATTRIBUTE_IS_ARRAY_INDEX = "isArrayIndex"; - - /** - * Attribute name to store {@link IExecutionBranchCondition#getFormatedBranchCondition()}. - */ - public static final String ATTRIBUTE_BRANCH_CONDITION = "branchCondition"; - - /** - * Attribute name to store {@link IExecutionNode#getPathCondition()}. - */ - public static final String ATTRIBUTE_PATH_CONDITION = "pathCondition"; - - /** - * Attribute name to store {@link IExecutionNode#isPathConditionChanged()}. - */ - public static final String ATTRIBUTE_PATH_CONDITION_CHANGED = "pathConditionChanged"; - - /** - * A path which refers to an {@link IExecutionNode} starting from the root. - */ - public static final String ATTRIBUTE_PATH_IN_TREE = "path"; - - /** - * Attribute name to store {@link IExecutionBranchCondition#isMergedBranchCondition()}. - */ - public static final String ATTRIBUTE_MERGED_BRANCH_CONDITION = "mergedBranchCondition"; - - /** - * Attribute name to store {@link IExecutionValue#isValueAnObject()}. - */ - public static final String ATTRIBUTE_IS_VALUE_AN_OBJECT = "isValueAnObject"; - - /** - * Attribute name to store {@link IExecutionValue#isValueUnknown()}. - */ - public static final String ATTRIBUTE_IS_VALUE_UNKNOWN = "isValueUnknown"; - - /** - * Attribute name to store {@link IExecutionOperationContract#isPreconditionComplied()}. - */ - public static final String ATTRIBUTE_PRECONDITION_COMPLIED = "preconditionComplied"; - - /** - * Attribute name to store {@link IExecutionOperationContract#hasNotNullCheck()}. - */ - public static final String ATTRIBUTE_HAS_NOT_NULL_CHECK = "hasNotNullCheck"; - - /** - * Attribute name to store {@link IExecutionMethodReturn#isReturnValuesComputed()}. - */ - public static final String ATTRIBUTE_RETURN_VALUE_COMPUTED = "isReturnValueComputed"; - - /** - * Attribute name to store {@link IExecutionBranchCondition#isBranchConditionComputed()}. - */ - public static final String ATTRIBUTE_BRANCH_CONDITION_COMPUTED = "isBranchConditionComputed"; - - /** - * Attribute name to store {@link IExecutionOperationContract#isNotNullCheckComplied()}. - */ - public static final String ATTRIBUTE_NOT_NULL_CHECK_COMPLIED = "notNullCheckComplied"; - - /** - * Attribute name to store {@link IExecutionLoopInvariant#isInitiallyValid()}. - */ - public static final String ATTRIBUTE_INITIALLY_VALID = "initiallyValid"; - - /** - * Attribute name to store {@link IExecutionBranchCondition#getAdditionalBranchLabel()}. - */ - public static final String ATTRIBUTE_ADDITIONAL_BRANCH_LABEL = "additionalBranchLabel"; - - /** - * Attribute name to store {@link IExecutionMethodReturn#getMethodReturnCondition()}. - */ - public static final String ATTRIBUTE_METHOD_RETURN_CONDITION = "methodReturnCondition"; - - /** - * Attribute name to store {@link IExecutionOperationContract#getFormatedResultTerm()}. - */ - public static final String ATTRIBUTE_RESULT_TERM = "resultTerm"; - - /** - * Attribute name to store {@link IExecutionOperationContract#getFormatedExceptionTerm()}. - */ - public static final String ATTRIBUTE_EXCEPTION_TERM = "exceptionTerm"; - - /** - * Attribute name to store {@link IExecutionOperationContract#getFormatedSelfTerm()}. - */ - public static final String ATTRIBUTE_SELF_TERM = "selfTerm"; - - /** - * Attribute name to store {@link IExecutionOperationContract#getFormatedContractParams()}. - */ - public static final String ATTRIBUTE_CONTRACT_PARAMETERS = "contractParameters"; - - /** - * Attribute name to store {@link IExecutionBlockStartNode#isBlockOpened()}. - */ - public static final String ATTRIBUTE_BLOCK_OPENED = "blockOpened"; - - /** - * Attribute name to store {@link IExecutionJoin#isWeakeningVerified()}. - */ - public static final String ATTRIBUTE_WEAKENING_VERIFIED = "weakeningVerified"; - - /** - * Tag name to store {@link IExecutionBranchCondition}s. - */ - public static final String TAG_BRANCH_CONDITION = "branchCondition"; - - /** - * Tag name to store {@link IExecutionStart}s. - */ - public static final String TAG_START = "start"; - - /** - * Tag name to store {@link IExecutionBranchStatement}s. - */ - public static final String TAG_BRANCH_STATEMENT = "branchStatement"; - - /** - * Tag name to store {@link IExecutionLoopCondition}s. - */ - public static final String TAG_LOOP_CONDITION = "loopCondition"; - - /** - * Tag name to store {@link IExecutionLoopStatement}s. - */ - public static final String TAG_LOOP_STATEMENT = "loopStatement"; - - /** - * Tag name to store {@link IExecutionMethodCall}s. - */ - public static final String TAG_METHOD_CALL = "methodCall"; - - /** - * Tag name to store {@link IExecutionMethodReturn}s. - */ - public static final String TAG_METHOD_RETURN = "methodReturn"; - - /** - * Tag name to store {@link IExecutionExceptionalMethodReturn}s. - */ - public static final String TAG_EXCEPTIONAL_METHOD_RETURN = "exceptionalMethodReturn"; - - /** - * Tag name to store {@link IExecutionMethodReturnValue}s. - */ - public static final String TAG_METHOD_RETURN_VALUE = "methodReturnValue"; - - /** - * Tag name to store {@link IExecutionStatement}s. - */ - public static final String TAG_STATEMENT = "statement"; - - /** - * Tag name to store {@link IExecutionTermination}s. - */ - public static final String TAG_TERMINATION = "termination"; - - /** - * Tag name to store {@link IExecutionJoin}s. - */ - public static final String TAG_JOIN = "join"; - - /** - * Tag name to store {@link IExecutionOperationContract}s. - */ - public static final String TAG_OPERATION_CONTRACT = "operationContract"; - - /** - * Tag name to store {@link IExecutionAuxiliaryContract}s. - */ - public static final String TAG_BLOCK_CONTRACT = "blockContract"; - - /** - * Tag name to store {@link IExecutionLoopInvariant}s. - */ - public static final String TAG_LOOP_INVARIANT = "loopInvariant"; - - /** - * Tag name to store {@link IExecutionConstraint}s. - */ - public static final String TAG_CONSTRAINT = "constraint"; - - /** - * Tag name to store {@link IExecutionVariable}s. - */ - public static final String TAG_VARIABLE = "variable"; - - /** - * Tag name to store call state {@link IExecutionVariable}s. - */ - public static final String TAG_CALL_STATE_VARIABLE = "callStateVariable"; - - /** - * Tag name to store {@link IExecutionValue}s. - */ - public static final String TAG_VALUE = "value"; - - /** - * Tag name to store one entry of {@link IExecutionNode#getCallStack()}. - */ - public static final String TAG_CALL_STACK_ENTRY = "callStackEntry"; - - /** - * Tag name to store one entry of {@link IExecutionMethodCall#getMethodReturns()}. - */ - public static final String TAG_METHOD_RETURN_ENTRY = "methodReturnEntry"; - - /** - * Tag name to store on entry of {@link IExecutionNode#getCompletedBlocks()} together with its - * condition {@link IExecutionNode#getFormatedBlockCompletionCondition}. - */ - public static final String TAG_COMPLETED_BLOCK_ENTRY = "completedBlockEntry"; - - /** - * Tag name to store one entry of {@link IExecutionBranchStatement#getBlockCompletions()}. - */ - public static final String TAG_BLOCK_COMPLETION_ENTRY = "blockCompletionEntry"; - - /** - * Tag name to store one entry of {@link IExecutionStart#getTerminations()}. - */ - public static final String TAG_TERMINATION_ENTRY = "terminationEntry"; - - /** - * Tag name to store one entry of {@link IExecutionNode#getOutgoingLinks()}. - */ - public static final String TAG_OUTGOING_LINK = "outgoingLink"; - - /** - * Character to separate path entries in attributes {@value #ATTRIBUTE_PATH_IN_TREE}. - */ - public static final char PATH_SEPARATOR = '/'; - - /** - * Writes the given {@link IExecutionNode} as XML file. - * - * @param node The {@link IExecutionNode} to save. - * @param encoding The encoding to use. - * @param file The {@link File} to save to. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @throws IOException Occurred Exception. - * @throws ProofInputException Occurred Exception. - */ - public void write(IExecutionNode node, String encoding, File file, boolean saveVariables, - boolean saveCallStack, boolean saveReturnValues, boolean saveConstraints) - throws IOException, ProofInputException { - try (var out = new FileOutputStream(file)) { - write(node, encoding, out, saveVariables, saveCallStack, - saveReturnValues, saveConstraints); - } - } - - /** - * Writes the given {@link IExecutionNode} into the {@link OutputStream}. - * - * @param node The {@link IExecutionNode} to save. - * @param encoding The encoding to use. - * @param out The {@link OutputStream} to save to. The {@link OutputStream} will be closed by - * this method. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @throws IOException Occurred Exception. - * @throws ProofInputException Occurred Exception. - */ - public void write(IExecutionNode node, String encoding, OutputStream out, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints) throws IOException, ProofInputException { - if (out != null) { - Charset charset = - encoding != null ? Charset.forName(encoding) : Charset.defaultCharset(); - String xml = toXML(node, charset.displayName(), saveVariables, saveCallStack, - saveReturnValues, saveConstraints); - out.write(xml.getBytes(charset)); - } - } - - /** - * Converts the given {@link IExecutionNode} into XML. - * - * @param node The {@link IExecutionNode} to convert. - * @param encoding The encoding to use. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @return The created XML content. - * @throws ProofInputException Occurred Exception. - */ - public String toXML(IExecutionNode node, String encoding, boolean saveVariables, - boolean saveCallStack, boolean saveReturnValues, boolean saveConstraints) - throws ProofInputException { - StringBuilder sb = new StringBuilder(); - appendXmlHeader(encoding, sb); - appendExecutionNode(0, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - return sb.toString(); - } - - /** - * Converts the given {@link IExecutionNode} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionNode} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionNode(int level, IExecutionNode node, boolean saveVariables, - boolean saveCallStack, boolean saveReturnValues, boolean saveConstraints, - StringBuilder sb) throws ProofInputException { - if (node instanceof IExecutionBranchCondition) { - appendExecutionBranchCondition(level, (IExecutionBranchCondition) node, saveVariables, - saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionStart) { - appendExecutionStart(level, (IExecutionStart) node, saveVariables, saveCallStack, - saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionBranchStatement) { - appendExecutionBranchStatement(level, (IExecutionBranchStatement) node, saveVariables, - saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionLoopCondition) { - appendExecutionLoopCondition(level, (IExecutionLoopCondition) node, saveVariables, - saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionLoopStatement) { - appendExecutionLoopStatement(level, (IExecutionLoopStatement) node, saveVariables, - saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionMethodCall) { - appendExecutionMethodCall(level, (IExecutionMethodCall) node, saveVariables, - saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionMethodReturn) { - appendExecutionMethodReturn(level, (IExecutionMethodReturn) node, saveVariables, - saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionExceptionalMethodReturn) { - appendExecutionExceptionalMethodReturn(level, (IExecutionExceptionalMethodReturn) node, - saveVariables, saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionStatement) { - appendExecutionStatement(level, (IExecutionStatement) node, saveVariables, - saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionTermination) { - appendExecutionTermination(level, (IExecutionTermination) node, saveVariables, - saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionOperationContract) { - appendExecutionOperationContract(level, (IExecutionOperationContract) node, - saveVariables, saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionLoopInvariant) { - appendExecutionLoopInvariant(level, (IExecutionLoopInvariant) node, saveVariables, - saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionAuxiliaryContract) { - appendExecutionBlockContract(level, (IExecutionAuxiliaryContract) node, saveVariables, - saveCallStack, saveReturnValues, saveConstraints, sb); - } else if (node instanceof IExecutionJoin) { - appendExecutionJoin(level, (IExecutionJoin) node, saveVariables, saveCallStack, - saveReturnValues, saveConstraints, sb); - } else { - throw new IllegalArgumentException("Not supported node \"" + node + "\"."); - } - } - - /** - * Converts the given {@link IExecutionBranchCondition} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionBranchCondition} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionBranchCondition(int level, IExecutionBranchCondition node, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - attributeValues.put(ATTRIBUTE_BRANCH_CONDITION, node.getFormatedBranchCondition()); - attributeValues.put(ATTRIBUTE_MERGED_BRANCH_CONDITION, node.isMergedBranchCondition() + ""); - attributeValues.put(ATTRIBUTE_BRANCH_CONDITION_COMPUTED, - node.isBranchConditionComputed() + ""); - attributeValues.put(ATTRIBUTE_ADDITIONAL_BRANCH_LABEL, node.getAdditionalBranchLabel()); - appendStartTag(level, TAG_BRANCH_CONDITION, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendEndTag(level, TAG_BRANCH_CONDITION, sb); - } - - /** - * Converts the given {@link IExecutionStart} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionStart} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionStart(int level, IExecutionStart node, boolean saveVariables, - boolean saveCallStack, boolean saveReturnValues, boolean saveConstraints, - StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - appendStartTag(level, TAG_START, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendTerminations(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendEndTag(level, TAG_START, sb); - } - - /** - * Appends the termination entries to the given {@link StringBuilder}. - * - * @param level The level of the children. - * @param node The {@link IExecutionStart} which provides the termination entries. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendTerminations(int level, IExecutionStart node, StringBuilder sb) { - ImmutableList terminations = node.getTerminations(); - if (terminations != null) { - for (IExecutionTermination termination : terminations) { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_PATH_IN_TREE, computePath(termination)); - appendEmptyTag(level, TAG_TERMINATION_ENTRY, attributeValues, sb); - } - } - } - - /** - * Converts the given {@link IExecutionLoopCondition} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionLoopCondition} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionBranchStatement(int level, IExecutionBranchStatement node, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - attributeValues.put(ATTRIBUTE_BLOCK_OPENED, node.isBlockOpened() + ""); - appendStartTag(level, TAG_BRANCH_STATEMENT, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendBlockCompletions(level + 1, node, sb); - appendEndTag(level, TAG_BRANCH_STATEMENT, sb); - } - - /** - * Converts the given {@link IExecutionLoopCondition} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionLoopCondition} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionLoopCondition(int level, IExecutionLoopCondition node, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - attributeValues.put(ATTRIBUTE_BLOCK_OPENED, node.isBlockOpened() + ""); - appendStartTag(level, TAG_LOOP_CONDITION, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendBlockCompletions(level + 1, node, sb); - appendEndTag(level, TAG_LOOP_CONDITION, sb); - } - - /** - * Converts the given {@link IExecutionLoopStatement} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionLoopStatement} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionLoopStatement(int level, IExecutionLoopStatement node, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - attributeValues.put(ATTRIBUTE_BLOCK_OPENED, node.isBlockOpened() + ""); - appendStartTag(level, TAG_LOOP_STATEMENT, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendBlockCompletions(level + 1, node, sb); - appendEndTag(level, TAG_LOOP_STATEMENT, sb); - } - - /** - * Converts the given {@link IExecutionMethodCall} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionMethodCall} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionMethodCall(int level, IExecutionMethodCall node, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - appendStartTag(level, TAG_METHOD_CALL, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendMethodReturns(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendEndTag(level, TAG_METHOD_CALL, sb); - } - - /** - * Converts the given {@link IExecutionMethodReturn} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionMethodReturn} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionMethodReturn(int level, IExecutionMethodReturn node, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_SIGNATURE, node.getSignature()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - if (saveReturnValues) { - attributeValues.put(ATTRIBUTE_NAME_INCLUDING_RETURN_VALUE, - node.getNameIncludingReturnValue()); - attributeValues.put(ATTRIBUTE_SIGNATURE_INCLUDING_RETURN_VALUE, - node.getSignatureIncludingReturnValue()); - } - attributeValues.put(ATTRIBUTE_RETURN_VALUE_COMPUTED, node.isReturnValuesComputed() + ""); - attributeValues.put(ATTRIBUTE_METHOD_RETURN_CONDITION, - node.getFormattedMethodReturnCondition()); - appendStartTag(level, TAG_METHOD_RETURN, attributeValues, sb); - if (saveReturnValues) { - IExecutionMethodReturnValue[] returnValues = node.getReturnValues(); - for (IExecutionMethodReturnValue returnValue : returnValues) { - appendExecutionMethodReturnValue(level + 1, returnValue, sb); - } - } - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendCallStateVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendEndTag(level, TAG_METHOD_RETURN, sb); - } - - /** - * Converts the given {@link IExecutionExceptionalMethodReturn} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionExceptionalMethodReturn} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionExceptionalMethodReturn(int level, - IExecutionExceptionalMethodReturn node, boolean saveVariables, boolean saveCallStack, - boolean saveReturnValues, boolean saveConstraints, StringBuilder sb) - throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_SIGNATURE, node.getSignature()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - attributeValues.put(ATTRIBUTE_METHOD_RETURN_CONDITION, - node.getFormattedMethodReturnCondition()); - appendStartTag(level, TAG_EXCEPTIONAL_METHOD_RETURN, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendCallStateVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendEndTag(level, TAG_EXCEPTIONAL_METHOD_RETURN, sb); - } - - /** - * Converts the given {@link IExecutionMethodReturnValue} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param returnValue The {@link IExecutionMethodReturnValue} to convert. - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionMethodReturnValue(int level, - IExecutionMethodReturnValue returnValue, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, returnValue.getName()); - attributeValues.put(ATTRIBUTE_RETURN_VALUE_STRING, returnValue.getReturnValueString()); - attributeValues.put(ATTRIBUTE_HAS_CONDITION, returnValue.hasCondition() + ""); - attributeValues.put(ATTRIBUTE_CONDITION_STRING, returnValue.getConditionString()); - appendStartTag(level, TAG_METHOD_RETURN_VALUE, attributeValues, sb); - appendEndTag(level, TAG_METHOD_RETURN_VALUE, sb); - } - - /** - * Converts the given {@link IExecutionStatement} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionStatement} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionStatement(int level, IExecutionStatement node, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - appendStartTag(level, TAG_STATEMENT, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendEndTag(level, TAG_STATEMENT, sb); - } - - /** - * Converts the given {@link IExecutionJoin} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionJoin} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionJoin(int level, IExecutionJoin node, boolean saveVariables, - boolean saveCallStack, boolean saveReturnValues, boolean saveConstraints, - StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - attributeValues.put(ATTRIBUTE_WEAKENING_VERIFIED, node.isWeakeningVerified() + ""); - appendStartTag(level, TAG_JOIN, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendEndTag(level, TAG_JOIN, sb); - } - - /** - * Converts the given {@link IExecutionOperationContract} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionOperationContract} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionOperationContract(int level, IExecutionOperationContract node, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - attributeValues.put(ATTRIBUTE_RESULT_TERM, node.getFormatedResultTerm()); - attributeValues.put(ATTRIBUTE_EXCEPTION_TERM, node.getFormatedExceptionTerm()); - attributeValues.put(ATTRIBUTE_SELF_TERM, node.getFormatedSelfTerm()); - attributeValues.put(ATTRIBUTE_CONTRACT_PARAMETERS, node.getFormatedContractParams()); - - attributeValues.put(ATTRIBUTE_PRECONDITION_COMPLIED, node.isPreconditionComplied() + ""); - attributeValues.put(ATTRIBUTE_HAS_NOT_NULL_CHECK, node.hasNotNullCheck() + ""); - attributeValues.put(ATTRIBUTE_NOT_NULL_CHECK_COMPLIED, node.isNotNullCheckComplied() + ""); - - appendStartTag(level, TAG_OPERATION_CONTRACT, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendEndTag(level, TAG_OPERATION_CONTRACT, sb); - } - - /** - * Converts the given {@link IExecutionLoopInvariant} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionLoopInvariant} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionLoopInvariant(int level, IExecutionLoopInvariant node, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - - attributeValues.put(ATTRIBUTE_INITIALLY_VALID, node.isInitiallyValid() + ""); - - appendStartTag(level, TAG_LOOP_INVARIANT, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendEndTag(level, TAG_LOOP_INVARIANT, sb); - } - - /** - * Converts the given {@link IExecutionAuxiliaryContract} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionLoopInvariant} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionBlockContract(int level, IExecutionAuxiliaryContract node, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - - attributeValues.put(ATTRIBUTE_PRECONDITION_COMPLIED, node.isPreconditionComplied() + ""); - - appendStartTag(level, TAG_BLOCK_CONTRACT, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendEndTag(level, TAG_BLOCK_CONTRACT, sb); - } - - /** - * Converts the given {@link IExecutionTermination} into XML and appends it to the - * {@link StringBuilder}. - * - * @param level The current child level. - * @param node The {@link IExecutionTermination} to convert. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendExecutionTermination(int level, IExecutionTermination node, - boolean saveVariables, boolean saveCallStack, boolean saveReturnValues, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, node.getName()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION, node.getFormatedPathCondition()); - attributeValues.put(ATTRIBUTE_PATH_CONDITION_CHANGED, node.isPathConditionChanged() + ""); - attributeValues.put(ATTRIBUTE_TERMINATION_KIND, node.getTerminationKind().toString()); - attributeValues.put(ATTRIBUTE_BRANCH_VERIFIED, node.isBranchVerified() + ""); - appendStartTag(level, TAG_TERMINATION, attributeValues, sb); - appendConstraints(level + 1, node, saveConstraints, sb); - appendVariables(level + 1, node, saveVariables, saveConstraints, sb); - appendCallStack(level + 1, node, saveCallStack, sb); - appendChildren(level + 1, node, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - appendOutgoingLinks(level + 1, node, sb); - appendCompletedBlocks(level + 1, node, sb); - appendEndTag(level, TAG_TERMINATION, sb); - } - - /** - * Appends the contained {@link IExecutionConstraint}s to the given {@link StringBuilder}. - * - * @param level The level to use. - * @param value The {@link IExecutionValue} which provides the {@link IExecutionConstraint}s. - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendConstraints(int level, IExecutionValue value, boolean saveConstraints, - StringBuilder sb) throws ProofInputException { - if (saveConstraints) { - IExecutionConstraint[] constraints = value.getConstraints(); - for (IExecutionConstraint constraint : constraints) { - appendConstraint(level, constraint, sb); - } - } - } - - /** - * Appends the contained {@link IExecutionConstraint}s to the given {@link StringBuilder}. - * - * @param level The level to use. - * @param node The {@link IExecutionNode} which provides the {@link IExecutionConstraint}s. - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendConstraints(int level, IExecutionNode node, boolean saveConstraints, - StringBuilder sb) throws ProofInputException { - if (saveConstraints) { - IExecutionConstraint[] constraints = node.getConstraints(); - for (IExecutionConstraint constraint : constraints) { - appendConstraint(level, constraint, sb); - } - } - } - - /** - * Appends the given {@link IExecutionConstraint} with its children to the given - * {@link StringBuilder}. - * - * @param level The level to use. - * @param constraint The {@link IExecutionConstraint} to append. - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendConstraint(int level, IExecutionConstraint constraint, StringBuilder sb) - throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, constraint.getName()); - appendEmptyTag(level, TAG_CONSTRAINT, attributeValues, sb); - } - - /** - * Appends the contained {@link IExecutionVariable}s to the given {@link StringBuilder}. - * - * @param level The level to use. - * @param node The {@link IExecutionNode} which provides the {@link IExecutionVariable}s. - * @param saveVariables Save variables? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendVariables(int level, IExecutionNode node, boolean saveVariables, - boolean saveConstraints, StringBuilder sb) throws ProofInputException { - if (saveVariables) { - IExecutionVariable[] variables = node.getVariables(); - for (IExecutionVariable variable : variables) { - appendVariable(level, variable, saveConstraints, TAG_VARIABLE, sb); - } - } - } - - /** - * Appends the contained {@link IExecutionVariable}s to the given {@link StringBuilder}. - * - * @param level The level to use. - * @param node The {@link IExecutionNode} which provides the {@link IExecutionVariable}s. - * @param saveVariables Save variables? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendCallStateVariables(int level, IExecutionBaseMethodReturn node, - boolean saveVariables, boolean saveConstraints, StringBuilder sb) - throws ProofInputException { - if (saveVariables) { - IExecutionVariable[] variables = node.getCallStateVariables(); - for (IExecutionVariable variable : variables) { - appendVariable(level, variable, saveConstraints, TAG_CALL_STATE_VARIABLE, sb); - } - } - } - - /** - * Appends the given {@link IExecutionVariable} with its children to the given - * {@link StringBuilder}. - * - * @param level The level to use. - * @param variable The {@link IExecutionVariable} to append. - * @param saveConstraints Save constraints? - * @param tagName The tag name to store an {@link IExecutionVariable}. - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendVariable(int level, IExecutionVariable variable, boolean saveConstraints, - String tagName, StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, variable.getName()); - attributeValues.put(ATTRIBUTE_ARRAY_INDEX, variable.getArrayIndexString()); - attributeValues.put(ATTRIBUTE_IS_ARRAY_INDEX, variable.isArrayIndex() + ""); - appendStartTag(level, tagName, attributeValues, sb); - appendValues(level + 1, variable, saveConstraints, sb); - appendEndTag(level, tagName, sb); - } - - /** - * Appends the contained {@link IExecutionValue}s to the given {@link StringBuilder}. - * - * @param level The level to use. - * @param variable The {@link IExecutionVariable} which provides the {@link IExecutionValue}s. - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendValues(int level, IExecutionVariable variable, boolean saveConstraints, - StringBuilder sb) throws ProofInputException { - IExecutionValue[] values = variable.getValues(); - for (IExecutionValue value : values) { - appendValue(level, value, saveConstraints, sb); - } - } - - /** - * Appends the given {@link IExecutionValue} with its children to the given - * {@link StringBuilder}. - * - * @param level The level to use. - * @param value The {@link IExecutionValue} to append. - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendValue(int level, IExecutionValue value, boolean saveConstraints, - StringBuilder sb) throws ProofInputException { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, value.getName()); - attributeValues.put(ATTRIBUTE_TYPE_STRING, value.getTypeString()); - attributeValues.put(ATTRIBUTE_VALUE_STRING, value.getValueString()); - attributeValues.put(ATTRIBUTE_IS_VALUE_AN_OBJECT, value.isValueAnObject() + ""); - attributeValues.put(ATTRIBUTE_IS_VALUE_UNKNOWN, value.isValueUnknown() + ""); - attributeValues.put(ATTRIBUTE_CONDITION_STRING, value.getConditionString()); - appendStartTag(level, TAG_VALUE, attributeValues, sb); - // Constraints - appendConstraints(level + 1, value, saveConstraints, sb); - // Children - IExecutionVariable[] childVariables = value.getChildVariables(); - for (IExecutionVariable childVariable : childVariables) { - appendVariable(level + 1, childVariable, saveConstraints, TAG_VARIABLE, sb); - } - appendEndTag(level, TAG_VALUE, sb); - } - - /** - * Appends the child nodes to the given {@link StringBuilder}. - * - * @param childLevel The level of the children. - * @param parent The parent {@link IExecutionNode} which provides the children. - * @param saveVariables Save variables? - * @param saveCallStack Save method call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception. - */ - protected void appendChildren(int childLevel, IExecutionNode parent, boolean saveVariables, - boolean saveCallStack, boolean saveReturnValues, boolean saveConstraints, - StringBuilder sb) throws ProofInputException { - IExecutionNode[] children = parent.getChildren(); - for (IExecutionNode child : children) { - appendExecutionNode(childLevel, child, saveVariables, saveCallStack, saveReturnValues, - saveConstraints, sb); - } - } - - /** - * appends outgoing links to the given StringBuilder - * - * @param level the int specifying indentation level - * @param node the {@link IExecutionNode} whose outgoing links are to be reported - * @param sb the StringBuilder with the resulting text description - */ - protected void appendOutgoingLinks(int level, IExecutionNode node, StringBuilder sb) { - if (!node.getOutgoingLinks().isEmpty()) { - for (IExecutionLink link : node.getOutgoingLinks()) { - appendOutgoingLink(level, link, sb); - } - } - } - - /** - * appends outgoing links to the given StringBuilder - * - * @param level the int specifying indentation level - * @param link the outgoing {@link IExecutionLink} to be reported - * @param sb the StringBuilder with the resulting text description - */ - protected void appendOutgoingLink(int level, IExecutionLink link, StringBuilder sb) { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_PATH_IN_TREE, computePath(link.getTarget())); - appendEmptyTag(level, TAG_OUTGOING_LINK, attributeValues, sb); - } - - /** - * Appends the call stack entries if required to the given {@link StringBuilder}. - * - * @param level The level of the children. - * @param node The {@link IExecutionNode} which provides the call stack. - * @param saveCallStack Defines if the call stack should be saved or not. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendCallStack(int level, IExecutionNode node, boolean saveCallStack, - StringBuilder sb) { - if (saveCallStack) { - IExecutionNode[] callStack = node.getCallStack(); - if (callStack != null) { - for (IExecutionNode stackNode : callStack) { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_PATH_IN_TREE, computePath(stackNode)); - appendEmptyTag(level, TAG_CALL_STACK_ENTRY, attributeValues, sb); - } - } - } - } - - /** - * Appends the method return entries to the given {@link StringBuilder}. - * - * @param level The level of the children. - * @param node The {@link IExecutionMethodCall} which provides the call stack. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendMethodReturns(int level, IExecutionMethodCall node, StringBuilder sb) { - ImmutableList> methodReturns = node.getMethodReturns(); - if (methodReturns != null) { - for (IExecutionBaseMethodReturn methodReturn : methodReturns) { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_PATH_IN_TREE, computePath(methodReturn)); - appendEmptyTag(level, TAG_METHOD_RETURN_ENTRY, attributeValues, sb); - } - } - } - - /** - * Appends the completed block entries to the given {@link StringBuilder}. - * - * @param level The level of the children. - * @param node The {@link IExecutionNode} which provides the block entries. - * @param sb The {@link StringBuilder} to append to. - * @throws ProofInputException Occurred Exception - */ - protected void appendCompletedBlocks(int level, IExecutionNode node, StringBuilder sb) - throws ProofInputException { - ImmutableList> completedBlocks = node.getCompletedBlocks(); - if (completedBlocks != null) { - for (IExecutionBlockStartNode completedBlock : completedBlocks) { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_PATH_IN_TREE, computePath(completedBlock)); - attributeValues.put(ATTRIBUTE_CONDITION_STRING, - node.getFormatedBlockCompletionCondition(completedBlock)); - appendEmptyTag(level, TAG_COMPLETED_BLOCK_ENTRY, attributeValues, sb); - } - } - } - - /** - * Appends the block completion entries to the given {@link StringBuilder}. - * - * @param level The level of the children. - * @param node The {@link IExecutionBlockStartNode} which provides the completed blocks. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendBlockCompletions(int level, IExecutionBlockStartNode node, - StringBuilder sb) { - ImmutableList> blockCompletions = node.getBlockCompletions(); - if (blockCompletions != null) { - for (IExecutionNode blockCompletion : blockCompletions) { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_PATH_IN_TREE, computePath(blockCompletion)); - appendEmptyTag(level, TAG_BLOCK_COMPLETION_ENTRY, attributeValues, sb); - } - } - } - - /** - * Computes the path from the root of the symbolic execution tree to the given - * {@link IExecutionNode}. - * - * @param node The {@link IExecutionNode} to compute path to. - * @return The computed path. - */ - protected String computePath(IExecutionNode node) { - StringBuilder sb = new StringBuilder(); - boolean afterFirst = false; - while (node != null) { - IExecutionNode parent = node.getParent(); - if (parent != null) { - if (afterFirst) { - sb.insert(0, PATH_SEPARATOR); - } else { - afterFirst = true; - } - int index = ArrayUtil.indexOf(parent.getChildren(), node); - assert index >= 0 : "Node \"" + node + "\" is not contained in parents children \"" - + Arrays.toString(parent.getChildren()) + "\"."; - sb.insert(0, index); - } else { - sb.insert(0, PATH_SEPARATOR); - } - node = parent; - } - return sb.toString(); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionVariableExtractor.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionVariableExtractor.java deleted file mode 100644 index 85cf48cf125..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/ExecutionVariableExtractor.java +++ /dev/null @@ -1,682 +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.symbolic_execution; - -import java.util.*; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.logic.op.ProgramVariable; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionValue; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.model.impl.AbstractExecutionValue; -import de.uka.ilkd.key.symbolic_execution.model.impl.AbstractExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.Pair; - -/** - * Extracts the current state and represents it as {@link IExecutionVariable}s. - * - * @author Martin Hentschel - */ -public class ExecutionVariableExtractor extends AbstractUpdateExtractor { - /** - * The current {@link IExecutionNode}. - */ - private final IExecutionNode executionNode; - - /** - * An optional additional condition. - */ - private final JTerm additionalCondition; - - /** - * The layout term. - */ - private final JTerm layoutTerm; - - /** - * The current locations. - */ - private final Set currentLocations; - - /** - * The found {@link IExecutionVariable}s available via {@link #analyse()}. - */ - private final Map allStateVariables; - - /** - * {@code true} simplify conditions, {@code false} do not simplify conditions. - */ - private final boolean simplifyConditions; - - /** - * Constructor. - * - * @param node The {@link Node} which provides the state. - * @param modalityPio The {@link PosInOccurrence} in the {@link Node}. - * @param executionNode The current {@link IExecutionNode}. - * @param condition An optional additional condition. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @throws ProofInputException Occurred Exception - */ - public ExecutionVariableExtractor(Node node, - PosInOccurrence modalityPio, - IExecutionNode executionNode, JTerm condition, boolean simplifyConditions) - throws ProofInputException { - super(node, modalityPio); - this.executionNode = executionNode; - this.additionalCondition = condition; - this.simplifyConditions = simplifyConditions; - // Path condition needs always to be simplified, because otherwise additional symbolic - // values might be introduced. - JTerm pathCondition = - SymbolicExecutionUtil.computePathCondition(executionNode.getProofNode(), true, false); - pathCondition = removeImplicitSubTermsFromPathCondition(pathCondition); - // Extract locations from updates - Set temporaryCurrentLocations = new LinkedHashSet<>(); - // Contains all objects which should be ignored, like the global exc - // variable of the proof obligation. - Set objectsToIgnore = computeInitialObjectsToIgnore(false, false); - // Contains all objects which are created during symbolic execution - Set updateCreatedObjects = new LinkedHashSet<>(); - // Contains all objects which are the value of an update - Set updateValueObjects = new LinkedHashSet<>(); - collectLocationsFromUpdates(node.sequent(), temporaryCurrentLocations, updateCreatedObjects, - updateValueObjects, objectsToIgnore); - objectsToIgnore.addAll(updateCreatedObjects); - Set initialLocations = - extractLocationsFromTerm(pathCondition, objectsToIgnore); - initialLocations.addAll(extractLocationsFromSequent(node.sequent(), objectsToIgnore)); - currentLocations = new LinkedHashSet<>(initialLocations); - currentLocations.addAll(temporaryCurrentLocations); - // Create location predicate - layoutTerm = createLocationPredicateAndTerm(currentLocations); - // Create state variables - this.allStateVariables = new LinkedHashMap<>(); - for (ExtractLocationParameter location : currentLocations) { - if (location.isStateMember()) { - LocationDef locDef = - new LocationDef(location.getProgramVariable(), location.getArrayIndex()); - if (!allStateVariables.containsKey(locDef)) { - StateExecutionVariable variable = new StateExecutionVariable(executionNode, - node, modalityPio, location.getProgramVariable(), location.getArrayIndex(), - additionalCondition); - allStateVariables.put(locDef, variable); - } - } - } - } - - /** - * Extracts the current state and represents it as {@link IExecutionVariable}s. - * - * @return The {@link IExecutionVariable}s representing the current state. - * @throws ProofInputException Occurred Exception. - */ - public IExecutionVariable[] analyse() throws ProofInputException { - Collection variables = allStateVariables.values(); - return variables.toArray(new StateExecutionVariable[0]); - } - - /** - * Analyzes the tree structure of the given {@link ExecutionVariableValuePair}s. - * - * @param pairs The {@link ExecutionVariableValuePair}s to analyze. - * @param topVariables The state locations, - * @param childrenInfo the child locations. - */ - protected void analyzeTreeStructure(Set pairs, - Map> topVariables, - Map>> childrenInfo) { - for (ExecutionVariableValuePair pair : pairs) { - if (pair.isStateMember()) { - LocationDef locDef = - new LocationDef(pair.getProgramVariable(), pair.getArrayIndex()); - List currentTopPairs = - topVariables.computeIfAbsent(locDef, k -> new LinkedList<>()); - currentTopPairs.add(pair); - } else { - ParentDef parentDef = - new ParentDef(pair.getParent(), pair.getGoalNode()); - Map> content = - childrenInfo.computeIfAbsent(parentDef, k -> new LinkedHashMap<>()); - LocationDef locDef = - new LocationDef(pair.getProgramVariable(), pair.getArrayIndex()); - List locationContent = - content.computeIfAbsent(locDef, k -> new LinkedList<>()); - locationContent.add(pair); - } - } - } - - /** - * Creates an {@link IExecutionVariable} for the given {@link ExecutionVariableValuePair}s. - * - * @param pairs The {@link ExecutionVariableValuePair}s to represent. - * @param childrenInfo The {@link Map} providing child content information. - * @param parentValue The optional parent {@link IExecutionValue}. - * @param alreadyVisitedObjects The value {@link JTerm}s of already visited objects on the - * current path in the variable-value-hierarchy. - * @return The created {@link IExecutionVariable}. - * @throws ProofInputException Occurred Exception. - */ - protected IExecutionVariable createVariablesValueStructure( - List pairs, - Map>> childrenInfo, - ExtractedExecutionValue parentValue, - ImmutableList alreadyVisitedObjects) throws ProofInputException { - assert !pairs.isEmpty(); - // Create variable - ExecutionVariableValuePair firstPair = pairs.get(0); - ExtractedExecutionVariable variable = new ExtractedExecutionVariable(executionNode, node, - modalityPio, firstPair.getProgramVariable(), firstPair.getArrayIndex(), - firstPair.getArrayStartIndex(), firstPair.getArrayEndIndex(), additionalCondition, - parentValue); - if (parentValue != null) { - parentValue.addChildVariable(variable); - } - // Fill variable with values - List values = new LinkedList<>(); - createValues(variable, pairs, firstPair, childrenInfo, values, alreadyVisitedObjects); - variable.setValues(values); - return variable; - } - - /** - * Creates the {@link IExecutionValue}s of the given {@link IExecutionVariable}. - * - * @param variable The {@link IExecutionVariable}. - * @param pairs The {@link ExecutionVariableValuePair}s which provides the content. - * @param firstPair The first entry in the {@link ExecutionVariableValuePair}s. - * @param contentMap The content {@link Map}. - * @param valueListToFill The result {@link List} to fill. - * @param alreadyVisitedObjects The value {@link JTerm}s of already visited objects on the - * current path in the variable-value-hierarchy. - * @throws ProofInputException Occurred Exception. - */ - protected void createValues(final IExecutionVariable variable, - final List pairs, - final ExecutionVariableValuePair firstPair, - final Map>> contentMap, - final List valueListToFill, - final ImmutableList alreadyVisitedObjects) throws ProofInputException { - // Group pairs with same value but with different conditions - Map> groupedPairs = - new LinkedHashMap<>(); - for (ExecutionVariableValuePair pair : pairs) { - assert firstPair.getProgramVariable() == pair.getProgramVariable(); - assert firstPair.getArrayIndex() == pair.getArrayIndex(); - assert firstPair.isArrayIndex() == pair.isArrayIndex(); - assert firstPair.getArrayStartIndex() == pair.getArrayStartIndex(); - assert firstPair.getArrayEndIndex() == pair.getArrayEndIndex(); - assert firstPair.isArrayRange() == pair.isArrayRange(); - List values = - groupedPairs.computeIfAbsent(pair.getValue(), k -> new LinkedList<>()); - values.add(pair); - } - // Create variable - for (List group : groupedPairs.values()) { - if (group.size() == 1) { - ExecutionVariableValuePair pair = group.get(0); - ExtractedExecutionValue value = new ExtractedExecutionValue(executionNode, node, - variable, pair.getCondition(), pair.getValue()); - valueListToFill.add(value); - Pair> cycleCheckResult = - updateAlreadyVisitedObjects(alreadyVisitedObjects, pair.getValue()); - if (!cycleCheckResult.first) { // No cycle detected - ParentDef parentDef = - new ParentDef(pair.getValue(), pair.getGoalNode()); - Map> content = - contentMap.get(parentDef); - if (content != null) { - for (List child : content.values()) { - createVariablesValueStructure(child, contentMap, value, - cycleCheckResult.second); - } - } - } - } else { - List conditions = new LinkedList<>(); - Map> childContentMap = - new LinkedHashMap<>(); - for (ExecutionVariableValuePair pair : group) { - conditions.add(pair.getCondition()); - ParentDef parentDef = - new ParentDef(pair.getValue(), pair.getGoalNode()); - Map> content = - contentMap.get(parentDef); - if (content != null) { - for (var entry : content.entrySet()) { - List childList = - childContentMap.computeIfAbsent(entry.getKey(), - k -> new LinkedList<>()); - childList.addAll(entry.getValue()); - } - } - } - final Services services = getServices(); - JTerm compoundPathCondition = services.getTermBuilder().or(conditions); - if (simplifyConditions) { - compoundPathCondition = SymbolicExecutionUtil.simplify( - getProof().getInitConfig(), getProof(), compoundPathCondition); - } - compoundPathCondition = - SymbolicExecutionUtil.improveReadability(compoundPathCondition, services); - ExtractedExecutionValue value = new ExtractedExecutionValue(executionNode, node, - variable, compoundPathCondition, group.get(0).getValue()); - valueListToFill.add(value); - Pair> cycleCheckResult = - updateAlreadyVisitedObjects(alreadyVisitedObjects, group.get(0).getValue()); - if (!cycleCheckResult.first) { // No cycle detected - if (!childContentMap.isEmpty()) { - for (List child : childContentMap.values()) { - createVariablesValueStructure(child, contentMap, value, - cycleCheckResult.second); - } - } - } - } - } - } - - /** - * Updates the already visited objects list if required. - * - * @param alreadyVisitedObjects The value {@link JTerm}s of already visited objects on the - * current path in the variable-value-hierarchy. - * @param value The current value. - * @return The new already visited objects list or the original one if the current value is not - * an object. - */ - protected Pair> updateAlreadyVisitedObjects( - final ImmutableList alreadyVisitedObjects, JTerm value) { - ImmutableList alreadyVisitedObjectsForChildren = alreadyVisitedObjects; - boolean cycleDetected = false; - if (value != null && SymbolicExecutionUtil.hasReferenceSort(getServices(), value) - && !SymbolicExecutionUtil.isNullSort(value.sort(), getServices())) { - if (!alreadyVisitedObjects.contains(value)) { - alreadyVisitedObjectsForChildren = alreadyVisitedObjectsForChildren.prepend(value); - } else { - cycleDetected = true; - } - } - return new Pair<>(cycleDetected, alreadyVisitedObjectsForChildren); - } - - /** - * Utility class representing a parent definition. - * - * @param parent The parent. - * @param goalNode The {@link Node} on which this result is based on. - * @author Martin Hentschel - */ - private record ParentDef(JTerm parent, Node goalNode) { - /** - * Constructor. - * - * @param parent The parent. - * @param goalNode The {@link Node} on which this result is based on. - */ - private ParentDef { - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof ParentDef(JTerm parent1, Node goalNode1)) { - return Objects.equals(parent, parent1) - && Objects.equals(goalNode, goalNode1); - } else { - return false; - } - } - - } - - /** - * Utility class representing a location. - * - * @param programVariable The {@link ProgramVariable} or {@code null} if an array index is used - * instead. - * @param arrayIndex The array index or {@code null} if a {@link ProgramVariable} is used - * instead. - * @author Martin Hentschel - */ - private record LocationDef(ProgramVariable programVariable, JTerm arrayIndex) { - /** - * Constructor. - * - * @param programVariable The {@link ProgramVariable} or {@code null} if an array index is - * used instead. - * @param arrayIndex The array index or null, if a {@link ProgramVariable} is - * used instead. - */ - private LocationDef { - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof LocationDef(ProgramVariable variable, JTerm index)) { - return programVariable == variable - && Objects.equals(arrayIndex, index); - } else { - return false; - } - } - - } - - /** - * The {@link IExecutionVariable} instantiated by the {@link ExecutionVariableExtractor}. - * - * @author Martin Hentschel - */ - private class StateExecutionVariable extends AbstractExecutionVariable { - /** - * The contained {@link IExecutionValue}s. - */ - private IExecutionValue[] values; - - /** - * Constructor. - * - * @param parentNode The {@link IExecutionNode} providing relevant information. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param modalityPIO The {@link PosInOccurrence} of the modality of interest. - * @param programVariable The represented {@link IProgramVariable} which value is shown. - * @param arrayIndex The index in the parent array. - * @param additionalCondition An optional additional condition to consider. - */ - public StateExecutionVariable(IExecutionNode parentNode, Node proofNode, - PosInOccurrence modalityPIO, - IProgramVariable programVariable, JTerm arrayIndex, - JTerm additionalCondition) { - super(parentNode.getSettings(), proofNode, programVariable, null, arrayIndex, - additionalCondition, modalityPIO); - } - - /** - * {@inheritDoc} - */ - @Override - public synchronized IExecutionValue[] getValues() throws ProofInputException { - if (values != null) { - return values; - } - // Compute values - Set pairs = - computeVariableValuePairs(getAdditionalCondition(), layoutTerm, - currentLocations, true, simplifyConditions); - if (pairs == null) { - // Something went wrong, values are not available. - return new IExecutionValue[0]; - } - // Analyze tree structure of pairs - Map> topVariables = - new LinkedHashMap<>(); - Map>> childrenInfo = - new LinkedHashMap<>(); - analyzeTreeStructure(pairs, topVariables, childrenInfo); - // Create variables and values from tree structure - for (List pairsList : topVariables.values()) { - ExecutionVariableValuePair firstPair = pairsList.get(0); - List values = new LinkedList<>(); - StateExecutionVariable variable = - allStateVariables.get(new LocationDef( - firstPair.getProgramVariable(), firstPair.getArrayIndex())); - assert variable != null; - createValues(variable, pairsList, firstPair, childrenInfo, values, - ImmutableList.nil()); - variable.values = values.toArray(new IExecutionValue[0]); - } - return values; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm createSelectTerm() { - return SymbolicExecutionUtil.createSelectTerm(this); - } - } - - /** - * The {@link IExecutionVariable} instantiated by the {@link ExecutionVariableExtractor}. - * - * @author Martin Hentschel - */ - public static class ExtractedExecutionVariable extends AbstractExecutionVariable { - /** - * The contained {@link IExecutionValue}s. - */ - private List values; - - /** - * The array start index or {@code null} if not used. - */ - private final JTerm arrayStartIndex; - - /** - * The array end index or {@code null} if not used. - */ - private final JTerm arrayEndIndex; - - /** - * Constructor. - * - * @param parentNode The {@link IExecutionNode} providing relevant information. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param modalityPIO The {@link PosInOccurrence} of the modality of interest. - * @param programVariable The represented {@link IProgramVariable} which value is shown. - * @param arrayIndex The index in the parent array. - * @param additionalCondition An optional additional condition to consider. - * @param parentValue The parent {@link IExecutionValue} or {@code null} if not available. - */ - public ExtractedExecutionVariable(IExecutionNode parentNode, Node proofNode, - PosInOccurrence modalityPIO, - IProgramVariable programVariable, JTerm arrayIndex, - JTerm arrayStartIndex, JTerm arrayEndIndex, JTerm additionalCondition, - ExtractedExecutionValue parentValue) { - super(parentNode.getSettings(), proofNode, programVariable, parentValue, arrayIndex, - additionalCondition, modalityPIO); - this.arrayStartIndex = arrayStartIndex; - this.arrayEndIndex = arrayEndIndex; - } - - /** - * Sets the {@link IExecutionValue}s. - * - * @param values The {@link IExecutionValue}s to set. - */ - private void setValues(List values) { - this.values = values; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionValue[] getValues() throws ProofInputException { - return values.toArray(new IExecutionValue[0]); - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm createSelectTerm() { - return SymbolicExecutionUtil.createSelectTerm(this); - } - - /** - * Returns the array start index. - * - * @return The array start index. - */ - public JTerm getArrayStartIndex() { - return arrayStartIndex; - } - - /** - * Returns the human-readable array start index. - * - * @return The human-readable array start index. - */ - public String getArrayStartIndexString() { - return arrayStartIndex != null ? formatTerm(arrayStartIndex, getServices()) : null; - } - - /** - * Returns the array end index. - * - * @return The array end index. - */ - public JTerm getArrayEndIndex() { - return arrayEndIndex; - } - - /** - * Returns the human-readable array end index. - * - * @return The human-readable array end index. - */ - public String getArrayEndIndexString() { - return arrayEndIndex != null ? formatTerm(arrayEndIndex, getServices()) : null; - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() throws ProofInputException { - if (getArrayStartIndex() != null || getArrayEndIndex() != null) { - String name = "["; - if (getArrayStartIndex() != null) { - name += getArrayIndexString() + " >= " + getArrayStartIndexString(); - } - if (getArrayStartIndex() != null && getArrayEndIndex() != null) { - name += " and "; - } - if (getArrayEndIndex() != null) { - name += getArrayIndexString() + " <= " + getArrayEndIndexString(); - } - name += "]"; - return name; - } else { - return super.lazyComputeName(); - } - } - } - - /** - * The {@link IExecutionValue} instantiated by the {@link ExecutionVariableExtractor}. - * - * @author Martin Hentschel - */ - public static class ExtractedExecutionValue extends AbstractExecutionValue { - /** - * The available child {@link ExtractedExecutionVariable}. - */ - private final List childVariables = new LinkedList<>(); - - /** - * The {@link IExecutionNode} providing the {@link IExecutionConstraint}s. - */ - private final IExecutionNode parentNode; - - /** - * Constructor. - * - * @param parentNode The {@link IExecutionNode} providing relevant information. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param variable The parent {@link IExecutionVariable} which contains this value. - * @param condition The condition. - * @param value The value. - */ - public ExtractedExecutionValue(IExecutionNode parentNode, Node proofNode, - IExecutionVariable variable, JTerm condition, JTerm value) { - super(parentNode.getSettings(), proofNode, variable, condition, value); - this.parentNode = parentNode; - } - - /** - * {@inheritDoc} - */ - @Override - public String getConditionString() throws ProofInputException { - return getCondition() != null ? formatTerm(getCondition(), getServices()) : null; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isValueUnknown() throws ProofInputException { - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public String getValueString() throws ProofInputException { - return getValue() != null ? formatTerm(getValue(), getServices()) : null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getTypeString() throws ProofInputException { - return getValue() != null && getValue().sort() != null ? getValue().sort().toString() - : null; - } - - /** - * Adds a child {@link ExtractedExecutionVariable}. - * - * @param variable The {@link ExtractedExecutionVariable} to add. - */ - protected void addChildVariable(ExtractedExecutionVariable variable) { - if (variable != null) { - childVariables.add(variable); - } - } - - /** - * {@inheritDoc} - */ - @Override - public ExtractedExecutionVariable[] getChildVariables() { - return childVariables.toArray(new ExtractedExecutionVariable[0]); - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] getNodeConstraints() { - return parentNode.getConstraints(); - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicExecutionTreeBuilder.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicExecutionTreeBuilder.java deleted file mode 100644 index 81b29632d6b..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicExecutionTreeBuilder.java +++ /dev/null @@ -1,1896 +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.symbolic_execution; - -import java.util.*; -import java.util.Map.Entry; - -import de.uka.ilkd.key.java.*; -import de.uka.ilkd.key.java.ast.PositionInfo; -import de.uka.ilkd.key.java.ast.ProgramElement; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.reference.IExecutionContext; -import de.uka.ilkd.key.java.ast.statement.If; -import de.uka.ilkd.key.java.ast.statement.LoopStatement; -import de.uka.ilkd.key.java.ast.statement.MethodFrame; -import de.uka.ilkd.key.java.visitor.JavaASTVisitor; -import de.uka.ilkd.key.logic.*; -import de.uka.ilkd.key.logic.label.BlockContractValidityTermLabel; -import de.uka.ilkd.key.logic.label.SymbolicExecutionTermLabel; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.logic.op.JModality; -import de.uka.ilkd.key.proof.*; -import de.uka.ilkd.key.proof.init.AbstractOperationPO; -import de.uka.ilkd.key.proof.init.FunctionalOperationContractPO; -import de.uka.ilkd.key.proof.init.IPersistablePO; -import de.uka.ilkd.key.rule.BuiltInRule; -import de.uka.ilkd.key.rule.WhileInvariantRule; -import de.uka.ilkd.key.rule.merge.MergePartner; -import de.uka.ilkd.key.rule.merge.MergeRuleBuiltInRuleApp; -import de.uka.ilkd.key.symbolic_execution.model.*; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionTermination.TerminationKind; -import de.uka.ilkd.key.symbolic_execution.model.impl.*; -import de.uka.ilkd.key.symbolic_execution.profile.SymbolicExecutionJavaProfile; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionStrategy; -import de.uka.ilkd.key.symbolic_execution.util.DefaultEntry; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; -import de.uka.ilkd.key.util.MiscTools; -import de.uka.ilkd.key.util.NodePreorderIterator; - -import org.key_project.logic.Term; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.Pair; -import org.key_project.util.java.ArrayUtil; - -/** - *

- * Instances of this class are used to extract the symbolic execution tree from a normal KeY's proof - * tree. The requirement is that the proof contains a predicate which is not evaluable to filter - * invalid execution tree paths. The easiest way to achieve this is to use a - * {@link FunctionalOperationContractPO} (addUninterpretedPredicate = {@code true}) instance as - * proof obligation to instantiate a {@link Proof} from. - *

- *

- * A symbolic execution tree consists of {@link IExecutionNode}s which represents the executed - * statements and other Java constructs. The root of a symbolic execution tree is an - * {@link IExecutionStart} which is available via {@link #getProof()}. - *

- *

- * Some assumptions about how {@link org.key_project.prover.sequent.Sequent}s in the proof tree - * looks like are required to extract - * the symbolic execution tree. To make sure that they hold (otherwise exceptions are thrown) it is - * required to execute the {@link SymbolicExecutionStrategy} in KeY's auto mode and not to apply - * rules manually or to use other strategies. - *

- *

- * The symbolic execution tree is not updated automatically when KeY's proof tree has changed. The - * update must be started manually via {@link #analyse()}. In this case the proof tree will be - * analyzed and the execution tree model created or updated if it already exist. - *

- *

- * Proof trees and also symbolic execution trees are very large even in small programs. For this - * reason it is not possible to iterate over the tree via recursive method calls. Instead, an - * instance of {@link ExecutionNodePreorderIterator} should be used to iterate over a symbolic - * execution tree. - *

- *

- * The following snippet shows the basic usage of this class to extract an symbolic execution tree: - * - *

- * Proof proof; // Create proof with proof obligation FunctionalOperationContractPO and set
- * // addUninterpretedPredicate to true
- * // Start KeY's auto mode with SymbolicExecutionStrategy to do the proof
- * SymbolicExecutionTreeBuilder builder = new SymbolicExecutionTreeBuilder(proof);
- * builder.analyse(); // Create initial symbolic execution tree
- * // Iterate over symbolic execution tree and print it into the console
- * ExecutionNodePreorderIterator iter = new ExecutionNodePreorderIterator(builder.getStartNode);
- * while (iter.hasNext() {
- *    IExecutionNode next = iter.next();
- *    System.out.println(next.getName());
- * }
- * // Continue proof by starting KeY's auto mode again with SymbolicExecutionStrategy
- * builder.analyse(); // Create initial symbolic execution tree
- * // Iterate again over the symbolic execution tree
- * iter = new ExecutionNodePreorderIterator(builder.getStartNode);
- * // ...
- * 
- *

- * - * @author Martin Hentschel - * - * @see FunctionalOperationContractPO#isAddUninterpretedPredicate() - * @see IExecutionNode - * @see IExecutionStart - * @see SymbolicExecutionStrategy - * @see ExecutionNodePreorderIterator - */ -public class SymbolicExecutionTreeBuilder { - /** - * The {@link Proof} from which the symbolic execution tree is extracted. - */ - private Proof proof; - - /** - * The start node of the symbolic execution tree. - */ - private ExecutionStart startNode; - - /** - *

- * Maps a {@link Node} of KeY's proof tree to his execution tree model representation if it is - * available. - *

- *

- * In case that the {@link Node} is represented by multiple {@link AbstractExecutionNode}s, e.g. - * a return statement and a method return, the last node is returned. - *

- */ - private Map> keyNodeMapping = - new LinkedHashMap<>(); - - /** - * In case a {@link Node} is represented by multiple {@link AbstractExecutionNode}s, this map - * maps the {@link Node} to all its representations. - */ - private final Map>> multipleExecutionNodes = - new LinkedHashMap<>(); - - /** - * Maps a loop condition of a {@link Node} of KeY's proof tree to his execution tree model - * representation ({@link IExecutionLoopCondition}) if it is available. - */ - private Map keyNodeLoopConditionMapping = - new LinkedHashMap<>(); - - /** - * Maps a branch condition of a {@link Node} of KeY's proof tree to his execution tree model - * representation ({@link IExecutionBranchCondition}) if it is available. - */ - private Map keyNodeBranchConditionMapping = - new LinkedHashMap<>(); - - /** - * Contains the method call stacks for each tracked symbolic execution modality. As key is - * {@link SymbolicExecutionTermLabel#id()} used. - */ - private Map>> methodCallStackMap = - new LinkedHashMap<>(); - - /** - * Contains the possible statements after a code block of interest for each tracked symbolic - * execution modality. As key is {@link SymbolicExecutionTermLabel#id()} used. - */ - private Map>>>> afterBlockMap = - new LinkedHashMap<>(); - - /** - * Contains {@link Node}s of method calls which return statements should be ignored. As key is - * {@link SymbolicExecutionTermLabel#id()} used. - */ - private Map> methodReturnsToIgnoreMap = - new LinkedHashMap<>(); - - /** - * Contains the exception variable which is used to check if the executed program in proof - * terminates normally. - */ - private IProgramVariable exceptionVariable; - - /** - * The {@link TreeSettings} to use. - */ - private final TreeSettings settings; - - /** - * {@code true} infeasible paths are closed, {@code false} infeasible may be open may be closed. - */ - private final boolean isUninterpretedPredicateUsed; - - /** - * Branch conditions ({@link ExecutionBranchCondition}) are only applied to the execution tree - * model if they have at least one child. For this reason they are added to the model in - * {@link AnalyzerProofVisitor#completeTree()} after the whole proof tree of KeY was analyzed - * via - * {@link AnalyzerProofVisitor#visit(Proof, Node)}. The adding of - * {@link ExecutionBranchCondition} to the model must - * be done from leaf nodes to the root, but in correct child order. This {@link Deque} forms the - * order in that the {@link ExecutionBranchCondition} must be applied. The contained - * {@link List} makes sure that the children are applied in the same order as they occur in - * KeY's proof tree. - */ - private final Deque, List>> branchConditionsStack = - new LinkedList<>(); - - /** - * Constructor. - * - * @param proof The {@link Proof} to extract the symbolic execution tree from. - * @param mergeBranchConditions {@code true} merge branch conditions which means that a branch - * condition never contains another branch condition or {@code false} allow that branch - * conditions contains branch conditions. - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - */ - public SymbolicExecutionTreeBuilder(Proof proof, boolean mergeBranchConditions, - boolean useUnicode, boolean usePrettyPrinting, - boolean variablesAreOnlyComputedFromUpdates, boolean simplifyConditions) { - assert proof != null; - this.proof = proof; - this.isUninterpretedPredicateUsed = - AbstractOperationPO.getUninterpretedPredicate(getProof()) != null; - this.settings = new TreeSettings(mergeBranchConditions, useUnicode, usePrettyPrinting, - variablesAreOnlyComputedFromUpdates, simplifyConditions); - this.exceptionVariable = SymbolicExecutionUtil.extractExceptionVariable(proof); - this.startNode = new ExecutionStart(settings, proof.root()); - this.keyNodeMapping.put(proof.root(), this.startNode); - initMethodCallStack(proof.root(), proof.getServices()); - } - - /** - *

- * This method initializes {@link #getMethodCallStack} in case that the initial - * {@link org.key_project.prover.sequent.Sequent} - * contains {@link MethodFrame}s in its modality. - *

- *

- * This is required because if a block of statements is executed instead of a method the initial - * {@link org.key_project.prover.sequent.Sequent} contains also a {@link MethodFrame}. This - * initial {@link MethodFrame} is - * required to simulate an execution context which is required to access class members. - *

- * - * @param root The root {@link Node} with the initial - * {@link org.key_project.prover.sequent.Sequent}. - * @param services The {@link Services} to use. - */ - protected void initMethodCallStack(final Node root, Services services) { - // Find all modalities in the succedent - final List modalityTerms = new LinkedList<>(); - for (SequentFormula sequentFormula : root.sequent().succedent()) { - sequentFormula.formula().execPreOrder((DefaultVisitor) visited -> { - if (visited.op() instanceof JModality - && SymbolicExecutionUtil.hasSymbolicExecutionLabel(visited)) { - modalityTerms.add(visited); - } - }); - } - // Make sure that at least one modality was found - if (modalityTerms.isEmpty()) { - throw new IllegalStateException( - "Sequent contains no modalities with symbolic execution label."); - } - // Make sure that at most one modality was found - if (modalityTerms.size() >= 2) { - throw new IllegalStateException( - "Sequent contains multiple modalities with symbolic execution label."); - } - // Make sure that modality has symbolic execution label - var modalityTerm = modalityTerms.get(0); - SymbolicExecutionTermLabel label = - SymbolicExecutionUtil.getSymbolicExecutionLabel(modalityTerm); - if (label == null) { - throw new IllegalStateException( - "Modality \"" + modalityTerm + "\" has no symbolic execution term label."); - } - // Check if modality contains method frames - if (!modalityTerms.isEmpty()) { - final JModality mod = (JModality) modalityTerm.op(); - JavaBlock javaBlock = mod.programBlock(); - final ProgramElement program = javaBlock.program(); - final List initialStack = new LinkedList<>(); - new JavaASTVisitor(program, services) { - @Override - protected void doDefaultAction(SourceElement node) { - } - - @Override - public void performActionOnMethodFrame(MethodFrame x) { - initialStack.add(root); - } - - public void run() { - walk(program); - } - }.run(); - Map> methodCallStack = getMethodCallStack(label); - methodCallStack.put(root, ImmutableList.nil().append(initialStack)); - } - } - - /** - * Returns the method {@link Node}s of method calls for which its return should be ignored. If - * not already available an empty method {@link Set} is created. - * - * @param ruleApp The {@link RuleApp} which modifies a modality {@link JTerm} with a - * {@link SymbolicExecutionTermLabel}. - * @return The {@link Set} of {@link Node}s to ignore its return. - */ - protected Set getMethodReturnsToIgnore(RuleApp ruleApp) { - SymbolicExecutionTermLabel label = SymbolicExecutionUtil.getSymbolicExecutionLabel(ruleApp); - return getMethodReturnsToIgnore(label); - } - - /** - * Returns the method {@link Node}s of method calls for which its return should be ignored. If - * not already available an empty method {@link Set} is created. - * - * @param label The {@link SymbolicExecutionTermLabel} which provides the ID. - * @return The {@link Set} of {@link Node}s to ignore its return. - */ - protected Set getMethodReturnsToIgnore(SymbolicExecutionTermLabel label) { - assert label != null : "No symbolic execuion term label provided"; - return getMethodReturnsToIgnore(label.id()); - } - - /** - * Returns the method {@link Node}s of method calls for which its return should be ignored. If - * not already available an empty method {@link Set} is created. - * - * @param id The ID. - * @return The {@link Set} of {@link Node}s to ignore its return. - */ - protected Set getMethodReturnsToIgnore(int id) { - synchronized (methodReturnsToIgnoreMap) { - Integer key = id; - Set result = - methodReturnsToIgnoreMap.computeIfAbsent(key, k -> new LinkedHashSet<>()); - return result; - } - } - - /** - * Returns the method call stack. If not already available an empty method call stack is - * created. - * - * @param ruleApp The {@link RuleApp} which modifies a modality {@link JTerm} with a - * {@link SymbolicExecutionTermLabel}. - * @return The method call stack of the ID of the modified modality {@link JTerm} with a - * {@link SymbolicExecutionTermLabel}. - */ - protected Map> getMethodCallStack( - RuleApp ruleApp) { - SymbolicExecutionTermLabel label = SymbolicExecutionUtil.getSymbolicExecutionLabel(ruleApp); - return getMethodCallStack(label); - } - - /** - * Returns the method call stack. If not already available an empty method call stack is - * created. - * - * @param label The {@link SymbolicExecutionTermLabel} which provides the ID. - * @return The method call stack of the ID of the given {@link SymbolicExecutionTermLabel}. - */ - protected Map> getMethodCallStack(SymbolicExecutionTermLabel label) { - assert label != null : "No symbolic execuion term label provided"; - return getMethodCallStack(label.id()); - } - - /** - * Returns the method call stack used for the given ID. If not already available an empty method - * call stack is created. - * - * @param id The ID. - * @return The method call stack of the given ID. - */ - protected Map> getMethodCallStack(int id) { - synchronized (methodCallStackMap) { - Integer key = id; - Map> result = - methodCallStackMap.computeIfAbsent(key, k -> new HashMap<>()); - return result; - } - } - - /** - * Frees all resources. If this method is called it is no longer possible to use the - * {@link SymbolicExecutionTreeBuilder} instance! Later usage is not checked and punished with - * exceptions. - */ - public void dispose() { - if (keyNodeMapping != null) { - keyNodeMapping.clear(); - keyNodeMapping = null; - } - if (keyNodeLoopConditionMapping != null) { - keyNodeLoopConditionMapping.clear(); - keyNodeLoopConditionMapping = null; - } - if (keyNodeBranchConditionMapping != null) { - keyNodeBranchConditionMapping.clear(); - keyNodeBranchConditionMapping = null; - } - if (methodCallStackMap != null) { - methodCallStackMap.clear(); - methodCallStackMap = null; - } - if (afterBlockMap != null) { - afterBlockMap.clear(); - afterBlockMap = null; - } - if (methodReturnsToIgnoreMap != null) { - methodReturnsToIgnoreMap.clear(); - methodReturnsToIgnoreMap = null; - } - exceptionVariable = null; - proof = null; - startNode = null; - } - - /** - * Returns the {@link Proof} from which the symbolic execution tree is extracted. - * - * @return The {@link Proof} from which the symbolic execution tree is extracted. - */ - public Proof getProof() { - return proof; - } - - /** - * Returns the start node of the symbolic execution tree. - * - * @return The start node of the symbolic execution tree. - */ - public IExecutionStart getStartNode() { - return startNode; - } - - /** - * This method must be called programmatically to update the symbolic execution tree. The first - * call will create the initial tree and further call will update the existing tree. - * - * @return The detected {@link SymbolicExecutionCompletions} during symbolic execution. - */ - public SymbolicExecutionCompletions analyse() { - SymbolicExecutionCompletions completions = new SymbolicExecutionCompletions(); - AnalyzerProofVisitor visitor = new AnalyzerProofVisitor(completions); - NodePreorderIterator iter = new NodePreorderIterator(proof.root()); - while (iter.hasNext()) { - Node node = iter.next(); - visitor.visit(proof, node); // This visitor pattern must be used because a recursive - // iteration causes StackOverflowErrors if the proof tree in - // KeY is to deep (e.g. simple list with 2000 elements - // during computation of fibonacci(7) - } - visitor.completeTree(); - visitor.injectLinks(); // Needs to be execute after the completeTree() is called. - return completions; - } - - /** - * Prunes the symbolic execution tree at the first {@link IExecutionNode} in the parent - * hierarchy of the given {@link Node} (including the Node itself). - * - * @param node {@link Node} to be pruned. - * @author Anna Filighera - * @return The {@link AbstractExecutionNode}'s which where deleted. - */ - public Set> prune(Node node) { - // search for the first node in the parent hierarchy (including the node itself) who is an - // AbstractExecutionNode - boolean pruneOnExNode = false; - IExecutionNode firstFather = getExecutionNode(node); - if (firstFather != null && firstFather != startNode) { - pruneOnExNode = true; - } else { - while (firstFather == null) { - node = node.parent(); - firstFather = getExecutionNode(node); - } - } - // determine which nodes should be pruned - ExecutionNodePreorderIterator subtreeToBePruned = - new ExecutionNodePreorderIterator(firstFather); - // include the first execution node in the hierarchy only if it was pruned on - if (!pruneOnExNode) { - subtreeToBePruned.next(); - } - Set> exNodesToDelete = new HashSet<>(); - while (subtreeToBePruned.hasNext()) { - AbstractExecutionNode exNode = (AbstractExecutionNode) subtreeToBePruned.next(); - exNodesToDelete.add(exNode); - Node correspondingNode = exNode.getProofNode(); - keyNodeMapping.remove(correspondingNode); - keyNodeLoopConditionMapping.remove(correspondingNode); - keyNodeBranchConditionMapping.remove(correspondingNode); - SymbolicExecutionTermLabel label = SymbolicExecutionUtil - .getSymbolicExecutionLabel(correspondingNode.getAppliedRuleApp()); - if (label != null) { - methodCallStackMap.remove(label.id()); - afterBlockMap.remove(label.id()); - methodReturnsToIgnoreMap.remove(label.id()); - } - } - // remove all parent-child-references of pruned nodes and links - for (AbstractExecutionNode exNode : exNodesToDelete) { - // remove all parent-child-references of pruned nodes - AbstractExecutionNode exParent = exNode.getParent(); - if (exParent != null) { - exParent.removeChild(exNode); - exNode.setParent(null); - } - // Remove outgoing links - if (!exNode.getOutgoingLinks().isEmpty()) { - for (IExecutionLink link : exNode.getOutgoingLinks()) { - ((AbstractExecutionNode) link.getSource()).removeOutgoingLink(link); - ((AbstractExecutionNode) link.getTarget()).removeIncomingLink(link); - } - } - // Remove incoming links - if (!exNode.getIncomingLinks().isEmpty()) { - for (IExecutionLink link : exNode.getIncomingLinks()) { - ((AbstractExecutionNode) link.getSource()).removeOutgoingLink(link); - ((AbstractExecutionNode) link.getTarget()).removeIncomingLink(link); - } - } - } - // remove all other references to deleted nodes - ExecutionNodePreorderIterator remainingExNodes = - new ExecutionNodePreorderIterator(startNode); - while (remainingExNodes.hasNext()) { - IExecutionNode exNode = remainingExNodes.next(); - LinkedList> deletedBlocks = - new LinkedList<>(); - // remove pruned completed blocks - for (IExecutionBlockStartNode block : exNode.getCompletedBlocks()) { - if (exNodesToDelete.contains(block)) { - deletedBlocks.add(block); - } - } - if (exNode instanceof AbstractExecutionNode exNodeCast) { - for (IExecutionBlockStartNode block : deletedBlocks) { - exNodeCast.removeCompletedBlock(block); - } - } - // remove all pruned method returns - if (exNode instanceof ExecutionMethodCall) { - Iterator> iter = - ((ExecutionMethodCall) exNode).getMethodReturns().iterator(); - LinkedList> removed = - new LinkedList<>(); - while (iter.hasNext()) { - IExecutionBaseMethodReturn methodReturn = iter.next(); - if (exNodesToDelete.contains(methodReturn)) { - removed.add(methodReturn); - } - } - for (IExecutionBaseMethodReturn deleted : removed) { - ((ExecutionMethodCall) exNode).removeMethodReturn(deleted); - } - } - // remove all pruned execution nodes that complete a still existing block - if (exNode instanceof AbstractExecutionBlockStartNode) { - Iterator> iter = - ((AbstractExecutionBlockStartNode) exNode).getBlockCompletions().iterator(); - LinkedList> removed = new LinkedList<>(); - while (iter.hasNext()) { - IExecutionNode completion = iter.next(); - if (exNodesToDelete.contains(completion)) { - removed.add(completion); - } - } - for (IExecutionNode deleted : removed) { - ((AbstractExecutionBlockStartNode) exNode).removeBlockCompletion(deleted); - } - } - // remove all pruned terminations - if (exNode instanceof ExecutionStart) { - Iterator iter = - ((ExecutionStart) exNode).getTerminations().iterator(); - LinkedList removed = new LinkedList<>(); - while (iter.hasNext()) { - IExecutionTermination termination = iter.next(); - if (exNodesToDelete.contains(termination)) { - removed.add(termination); - } - } - for (IExecutionTermination deleted : removed) { - ((ExecutionStart) exNode).removeTermination(deleted); - } - } - } - return exNodesToDelete; - } - - /** - * Instances of this class are returned by {@link SymbolicExecutionTreeBuilder#analyse()} to - * inform about newly completed blocks and returned methods. - * - * @author Martin Hentschel - */ - public static class SymbolicExecutionCompletions { - /** - * The newly block completion. - */ - private final List> blockCompletions = - new LinkedList<>(); - - /** - * The newly methods return. - */ - private final List> methodReturns = - new LinkedList<>(); - - /** - * Returns the newly block completion. - * - * @return The newly block completion. - */ - public IExecutionNode[] getBlockCompletions() { - return blockCompletions.toArray(new IExecutionNode[0]); - } - - /** - * Registers the newly completed block. - * - * @param blockCompletion The new block completion. - */ - private void addBlockCompletion(IExecutionNode blockCompletion) { - if (blockCompletion != null) { - blockCompletions.add(blockCompletion); - } - } - - /** - * Returns the newly methods return. - * - * @return The newly methods return. - */ - public IExecutionBaseMethodReturn[] getMethodReturns() { - return methodReturns.toArray(new IExecutionBaseMethodReturn[0]); - } - - /** - * Registers the newly methods return. - * - * @param methodReturn The method return. - */ - private void addMethodReturn(IExecutionBaseMethodReturn methodReturn) { - if (methodReturn != null) { - methodReturns.add(methodReturn); - } - } - } - - /** - * This {@link ProofVisitor} is used to transfer the proof tree in KeY into - * {@link IExecutionNode}s which forms the symbolic execution tree. - * - * @author Martin Hentschel - */ - private class AnalyzerProofVisitor implements ProofVisitor { - /** - * The {@link SymbolicExecutionCompletions} to update. - */ - private final SymbolicExecutionCompletions completions; - - /** - * Maps the {@link Node} in KeY's proof tree to the {@link IExecutionNode} of the symbolic - * execution tree where the {@link Node}s children should be added to. - */ - private final Map> addToMapping = - new LinkedHashMap<>(); - - /** - * This utility {@link Map} helps to find a {@link List} in {@link #branchConditionsStack} - * for the given parent node to that elements in the {@link List} should be added. - */ - private final Map, List> parentToBranchConditionMapping = - new LinkedHashMap<>(); - - /** - * Contains all {@link Node}s which are closed after a join. - */ - private ImmutableList joinNodes = ImmutableList.nil(); - - /** - * Constructor. - * - * @param completions The {@link SymbolicExecutionCompletions} to update. - */ - public AnalyzerProofVisitor(SymbolicExecutionCompletions completions) { - this.completions = completions; - } - - /** - * {@inheritDoc} - */ - @Override - public void visit(Proof proof, Node visitedNode) { - // Find the parent node (IExecutionNode) to that the execution tree model representation - // of the given KeY's proof tree node should be added. - AbstractExecutionNode parentToAddTo = keyNodeBranchConditionMapping.get(visitedNode); - if (parentToAddTo == null) { - Node parent = visitedNode.parent(); - if (parent != null) { - parentToAddTo = addToMapping.get(parent); - } else { - parentToAddTo = startNode; - } - } - // Transform the current proof node into a symbolic execution tree node if possible - parentToAddTo = analyzeNode(visitedNode, parentToAddTo, completions); - addToMapping.put(visitedNode, parentToAddTo); - // Check if the current node has branch conditions which should be added to the - // execution tree model - if (!(parentToAddTo instanceof IExecutionStart) && // Ignore branch conditions before - // starting with code execution - hasBranchCondition(visitedNode)) { - Iterator iter = visitedNode.childrenIterator(); - while (iter.hasNext()) { - Node childNode = iter.next(); - if (!keyNodeBranchConditionMapping.containsKey(childNode)) { - if (!shouldPrune(visitedNode)) { // Filter out branches that are closed - // Create branch condition - String additionalBranchLabel = null; - if (visitedNode.getAppliedRuleApp().rule() instanceof BuiltInRule) { - additionalBranchLabel = childNode.getNodeInfo().getBranchLabel(); - } - ExecutionBranchCondition condition = new ExecutionBranchCondition( - settings, childNode, additionalBranchLabel); - // Add branch condition to the branch condition attributes for later - // adding to the proof tree. This is required for instance to filter out - // branches after the symbolic execution has finished. - List list = - parentToBranchConditionMapping.get(parentToAddTo); - if (list == null) { - list = new LinkedList<>(); - branchConditionsStack.addFirst( - new DefaultEntry<>( - parentToAddTo, list)); - parentToBranchConditionMapping.put(parentToAddTo, list); - } - list.add(condition); - keyNodeBranchConditionMapping.put(childNode, condition); - // Set call stack on new created node if possible - if (SymbolicExecutionUtil - .hasSymbolicExecutionLabel(visitedNode.getAppliedRuleApp())) { - condition.setCallStack(createCallStack(visitedNode)); - } - } - } - } - } - if (SymbolicExecutionUtil.isJoin(visitedNode.getAppliedRuleApp())) { - joinNodes = joinNodes.prepend(visitedNode); - } - } - - /** - * Instantiates all missing {@link IExecutionLink}s and injects them into the symbolic - * execution tree. - */ - public void injectLinks() { - for (Node node : joinNodes) { - MergeRuleBuiltInRuleApp ruleApp = - (MergeRuleBuiltInRuleApp) node.getAppliedRuleApp(); - IExecutionNode source = getBestExecutionNode(node); - if (source != null) { - for (MergePartner partner : ruleApp.getMergePartners()) { - IExecutionNode target = getBestExecutionNode(partner.getGoal().node()); - // Ignore branch conditions below join node - while (target instanceof IExecutionBranchCondition) { - target = getBestExecutionNode(target.getProofNode().parent()); - } - if (target != null) { - IExecutionLink link = source.getOutgoingLink(target); - if (link == null) { - link = new ExecutionLink(target, source); // Source and target needs - // to be swapped in the - // symbolic execution tree - ((AbstractExecutionNode) link.getTarget()).addIncomingLink(link); - ((AbstractExecutionNode) link.getSource()).addOutgoingLink(link); - } - } - } - } - } - } - - /** - *

- * Completes the execution tree model after all {@link Node}s were visited in - * {@link #visit(Proof, Node)}. The task of this method is to add - * {@link ExecutionBranchCondition} to the model if they have at least one child. - *

- *

- * Fore more details have a look at the documentation of {@link #branchConditionsStack}. - *

- */ - public void completeTree() { - Iterator, List>> stackIter = - branchConditionsStack.iterator(); - while (stackIter.hasNext()) { - Entry, List> entry = - stackIter.next(); - Iterator bcIter = entry.getValue().iterator(); - while (bcIter.hasNext()) { - ExecutionBranchCondition condition = bcIter.next(); - AbstractExecutionNode[] conditionsChildren = condition.getChildren(); - if (!ArrayUtil.isEmpty(conditionsChildren)) { - if (settings.mergeBranchConditions()) { - // Merge branch conditions if possible - boolean addingToParentRequired = false; - for (AbstractExecutionNode child : conditionsChildren) { - if (child instanceof ExecutionBranchCondition bcChild) { - bcChild.addMergedProofNode(condition.getProofNode()); - // Move child one up in hierarchy - addChild(entry.getKey(), child); - finishBlockCompletion(condition); - } else { - // Adding of current branch condition is required because non - // branch condition children are available - addingToParentRequired = true; - } - } - if (addingToParentRequired) { - addChild(entry.getKey(), condition); - finishBlockCompletion(condition); - } - } else { - // Add all branch conditions without merging - addChild(entry.getKey(), condition); - finishBlockCompletion(condition); - } - bcIter.remove(); - } - } - if (entry.getValue().isEmpty()) { - stackIter.remove(); - } - } - } - - protected void finishBlockCompletion(IExecutionBranchCondition node) { - for (IExecutionBlockStartNode start : node.getCompletedBlocks()) { - // BranchConditions are updated when they are added to the SET. - ((AbstractExecutionBlockStartNode) start).addBlockCompletion(node); - completions.addBlockCompletion(node); - } - } - } - - /** - *

- * Analyzes the given {@link Proof} and his contained proof tree by filling the start node - * {@link SymbolicExecutionTreeBuilder#getStartNode()} with {@link IExecutionNode}s which are - * instantiated if a {@link Node} in KeY's proof tree applies a rule of symbolic execution. - *

- *

- * Attention : A correct pruning requires at the moment that the Taclet Option - * "runtimeExceptions" is set to "runtimeExceptions:allow". Alternatively it is required to - * modify rule {@code assignment_to_reference_array_component} in file {@code javaRules.key} by - * uncommenting - * {@code \add (!(#v=null) & lt(#se, length(#v)) & geq(#se,0) & arrayStoreValid(#v, #se0)==>)}. - *

- * - * @param node The {@link Node} to analyze. - * @param parentToAddTo The parent {@link IExecutionNode} to add the created execution tree - * model representation ({@link IExecutionNode}) of the given {@link Node} to. - * @param completions The {@link SymbolicExecutionCompletions} to update. - * @return The {@link IExecutionNode} to which children of the current {@link Node} should be - * added. If no execution tree model representation was created the return value is - * identical to the given one (parentToAddTo). - */ - protected AbstractExecutionNode analyzeNode(Node node, - AbstractExecutionNode parentToAddTo, SymbolicExecutionCompletions completions) { - // Analyze node - if (!shouldPrune(node)) { // Prune closed branches because they are invalid - // Get required information - NodeInfo info = node.getNodeInfo(); - SourceElement statement = info.getActiveStatement(); - // Update call stack - updateCallStack(node, statement); - // Update block map - RuleApp currentOrFutureRuleApplication = - node.getAppliedRuleApp(); - if (currentOrFutureRuleApplication == null && node != proof.root()) { // Executing - // peekNext() on - // the root - // crashes the - // tests for - // unknown - // reasons. - Goal goal = proof.getOpenGoal(node); - if (goal != null) { - currentOrFutureRuleApplication = goal.getRuleAppManager().peekNext(); - } - } - if (SymbolicExecutionUtil.isSymbolicExecutionTreeNode(node, - currentOrFutureRuleApplication)) { - Map>> completedBlocks = - updateAfterBlockMap(node, currentOrFutureRuleApplication); - if (completedBlocks != null) { - for (Entry>> entry : completedBlocks - .entrySet()) { - for (IExecutionNode entryNode : entry.getValue()) { - if (entryNode != parentToAddTo) { // Ignore empty blocks - if (entryNode instanceof AbstractExecutionBlockStartNode) { - parentToAddTo.addCompletedBlock( - (AbstractExecutionBlockStartNode) entryNode); - if (!(parentToAddTo instanceof IExecutionBranchCondition)) { - // BranchConditions are updated when they are added to the - // SET. - ((AbstractExecutionBlockStartNode) entryNode) - .addBlockCompletion(parentToAddTo); - completions.addBlockCompletion(parentToAddTo); - } - } - } - } - } - } - } - // Check if the node is already contained in the symbolic execution tree - AbstractExecutionNode executionNode = keyNodeMapping.get(node); - if (executionNode == null) { - // Try to create a new node - executionNode = - createExecutionTreeModelRepresentation(parentToAddTo, node, statement); - parentToAddTo = addNodeToTreeAndUpdateParent(node, parentToAddTo, executionNode); - // Check if execution node is a method return - executionNode = createMehtodReturn(parentToAddTo, node, statement, completions); - parentToAddTo = addNodeToTreeAndUpdateParent(node, parentToAddTo, executionNode); - } else { - parentToAddTo = executionNode; - } - // Check if loop condition is available - boolean isLoopCondition = false; - if (SymbolicExecutionUtil.hasLoopCondition(node, node.getAppliedRuleApp(), statement)) { - if (((LoopStatement) statement).getGuardExpression() - .getPositionInfo() != PositionInfo.UNDEFINED - && !SymbolicExecutionUtil.isDoWhileLoopCondition(node, statement) - && !SymbolicExecutionUtil.isForLoopCondition(node, statement)) { - // do while and for loops exists only in the first iteration where the loop - // condition is not evaluated. They are transfered into while loops in later - // proof nodes. - isLoopCondition = true; - } - } - // Check if loop condition is available after loop invariant (rewritten into if - // statement) - if (statement instanceof If - && ((If) statement).getExpression().getPositionInfo() != PositionInfo.UNDEFINED - && SymbolicExecutionUtil - .getSymbolicExecutionLabel(node.getAppliedRuleApp()) != null - && searchDirectParentBodyPreservesInvariantBranchCondition( - parentToAddTo) != null) { - isLoopCondition = true; - } - // Create loop condition if required - if (isLoopCondition) { - ExecutionLoopCondition condition = keyNodeLoopConditionMapping.get(node); - if (condition == null) { - condition = new ExecutionLoopCondition(settings, node); - addChild(parentToAddTo, condition); - keyNodeLoopConditionMapping.put(node, condition); - // Set call stack on new created node - condition.setCallStack(createCallStack(node)); - Pair secondPair = - SymbolicExecutionUtil.computeSecondStatement(node.getAppliedRuleApp()); - addToBlockMap(node, condition, secondPair.first, secondPair.second, statement); - } - parentToAddTo = condition; - } - } - return parentToAddTo; - } - - /** - * Searches the direct parent {@link IExecutionBranchCondition} representing the 'Body Preserves - * Invariant' branch. - * - * @param current The {@link IExecutionNode} to check its parent - * {@link IExecutionBranchCondition}s. - * @return The found {@link IExecutionBranchCondition} or {@code null} if not available. - */ - protected IExecutionBranchCondition searchDirectParentBodyPreservesInvariantBranchCondition( - IExecutionNode current) { - Iterator, List>> iter = - branchConditionsStack.iterator(); - while (current instanceof IExecutionBranchCondition) { - if (WhileInvariantRule.BODY_PRESERVES_INVARIANT_LABEL - .equals(current.getProofNode().getNodeInfo().getBranchLabel())) { - return (IExecutionBranchCondition) current; - } else { - // Search parent (current.getParent() is not yet defined) - boolean parentFound = false; - while (!parentFound && iter.hasNext()) { - Entry, List> entry = - iter.next(); - if (entry.getValue().contains(current)) { - current = entry.getKey(); - parentFound = true; - } - } - if (!parentFound) { - current = null; - } - } - } - return null; - } - - protected boolean shouldPrune(Node node) { - if (isUninterpretedPredicateUsed) { - return node.isClosed(); - } else { - return false; - } - } - - /** - * Adds the new created {@link AbstractExecutionNode} to the symbolic execution tree if - * available and returns the new parent for future detected nodes. - * - * @param node The {@link Node}. - * @param parentToAddTo The parent {@link AbstractExecutionNode}. - * @param executionNode The new child {@link AbstractExecutionNode}. - * @return The new parent {@link AbstractExecutionNode}. - */ - protected AbstractExecutionNode addNodeToTreeAndUpdateParent(Node node, - AbstractExecutionNode parentToAddTo, AbstractExecutionNode executionNode) { - // Check if a new node was created - if (executionNode != null) { - // Add new node to symbolic execution tree - addChild(parentToAddTo, executionNode); - if (keyNodeMapping.get(node) != null) { - if (multipleExecutionNodes.containsKey(node)) { - multipleExecutionNodes.get(node).add(executionNode); - } else { - LinkedList> list = - new LinkedList<>(); - list.add(keyNodeMapping.get(node)); - list.add(executionNode); - multipleExecutionNodes.put(node, list); - } - } - keyNodeMapping.put(node, executionNode); - parentToAddTo = executionNode; - // Set call stack on new created node - executionNode.setCallStack(createCallStack(node)); - } - return parentToAddTo; - } - - /** - * Updates the call stack ({@link #getMethodCallStack}) if the given {@link Node} in KeY's proof - * tree is a method call. - * - * @param node The current {@link Node}. - * @param statement The statement ({@link SourceElement}). - */ - protected void updateCallStack(Node node, SourceElement statement) { - SymbolicExecutionTermLabel label = - SymbolicExecutionUtil.getSymbolicExecutionLabel(node.getAppliedRuleApp()); - if (label != null && SymbolicExecutionUtil.isMethodCallNode(node, node.getAppliedRuleApp(), - statement, true)) { - // Remove outdated methods from call stack - int currentLevel = SymbolicExecutionUtil.computeStackSize(node.getAppliedRuleApp()); - Map> methodCallStack = getMethodCallStack(label); - ImmutableList stack = findMethodCallStack(methodCallStack, node); - if (stack != null) { - while (stack.size() > currentLevel) { - stack = stack.tail(); - } - } else { - stack = ImmutableList.nil(); - } - // Add new node to call stack. - stack = stack.prepend(node); - methodCallStack.put(node, stack); - } - } - - protected ImmutableList findMethodCallStack( - Map> methodCallStack, Node node) { - ImmutableList result = null; - while (result == null && node != null) { - result = methodCallStack.get(node); - node = node.parent(); - } - return result; - } - - /** - * Creates a new execution tree model representation ({@link IExecutionNode}) if possible for - * the given {@link Node} in KeY's proof tree. - * - * @param parent The parent {@link IExecutionNode}. - * @param node The {@link Node} in the proof tree of KeY. - * @param statement The actual statement ({@link SourceElement}). - * @return The created {@link IExecutionNode} or {@code null} if the {@link Node} should be - * ignored in the symbolic execution tree. - */ - protected AbstractExecutionNode createExecutionTreeModelRepresentation( - AbstractExecutionNode parent, Node node, SourceElement statement) { - AbstractExecutionNode result = null; - // Make sure that a statement (SourceElement) is available. - if (SymbolicExecutionUtil.hasSymbolicExecutionLabel(node.getAppliedRuleApp())) { - if (statement != null - && !SymbolicExecutionUtil.isRuleAppToIgnore(node.getAppliedRuleApp())) { - // Get position information - PositionInfo posInfo = statement.getPositionInfo(); - // Determine the node representation and create it if one is available - if (SymbolicExecutionUtil.isMethodCallNode(node, node.getAppliedRuleApp(), - statement)) { - result = new ExecutionMethodCall(settings, node); - } else if (SymbolicExecutionUtil.isTerminationNode(node, - node.getAppliedRuleApp())) { - if (!SymbolicExecutionUtil.hasLoopBodyLabel(node.getAppliedRuleApp())) { - JTerm modalityTerm = TermBuilder.goBelowUpdates( - (JTerm) node.getAppliedRuleApp().posInOccurrence().subTerm()); - BlockContractValidityTermLabel bcLabel = - (BlockContractValidityTermLabel) modalityTerm - .getLabel(BlockContractValidityTermLabel.NAME); - result = new ExecutionTermination(settings, node, - bcLabel != null - ? MiscTools.findActualVariable(bcLabel.exceptionVariable(), - node) - : exceptionVariable, - null); - startNode.addTermination((ExecutionTermination) result); - } - } else if (SymbolicExecutionUtil.isBranchStatement(node, node.getAppliedRuleApp(), - statement, posInfo)) { - if (isNotInImplicitMethod(node)) { - result = new ExecutionBranchStatement(settings, node); - addToBlockMap(node, (ExecutionBranchStatement) result); - } - } else if (SymbolicExecutionUtil.isLoopStatement(node, node.getAppliedRuleApp(), - statement, posInfo)) { - if (isNotInImplicitMethod(node)) { - result = new ExecutionLoopStatement(settings, node); - addToBlockMap(node, (ExecutionLoopStatement) result); - } - } else if (SymbolicExecutionUtil.isStatementNode(node, node.getAppliedRuleApp(), - statement, posInfo)) { - if (isNotInImplicitMethod(node)) { - result = new ExecutionStatement(settings, node); - } - } - } else if (SymbolicExecutionUtil.isOperationContract(node, node.getAppliedRuleApp())) { - if (isNotInImplicitMethod(node)) { - result = new ExecutionOperationContract(settings, node); - } - } else if (SymbolicExecutionUtil.isLoopInvariant(node, node.getAppliedRuleApp())) { - if (isNotInImplicitMethod(node)) { - result = new ExecutionLoopInvariant(settings, node); - // Initialize new call stack of the preserves loop invariant branch - initNewLoopBodyMethodCallStack(node); - } - } else if (SymbolicExecutionUtil.isBlockSpecificationElement(node, - node.getAppliedRuleApp())) { - if (isNotInImplicitMethod(node)) { - result = new ExecutionAuxiliaryContract(settings, node); - // Initialize new call stack of the validity branch - initNewValidiityMethodCallStack(node); - } - } else if (SymbolicExecutionUtil.isCloseAfterJoin(node.getAppliedRuleApp())) { - result = new ExecutionJoin(settings, node); - } - } else if (SymbolicExecutionUtil.isLoopBodyTermination(node, node.getAppliedRuleApp())) { - result = new ExecutionTermination(settings, node, exceptionVariable, - TerminationKind.LOOP_BODY); - startNode.addTermination((ExecutionTermination) result); - } - return result; - } - - /** - * Adds the given {@link AbstractExecutionNode} add reason for a new block to the block maps. - * - * @param node The current {@link Node}. - * @param blockStartNode The {@link AbstractExecutionNode} to add. - */ - protected void addToBlockMap(Node node, AbstractExecutionBlockStartNode blockStartNode) { - Pair secondPair = - SymbolicExecutionUtil.computeSecondStatement(node.getAppliedRuleApp()); - addToBlockMap(node, blockStartNode, secondPair.first, secondPair.second); - } - - /** - * Adds the given {@link AbstractExecutionNode} add reason for a new block to the block maps. - * - * @param node The current {@link Node}. - * @param blockStartNode The {@link AbstractExecutionNode} to add. - * @param stackSize TODO - * @param sourceElements TODO - */ - protected void addToBlockMap(Node node, AbstractExecutionBlockStartNode blockStartNode, - int stackSize, SourceElement... sourceElements) { - boolean blockPossible = checkBlockPossibility(node, stackSize, sourceElements); - if (blockPossible) { - if (sourceElements != null && sourceElements.length >= 1) { - SymbolicExecutionTermLabel label = - SymbolicExecutionUtil.getSymbolicExecutionLabel(node.getAppliedRuleApp()); - // Find most recent map - Map>>> afterBlockMaps = - getAfterBlockMaps(label); - Map>> afterBlockMap = - findAfterBlockMap(afterBlockMaps, node); - if (afterBlockMap == null) { - afterBlockMap = new LinkedHashMap<>(); - } else { - afterBlockMap = new LinkedHashMap<>( - afterBlockMap); - } - afterBlockMaps.put(node, afterBlockMap); - JavaPair secondPair = new JavaPair(stackSize, - ImmutableList.nil().append(sourceElements)); - ImmutableList> blockStartList = afterBlockMap.get(secondPair); - if (blockStartList == null) { - blockStartList = ImmutableList.nil(); - } - blockStartList = blockStartList.append(blockStartNode); - afterBlockMap.put(secondPair, blockStartList); - } - } - blockStartNode.setBlockOpened(blockPossible); - } - - /** - * Checks if it possible that the current {@link Node} opens a block. - * - * @param node The current {@link Node}. - * @param expectedStackSize The expected stack size. - * @param expectedSourceElements The expected after block {@link SourceElement}s. - * @return {@code false} A block is definitively not possible, {@code true} a block is or might - * be possible. - */ - private boolean checkBlockPossibility(Node node, int expectedStackSize, - SourceElement... expectedSourceElements) { - if (node != null && expectedSourceElements != null && expectedSourceElements.length >= 1) { - RuleApp ruleApp = null; - boolean seNodeFound = false; - // Find single symbolic execution child node - while (!seNodeFound && node != null) { - // Select new child node - if (node.childrenCount() > 1) { - int i = 0; - int openChildCount = 0; - Node nextNode = null; - while (i < node.childrenCount()) { - Node child = node.child(i); - if (!child.isClosed()) { - openChildCount++; - nextNode = child; - } - i++; - } - if (openChildCount == 1) { - node = nextNode; - } else { - node = null; // Stop search because multiple open branches indicate that a - // block is required. - } - } else if (node.childrenCount() == 1) { - node = node.child(0); - } else { - node = null; - } - // Check selected child - if (node != null) { - if (node.childrenCount() == 0) { - Goal goal = proof.getOpenGoal(node); - ruleApp = goal.getRuleAppManager().peekNext(); - } else { - ruleApp = node.getAppliedRuleApp(); - } - seNodeFound = SymbolicExecutionUtil.isSymbolicExecutionTreeNode(node, ruleApp); - } - } - // If SE node is found check if the after block state is reached. - if (seNodeFound) { - int currentStackSize = SymbolicExecutionUtil.computeStackSize(ruleApp); - SourceElement currentActiveStatement = NodeInfo.computeActiveStatement(ruleApp); - JTerm term = (JTerm) ruleApp.posInOccurrence().subTerm(); - JavaBlock currentJavaBlock = term.javaBlock(); - MethodFrame currentInnerMostMethodFrame = - JavaTools.getInnermostMethodFrame(currentJavaBlock, proof.getServices()); - return !isAfterBlockReached(currentStackSize, currentInnerMostMethodFrame, - currentActiveStatement, expectedStackSize, - ImmutableList.nil().append(expectedSourceElements).iterator()); - } else { - return true; // No single SE node reached, so allow blocks - } - } else { - return true; // Don't know, so allow blocks - } - } - - /** - * Searches the relevant after block {@link Map} in the given once for the given {@link Node}. - * - * @param afterBlockMaps The available after sblock {@link Map}s. - * @param node The {@link Node} for which the block {@link Map} is requested. - * @return The found after block {@link Map} or {@code null} if not available. - */ - protected Map>> findAfterBlockMap( - Map>>> afterBlockMaps, Node node) { - if (afterBlockMaps != null) { - Map>> result = null; - while (result == null && node != null) { - result = afterBlockMaps.get(node); - node = node.parent(); - } - return result; - } else { - return null; - } - } - - /** - * Returns the after block map. If not already available an empty block map is created. - * - * @param label The {@link SymbolicExecutionTermLabel} which provides the ID. - * @return The after block map of the ID of the given {@link SymbolicExecutionTermLabel}. - */ - protected Map>>> getAfterBlockMaps( - SymbolicExecutionTermLabel label) { - assert label != null : "No symbolic execuion term label provided"; - return getAfterBlockMaps(label.id()); - } - - /** - * Returns the after block map used for the given ID. If not already available an empty block - * map is created. - * - * @param id The ID. - * @return The after block map of the given ID. - */ - protected Map>>> getAfterBlockMaps(int id) { - synchronized (afterBlockMap) { - Integer key = id; - Map>>> result = - afterBlockMap.computeIfAbsent(key, k -> new LinkedHashMap<>()); - return result; - } - } - - /** - * Updates the after block maps when a symbolic execution tree node is detected. - * - * @param node The {@link Node} which is a symbolic execution tree node. - * @param ruleApp The {@link RuleApp} to consider. - * @return The now completed blocks. - */ - protected Map>> updateAfterBlockMap(Node node, - RuleApp ruleApp) { - Map>> completedBlocks = - new LinkedHashMap<>(); - SymbolicExecutionTermLabel label = SymbolicExecutionUtil.getSymbolicExecutionLabel(ruleApp); - if (label != null) { - // Find most recent map - Map>>> afterBlockMaps = - getAfterBlockMaps(label); - Map>> oldBlockMap = - findAfterBlockMap(afterBlockMaps, node); - if (oldBlockMap != null) { - // Compute stack and active statement - int stackSize = SymbolicExecutionUtil.computeStackSize(ruleApp); - SourceElement activeStatement = NodeInfo.computeActiveStatement(ruleApp); - JTerm term = (JTerm) ruleApp.posInOccurrence().subTerm(); - JavaBlock javaBlock = term.javaBlock(); - MethodFrame innerMostMethodFrame = - JavaTools.getInnermostMethodFrame(javaBlock, proof.getServices()); - // Create copy with values below level - Map>> newBlockMap = - new LinkedHashMap<>(); - if (oldBlockMap != null) { - for (Entry>> entry : oldBlockMap - .entrySet()) { - if (!isContained(entry.getValue(), node)) { // Ensure that with stepwise - // execution loops are not - // completed by their own. - boolean done = isAfterBlockReached(stackSize, innerMostMethodFrame, - activeStatement, entry.getKey()); - if (done) { - completedBlocks.put(entry.getKey(), entry.getValue()); - } else { - newBlockMap.put(entry.getKey(), entry.getValue()); - } - } - } - } - // Add new block - afterBlockMaps.put(node, newBlockMap); - } - } - return completedBlocks; - } - - /** - * Checks if one of the give {@link IExecutionNode}s represents the given {@link Node}. - * - * @param list The {@link IExecutionNode}s to check. - * @param node The {@link Node} to check for. - * @return {@code true} is contained, {@code false} is not contained. - */ - protected boolean isContained(ImmutableList> list, Node node) { - boolean contained = false; - Iterator> iter = list.iterator(); - while (!contained && iter.hasNext()) { - IExecutionNode next = iter.next(); - if (next.getProofNode() == node) { - contained = true; - } - } - return contained; - } - - /** - * Checks if the after block condition is fulfilled. - * - * @param currentStackSize The current stack size. - * @param currentInnerMostMethodFrame The current inner most {@link MethodFrame}. - * @param currentActiveStatement The current active statement. - * @param expectedPair The {@link JavaPair} specifying the after block statements. - * @return {@code true} after block is reached, {@code false} after block is not reached. - */ - protected boolean isAfterBlockReached(int currentStackSize, - MethodFrame currentInnerMostMethodFrame, SourceElement currentActiveStatement, - JavaPair expectedPair) { - return isAfterBlockReached(currentStackSize, currentInnerMostMethodFrame, - currentActiveStatement, expectedPair.first, expectedPair.second.iterator()); - } - - /** - * Checks if the after block condition is fulfilled. - * - * @param currentStackSize The current stack size. - * @param currentInnerMostMethodFrame The current inner most {@link MethodFrame}. - * @param currentActiveStatement The current active statement. - * @param expectedStackSize The expected stack size. - * @param expectedStatementsIterator An {@link Iterator} with the expected after block - * statements. - * @return {@code true} after block is reached, {@code false} after block is not reached. - */ - protected boolean isAfterBlockReached(int currentStackSize, - MethodFrame currentInnerMostMethodFrame, SourceElement currentActiveStatement, - int expectedStackSize, Iterator expectedStatementsIterator) { - boolean done = false; - if (expectedStackSize > currentStackSize) { - done = true; - } else { - while (!done && expectedStatementsIterator.hasNext()) { - SourceElement next = expectedStatementsIterator.next(); - // Comparison by == is not possible since loops are recreated - if (SymbolicExecutionUtil.equalsWithPosition(next, currentActiveStatement)) { - done = true; - } else if (expectedStackSize == currentStackSize - && (currentInnerMostMethodFrame != null - && currentInnerMostMethodFrame.getBody().isEmpty() - || (next != null && !SymbolicExecutionUtil.containsStatement( - currentInnerMostMethodFrame, next, proof.getServices())))) { - done = true; - } - } - } - return done; - } - - /** - * Creates an method return node. - * - * @param parent The parent {@link AbstractExecutionNode}. - * @param node The {@link Node} which represents a method return. - * @param statement The currently active {@link SourceElement}. - * @param completions The {@link SymbolicExecutionCompletions} to update. - * @return The created {@link AbstractExecutionMethodReturn}. - */ - protected AbstractExecutionMethodReturn createMehtodReturn(AbstractExecutionNode parent, - Node node, SourceElement statement, SymbolicExecutionCompletions completions) { - AbstractExecutionMethodReturn result = null; - if (SymbolicExecutionUtil.hasSymbolicExecutionLabel(node.getAppliedRuleApp())) { - if (statement != null - && !SymbolicExecutionUtil.isRuleAppToIgnore(node.getAppliedRuleApp())) { - boolean methodReturn = - SymbolicExecutionUtil.isMethodReturnNode(node, node.getAppliedRuleApp()); - boolean exceptionalMethodReturn = !methodReturn && SymbolicExecutionUtil - .isExceptionalMethodReturnNode(node, node.getAppliedRuleApp()); - if (methodReturn || exceptionalMethodReturn) { - // Find the Node in the proof tree of KeY for that this Node is the return - Node callNode = findMethodCallNode(node, node.getAppliedRuleApp()); - if (callNode != null) { - // Make sure that the return should not be ignored - Set methodReturnsToIgnore = - getMethodReturnsToIgnore(node.getAppliedRuleApp()); - if (!methodReturnsToIgnore.contains(callNode)) { - // Find the call Node representation in SED, if not available ignore it. - IExecutionNode callSEDNode = keyNodeMapping.get(callNode); - if (callSEDNode instanceof ExecutionMethodCall) { // Could be the start - // node if the initial - // sequent already - // contains some - // method frames. - if (methodReturn) { - result = new ExecutionMethodReturn(settings, node, - (ExecutionMethodCall) callSEDNode); - completions.addMethodReturn(result); - } else { - result = new ExecutionExceptionalMethodReturn(settings, node, - (ExecutionMethodCall) callSEDNode); - completions.addMethodReturn(result); - } - } - } - } - } - } - } - return result; - } - - /** - * Checks if the given {@link Node} is not in an implicit method. - * - * @param node The {@link Node} to check. - * @return {@code true} is not implicit, {@code false} is implicit - */ - protected boolean isNotInImplicitMethod(Node node) { - final JTerm term = (JTerm) node.getAppliedRuleApp().posInOccurrence().subTerm(); - JTerm termNoUpdates = TermBuilder.goBelowUpdates(term); - Services services = proof.getServices(); - IExecutionContext ec = - JavaTools.getInnermostExecutionContext(termNoUpdates.javaBlock(), services); - IProgramMethod pm = ec.getMethodContext(); - return SymbolicExecutionUtil.isNotImplicit(services, pm); - } - - /** - * This method initializes the method call stack of loop body modalities with the values from - * the original call stack. For each {@link MethodFrame} in the new modality is its method call - * {@link Node} added to the new method call stack. - * - * @param node The {@link Node} on which the loop invariant rule is applied. - */ - protected void initNewLoopBodyMethodCallStack(Node node) { - PosInOccurrence childPIO = SymbolicExecutionUtil - .findModalityWithMaxSymbolicExecutionLabelId(node.child(1).sequent()); - initNewMethodCallStack(node, childPIO); - } - - /** - * This method initializes the method call stack of validity modalities with the values from the - * original call stack. For each {@link MethodFrame} in the new modality is its method call - * {@link Node} added to the new method call stack. - * - * @param node The {@link Node} on which the block contract rule is applied. - */ - protected void initNewValidiityMethodCallStack(Node node) { - PosInOccurrence childPIO = SymbolicExecutionUtil - .findModalityWithMaxSymbolicExecutionLabelId(node.child(0).sequent()); - initNewMethodCallStack(node, childPIO); - } - - /** - * Initializes a new method call stack. - * - * @param currentNode The current {@link Node}. - * @param childPIO The {@link PosInOccurrence} where the modality has a new symbolic execution - * label counter. - */ - protected void initNewMethodCallStack(Node currentNode, - PosInOccurrence childPIO) { - JTerm newModality = - childPIO != null ? TermBuilder.goBelowUpdates((JTerm) childPIO.subTerm()) : null; - assert newModality != null; - SymbolicExecutionTermLabel label = - SymbolicExecutionUtil.getSymbolicExecutionLabel(newModality); - assert label != null; - JavaBlock jb = newModality.javaBlock(); - MethodFrameCounterJavaASTVisitor newCounter = - new MethodFrameCounterJavaASTVisitor(jb.program(), proof.getServices()); - int newCount = newCounter.run(); - JTerm oldModalityTerm = (JTerm) currentNode.getAppliedRuleApp().posInOccurrence().subTerm(); - oldModalityTerm = TermBuilder.goBelowUpdates(oldModalityTerm); - Map> currentMethodCallStackMap = - getMethodCallStack(currentNode.getAppliedRuleApp()); - Map> newMethodCallStackMap = getMethodCallStack(label.id()); - ImmutableList currentMethodCallStack = - findMethodCallStack(currentMethodCallStackMap, currentNode); - ImmutableList newMethodCallStack = ImmutableList.nil(); - Set currentIgnoreSet = getMethodReturnsToIgnore(label.id()); - assert newMethodCallStack.isEmpty() : "Method call stack is not empty."; - Iterator currentIter = currentMethodCallStack.iterator(); - int i = 0; - while (currentIter.hasNext() && i < newCount) { - Node next = currentIter.next(); - newMethodCallStack = newMethodCallStack.prepend(next); - currentIgnoreSet.add(next); - i++; - } - newMethodCallStackMap.put(currentNode, newMethodCallStack); - } - - /** - * Checks if the uninterpreted predicate is available or not. - * - * @return {@code true} uninterpreted predicate is available, {@code false} otherwise. - */ - public boolean isUninterpretedPredicateUsed() { - return isUninterpretedPredicateUsed; - } - - /** - * Utility class used in - * {@link SymbolicExecutionTreeBuilder#initNewLoopBodyMethodCallStack(Node)} to compute the - * number of available {@link MethodFrame}s. - * - * @author Martin Hentschel - */ - private static final class MethodFrameCounterJavaASTVisitor extends JavaASTVisitor { - /** - * The number of {@link MethodFrame}s. - */ - private int count = 0; - - /** - * Constructor. - * - * @param root The {@link ProgramElement} to count the contained {@link MethodFrame}s. - * @param services The {@link Services} to use. - */ - public MethodFrameCounterJavaASTVisitor(ProgramElement root, Services services) { - super(root, services); - } - - /** - * {@inheritDoc} - */ - @Override - protected void doDefaultAction(SourceElement node) { - } - - /** - * {@inheritDoc} - */ - @Override - public void performActionOnMethodFrame(MethodFrame x) { - count++; - } - - /** - * Performs the counting of {@link MethodFrame}s. - * - * @return The number of found {@link MethodFrame}s. - */ - public int run() { - walk(root()); - return count; - } - } - - /** - * Computes the method call stack of the given {@link Node}. - * - * @param node The {@link Node}. - * @return The computed method call stack. - */ - protected IExecutionNode[] createCallStack(Node node) { - // Compute number of call stack size - int size = SymbolicExecutionUtil.computeStackSize(node.getAppliedRuleApp()); - if (size >= 1) { - // Add call stack entries - List> callStack = new LinkedList<>(); - Map> methodCallStack = - getMethodCallStack(node.getAppliedRuleApp()); - ImmutableList stack = findMethodCallStack(methodCallStack, node); - stack = stack.skip(stack.size() - size); - Iterator stackIter = stack.iterator(); - for (int i = 0; i < size; i++) { - Node stackEntry = stackIter.next(); - if (stackEntry != proof.root()) { // Ignore call stack entries provided by the - // initial sequent - IExecutionNode executionNode = getExecutionNode(stackEntry); - if (executionNode != null) { // It might be null in case of API methods. - callStack.add(executionNode); - } - } - } - return callStack.toArray(new IExecutionNode[0]); - } else { - return new IExecutionNode[0]; - } - } - - /** - * Finds the {@link Node} in the proof tree of KeY which has called the method that is now - * executed or returned in the {@link Node}. - * - * @param currentNode The {@link Node} for that the method call {@link Node} is needed. - * @return The found call {@link Node} or {@code null} if no one was found. - */ - protected Node findMethodCallNode(Node currentNode, - RuleApp ruleApp) { - // Compute the stack frame size before the method is called - int returnStackSize = SymbolicExecutionUtil.computeStackSize(ruleApp); - // Return the method from the call stack - if (returnStackSize >= 0) { - Map> methodCallStack = getMethodCallStack(ruleApp); - ImmutableList stack = findMethodCallStack(methodCallStack, currentNode); - return stack.skip(stack.size() - returnStackSize).head(); - } else { - return null; - } - } - - /** - * Checks if the given {@link Node} handles something in an implicit method. - * - * @param node The {@link Node} to check. - * @return {@code true} is in implicit method, {@code false} is not in implicit method. - */ - protected boolean isInImplicitMethod(Node node) { - return SymbolicExecutionUtil.isInImplicitMethod(node, node.getAppliedRuleApp()); - } - - /** - * Checks if the given {@link Node} has a branch condition. - * - * @param node The {@link Node} to check. - * @return {@code true} has branch condition, {@code false} has no branch condition. - */ - protected boolean hasBranchCondition(Node node) { - if (node.childrenCount() >= 2) { // Check if it is a possible branch statement, otherwise - // there is no need for complex computation to filter out - // not relevant branches - int openChildrenCount = 0; - Iterator childIter = node.childrenIterator(); - while (childIter.hasNext()) { - Node child = childIter.next(); - // Make sure that the branch is not closed - if (!shouldPrune(child)) { - // Check if the current method on stack is not an implicit method - Node previousSymbolicExecutionNode = searchPreviousSymbolicExecutionNode(child); - if (!isInImplicitMethod(previousSymbolicExecutionNode)) { - openChildrenCount++; - } - } - } - return openChildrenCount >= 2; - } else { - return false; - } - } - - /** - * Searches the first node in the parent hierarchy (including the given node) which executes a - * statement. - * - * @param node The {@link Node} to start search in. - * @return The found {@link Node} with the symbolic statement or {@code null} if no one was - * found. - */ - protected Node searchPreviousSymbolicExecutionNode(Node node) { - while (node != null && node.getNodeInfo().getActiveStatement() == null) { - node = node.parent(); - } - return node; - } - - /** - * Adds the child to the parent. - * - * @param parent The parent to add to. - * @param child The child to add. - */ - protected void addChild(AbstractExecutionNode parent, AbstractExecutionNode child) { - child.setParent(parent); - parent.addChild(child); - } - - /** - * Returns the best matching {@link IExecutionNode} for the given proof {@link Node} in the - * parent hierarchy. - * - * @param proofNode The proof {@link Node}. - * @return The best matching {@link IExecutionNode} or {@code null} if not available. - */ - public IExecutionNode getBestExecutionNode(Node proofNode) { - IExecutionNode node = getExecutionNode(proofNode); - while (node == null && proofNode != null) { - proofNode = proofNode.parent(); - node = getExecutionNode(proofNode); - } - return node; - } - - /** - *

- * Searches the {@link IExecutionNode} which represents the given {@link Node} of KeY's proof - * tree. - *

- * In case that the {@link Node} is represented by multiple {@link AbstractExecutionNode}s, e.g. - * a return statement and a method return, the last node is returned. - *

- * - * @param proofNode The {@link Node} in KeY's proof tree. - * @return The {@link IExecutionNode} representation or {@code null} if no one is available. - */ - public IExecutionNode getExecutionNode(Node proofNode) { - IExecutionNode result = keyNodeMapping.get(proofNode); - if (result == null) { - result = keyNodeBranchConditionMapping.get(proofNode); - } - if (result == null) { - result = keyNodeLoopConditionMapping.get(proofNode); - } - return result; - } - - /** - * Returns the minimal required PO {@link Properties} to support symbolic execution tree - * extraction in a {@link SymbolicExecutionJavaProfile}. - * - * @return The minimal required PO {@link Properties}. - */ - public static Properties createPoPropertiesToForce() { - Properties poPropertiesToForce = new Properties(); - poPropertiesToForce.setProperty(IPersistablePO.PROPERTY_ADD_SYMBOLIC_EXECUTION_LABEL, - true + ""); - return poPropertiesToForce; - } - - /** - * Utility class to group a call stack size with an {@link ImmutableList} of - * {@link SourceElement} with the elements of interest. - * - * @author Martin Hentschel - */ - protected static class JavaPair extends Pair> { - /** - * Constructor. - * - * @param stackSize The call stack size. - * @param elementsOfInterest The {@link SourceElement}s of interest. - */ - public JavaPair(Integer stackSize, ImmutableList elementsOfInterest) { - super(stackSize, elementsOfInterest); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object o) { - if (super.equals(o)) { - if (o instanceof JavaPair other) { - if (second.size() == other.second.size()) { - Iterator iter = second.iterator(); - Iterator otherIter = other.second.iterator(); - boolean equals = true; - while (equals && iter.hasNext()) { - SourceElement next = iter.next(); - SourceElement otherNext = otherIter.next(); - // Comparison by == is not possible since loops are recreated - if (!SymbolicExecutionUtil.equalsWithPosition(next, otherNext)) { - equals = false; - } - } - assert !otherIter.hasNext(); - return equals; - } else { - return false; - } - } else { - return false; - } - } else { - return false; - } - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicLayoutExtractor.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicLayoutExtractor.java deleted file mode 100644 index 2aa29385296..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicLayoutExtractor.java +++ /dev/null @@ -1,944 +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.symbolic_execution; - -import java.util.*; - -import de.uka.ilkd.key.logic.*; -import de.uka.ilkd.key.logic.label.OriginTermLabel; -import de.uka.ilkd.key.logic.op.Equality; -import de.uka.ilkd.key.logic.op.Junctor; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.rule.NoPosTacletApp; -import de.uka.ilkd.key.rule.TacletApp; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.object_model.*; -import de.uka.ilkd.key.symbolic_execution.object_model.impl.*; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; -import de.uka.ilkd.key.util.ProofStarter; - -import org.key_project.logic.Name; -import org.key_project.logic.op.sv.SchemaVariable; -import org.key_project.prover.engine.impl.ApplyStrategyInfo; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.util.collection.DefaultImmutableSet; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.ImmutableSet; -import org.key_project.util.java.CollectionUtil; - -// need to switch spotless off for this comment as it replaces @code with @code -// spotless:off -/** - *

- * Instances of this class can be used to compute memory layouts (objects with values and - * associations to other objects on the heap together with objects and associations to objects on - * the current state of the stack) which a given {@link Node} of KeY's proof tree can have based on - * equivalence classes (aliasing) of objects. Such memory layouts are named current memory - * layouts. It is also possible to compute how the heap and stack was when the proof was - * started. Such memory layouts are named initial memory layouts. - *

- *

- * Example program:
- * - *

- * {@code
- *     public class Example {
- *         private int value;
- *
- *         private Example next;
- *
- *         public static int main(Example e) {
- *             e.value = 1;
- *             e.next.value = 2;
- *             return e.value + e.next.value; // Current node in KeY's proof tree
- *         }
- *     }
- * }
- * 
- * - *

- *

- * If the symbolic execution stops at the return statement, two memory layouts are possible. In the - * first case refers {@code e} and {@code e.next} to different objects (result is {@code 3}). In the - * second case refers both to the same object (result is {@code 4}). That both objects can't be - * {@code null} is ensured by the path condition from root to the current node in KeY's proof tree. - *

- *

- * The following code snippet shows how to use this class: - * - *

- * {@code
- *     SymbolicLayoutExtractor e = new SymbolicLayoutExtractor(node);
- *     e.analyse();
- *     for (int i = 0; i < e.getLayoutsCount(); i++) {
- *         ImmutableList<ISymbolicEquivalenceClass> equivalenceClasses = e.getEquivalenceClasses(i);
- *         ISymbolicLayout initial = e.getInitialLayout(i);
- *         ISymbolicLayout current = e.getCurrentLayout(i);
- *     }
- * }
- * 
- *

- *

- * Rough description of the implemented algorithm: - *

    - *
  1. Compute possible equivalence classes which leads to different memory layouts via - * {@link #analyse()}. - *
      - *
    1. Compute path condition from root to the node for which memory layouts should be build.
    2. - *
    3. Compute locations (values/associations of objects and state) to show later in initial and - * current memory layouts. Initial locations are extracted from path condition and conditions of - * node's sequent. Current locations are all initial locations plus locations defined in updates of - * node's sequent. The location of the exc variable and backup of initial method arguments and the - * heap of the initial proof obligation are ignored. Objects of updates created during symbolic - * execution and objects of the right site of updates are also collected.
    4. - *
    5. Compute objects which should be checked for equality (aliasing). The Set consists of objects - * from path condition, objects on the right side of updates, objects in conditions of node's - * antecedent and null.
    6. - *
    7. Create a site proof which starts in a modified version of the root node. It contains the - * given path condition as additional antecedent and the modality with he java code is removed. Cut - * rules are applied to this sequent for each possible combination of two different objects. Each - * goal represents a memory layout and the applied cuts in each goal represents the equality - * classes.
    8. - *
    9. Create a predicate which is used to compute the objects, values and associations of an - * initial/a current memory layout. Objects are represented as expressions like {@code e} or - * {@code e.next}. The problem is that in a current memory layout the object structure might have - * changed and {@code e.next} is a different object compared to the initial memory layout. To solve - * this issue is an additional update is used which stores each object in a temporary program - * variable, e.g. {@code pre0 = e}, {@code pre1 = e.next}. This makes sure that the objects are the - * same in initial and current memory layouts.
    10. - *
    - *
  2. - *
  3. Compute a concrete initial or current memory layout when they are requested the first time - * via {@link #lazyComputeLayout}. - *
      - *
    1. Start side proof based on node's sequent for a current memory layout or root's sequent for an - * initial memory layout. The sequent is modified by adding the pre updates and on initial memory - * layouts also the path condition. The equivalence classes are added and the modality is replaced - * with the predicate to compute objects, values and associations.
    2. - *
    3. Extract values from the predicate.
    4. - *
    5. Create new {@link ISymbolicLayout} and fill it with objects, values and associations from the - * extracted values of the side proof.
    6. - *
    - *
  4. - *
- *

- * - * @author Martin Hentschel - * @see ISymbolicLayout - * @see ExecutionNodeSymbolicLayoutExtractor - */ -// spotless:on -public class SymbolicLayoutExtractor extends AbstractUpdateExtractor { - /** - * The used {@link IModelSettings}. - */ - private final IModelSettings settings; - - /** - * Contains the applied cuts of each possible memory layout. An applied cut is represented as - * {@link JTerm} of the from {@code equals(obj1, obj2)} or {@code not(equals(obj1, obj2))}. - */ - private List> appliedCutsPerLayout; - - /** - * Contains the current memory layouts accessible via {@link #getCurrentLayout(int)}. - */ - private Map currentLayouts; - - /** - * The {@link ExtractLocationParameter} instances used to compute a current memory layout. - */ - private Set currentLocations; - - /** - * Contains the initial memory layouts accessible via {@link #getInitialLayout(int)}. - */ - private Map initialLayouts; - - /** - * The {@link ExtractLocationParameter} instances used to compute an initial memory layout. - */ - private Set initialLocations; - - /** - * Contains the equivalent classes accessible via {@link #getEquivalenceClasses(int)}. - */ - private Map> layoutsEquivalentClasses; - - /** - * Contains objects which should be ignored in the state because they are created during - * symbolic execution or part of the proof obligation. - */ - private Set objectsToIgnore; - - /** - * The updates to consider. - */ - private ImmutableList updates; - - /** - * Constructor. - * - * @param node The {@link Node} of KeY's proof tree to compute memory layouts for. - * @param modalityPio The {@link PosInOccurrence} of the modality or its updates. - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - */ - public SymbolicLayoutExtractor(Node node, - PosInOccurrence modalityPio, boolean useUnicode, - boolean usePrettyPrinting, boolean simplifyConditions) { - super(node, modalityPio); - this.settings = new ModelSettings(useUnicode, usePrettyPrinting, simplifyConditions); - } - - /** - *

- * Computes the possible memory layouts. - *

- *

- * This is the prerequisite to access equivalence classes, initial and current states. - *

- * - * @throws ProofInputException Occurred Exception. - */ - public void analyse() throws ProofInputException { - synchronized (this) { - if (!isAnalysed()) { - // Get path condition - // Path condition needs always to be simplified, because otherwise additinal - // symbolic values might be introduced. - JTerm pathCondition = SymbolicExecutionUtil.computePathCondition(node, true, false); - pathCondition = removeImplicitSubTermsFromPathCondition(pathCondition); - // Compute all locations used in path conditions and updates. The values of the - // locations will be later computed in the state computation (and finally shown in a - // memory layout). - Set temporaryCurrentLocations = - new LinkedHashSet<>(); - objectsToIgnore = computeInitialObjectsToIgnore(false, false); // Contains all - // objects which - // should be ignored, - // like exc of the - // proof obligation. - Set updateCreatedObjects = new LinkedHashSet<>(); // Contains all objects - // which are created - // during symbolic - // execution - Set updateValueObjects = new LinkedHashSet<>(); // Contains all objects - // which are the value of - // an update - collectLocationsFromUpdates(node.sequent(), temporaryCurrentLocations, - updateCreatedObjects, updateValueObjects, objectsToIgnore); - objectsToIgnore.addAll(updateCreatedObjects); - initialLocations = extractLocationsFromTerm(pathCondition, objectsToIgnore); - initialLocations - .addAll(extractLocationsFromSequent(node.sequent(), objectsToIgnore)); - currentLocations = new LinkedHashSet<>(initialLocations); - currentLocations.addAll(temporaryCurrentLocations); - // Compute objects for equivalence check. - Set symbolicObjectsResultingInCurrentState = new LinkedHashSet<>(); - symbolicObjectsResultingInCurrentState - .addAll(filterOutObjectsToIgnore(updateValueObjects, objectsToIgnore)); - symbolicObjectsResultingInCurrentState - .addAll(collectObjectsFromSequent(node.sequent(), objectsToIgnore)); - symbolicObjectsResultingInCurrentState = - sortTerms(symbolicObjectsResultingInCurrentState); // Sort terms alphabetically. - // This guarantees that in - // equivalence classes the - // representative term is for - // instance self.next and not - // self.next.next. - // Add null because it can happen that a object is null and this option must be - // included in equivalence class computation - symbolicObjectsResultingInCurrentState.add(getServices().getTermBuilder().NULL()); - // Find updates - updates = extractInitialUpdates(); - // Compute a Sequent with the initial conditions of the proof without modality - // New OneStepSimplifier is required because it has an internal state and the - // default instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(getProof(), true); - Sequent initialConditionsSequent = createSequentForEquivalenceClassComputation(); - ApplyStrategyInfo info = null; - try { - // Instantiate proof in which equivalent classes of symbolic objects are - // computed. - ProofStarter equivalentClassesProofStarter = SymbolicExecutionSideProofUtil - .createSideProof(sideProofEnv, initialConditionsSequent, null); - // Apply cut rules to compute equivalent classes - applyCutRules(equivalentClassesProofStarter, - symbolicObjectsResultingInCurrentState, updates); - // Finish proof automatically - info = SymbolicExecutionSideProofUtil.startSideProof(getProof(), - equivalentClassesProofStarter, StrategyProperties.METHOD_CONTRACT, - StrategyProperties.LOOP_INVARIANT, StrategyProperties.QUERY_ON, - StrategyProperties.SPLITTING_NORMAL); - // Compute the available instance memory layout via the opened goals of the - // equivalent proof. - appliedCutsPerLayout = - extractAppliedCutsFromGoals(equivalentClassesProofStarter.getProof()); - // Create memory layout maps which are filled lazily - initialLayouts = - new LinkedHashMap<>(appliedCutsPerLayout.size()); - currentLayouts = - new LinkedHashMap<>(appliedCutsPerLayout.size()); - layoutsEquivalentClasses = - new LinkedHashMap<>(); - } finally { - SymbolicExecutionSideProofUtil.disposeOrStore( - "Equivalence class computation on node " + node.serialNr() + ".", info); - } - } - } - } - - /** - * Computes the initial updates to consider. - * - * @return The initial updates to consider. - */ - protected ImmutableList extractInitialUpdates() { - Sequent sequent = getRoot().sequent(); - assert sequent.antecedent().isEmpty(); - assert sequent.succedent().size() == 1; - JTerm sf = (JTerm) sequent.succedent().get(0).formula(); - assert sf.op() == Junctor.IMP; - JTerm modality = sf.sub(1); - return TermBuilder.goBelowUpdates2(modality).first; - } - - /** - * Sorts the given {@link JTerm}s alphabetically. - * - * @param terms The {@link JTerm}s to sort. - * @return The sorted {@link JTerm}s. - */ - protected Set sortTerms(Set terms) { - List list = new LinkedList<>(terms); - list.sort((o1, o2) -> { - String o1s = o1.toString(); - String o2s = o2.toString(); - return o1s.length() - o2s.length(); - }); - return new LinkedHashSet<>(list); - } - - /** - * Filters out the objects from the second {@link Set} in the first {@link Set}. - * - * @param objectsToFilter The {@link Set} to filter. - * @param objectsToIgnore The {@link Set} with the objects to filter out. - * @return A new {@link Set} which contains all objects of the first {@link Set} which are not - * contained in the second {@link Set}. - * @throws ProofInputException - */ - protected Set filterOutObjectsToIgnore(Set objectsToFilter, - Set objectsToIgnore) throws ProofInputException { - Set result = new LinkedHashSet<>(); - for (JTerm symbolicObject : objectsToFilter) { - if (!objectsToIgnore.contains(symbolicObject)) { - result.add(symbolicObject); - } - } - return result; - } - - /** - *

- * Creates a {@link Sequent} which is used to compute equivalence classes. - *

- *

- * The created {@link Sequent} is the {@link Sequent} of {@link #node} without the modality. - *

- * - * @return The created {@link Sequent} to use for equivalence class computation. - */ - protected Sequent createSequentForEquivalenceClassComputation() { - return SymbolicExecutionUtil.createSequentToProveWithNewSuccedent(node, modalityPio, null, - null, updates, false); - } - - /** - *

- * Applies cut rules to the given side proofs to compute equivalence classes. - *

- *

- * For each possible combination (without identity and ignoring the order) of the given objects - * is one cut performed. - *

- * - * @param starter The {@link ProofStarter} which provides the side proof. - * @param symbolicObjects The symbolic objects to compute equivalence classes for. - * @param updates The updates to consider. - */ - protected void applyCutRules(ProofStarter starter, Set symbolicObjects, - ImmutableList updates) { - final TermBuilder tb = getServices().getTermBuilder(); - List objectsCopy = new ArrayList<>(symbolicObjects); - int maxProofSteps = 8000; - for (int i = 0; i < objectsCopy.size(); i++) { - for (int j = i + 1; j < objectsCopy.size(); j++) { - JTerm equalTerm = tb.equals(objectsCopy.get(i), objectsCopy.get(j)); - JTerm updateTerm = tb.applyParallel(updates, equalTerm); - applyCut(starter, updateTerm, maxProofSteps); - } - } - starter.setMaxRuleApplications(maxProofSteps); - starter.start(); - } - - /** - * Applies one single cut rule for the given {@link JTerm}. - * - * @param starter The {@link ProofStarter} to apply cut rule in. - * @param term The {@link JTerm} to cut out. - * @param maxProofSteps The maximal number of proof steps applied after cut via auto mode. - */ - protected void applyCut(ProofStarter starter, JTerm term, int maxProofSteps) { - ImmutableList goals = starter.getProof().openEnabledGoals(); - if (!goals.isEmpty()) { - int proofSteps = maxProofSteps / goals.size(); - if (proofSteps < 300) { - proofSteps = 300; - } - starter.setMaxRuleApplications(maxProofSteps); - for (final Goal g : goals) { - final NoPosTacletApp c = g.indexOfTaclets().lookup("cut"); - assert c != null; - - ImmutableSet set2 = c.uninstantiatedVars(); - SchemaVariable cutF = set2.iterator().next(); - - TacletApp t2 = c.addInstantiation(cutF, term, false, getServices()); - - starter.start(g.apply(t2)); - } - } - } - - /** - *

- * Extracts the possible memory layouts from the given side proof. Each open {@link Goal} of the - * proof results in its own memory layout. - *

- *

- * The applied cuts per memory layout are represented as {@link JTerm} stored in the - * {@link ImmutableSet}s. Each {@link JTerm} has the form {@code equals(obj1, obj2)} or - * {@code not(equals(obj1, obj2))} - *

- * - * @param proof The {@link Proof} which provides the {@link Goal}s to extract memory layouts - * from. - * @return Each entry in the list represents a equivalence class memory layout. For each object - * pair checked via cut rules application exists one entry in the {@link Set} of the - * form {@code equals(obj1, obj2)} or {@code not(equals(obj1, obj2))}. - * @throws ProofInputException Occurred Exception. - */ - protected List> extractAppliedCutsFromGoals(Proof proof) - throws ProofInputException { - Set> resultSet = new LinkedHashSet<>(); - Node root = proof.root(); - for (Goal goal : proof.openGoals()) { - resultSet.add(extractAppliedCutsSet(goal.node(), root)); - } - return new ArrayList<>(resultSet); - } - - /** - * Extracts the applied cut rules in the given {@link Node}. Each cut rule is represented as - * {@link JTerm} of the form {@code equals(obj1, obj2)} or {@code not(equals(obj1, obj2))}. - * - * @param goalnode The current {@link Node}. - * @param root The root {@link Node}. - * @return The applied cut rules. - * @throws ProofInputException Occurred Exception. - */ - protected ImmutableSet extractAppliedCutsSet(Node goalnode, Node root) - throws ProofInputException { - ImmutableSet result = DefaultImmutableSet.nil(); - if (!root.find(goalnode)) { - throw new ProofInputException( - "Node \"" + goalnode + "\" ist not a childs of root node \"" + root + "\"."); - } - while (!(goalnode.serialNr() == root.serialNr())) { - final Node oldNode = goalnode; - goalnode = goalnode.parent(); - if (goalnode.getAppliedRuleApp() instanceof NoPosTacletApp npta) { - if ("CUT".equalsIgnoreCase(npta.taclet().name().toString())) { - JTerm inst = (JTerm) npta.instantiations() - .lookupEntryForSV(new Name("cutFormula")).value().getInstantiation(); - inst = TermBuilder.goBelowUpdates(inst); - if (goalnode.child(1) == oldNode) { - inst = getServices().getTermBuilder().not(inst); - } - result = result.add(inst); - } - } - } - return result; - } - - /** - * Checks if {@link #analyse()} was already executed. - * - * @return {@code true} {@link #analyse()} was executed, {@code false} {@link #analyse()} was - * not executed. - */ - public boolean isAnalysed() { - synchronized (this) { - return initialLayouts != null && currentLayouts != null; - } - } - - /** - *

- * Returns the number of available memory layouts. - *

- *

- * Attention: Requires that {@link #analyse()} was executed. - *

- * - * @return The number of available memory layouts. - */ - public int getLayoutsCount() { - synchronized (this) { - assert isAnalysed(); - return appliedCutsPerLayout.size(); - } - } - - /** - *

- * Returns the initial memory layout at the given index. - *

- *

- * Attention: Requires that {@link #analyse()} was executed. - *

- * - * @param layoutIndex The index of the initial memory layout. - * @return The initial memory layout at the given index. - * @throws ProofInputException Occurred Exception - */ - public ISymbolicLayout getInitialLayout(int layoutIndex) throws ProofInputException { - return getLayout(initialLayouts, layoutIndex, initialLocations, computeInitialStateName(), - false); - } - - /** - * Computes the state name of an initial memory layout. - * - * @return The state name of an initial memory layout. - */ - protected String computeInitialStateName() { - return getRoot().name() + " resulting in " + computeCurrentStateName(); - } - - /** - *

- * Returns the current memory layout at the given index. - *

- *

- * Attention: Requires that {@link #analyse()} was executed. - *

- * - * @param layoutIndex The index of the current memory layout. - * @return The current memory layout at the given index. - * @throws ProofInputException Occurred Exception - */ - public ISymbolicLayout getCurrentLayout(int layoutIndex) throws ProofInputException { - return getLayout(currentLayouts, layoutIndex, currentLocations, computeCurrentStateName(), - true); - } - - /** - * Computes the state name of a current memory layout. - * - * @return The state name of a current memory layout. - */ - protected String computeCurrentStateName() { - return node.name(); - } - - /** - * Helper method of {@link #getInitialLayout(int)} and {@link #getCurrentLayout(int)} to lazily - * compute and get a memory layout. - * - * @param confiurationsMap The map which contains already computed memory layouts. - * @param layoutIndex The index of the memory layout to lazily compute and return. - * @param locations The locations to compute in side proof. - * @param stateName The name of the state. - * @param currentLayout {@code true} current layout, {@code false} initial layout. - * @return The lazily computed memory layout. - * @throws ProofInputException Occurred Exception. - */ - protected ISymbolicLayout getLayout(Map confiurationsMap, - int layoutIndex, Set locations, String stateName, - boolean currentLayout) throws ProofInputException { - synchronized (this) { - assert layoutIndex >= 0; - assert layoutIndex < appliedCutsPerLayout.size(); - assert isAnalysed(); - ISymbolicLayout result = confiurationsMap.get(layoutIndex); - if (result == null) { - // Get memory layout - ImmutableSet layout = appliedCutsPerLayout.get(layoutIndex); - ImmutableList equivalentClasses = - getEquivalenceClasses(layoutIndex); - result = lazyComputeLayout(layout, locations, equivalentClasses, stateName, - currentLayout); - confiurationsMap.put(layoutIndex, result); - } - return result; - } - } - - /** - *

- * Computes a memory layout lazily when it is first time requested via - * {@link #getLayout}. - *

- *

- * Finally, the last step is to create the {@link ISymbolicLayout} instance and to fill it with - * the values/associations defined by {@link ExecutionVariableValuePair} instances. - *

- * - * @param layout The memory layout terms. - * @param locations The locations to compute in side proof. - * @param equivalentClasses The equivalence classes defined by the memory layout terms. - * @param stateName The name of the state. - * @param currentLayout {@code true} current layout, {@code false} initial layout. - * @return The created memory layout. - * @throws ProofInputException Occurred Exception. - */ - protected ISymbolicLayout lazyComputeLayout(ImmutableSet layout, - Set locations, - ImmutableList equivalentClasses, String stateName, - boolean currentLayout) throws ProofInputException { - if (!locations.isEmpty()) { - final TermBuilder tb = getServices().getTermBuilder(); - List updateConditions = new ArrayList<>(layout.size()); - for (JTerm term : layout) { - updateConditions.add(tb.applyParallel(updates, term)); - } - JTerm layoutCondition = tb.and(updateConditions); - Set locationsAccordingToEquivalentClass = - updateLocationsAccordingtoEquivalentClass(locations, equivalentClasses); - JTerm layoutTerm = createLocationPredicateAndTerm(locationsAccordingToEquivalentClass); - Set pairs = computeVariableValuePairs(layoutCondition, - layoutTerm, locationsAccordingToEquivalentClass, currentLayout, - settings.isSimplifyConditions()); - return createLayoutFromExecutionVariableValuePairs(equivalentClasses, pairs, stateName); - } else { - return createLayoutFromExecutionVariableValuePairs(equivalentClasses, - new LinkedHashSet<>(), stateName); - } - } - - /** - * Replaces the parent of each {@link ExtractLocationParameter} according to the - * {@link ISymbolicEquivalenceClass}es, because there is no guarantee that the strategy - * evaluates each aliased location to the same symbolic value. - * - * @param locations The available {@link ExtractLocationParameter}s. - * @param equivalentClasses The available {@link ISymbolicEquivalenceClass}es. - * @return The updated {@link ExtractLocationParameter}s. - */ - protected Set updateLocationsAccordingtoEquivalentClass( - Set locations, - ImmutableList equivalentClasses) { - Set newLocations = - new LinkedHashSet<>(locations.size()); - for (ExtractLocationParameter location : locations) { - JTerm parent = location.getParentTerm(); - ISymbolicEquivalenceClass eq = findEquivalentClass(equivalentClasses, parent); - if (eq != null) { - newLocations.add(new ExtractLocationParameter(location, eq.getRepresentative())); - } else { - newLocations.add(location); - } - } - return newLocations; - } - - /** - * Collects all objects which are used in the conditions of the {@link Sequent}. - * - * @param sequent The {@link Sequent} which provides the conditions to collect objects from. - * @param objectsToIgnore Objects which should be excluded in the result. - * @return The found objects. - * @throws ProofInputException Occurred Exception. - */ - protected Set collectObjectsFromSequent(Sequent sequent, Set objectsToIgnore) - throws ProofInputException { - Set result = new LinkedHashSet<>(); - for (SequentFormula sf : sequent) { - if (SymbolicExecutionUtil.checkSkolemEquality(sf) == 0) { - result.addAll( - collectSymbolicObjectsFromTerm((JTerm) sf.formula(), objectsToIgnore)); - } - } - return result; - } - - /** - * Collects all objects which are used in the given {@link JTerm}. - * - * @param term The {@link JTerm} to collect objects in. - * @param objectsToIgnore Objects which should be excluded in the result. - * @return The found objects. - * @throws ProofInputException Occurred Exception. - */ - protected Set collectSymbolicObjectsFromTerm(JTerm term, - final Set objectsToIgnore) - throws ProofInputException { - final Set result = new LinkedHashSet<>(); - term.execPreOrder((DefaultVisitor) p_visited -> { - JTerm visited = (JTerm) p_visited; - visited = OriginTermLabel.removeOriginLabels(visited, getServices()); - if (SymbolicExecutionUtil.hasReferenceSort(getServices(), visited) - && visited.freeVars().isEmpty() && !objectsToIgnore.contains(visited) - && !SymbolicExecutionUtil.isSkolemConstant(visited)) { - result.add(visited); - } - }); - return result; - } - - /** - *

- * Returns the equivalence class of the memory layout defined by the index. - *

- *

- * Attention: Requires that {@link #analyse()} was executed. - *

- * - * @param layoutIndex The index of the memory layout to get its equivalence classes. - * @return The equivalence classes of the memory layout at the given index. - */ - public ImmutableList getEquivalenceClasses(int layoutIndex) { - synchronized (this) { - ImmutableList equivalentClasses = - layoutsEquivalentClasses.get(layoutIndex); - if (equivalentClasses == null) { - ImmutableSet appliedCuts = appliedCutsPerLayout.get(layoutIndex); - equivalentClasses = lazyComputeEquivalenceClasses(appliedCuts); - layoutsEquivalentClasses.put(layoutIndex, equivalentClasses); - } - return equivalentClasses; - } - } - - /** - *

- * Computes the equivalence classes from the given applied cut rules lazily when - * {@link #getEquivalenceClasses(int)} is called the first time. - *

- *

- * Each entry in the given {@link ImmutableSet} is of the form {@code equals(obj1, obj2)} or - * {@code not(equals(obj1, obj2))}. - *

- *

- * An {@link ISymbolicEquivalenceClass} is only created for objects which are equal. Objects - * which are equal to no other one are not represented in an {@link ISymbolicEquivalenceClass}. - * This makes sure that each {@link ISymbolicEquivalenceClass} contains at least two objects and - * that the result is empty if all objects are not equal to each other. - *

- * - * @param appliedCuts The applied cut rules. - * @return The created {@link ISymbolicEquivalenceClass} instances. - */ - protected ImmutableList lazyComputeEquivalenceClasses( - ImmutableSet appliedCuts) { - ImmutableList result = ImmutableList.nil(); - for (JTerm term : appliedCuts) { - if (Junctor.NOT != term.op()) { - assert term.op() == Equality.EQUALS; - - final Iterator iter = term.subs().iterator(); - ISymbolicEquivalenceClass ec = null; - while (ec == null && iter.hasNext()) { - ec = findEquivalentClass(result, iter.next()); - } - if (ec == null) { - ec = new SymbolicEquivalenceClass(getServices(), settings); - result = result.append(ec); - } - for (JTerm sub : term.subs()) { - if (!ec.containsTerm(sub)) { - ((SymbolicEquivalenceClass) ec).addTerm(sub); - } - } - } - } - return result; - } - - /** - * Searches the {@link ISymbolicEquivalenceClass} from the given one which contains the given - * {@link JTerm}. - * - * @param equivalentClasses The available {@link ISymbolicEquivalenceClass} to search in. - * @param term The {@link JTerm} to search. - * @return The found {@link ISymbolicEquivalenceClass} which contains the given {@link JTerm} or - * {@code null} if no one was found. - */ - protected ISymbolicEquivalenceClass findEquivalentClass( - ImmutableList equivalentClasses, final JTerm term) { - return CollectionUtil.search(equivalentClasses, element -> element.containsTerm(term)); - } - - /** - * Creates an {@link ISymbolicLayout} which shows the objects, values and associations defined - * by the given {@link ExecutionVariableValuePair}s. - * - * @param equivalentClasses The used {@link ISymbolicEquivalenceClass} instances of the memory - * layout. - * @param pairs Provides the available objects, their values and associations together with the - * variables and association of the state. - * @param stateName The name of the state. - * @return The created {@link ISymbolicLayout} with the given content. - * @throws ProofInputException Occurred Exception. - */ - protected ISymbolicLayout createLayoutFromExecutionVariableValuePairs( - ImmutableList equivalentClasses, - Set pairs, String stateName) throws ProofInputException { - SymbolicLayout result = new SymbolicLayout(settings, equivalentClasses); - // Create state - SymbolicState state = new SymbolicState(stateName, settings); - result.setState(state); - // Create objects - Map objects = new LinkedHashMap<>(); - for (ExecutionVariableValuePair pair : pairs) { - // Create object for parent of current value - createObjectForTerm(objects, equivalentClasses, result, pair.getParent()); - // Create object for current value - createObjectForTerm(objects, equivalentClasses, result, pair.getValue()); - } - // Fill objects and state with association and values - for (ExecutionVariableValuePair pair : pairs) { - // Find parent object/state - JTerm parent = pair.getParent(); - JTerm valueTerm = pair.getValue(); - AbstractSymbolicAssociationValueContainer container; - if (parent != null) { - ISymbolicEquivalenceClass equivalentClass = - findEquivalentClass(equivalentClasses, parent); - container = objects.get( - equivalentClass != null ? equivalentClass.getRepresentative() : parent); - } else { - if (pair.isStateMember() || !objectsToIgnore.contains(valueTerm)) { - container = state; // Add only updates of local variables to the - } else { - container = null; - } - } - // Check if a container was found, if not it is an less important equivalent object - if (container != null) { - // Check if the term is in an equivalent class, in this case use the representative - // term instead of the term itself. - ISymbolicEquivalenceClass eq = findEquivalentClass(equivalentClasses, valueTerm); - if (eq != null) { - valueTerm = eq.getRepresentative(); - } - // Check if it is an association - SymbolicObject target = objects.get(valueTerm); - if (target != null) { - SymbolicAssociation association; - if (pair.isArrayRange()) { - association = new SymbolicAssociation(getServices(), pair.getArrayIndex(), - pair.getArrayStartIndex(), pair.getArrayEndIndex(), target, - pair.getCondition(), settings); - } else if (pair.isArrayIndex()) { - association = new SymbolicAssociation(getServices(), pair.getArrayIndex(), - target, pair.getCondition(), settings); - } else { - association = new SymbolicAssociation(getServices(), - pair.getProgramVariable(), target, pair.getCondition(), settings); - } - // Add association only if not already present - ISymbolicAssociation existingAssociation = container.getAssociation( - association.getProgramVariable(), association.isArrayIndex(), - association.getArrayIndex(), association.getCondition()); - if (existingAssociation == null) { - // Add association to the container - container.addAssociation(association); - } else { - // Make sure that target is the same - if (!Objects.equals(association.getTarget(), - existingAssociation.getTarget())) { - throw new ProofInputException("Multiple association targets found: " - + association + " and " + existingAssociation + "."); - } - } - } else { - SymbolicValue value; - if (pair.isArrayRange()) { - value = new SymbolicValue(getServices(), pair.getArrayIndex(), - pair.getArrayStartIndex(), pair.getArrayEndIndex(), valueTerm, - pair.getCondition(), settings); - } else if (pair.isArrayIndex()) { - value = new SymbolicValue(getServices(), pair.getArrayIndex(), valueTerm, - pair.getCondition(), settings); - } else { - value = new SymbolicValue(getServices(), pair.getProgramVariable(), - valueTerm, pair.getCondition(), settings); - } - // Add value only if not already present - ISymbolicValue existingValue = container.getValue(value.getProgramVariable(), - value.isArrayIndex(), value.getArrayIndex(), value.getCondition()); - if (existingValue == null) { - // Add value to the container - container.addValue(value); - } else { - // Make sure that the value is the same - if (!Objects.equals(value.getValue(), existingValue.getValue())) { - throw new ProofInputException( - "Multiple values found: " + value + " and " + existingValue + "."); - } - } - } - } - } - return result; - } - - /** - * Creates for the object defined by the given {@link JTerm} an {@link SymbolicObject} instance - * if not already available. - * - * @param objects The already available {@link SymbolicObject}s. - * @param equivalentClasses The available {@link ISymbolicEquivalenceClass}. - * @param result The {@link SymbolicLayout} to add the {@link SymbolicObject} to. - * @param objectTerm The {@link JTerm} which represents the {@link Object} a - * {@link SymbolicObject} should be created for. - */ - protected void createObjectForTerm(Map objects, - ImmutableList equivalentClasses, SymbolicLayout result, - JTerm objectTerm) { - if (objectTerm != null - && SymbolicExecutionUtil.hasReferenceSort(getServices(), objectTerm)) { - ISymbolicEquivalenceClass equivalentClass = - findEquivalentClass(equivalentClasses, objectTerm); - if (equivalentClass != null) { - objectTerm = equivalentClass.getRepresentative(); - } - SymbolicObject object = objects.get(objectTerm); - if (object == null) { - object = new SymbolicObject(getServices(), objectTerm, settings); - objects.put(objectTerm, object); - result.addObject(object); - } - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicLayoutReader.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicLayoutReader.java deleted file mode 100644 index 448a152f6ab..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicLayoutReader.java +++ /dev/null @@ -1,1128 +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.symbolic_execution; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Deque; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.Map; -import java.util.Map.Entry; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.symbolic_execution.object_model.IModelSettings; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicAssociation; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicAssociationValueContainer; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicElement; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicEquivalenceClass; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicLayout; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicObject; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicState; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicValue; - -import org.key_project.logic.sort.Sort; -import org.key_project.util.collection.ImmutableList; - -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.DefaultHandler; - -/** - * Allows to read XML files which contains an object model written via an - * {@link SymbolicLayoutWriter}. - * - * @author Martin Hentschel - * @see SymbolicLayoutWriter - */ -public class SymbolicLayoutReader { - /** - * Reads the given {@link File}. - * - * @param file The {@link File} to read. - * @return The root of the model. - * @throws ParserConfigurationException Occurred Exception. - * @throws SAXException Occurred Exception. - * @throws IOException Occurred Exception. - */ - public ISymbolicLayout read(File file) - throws ParserConfigurationException, SAXException, IOException { - return read(new FileInputStream(file)); - } - - /** - * Reads from the given {@link InputStream} and closes it. - * - * @param in The {@link InputStream} to read from. - * @return The root of the model. - * @throws ParserConfigurationException Occurred Exception. - * @throws SAXException Occurred Exception. - * @throws IOException Occurred Exception. - */ - public ISymbolicLayout read(InputStream in) - throws ParserConfigurationException, SAXException, IOException { - if (in != null) { - try (in) { - // Parse XML file - SAXParserFactory factory = SAXParserFactory.newInstance(); - factory.setNamespaceAware(true); - SAXParser saxParser = factory.newSAXParser(); - SEDSAXHandler handler = new SEDSAXHandler(); - saxParser.parse(in, handler); - // Get root - ISymbolicLayout root = handler.getRoot(); - // Return result - return root; - } - } else { - return null; - } - } - - /** - * {@link DefaultHandler} implementation used in {@link ExecutionNodeReader#read(InputStream)}. - * - * @author Martin Hentschel - */ - private class SEDSAXHandler extends DefaultHandler { - /** - * The root of the model. - */ - private ISymbolicLayout root; - - /** - * The hierarchy in building phase. - */ - private final Deque parentStack = new LinkedList<>(); - - /** - * Maps each unique object ID to the instantiated {@link ISymbolicObject}. - */ - private final Map objectIdMapping = - new LinkedHashMap<>(); - - /** - * Maps a {@link KeYlessAssociation} to its target object ID. - */ - private final Map associationTargetMapping = - new LinkedHashMap<>(); - - /** - * {@inheritDoc} - */ - @Override - public void startElement(String uri, String localName, String qName, Attributes attributes) - throws SAXException { - Object parent = parentStack.peekFirst(); - if (isModel(uri, localName, qName)) { - if (root == null) { - root = new KeYlessLayout(); - parentStack.addFirst(root); - } else { - throw new SAXException("Model found a second time."); - } - } else if (isState(uri, localName, qName)) { - if (!(parent instanceof KeYlessLayout)) { - throw new SAXException("Found state in wrong hierarchy."); - } - KeYlessState state = new KeYlessState(getName(attributes)); - if (((KeYlessLayout) parent).getState() != null) { - throw new SAXException("State found a second time."); - } - ((KeYlessLayout) parent).setState(state); - parentStack.addFirst(state); - } else if (isObject(uri, localName, qName)) { - if (!(parent instanceof KeYlessLayout)) { - throw new SAXException("Found object in wrong hierarchy."); - } - KeYlessObject object = - new KeYlessObject(getName(attributes), getTypeString(attributes)); - ((KeYlessLayout) parent).addObject(object); - parentStack.addFirst(object); - objectIdMapping.put(getId(attributes), object); - } else if (isValue(uri, localName, qName)) { - if (!(parent instanceof AbstractKeYlessAssociationValueContainer)) { - throw new SAXException("Found value in wrong hierarchy."); - } - KeYlessValue value = new KeYlessValue(getName(attributes), - getProgramVariableString(attributes), isArrayIndex(attributes), - getArrayIndexString(attributes), getValueString(attributes), - getTypeString(attributes), getConditionString(attributes)); - ((AbstractKeYlessAssociationValueContainer) parent).addValue(value); - parentStack.addFirst(value); - } else if (isAssociation(uri, localName, qName)) { - if (!(parent instanceof AbstractKeYlessAssociationValueContainer)) { - throw new SAXException("Found association in wrong hierarchy."); - } - KeYlessAssociation association = new KeYlessAssociation(getName(attributes), - getProgramVariableString(attributes), isArrayIndex(attributes), - getArrayIndexString(attributes), getConditionString(attributes)); - ((AbstractKeYlessAssociationValueContainer) parent).addAssociation(association); - parentStack.addFirst(association); - associationTargetMapping.put(association, getTarget(attributes)); - } else if (isEquivalenceClass(uri, localName, qName)) { - if (!(parent instanceof KeYlessLayout)) { - throw new SAXException("Found equivalence class in wrong hierarchy."); - } - KeYlessEquivalenceClass ec = - new KeYlessEquivalenceClass(getRepresentativeTerm(attributes)); - ((KeYlessLayout) parent).addEquivalenceClass(ec); - parentStack.addFirst(ec); - } else if (isTerm(uri, localName, qName)) { - if (!(parent instanceof ISymbolicEquivalenceClass)) { - throw new SAXException("Found term in wrong hierarchy."); - } - ((KeYlessEquivalenceClass) parent).addTermString(getTerm(attributes)); - } else { - throw new SAXException("Unsupported tag \"" + localName + "\"."); - } - } - - /** - * {@inheritDoc} - */ - @Override - public void endElement(String uri, String localName, String qName) throws SAXException { - if (!isTerm(uri, localName, qName)) { - parentStack.removeFirst(); - } - } - - /** - * {@inheritDoc} - */ - @Override - public void endDocument() throws SAXException { - // Fill associations with target references - for (Entry entry : associationTargetMapping.entrySet()) { - ISymbolicObject target = objectIdMapping.get(entry.getValue()); - if (target == null) { - throw new SAXException("Association target object with id \"" + entry.getValue() - + "\" is not available."); - } - entry.getKey().setTarget(target); - } - } - - /** - * Returns the root of the model. - * - * @return The root of the model. - */ - public ISymbolicLayout getRoot() { - return root; - } - } - - /** - * Checks if the currently parsed tag represents an {@link ISymbolicLayout}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents an {@link ISymbolicLayout}, {@code false} is something else. - */ - protected boolean isModel(String uri, String localName, String qName) { - return SymbolicLayoutWriter.TAG_MODEL.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an {@link ISymbolicAssociation}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents an {@link ISymbolicAssociation}, {@code false} is something - * else. - */ - protected boolean isAssociation(String uri, String localName, String qName) { - return SymbolicLayoutWriter.TAG_ASSOCIATION.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an {@link ISymbolicValue}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents an {@link ISymbolicValue}, {@code false} is something else. - */ - protected boolean isValue(String uri, String localName, String qName) { - return SymbolicLayoutWriter.TAG_VALUE.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an {@link ISymbolicObject}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents an {@link ISymbolicObject}, {@code false} is something else. - */ - protected boolean isObject(String uri, String localName, String qName) { - return SymbolicLayoutWriter.TAG_OBJECT.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an {@link ISymbolicState}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents an {@link ISymbolicState}, {@code false} is something else. - */ - protected boolean isState(String uri, String localName, String qName) { - return SymbolicLayoutWriter.TAG_STATE.equals(qName); - } - - /** - * Checks if the currently parsed tag represents an {@link ISymbolicEquivalenceClass}. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents an {@link ISymbolicEquivalenceClass}, {@code false} is - * something else. - */ - protected boolean isEquivalenceClass(String uri, String localName, String qName) { - return SymbolicLayoutWriter.TAG_EQUIVALENCE_CLASS.equals(qName); - } - - /** - * Checks if the currently parsed tag represents a term. - * - * @param uri The URI. - * @param localName THe local name. - * @param qName The qName. - * @return {@code true} represents a term, {@code false} is something else. - */ - protected boolean isTerm(String uri, String localName, String qName) { - return SymbolicLayoutWriter.TAG_TERM.equals(qName); - } - - /** - * Returns the value value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getValueString(Attributes attributes) { - return attributes.getValue(SymbolicLayoutWriter.ATTRIBUTE_VALUE); - } - - /** - * Returns the condition value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getConditionString(Attributes attributes) { - return attributes.getValue(SymbolicLayoutWriter.ATTRIBUTE_CONDITION); - } - - /** - * Returns the type value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getTypeString(Attributes attributes) { - return attributes.getValue(SymbolicLayoutWriter.ATTRIBUTE_TYPE); - } - - /** - * Returns the program variable value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getProgramVariableString(Attributes attributes) { - return attributes.getValue(SymbolicLayoutWriter.ATTRIBUTE_PROGRAM_VARIABLE); - } - - /** - * Returns the name value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getName(Attributes attributes) { - return attributes.getValue(SymbolicLayoutWriter.ATTRIBUTE_NAME); - } - - /** - * Returns the array index value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getArrayIndexString(Attributes attributes) { - return attributes.getValue(SymbolicLayoutWriter.ATTRIBUTE_ARRAY_INDEX); - } - - /** - * Returns the is array index flag. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected boolean isArrayIndex(Attributes attributes) { - return Boolean - .parseBoolean(attributes.getValue(SymbolicLayoutWriter.ATTRIBUTE_IS_ARRAY_INDEX)); - } - - /** - * Returns the ID value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getId(Attributes attributes) { - return attributes.getValue(SymbolicLayoutWriter.ATTRIBUTE_XML_ID); - } - - /** - * Returns the target value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getTarget(Attributes attributes) { - return attributes.getValue(SymbolicLayoutWriter.ATTRIBUTE_TARGET); - } - - /** - * Returns the representative term value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getRepresentativeTerm(Attributes attributes) { - return attributes.getValue(SymbolicLayoutWriter.ATTRIBUTE_REPRESENTATIVE); - } - - /** - * Returns the term value. - * - * @param attributes The {@link Attributes} which provides the content. - * @return The value. - */ - protected String getTerm(Attributes attributes) { - return attributes.getValue(SymbolicLayoutWriter.ATTRIBUTE_TERM); - } - - - /** - * An implementation of {@link ISymbolicElement} which is independent from KeY and provides such - * only children and default attributes. - * - * @author Martin Hentschel - */ - public static abstract class AbstractKeYlessElement implements ISymbolicElement { - /** - * {@inheritDoc} - */ - @Override - public IModelSettings getSettings() { - return null; - } - } - - /** - * An implementation of {@link ISymbolicLayout} which is independent from KeY and provides such - * only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessLayout extends AbstractKeYlessElement implements ISymbolicLayout { - /** - * The state. - */ - private ISymbolicState state; - - /** - * The objects. - */ - private ImmutableList objects = ImmutableList.nil(); - - /** - * The symbolic equivalence classes. - */ - private ImmutableList equivalenceClasses = ImmutableList.nil(); - - /** - * {@inheritDoc} - */ - - @Override - public ISymbolicState getState() { - return state; - } - - /** - * Sets the state. - * - * @param state The state to set. - */ - public void setState(ISymbolicState state) { - this.state = state; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getObjects() { - return objects; - } - - /** - * Add a new child {@link ISymbolicObject}. - * - * @param object The {@link ISymbolicObject} to add. - */ - public void addObject(ISymbolicObject object) { - objects = objects.append(object); - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getEquivalenceClasses() { - return equivalenceClasses; - } - - /** - * Add a new child {@link ISymbolicEquivalenceClass}. - * - * @param ec The {@link ISymbolicEquivalenceClass} to add. - */ - public void addEquivalenceClass(ISymbolicEquivalenceClass ec) { - equivalenceClasses = equivalenceClasses.append(ec); - } - } - - /** - * An implementation of {@link ISymbolicAssociationValueContainer} which is independent from KeY - * and provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static abstract class AbstractKeYlessAssociationValueContainer - extends AbstractKeYlessElement implements ISymbolicAssociationValueContainer { - /** - * The associations. - */ - private ImmutableList associations = ImmutableList.nil(); - - /** - * The values. - */ - private ImmutableList values = ImmutableList.nil(); - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getAssociations() { - return associations; - } - - /** - * Adds a new child {@link ISymbolicAssociation} - * - * @param association The {@link ISymbolicAssociation} to add. - */ - public void addAssociation(ISymbolicAssociation association) { - associations = associations.append(association); - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getValues() { - return values; - } - - /** - * Adds a new child {@link ISymbolicValue}. - * - * @param value The value to add. - */ - public void addValue(ISymbolicValue value) { - values = values.append(value); - } - } - - /** - * An implementation of {@link ISymbolicState} which is independent from KeY and provides such - * only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessState extends AbstractKeYlessAssociationValueContainer - implements ISymbolicState { - /** - * The name. - */ - private final String name; - - /** - * Constructor. - * - * @param name The name. - */ - public KeYlessState(String name) { - super(); - this.name = name; - } - - /** - * {@inheritDoc} - */ - @Override - public String getName() { - return name; - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicAssociation getAssociation(IProgramVariable programVariable, - boolean isArrayIndex, JTerm arrayIndex, JTerm condition) { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicValue getValue(IProgramVariable programVariable, boolean isArrayIndex, - JTerm arrayIndex, JTerm condition) { - return null; - } - } - - /** - * An implementation of {@link ISymbolicObject} which is independent from KeY and provides such - * only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessObject extends AbstractKeYlessAssociationValueContainer - implements ISymbolicObject { - /** - * The name. - */ - private final String nameString; - - /** - * The type. - */ - private final String typeString; - - /** - * Constructor. - * - * @param nameString The name. - * @param typeString The type. - */ - public KeYlessObject(String nameString, String typeString) { - super(); - this.nameString = nameString; - this.typeString = typeString; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return "Object " + getNameString(); - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getName() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getNameString() { - return nameString; - } - - /** - * {@inheritDoc} - */ - @Override - public Sort getType() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getTypeString() { - return typeString; - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicAssociation getAssociation(IProgramVariable programVariable, - boolean isArrayIndex, JTerm arrayIndex, JTerm condition) { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicValue getValue(IProgramVariable programVariable, boolean isArrayIndex, - JTerm arrayIndex, JTerm condition) { - return null; - } - } - - /** - * An implementation of {@link ISymbolicValue} which is independent from KeY and provides such - * only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessValue extends AbstractKeYlessElement implements ISymbolicValue { - /** - * The program variable. - */ - private final String programVariableString; - - /** - * The value. - */ - private final String valueString; - - /** - * The type. - */ - private final String typeString; - - /** - * The name. - */ - private final String name; - - /** - * The is array index flag. - */ - private final boolean isArrayIndex; - - /** - * The array index. - */ - private final String arrayIndexString; - - /** - * The optional condition under which this value is valid. - */ - private final String conditionString; - - /** - * Constructor. - * - * @param name The name. - * @param programVariableString The program variable. - * @param isArrayIndex The is array index flag. - * @param arrayIndexString The array index. - * @param valueString The value. - * @param typeString The type. - * @param conditionString The optional condition under which this value is valid. - */ - public KeYlessValue(String name, String programVariableString, boolean isArrayIndex, - String arrayIndexString, String valueString, String typeString, - String conditionString) { - super(); - this.name = name; - this.programVariableString = programVariableString; - this.isArrayIndex = isArrayIndex; - this.arrayIndexString = arrayIndexString; - this.valueString = valueString; - this.typeString = typeString; - this.conditionString = conditionString; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return "Value of " + getName() + " is " + getValueString(); - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramVariable getProgramVariable() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getProgramVariableString() { - return programVariableString; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getValue() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getValueString() { - return valueString; - } - - /** - * {@inheritDoc} - */ - @Override - public Sort getType() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getTypeString() { - return typeString; - } - - /** - * {@inheritDoc} - */ - @Override - public String getName() { - return name; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isArrayIndex() { - return isArrayIndex; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getArrayIndex() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getArrayIndexString() { - return arrayIndexString; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getCondition() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getConditionString() { - return conditionString; - } - } - - /** - * An implementation of {@link ISymbolicAssociation} which is independent from KeY and provides - * such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessAssociation extends AbstractKeYlessElement - implements ISymbolicAssociation { - /** - * The program variable. - */ - private final String programVariableString; - - /** - * The target. - */ - private ISymbolicObject target; - - /** - * The name. - */ - private final String name; - - /** - * The is array index flag. - */ - private final boolean isArrayIndex; - - /** - * The array index. - */ - private final String arrayIndexString; - - /** - * The optional condition under which this association is valid. - */ - private final String conditionString; - - /** - * Constructor. - * - * @param name The name. - * @param programVariableString The program variable. - * @param isArrayIndex The is array index flag. - * @param arrayIndexString The array index. - * @param conditionString The optional condition under which this association is valid. - */ - public KeYlessAssociation(String name, String programVariableString, boolean isArrayIndex, - String arrayIndexString, String conditionString) { - this(name, programVariableString, isArrayIndex, arrayIndexString, null, - conditionString); - } - - /** - * Constructor. - * - * @param name The name. - * @param programVariableString The program variable. - * @param isArrayIndex The is array index flag. - * @param arrayIndexString The array index. - * @param target The target. - * @param conditionString The optional condition under which this association is valid. - */ - public KeYlessAssociation(String name, String programVariableString, boolean isArrayIndex, - String arrayIndexString, ISymbolicObject target, String conditionString) { - super(); - this.name = name; - this.programVariableString = programVariableString; - this.isArrayIndex = isArrayIndex; - this.arrayIndexString = arrayIndexString; - this.target = target; - this.conditionString = conditionString; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return "Association " + getName() + " to " + getTarget(); - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramVariable getProgramVariable() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getProgramVariableString() { - return programVariableString; - } - - /** - * Sets the target. - * - * @param target The target to set. - */ - public void setTarget(ISymbolicObject target) { - this.target = target; - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicObject getTarget() { - return target; - } - - /** - * {@inheritDoc} - */ - @Override - public String getName() { - return name; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isArrayIndex() { - return isArrayIndex; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getArrayIndex() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getArrayIndexString() { - return arrayIndexString; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getCondition() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getConditionString() { - return conditionString; - } - } - - /** - * An implementation of {@link ISymbolicEquivalenceClass} which is independent from KeY and - * provides such only children and default attributes. - * - * @author Martin Hentschel - */ - public static class KeYlessEquivalenceClass extends AbstractKeYlessElement - implements ISymbolicEquivalenceClass { - /** - * The terms. - */ - private ImmutableList termStrings; - - /** - * The representative term. - */ - private final String representativeString; - - /** - * Constructor. - * - * @param representativeString The representative term. - */ - public KeYlessEquivalenceClass(String representativeString) { - this(ImmutableList.nil(), representativeString); - } - - /** - * Constructor. - * - * @param termStrings The terms. - * @param representativeString The representative term. - */ - public KeYlessEquivalenceClass(ImmutableList termStrings, - String representativeString) { - this.termStrings = termStrings; - this.representativeString = representativeString; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getTerms() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getTermStrings() { - return termStrings; - } - - /** - * Add a new child term string. - * - * @param termString The term string to add. - */ - public void addTermString(String termString) { - this.termStrings = termStrings.append(termString); - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getRepresentative() { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getRepresentativeString() { - return representativeString; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean containsTerm(JTerm term) { - return false; - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicLayoutWriter.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicLayoutWriter.java deleted file mode 100644 index 954b1dbc0dc..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/SymbolicLayoutWriter.java +++ /dev/null @@ -1,321 +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.symbolic_execution; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.charset.Charset; -import java.util.Iterator; -import java.util.Map; - -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicAssociation; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicEquivalenceClass; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicLayout; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicObject; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicState; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicValue; -import de.uka.ilkd.key.util.LinkedHashMap; - -/** - * Allows to persistent selected properties of {@link ISymbolicLayout}s as XML file. Such files can - * be read via a {@link SymbolicLayoutReader} instance. - * - * @author Martin Hentschel - * @see SymbolicLayoutReader - */ -public class SymbolicLayoutWriter extends AbstractWriter { - /** - * Tag name to store {@link ISymbolicLayout}s. - */ - public static final String TAG_MODEL = "model"; - - /** - * Tag name to store {@link ISymbolicState}s. - */ - public static final String TAG_STATE = "state"; - - /** - * Tag name to store {@link ISymbolicObject}s. - */ - public static final String TAG_OBJECT = "object"; - - /** - * Tag name to store {@link ISymbolicValue}s. - */ - public static final String TAG_VALUE = "value"; - - /** - * Tag name to store {@link ISymbolicAssociation}s. - */ - public static final String TAG_ASSOCIATION = "association"; - - /** - * Tag name to store {@link ISymbolicEquivalenceClass}s. - */ - public static final String TAG_EQUIVALENCE_CLASS = "equivalenceClass"; - - /** - * Tag name to store entries of {@link ISymbolicEquivalenceClass#getTerms()}s. - */ - public static final String TAG_TERM = "term"; - - /** - * Attribute name to store {@link ISymbolicObject#getNameString()}. - */ - public static final String ATTRIBUTE_NAME = "name"; - - /** - * Attribute name to store {@link ISymbolicValue#getProgramVariableString()} and - * {@link ISymbolicAssociation#getProgramVariableString()}. - */ - public static final String ATTRIBUTE_PROGRAM_VARIABLE = "programVariable"; - - /** - * Attribute name to store {@link ISymbolicValue#getValueString()}. - */ - public static final String ATTRIBUTE_VALUE = "value"; - - /** - * Attribute name to store {@link ISymbolicValue#getConditionString()} and - * {@link ISymbolicAssociation#getConditionString()}. - */ - public static final String ATTRIBUTE_CONDITION = "condition"; - - /** - * Attribute name to store {@link ISymbolicAssociation#getTarget()}. - */ - public static final String ATTRIBUTE_TARGET = "target"; - - /** - * Attribute name to store an entry of {@link ISymbolicEquivalenceClass#getTermStrings()} - */ - public static final String ATTRIBUTE_TERM = "term"; - - /** - * Attribute name to store {@link ISymbolicEquivalenceClass#getRepresentativeString()}. - */ - public static final String ATTRIBUTE_REPRESENTATIVE = "representativeTerm"; - - /** - * Attribute name to store {@link ISymbolicValue#getTypeString()} and - * {@link ISymbolicObject#getTypeString()}. - */ - public static final String ATTRIBUTE_TYPE = "type"; - - /** - * Attribute name to store {@link ISymbolicValue#isArrayIndex()} and - * {@link ISymbolicAssociation#getArrayIndexString()}. - */ - public static final String ATTRIBUTE_IS_ARRAY_INDEX = "isArrayIndex"; - - /** - * Attribute name to store {@link ISymbolicValue#getArrayIndexString()} and - * {@link ISymbolicAssociation#getArrayIndexString()}. - */ - public static final String ATTRIBUTE_ARRAY_INDEX = "arrayIndex"; - - /** - * Writes the given {@link ISymbolicLayout} as XML file. - * - * @param model The {@link ISymbolicLayout} to save. - * @param encoding The encoding to use. - * @param file The {@link File} to save to. - * @throws IOException Occurred Exception. - */ - public void write(ISymbolicLayout model, String encoding, File file) throws IOException { - write(model, encoding, new FileOutputStream(file)); - } - - /** - * Writes the given {@link ISymbolicLayout} into the {@link OutputStream}. - * - * @param model The {@link ISymbolicLayout} to save. - * @param encoding The encoding to use. - * @param out The {@link OutputStream} to save to. The {@link OutputStream} will be closed by - * this method. - * @throws IOException Occurred Exception. - */ - public void write(ISymbolicLayout model, String encoding, OutputStream out) throws IOException { - if (out != null) { - try (out) { - Charset charset = - encoding != null ? Charset.forName(encoding) : Charset.defaultCharset(); - String xml = toXML(model, charset.displayName()); - out.write(xml.getBytes(charset)); - } - } - } - - /** - * Converts the given {@link ISymbolicLayout} into XML. - * - * @param model The {@link ISymbolicLayout} to convert. - * @param encoding The encoding to use. - * @return The created XML content. - */ - public String toXML(ISymbolicLayout model, String encoding) { - StringBuilder sb = new StringBuilder(); - appendXmlHeader(encoding, sb); - appendModel(0, model, sb); - return sb.toString(); - } - - /** - * Appends the given {@link ISymbolicLayout} with its children to the given - * {@link StringBuilder}. - * - * @param level The level to use. - * @param model The {@link ISymbolicLayout} to append. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendModel(int level, ISymbolicLayout model, StringBuilder sb) { - Map attributeValues = new LinkedHashMap<>(); - appendStartTag(level, TAG_MODEL, attributeValues, sb); - for (ISymbolicEquivalenceClass ec : model.getEquivalenceClasses()) { - appendEquivalenceClass(level + 1, ec, sb); - } - appendState(level + 1, model, model.getState(), sb); - for (ISymbolicObject object : model.getObjects()) { - appendObject(level + 1, model, object, sb); - } - appendEndTag(level, TAG_MODEL, sb); - } - - /** - * Appends the given {@link ISymbolicEquivalenceClass} with its children to the given - * {@link StringBuilder}. - * - * @param level The level to use. - * @param ec The {@link ISymbolicEquivalenceClass} to append. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendEquivalenceClass(int level, ISymbolicEquivalenceClass ec, - StringBuilder sb) { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_REPRESENTATIVE, ec.getRepresentativeString()); - appendStartTag(level, TAG_EQUIVALENCE_CLASS, attributeValues, sb); - for (String term : ec.getTermStrings()) { - Map termAttributeValues = new LinkedHashMap<>(); - termAttributeValues.put(ATTRIBUTE_TERM, term); - appendEmptyTag(level + 1, TAG_TERM, termAttributeValues, sb); - } - appendEndTag(level, TAG_EQUIVALENCE_CLASS, sb); - } - - /** - * Appends the given {@link ISymbolicState} with its children to the - * given {@link StringBuilder}. - * - * @param level The level to use. - * @param model The {@link ISymbolicLayout} which provides all objects. - * @param state The {@link ISymbolicState} to append. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendState(int level, ISymbolicLayout model, ISymbolicState state, - StringBuilder sb) { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, state.getName()); - appendStartTag(level, TAG_STATE, attributeValues, sb); - for (ISymbolicValue value : state.getValues()) { - appendValue(level + 1, value, sb); - } - for (ISymbolicAssociation association : state.getAssociations()) { - appendAssociation(level + 1, model, association, sb); - } - appendEndTag(level, TAG_STATE, sb); - } - - /** - * Appends the given {@link ISymbolicObject} with its children to the given - * {@link StringBuilder}. - * - * @param level The level to use. - * @param model The {@link ISymbolicLayout} which provides all objects. - * @param object The {@link ISymbolicObject} to append. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendObject(int level, ISymbolicLayout model, ISymbolicObject object, - StringBuilder sb) { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_XML_ID, computeObjectId(model, object)); - attributeValues.put(ATTRIBUTE_NAME, object.getNameString()); - attributeValues.put(ATTRIBUTE_TYPE, object.getTypeString()); - appendStartTag(level, TAG_OBJECT, attributeValues, sb); - for (ISymbolicValue value : object.getValues()) { - appendValue(level + 1, value, sb); - } - for (ISymbolicAssociation association : object.getAssociations()) { - appendAssociation(level + 1, model, association, sb); - } - appendEndTag(level, TAG_OBJECT, sb); - } - - /** - * Appends the given {@link ISymbolicValue} with its children to the - * given {@link StringBuilder}. - * - * @param level The level to use. - * @param value The {@link ISymbolicValue} to append. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendValue(int level, ISymbolicValue value, StringBuilder sb) { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, value.getName()); - attributeValues.put(ATTRIBUTE_PROGRAM_VARIABLE, value.getProgramVariableString()); - attributeValues.put(ATTRIBUTE_IS_ARRAY_INDEX, value.isArrayIndex() + ""); - attributeValues.put(ATTRIBUTE_ARRAY_INDEX, value.getArrayIndexString()); - attributeValues.put(ATTRIBUTE_VALUE, value.getValueString()); - attributeValues.put(ATTRIBUTE_TYPE, value.getTypeString()); - if (value.getConditionString() != null) { - attributeValues.put(ATTRIBUTE_CONDITION, value.getConditionString()); - } - appendEmptyTag(level, TAG_VALUE, attributeValues, sb); - } - - /** - * Appends the given {@link ISymbolicAssociation} with its children to the given - * {@link StringBuilder}. - * - * @param level The level to use. - * @param model The {@link ISymbolicLayout} which provides all objects. - * @param association The {@link ISymbolicAssociation} to append. - * @param sb The {@link StringBuilder} to append to. - */ - protected void appendAssociation(int level, ISymbolicLayout model, - ISymbolicAssociation association, StringBuilder sb) { - Map attributeValues = new LinkedHashMap<>(); - attributeValues.put(ATTRIBUTE_NAME, association.getName()); - attributeValues.put(ATTRIBUTE_PROGRAM_VARIABLE, association.getProgramVariableString()); - attributeValues.put(ATTRIBUTE_IS_ARRAY_INDEX, association.isArrayIndex() + ""); - attributeValues.put(ATTRIBUTE_ARRAY_INDEX, association.getArrayIndexString()); - attributeValues.put(ATTRIBUTE_TARGET, computeObjectId(model, association.getTarget())); - if (association.getConditionString() != null) { - attributeValues.put(ATTRIBUTE_CONDITION, association.getConditionString()); - } - appendEmptyTag(level, TAG_ASSOCIATION, attributeValues, sb); - } - - /** - * Computes a unique ID for the given object in the given model. - * - * @param model The {@link ISymbolicLayout} which provides all objects. - * @param object The {@link ISymbolicObject} to compute its unique ID. - * @return The unique ID. - */ - protected String computeObjectId(ISymbolicLayout model, ISymbolicObject object) { - int i = 0; - int index = -1; - Iterator iter = model.getObjects().iterator(); - while (index < 0 && iter.hasNext()) { - ISymbolicObject next = iter.next(); - if (next == object) { - index = i; - } - i++; - } - return "o" + (index + 1); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/TruthValueTracingUtil.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/TruthValueTracingUtil.java deleted file mode 100644 index ca3d4c3362d..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/TruthValueTracingUtil.java +++ /dev/null @@ -1,1421 +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.symbolic_execution; - -import java.util.Collections; -import java.util.Deque; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.ldt.JavaDLTheory; -import de.uka.ilkd.key.logic.DefaultVisitor; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.TermBuilder; -import de.uka.ilkd.key.logic.label.FormulaTermLabel; -import de.uka.ilkd.key.logic.label.TermLabel; -import de.uka.ilkd.key.logic.op.AbstractTermTransformer; -import de.uka.ilkd.key.logic.op.Equality; -import de.uka.ilkd.key.logic.op.IfThenElse; -import de.uka.ilkd.key.logic.op.Junctor; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProofSaver; -import de.uka.ilkd.key.rule.OneStepSimplifier; -import de.uka.ilkd.key.rule.OneStepSimplifierRuleApp; -import de.uka.ilkd.key.rule.Taclet; -import de.uka.ilkd.key.rule.TacletApp; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; -import de.uka.ilkd.key.util.NodePreorderIterator; - -import org.key_project.logic.Name; -import org.key_project.logic.Term; -import org.key_project.logic.op.Operator; -import org.key_project.logic.op.SortedOperator; -import org.key_project.logic.sort.Sort; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.rules.instantiation.AssumesFormulaInstSeq; -import org.key_project.prover.rules.instantiation.AssumesFormulaInstantiation; -import org.key_project.prover.rules.tacletbuilder.TacletGoalTemplate; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.util.collection.ImmutableArray; -import org.key_project.util.java.ArrayUtil; - -/** - * Provides functionality to evaluate the truth value of labeled formulas (predicates and junctors). - * - * @author Martin Hentschel - */ -public final class TruthValueTracingUtil { - /** - * Forbid instances. - */ - private TruthValueTracingUtil() { - } - - /** - * Checks if the given {@link SequentFormula} is a predicate. - * - * @param sequentFormula The {@link SequentFormula} to check. - * @return {@code true} is predicate, {@code false} is something else. - */ - public static boolean isPredicate( - SequentFormula sequentFormula) { - return sequentFormula != null && isPredicate(sequentFormula.formula()); - } - - /** - * Checks if the given {@link JTerm} is a predicate. - * - * @param term The {@link JTerm} to check. - * @return {@code true} is predicate, {@code false} is something else. - */ - public static boolean isPredicate(Term term) { - return term != null && isPredicate(term.op()); - } - - /** - * Checks if the given {@link Operator} is a predicate. - * - * @param operator The {@link Operator} to check. - * @return {@code true} is predicate, {@code false} is something else. - */ - public static boolean isPredicate(Operator operator) { - if (operator == Equality.EQV) { - return false; - } else if (operator instanceof Junctor) { - return operator == Junctor.TRUE || operator == Junctor.FALSE; - } else if (operator == AbstractTermTransformer.META_EQ - || operator == AbstractTermTransformer.META_GEQ - || operator == AbstractTermTransformer.META_GREATER - || operator == AbstractTermTransformer.META_LEQ - || operator == AbstractTermTransformer.META_LESS) { - return true; // These Meta constructs evaluate always to true or false - } else if (operator instanceof final SortedOperator sortedOperator) { - return sortedOperator.sort() == JavaDLTheory.FORMULA; - } else { - return false; - } - } - - /** - * Checks if the given {@link JTerm} is a logical operator - * - * @param term The {@link JTerm} to check. - * @return {@code true} is logical operator, {@code false} is something else. - */ - public static boolean isLogicOperator(JTerm term) { - if (term != null) { - return isLogicOperator(term.op(), term.subs()); - } else { - return false; - } - } - - /** - * Checks if the given {@link Operator} and its sub {@link JTerm}s specify a logical operator. - * - * @param operator The {@link Operator}. - * @param subs The sub {@link JTerm}s. - * @return {@code true} is logical operator, {@code false} is something else. - */ - public static boolean isLogicOperator(Operator operator, ImmutableArray subs) { - if (operator instanceof Junctor) { - return operator != Junctor.TRUE && operator != Junctor.FALSE; - } else if (operator == Equality.EQV) { - return true; - } else - return isIfThenElseFormula(operator, subs); - } - - /** - * Checks if the given {@link JTerm} is an if-then-else formula. - * - * @param term The {@link JTerm} to check. - * @return {@code true} is if-then-else formula, {@code false} is something else. - */ - public static boolean isIfThenElseFormula(JTerm term) { - if (term != null) { - return isIfThenElseFormula(term.op(), term.subs()); - } else { - return false; - } - } - - /** - * Checks if the given {@link Operator} and its sub {@link JTerm}s specify an if-then-else - * formula. - * - * @param operator The {@link Operator}. - * @param subs The sub {@link JTerm}s. - * @return {@code true} is if-then-else formula, {@code false} is something else. - */ - public static boolean isIfThenElseFormula(Operator operator, ImmutableArray subs) { - if (operator == IfThenElse.IF_THEN_ELSE) { - Sort[] sorts = new Sort[subs.size()]; - for (int i = 0; i < sorts.length; i++) { - sorts[i] = subs.get(i).sort(); - } - Sort sort = operator.sort(sorts); - return sort == JavaDLTheory.FORMULA; - } else { - return false; - } - } - - /** - * Evaluates the truth values in the subtree of the given {@link Node} for predicates labeled - * with the given {@link TermLabel} name. - * - * @param node The {@link Node} to start evaluation at. - * @param termLabelName The {@link Name} of the {@link TermLabel} to consider. - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @return The result. - * @throws ProofInputException Occurred Exception - */ - public static TruthValueTracingResult evaluate(Node node, Name termLabelName, - boolean useUnicode, boolean usePrettyPrinting) throws ProofInputException { - TruthValueTracingResult result = new TruthValueTracingResult(); - Deque> evaluationStack = - new LinkedList<>(); - evaluationStack.addFirst(new HashMap<>()); - Services services = node.proof().getServices(); - NodePreorderIterator iterator = new NodePreorderIterator(node); - while (iterator.hasNext()) { - // Get next node - int childIndexOnParnt = iterator.getChildIndexOnParent(); // Needs to be called before - // next is called. - Node next = iterator.next(); - // Create child result for current node - final Map topResults = evaluationStack.getFirst(); - Map nodeResults = - new HashMap<>(topResults); - evaluationStack.addFirst(nodeResults); - // Analyze node - evaluateNode(node, useUnicode, usePrettyPrinting, next, childIndexOnParnt, - termLabelName, nodeResults, result, services); - // Remove no longer needed child result of returned nodes - for (int i = 0; i < iterator.getReturnedParents(); i++) { - evaluationStack.removeFirst(); - } - } - return result; - } - - /** - * Evaluates the truth statuses changed from the parent {@link Node} to its child {@link Node}. - * - * @param evaluationNode The {@link Node} where the truth status tracing started. - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param child The current child {@link Node} to analyze. - * @param childIndexOnParent The index of the child {@link Node} on its parent {@link Node}. - * @param termLabelName The {@link Name} of the {@link TermLabel} to consider. - * @param nodeResult The to child {@link Node} related result {@link Map} to update. - * @param result The overall {@link TruthValueTracingResult} to update. - * @param services The {@link Services} to use. - * @throws ProofInputException Occurred exception. - */ - private static void evaluateNode( - final Node evaluationNode, final boolean useUnicode, - final boolean usePrettyPrinting, final Node child, final int childIndexOnParent, - final Name termLabelName, Map nodeResult, - final TruthValueTracingResult result, final Services services) - throws ProofInputException { - // Analyze parent rule application - boolean checkPerformed = false; - if (childIndexOnParent >= 0) { - Node parent = child.parent(); - if (parent.getAppliedRuleApp() instanceof TacletApp tacletApp) { - List labels = - findInvolvedLabels(parent.sequent(), tacletApp, termLabelName); - if (!labels.isEmpty()) { - Taclet taclet = tacletApp.taclet(); - if (!isClosingRule(taclet)) { // Not a closing taclet - checkPerformed = true; - TacletGoalTemplate tacletGoal = - taclet.goalTemplates().reverse().get(childIndexOnParent); - // Check for new minor ids created by parent rule application - updatePredicateResultBasedOnNewMinorIds(child, termLabelName, - services.getTermBuilder(), nodeResult); - analyzeTacletGoal(parent, tacletApp, tacletGoal, labels, services, - nodeResult); - } else if (tacletApp.posInOccurrence() != null) { - for (LabelOccurrence occurrence : labels) { - updatePredicateResult(occurrence.label(), - !occurrence.inAntecedent(), nodeResult); - } - } - } - } else if (parent.getAppliedRuleApp() instanceof OneStepSimplifierRuleApp app) { - PosInOccurrence parentPio = null; - for (RuleApp protocolApp : app.getProtocol()) { - if (parentPio != null) { - updatePredicateResultBasedOnNewMinorIdsOSS(protocolApp.posInOccurrence(), - parentPio, termLabelName, services.getTermBuilder(), nodeResult); - } - assert protocolApp instanceof TacletApp; - TacletApp tacletApp = (TacletApp) protocolApp; - Taclet taclet = tacletApp.taclet(); - assert taclet.goalTemplates().size() == 1; - List labels = - findInvolvedLabels(parent.sequent(), tacletApp, termLabelName); - if (!labels.isEmpty()) { - analyzeTacletGoal(parent, tacletApp, taclet.goalTemplates().head(), labels, - services, nodeResult); - } - parentPio = protocolApp.posInOccurrence(); - } - // Compare last PIO with PIO in child sequent (Attention: Child PIO is computed with - // help of the PIO of the OSS) - if (parentPio != null) { - assert 1 == parent.childrenCount() - : "Implementaton of the OneStepSimplifierRule has changed."; - PosInOccurrence childPio = - SymbolicExecutionUtil.posInOccurrenceToOtherSequent( - parent, parent.getAppliedRuleApp().posInOccurrence(), parent.child(0)); - updatePredicateResultBasedOnNewMinorIdsOSS(childPio, parentPio, termLabelName, - services.getTermBuilder(), nodeResult); - } - } - } - // If goal reached, update final result - int childCount = child.childrenCount(); - if (childCount == 0) { - JTerm condition = - SymbolicExecutionUtil.computePathCondition(evaluationNode, child, false, true); - String conditionString = SymbolicExecutionUtil.formatTerm(condition, services, - useUnicode, usePrettyPrinting); - result.addBranchResult( - new BranchResult(child, nodeResult, condition, conditionString, termLabelName)); - } else if (!checkPerformed) { - updatePredicateResultBasedOnNewMinorIds(child, termLabelName, services.getTermBuilder(), - nodeResult); - } - } - - /** - * Checks if the {@link Taclet} is a closing rule. - * - * @param taclet The {@link Taclet} to check. - * @return {@code true} is closing, {@code false} is not closing. - */ - private static boolean isClosingRule(Taclet taclet) { - return taclet.goalTemplates().isEmpty(); - } - - /** - * Computes the occurrences of all involved {@link FormulaTermLabel}s. - * - * @param sequent The {@link Sequent} on which the given {@link TacletApp} was applied. - * @param tacletApp The applied {@link TacletApp}. - * @param termLabelName The {@link Name} of the {@link TermLabel} to consider. - * @return The found {@link LabelOccurrence}s. - */ - private static List findInvolvedLabels( - Sequent sequent, TacletApp tacletApp, - Name termLabelName) { - List result = new LinkedList<>(); - // Search for labels in find part - PosInOccurrence pio = tacletApp.posInOccurrence(); - if (pio != null) { - JTerm term = (JTerm) pio.subTerm(); - if (term != null) { - // Check for evaluated truth values - TermLabel label = term.getLabel(termLabelName); - if (label instanceof FormulaTermLabel) { - result.add(new LabelOccurrence((FormulaTermLabel) label, pio.isInAntec())); - } - } - } - if (isClosingRule(tacletApp.taclet())) { - if (tacletApp.assumesInstantionsComplete() - && tacletApp.assumesFormulaInstantiations() != null) { - for (AssumesFormulaInstantiation ifInst : tacletApp - .assumesFormulaInstantiations()) { - assert ifInst instanceof AssumesFormulaInstSeq; - JTerm term = (JTerm) ifInst.getSequentFormula().formula(); - TermLabel label = term.getLabel(termLabelName); - if (label instanceof FormulaTermLabel) { - result.add(new LabelOccurrence((FormulaTermLabel) label, - ((AssumesFormulaInstSeq) ifInst).inAntecedent())); - } - } - } - } - return result; - } - - /** - * Utility class which specifies the occurrence of a {@link FormulaTermLabel}. - * - * @param label The {@link FormulaTermLabel}. - * @param inAntecedent {@code true} occurred in antecedent, {@code false} occurred in succedent. - * @author Martin Hentschel - */ - private record LabelOccurrence(FormulaTermLabel label, boolean inAntecedent) { - /** - * Constructor. - * - * @param label The {@link FormulaTermLabel}. - * @param inAntecedent {@code true} occurred in antecedent, {@code false} occurred in - * succedent. - */ - private LabelOccurrence { - } - - /** - * Returns the {@link FormulaTermLabel}. - * - * @return The {@link FormulaTermLabel}. - */ - @Override - public FormulaTermLabel label() { - return label; - } - - /** - * Checks if the label occurred in antecedent or succedent. - * - * @return {@code true} occurred in antecedent, {@code false} occurred in succedent. - */ - @Override - public boolean inAntecedent() { - return inAntecedent; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return label + (inAntecedent ? " in antecedent" : " in succedent"); - } - } - - /** - * Analyzes the given {@link TacletGoalTemplate}. - * - * @param parent The current {@link Node} on which the rule was applied. - * @param tacletApp The {@link TacletApp}. - * @param tacletGoal The {@link TacletGoalTemplate}. - * @param labels The {@link FormulaTermLabel}s. - * @param services The {@link Services} to use. - * @param results The {@link Map} with all available {@link MultiEvaluationResult}s. - */ - private static void analyzeTacletGoal( - Node parent, TacletApp tacletApp, - TacletGoalTemplate tacletGoal, List labels, Services services, - Map results) { - Object replaceObject = tacletGoal.replaceWithExpressionAsObject(); - if (replaceObject instanceof JTerm) { - JTerm replaceTerm = SymbolicExecutionUtil.instantiateTerm(parent, (JTerm) replaceObject, - tacletApp, services); - if (replaceTerm.op() == Junctor.TRUE) { - // Find term is replaced by true - for (LabelOccurrence occurrence : labels) { - updatePredicateResult(occurrence.label(), true, results); - } - } else if (replaceTerm.op() == Junctor.FALSE) { - // Find term is replaced by false - for (LabelOccurrence occurrence : labels) { - updatePredicateResult(occurrence.label(), false, results); - } - } - } - } - - /** - * Updates the predicate results based on minor ID changes if available in case of - * {@link OneStepSimplifier} usage. - * - * @param childPio The child position - * @param termLabelName The name of the {@link TermLabel} which is added to predicates. - * @param tb The {@link TermBuilder} to use. - * @param results The {@link Map} with all available {@link MultiEvaluationResult}s. - */ - private static void updatePredicateResultBasedOnNewMinorIdsOSS( - final PosInOccurrence childPio, - final PosInOccurrence parentPio, final Name termLabelName, - final TermBuilder tb, - final Map results) { - if (parentPio != null) { - // Check application term and all of its children and grand children - parentPio.subTerm() - .execPreOrder((DefaultVisitor) visited -> checkForNewMinorIdsOSS( - childPio.sequentFormula(), (JTerm) visited, - termLabelName, - parentPio, tb, results)); - // Check application term parents - PosInOccurrence currentPio = parentPio; - while (!currentPio.isTopLevel()) { - currentPio = currentPio.up(); - checkForNewMinorIdsOSS(childPio.sequentFormula(), - (JTerm) currentPio.subTerm(), - termLabelName, parentPio, tb, results); - } - } - } - - /** - * Checks if new minor IDs are available in case of {@link OneStepSimplifier} usage. - * - * @param onlyChangedChildSF The only changed {@link SequentFormula} in the child {@link Node}. - * @param term The {@link JTerm} contained in the child {@link Node} to check. - * @param termLabelName The name of the {@link TermLabel} which is added to predicates. - * @param parentPio The {@link PosInOccurrence} of the applied rule of the parent {@link Node}. - * @param tb The {@link TermBuilder} to use. - * @param results The {@link Map} with all available {@link MultiEvaluationResult}s. - */ - private static void checkForNewMinorIdsOSS( - SequentFormula onlyChangedChildSF, JTerm term, - Name termLabelName, PosInOccurrence parentPio, - TermBuilder tb, - Map results) { - TermLabel label = term.getLabel(termLabelName); - if (label instanceof final FormulaTermLabel formulaLabel) { - JTerm replacement = checkForNewMinorIdsOSS(onlyChangedChildSF, formulaLabel, - parentPio.isInAntec(), tb); - if (replacement != null) { - updatePredicateResult(formulaLabel, replacement, results); - } - } - } - - /** - * Checks if new minor IDs are available in case of {@link OneStepSimplifier} usage. - * - * @param onlyChangedChildSF The only changed {@link SequentFormula} in the child {@link Node}. - * @param label The {@link FormulaTermLabel} of interest. - * @param antecedentRuleApplication {@code true} rule applied on antecedent, {@code false} rule - * applied on succedent. - * @param tb The {@link TermBuilder} to use. - * @return The computed instruction {@link JTerm} or {@code null} if not available. - */ - private static JTerm checkForNewMinorIdsOSS( - SequentFormula onlyChangedChildSF, - FormulaTermLabel label, boolean antecedentRuleApplication, TermBuilder tb) { - // Search replacements - List antecedentReplacements = new LinkedList<>(); - List succedentReplacements = new LinkedList<>(); - if (antecedentRuleApplication) { - listLabelReplacements(onlyChangedChildSF, label.name(), label.getId(), - antecedentReplacements); - } else { - listLabelReplacements(onlyChangedChildSF, label.name(), label.getId(), - succedentReplacements); - } - // Compute term - return computeInstructionTerm(antecedentReplacements, succedentReplacements, - antecedentRuleApplication, tb); - } - - /** - * Updates the predicate results based on minor ID changes if available. - * - * @param childNode The child {@link Node}. - * @param termLabelName The name of the {@link TermLabel} which is added to predicates. - * @param tb The {@link TermBuilder} to use. - * @param results The {@link Map} with all available {@link MultiEvaluationResult}s. - */ - private static void updatePredicateResultBasedOnNewMinorIds( - final Node childNode, - final Name termLabelName, final TermBuilder tb, - final Map results) { - final Node parentNode = childNode.parent(); - if (parentNode != null) { - final RuleApp parentRuleApp = parentNode.getAppliedRuleApp(); - final PosInOccurrence parentPio = - parentRuleApp.posInOccurrence(); - if (parentPio != null) { - // Check application term and all of its children and grand children - parentPio.subTerm() - .execPreOrder((DefaultVisitor) visited -> checkForNewMinorIds(childNode, - (JTerm) visited, termLabelName, parentPio, tb, - results)); - // Check application term parents - PosInOccurrence currentPio = parentPio; - while (!currentPio.isTopLevel()) { - currentPio = currentPio.up(); - checkForNewMinorIds(childNode, (JTerm) currentPio.subTerm(), termLabelName, - parentPio, - tb, results); - } - // Check if instantiations - if (parentRuleApp instanceof TacletApp ta) { - if (ta.assumesInstantionsComplete() - && ta.assumesFormulaInstantiations() != null) { - for (AssumesFormulaInstantiation ifInst : ta - .assumesFormulaInstantiations()) { - checkForNewMinorIds(childNode, - (JTerm) ifInst.getSequentFormula().formula(), - termLabelName, parentPio, tb, results); - } - } - } - } - } - } - - /** - * Checks if new minor IDs are available. - * - * @param childNode The child {@link Node}. - * @param term The {@link JTerm} contained in the child {@link Node} to check. - * @param termLabelName The name of the {@link TermLabel} which is added to predicates. - * @param parentPio The {@link PosInOccurrence} of the applied rule of the parent {@link Node}. - * @param tb The {@link TermBuilder} to use. - * @param results The {@link Map} with all available {@link MultiEvaluationResult}s. - */ - private static void checkForNewMinorIds( - Node childNode, JTerm term, Name termLabelName, - PosInOccurrence parentPio, TermBuilder tb, - Map results) { - TermLabel label = term.getLabel(termLabelName); - if (label instanceof FormulaTermLabel) { - JTerm replacement = - checkForNewMinorIds(childNode, (FormulaTermLabel) label, parentPio.isInAntec(), tb); - if (replacement != null) { - updatePredicateResult((FormulaTermLabel) label, replacement, results); - } - } - } - - /** - * Checks if new minor IDs are available. - * - * @param childNode The child {@link Node}. - * @param label The {@link FormulaTermLabel} of interest. - * @param antecedentRuleApplication {@code true} rule applied on antecedent, {@code false} rule - * applied on succedent. - * @param tb The {@link TermBuilder} to use. - * @return The computed instruction {@link JTerm} or {@code null} if not available. - */ - private static JTerm checkForNewMinorIds( - Node childNode, FormulaTermLabel label, - boolean antecedentRuleApplication, TermBuilder tb) { - // Search replacements - List antecedentReplacements = new LinkedList<>(); - List succedentReplacements = new LinkedList<>(); - for (SequentFormula sf : childNode.sequent().antecedent()) { - listLabelReplacements(sf, label.name(), label.getId(), antecedentReplacements); - } - for (SequentFormula sf : childNode.sequent().succedent()) { - listLabelReplacements(sf, label.name(), label.getId(), succedentReplacements); - } - // Compute term - return computeInstructionTerm(antecedentReplacements, succedentReplacements, - antecedentRuleApplication, tb); - } - - /** - * Lists all label replacements in the given {@link SequentFormula}. - * - * @param sf The {@link SequentFormula} to analyze. - * @param labelName The name of the {@link TermLabel} which is added to predicates. - * @param labelId The label ID of interest. - * @param resultToFill The result {@link List} to fill. - */ - private static void listLabelReplacements( - final SequentFormula sf, final Name labelName, - final String labelId, final List resultToFill) { - sf.formula().execPreOrder(new DefaultVisitor() { - @Override - public boolean visitSubtree(Term visited) { - return !hasLabelOfInterest((JTerm) visited); - } - - @Override - public void visit(Term p_visited) { - final JTerm visited = (JTerm) p_visited; - if (hasLabelOfInterest(visited)) { - resultToFill.add(visited); - } - } - - private boolean hasLabelOfInterest(JTerm visited) { - TermLabel visitedLabel = visited.getLabel(labelName); - if (visitedLabel instanceof FormulaTermLabel pLabel) { - String[] beforeIds = pLabel.getBeforeIds(); - return ArrayUtil.contains(beforeIds, labelId); - } else { - return false; - } - } - }); - } - - /** - * Computes the {@link JTerm} with the instruction how to compute the truth value based on the - * found replacements. - * - * @param antecedentReplacements The replacements found in the antecedent. - * @param succedentReplacements The replacements found in the succedent. - * @param antecedentRuleApplication {@code true} rule applied on antecedent, {@code false} rule - * applied on succedent. - * @param tb The {@link TermBuilder} to use. - * @return The computed instruction {@link JTerm} or {@code null} if not available. - */ - private static JTerm computeInstructionTerm( - List antecedentReplacements, - List succedentReplacements, boolean antecedentRuleApplication, TermBuilder tb) { - if (!antecedentReplacements.isEmpty() || !succedentReplacements.isEmpty()) { - JTerm left = tb.andPreserveLabels(antecedentReplacements); - JTerm right = tb.orPreserveLabels(succedentReplacements); - if (antecedentRuleApplication) { - return tb.andPreserveLabels(left, tb.notPreserveLabels(right)); - } else { - return tb.impPreserveLabels(left, right); - } - } else { - return null; - } - } - - /** - * Updates the instruction {@link JTerm} for the given {@link FormulaTermLabel} in the result - * {@link Map}. - * - * @param label The {@link FormulaTermLabel} to update its instruction {@link JTerm}. - * @param instructionTerm The new instruction {@link JTerm} to set. - * @param results The {@link Map} with all available {@link MultiEvaluationResult}s. - */ - private static void updatePredicateResult( - FormulaTermLabel label, JTerm instructionTerm, - Map results) { - MultiEvaluationResult result = results.get(label.getId()); - if (result == null) { - result = new MultiEvaluationResult(instructionTerm); - } else { - result = result.newInstructionTerm(instructionTerm); - } - results.put(label.getId(), result); - } - - /** - * Updates the evaluation result for the given {@link FormulaTermLabel} in the result - * {@link Map}. - * - * @param label The {@link FormulaTermLabel} to update its instruction {@link JTerm}. - * @param evaluationResult {@code true} label evaluates at least once to true, {@code false} - * label evaluates at least once to false. - * @param results The {@link Map} with all available {@link MultiEvaluationResult}s. - */ - private static void updatePredicateResult( - FormulaTermLabel label, boolean evaluationResult, - Map results) { - MultiEvaluationResult result = results.get(label.getId()); - if (result == null) { - result = new MultiEvaluationResult(evaluationResult); - } else { - result = result.newEvaluationResult(evaluationResult); - } - results.put(label.getId(), result); - } - - /** - * Instances of this unmodifyable class are used to store the found evaluation results. - * - * @author Martin Hentschel - */ - public static class MultiEvaluationResult { - /** - * {@code true} label evaluates at least once to true, {@code false} label never evaluates - * to true. - */ - private final boolean evaluatesToTrue; - - /** - * {@code true} label evaluates at least once to false, {@code false} label never evaluates - * to false. - */ - private final boolean evaluatesToFalse; - - /** - * The instruction {@link JTerm}. - */ - private final JTerm instructionTerm; - - /** - * Constructor. - * - * @param evaluationResult {@code true} label evaluates at least once to true, {@code false} - * label evaluates at least once to false. - */ - public MultiEvaluationResult(boolean evaluationResult) { - this(evaluationResult, !evaluationResult, null); - } - - /** - * Constructor. - * - * @param instructionTerm The instruction {@link JTerm}. - */ - public MultiEvaluationResult(JTerm instructionTerm) { - this(false, false, instructionTerm); - } - - /** - * Constructor. - * - * @param evaluatesToTrue {@code true} label evaluates at least once to true, {@code false} - * label never evaluates to true. - * @param evaluatesToFalse {@code true} label evaluates at least once to false, - * {@code false} label never evaluates to false. - * @param instructionTerm The instruction {@link JTerm}. - */ - public MultiEvaluationResult(boolean evaluatesToTrue, boolean evaluatesToFalse, - JTerm instructionTerm) { - this.evaluatesToTrue = evaluatesToTrue; - this.evaluatesToFalse = evaluatesToFalse; - this.instructionTerm = instructionTerm; - } - - /** - * Checks if it is at least once evaluated to {@code true}. - * - * @return {@code true} label evaluates at least once to true, {@code false} label never - * evaluates to true. - */ - public boolean isEvaluatesToTrue() { - return evaluatesToTrue; - } - - /** - * Checks if it is at least once evaluated to {@code false}. - * - * @return {@code true} label evaluates at least once to false, {@code false} label never - * evaluates to false. - */ - public boolean isEvaluatesToFalse() { - return evaluatesToFalse; - } - - /** - * Returns the instruction {@link JTerm}. - * - * @return The instruction {@link JTerm} or {@code null} if undefined. - */ - public JTerm getInstructionTerm() { - return instructionTerm; - } - - /** - * Creates a new {@link MultiEvaluationResult} based on the current once but with an updated - * evaluation result. - * - * @param evaluationResult {@code true} label evaluates at least once to true, {@code false} - * label evaluates at least once to false. - * @return The new created {@link MultiEvaluationResult}. - */ - public MultiEvaluationResult newEvaluationResult(boolean evaluationResult) { - if (evaluationResult) { - return newEvaluatesToTrue(true); - } else { - return newEvaluatesToFalse(true); - } - } - - /** - * Creates a new {@link MultiEvaluationResult} based on the current once but with an update - * evaluates to true state. - * - * @param newEvaluatesToTrue {@code true} label evaluates at least once to true, - * {@code false} label never evaluates to true. - * @return The new created {@link MultiEvaluationResult}. - */ - public MultiEvaluationResult newEvaluatesToTrue(boolean newEvaluatesToTrue) { - return new MultiEvaluationResult(newEvaluatesToTrue, evaluatesToFalse, instructionTerm); - } - - /** - * Creates a new {@link MultiEvaluationResult} based on the current once but with an update - * evaluates to false state. - * - * @param newEvaluatesToFalse {@code true} label evaluates at least once to false, - * {@code false} label never evaluates to false. - * @return The new created {@link MultiEvaluationResult}. - */ - public MultiEvaluationResult newEvaluatesToFalse(boolean newEvaluatesToFalse) { - return new MultiEvaluationResult(evaluatesToTrue, newEvaluatesToFalse, instructionTerm); - } - - /** - * Creates a new {@link MultiEvaluationResult} based on the current once but with an update - * instruction term. - * - * @param newInstructionTerm The new instruction {@link JTerm}. - * @return The new created {@link MultiEvaluationResult}. - */ - public MultiEvaluationResult newInstructionTerm(JTerm newInstructionTerm) { - return new MultiEvaluationResult(evaluatesToTrue, evaluatesToFalse, newInstructionTerm); - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return "true=" + evaluatesToTrue + ", false=" + evaluatesToFalse + ", instruction=" - + instructionTerm; - } - - /** - * Creates a pretty printed {@link String}. - * - * @param services The {@link Services} to use. - * @return The pretty printed {@link String}. - */ - public String toPrettyString(Services services) { - return "true=" + evaluatesToTrue + ", false=" + evaluatesToFalse - + (instructionTerm != null - ? ", instruction:\n" + ProofSaver.printTerm(instructionTerm, services) - : ""); - } - - /** - * Computes the final truth value. - * - * @param termLabelName The {@link Name} of the {@link TermLabel} to consider. - * @param results All available {@link MultiEvaluationResult}s. - * @return The computed {@link TruthValue}. - */ - public TruthValue evaluate(Name termLabelName, Map results) { - if (evaluatesToTrue && evaluatesToFalse) { - return TruthValue.UNKNOWN; - } else if (evaluatesToTrue) { - return TruthValue.TRUE; - } else if (evaluatesToFalse) { - return TruthValue.FALSE; - } else if (instructionTerm != null) { - return evaluateTerm(instructionTerm, termLabelName, results); - } else { - return TruthValue.UNKNOWN; - } - } - - /*** - * Computes the {@link TruthValue} of the given instruction {@link JTerm}. - * - * @param term The instruction {@link JTerm} to evaluate. - * @param termLabelName The {@link Name} of the {@link TermLabel} to consider. - * @param results All available {@link MultiEvaluationResult}s. - * @return The computed {@link TruthValue}. - */ - private static TruthValue evaluateTerm(JTerm term, Name termLabelName, - Map results) { - TermLabel label = term.getLabel(termLabelName); - // Return direct label result if available - if (label instanceof FormulaTermLabel) { - MultiEvaluationResult instruction = results.get(((FormulaTermLabel) label).getId()); - if (instruction != null) { - return instruction.evaluate(termLabelName, results); - } - } - // If direct label result is not available try to compute it. (e.g. because of or/and - // label was replaced by sequent top level formuals) - if (term.op() == Junctor.AND || term.op() == Junctor.IMP || term.op() == Junctor.OR - || term.op() == Equality.EQV) { - JTerm leftTerm = TermBuilder.goBelowUpdates(term.sub(0)); - JTerm rightTerm = TermBuilder.goBelowUpdates(term.sub(1)); - TermLabel leftLabel = leftTerm.getLabel(termLabelName); - TermLabel rightLabel = rightTerm.getLabel(termLabelName); - MultiEvaluationResult leftInstruction = leftLabel instanceof FormulaTermLabel - ? results.get(((FormulaTermLabel) leftLabel).getId()) - : null; - MultiEvaluationResult rightInstruction = rightLabel instanceof FormulaTermLabel - ? results.get(((FormulaTermLabel) rightLabel).getId()) - : null; - TruthValue leftValue = - leftInstruction != null ? leftInstruction.evaluate(termLabelName, results) - : evaluateTerm(leftTerm, termLabelName, results); - TruthValue rightValue = - rightInstruction != null ? rightInstruction.evaluate(termLabelName, results) - : evaluateTerm(rightTerm, termLabelName, results); - TruthValue resultValue; - if (term.op() == Junctor.AND) { - resultValue = TruthValue.and(leftValue, rightValue); - } else if (term.op() == Junctor.IMP) { - resultValue = TruthValue.imp(leftValue, rightValue); - } else if (term.op() == Junctor.OR) { - resultValue = TruthValue.or(leftValue, rightValue); - } else if (term.op() == Equality.EQV) { - resultValue = TruthValue.eqv(leftValue, rightValue); - } else { - throw new IllegalStateException( - "Operator '" + term.op() + "' is not supported."); - } - return resultValue; - } else if (term.op() == Junctor.NOT) { - JTerm argumentTerm = TermBuilder.goBelowUpdates(term.sub(0)); - TermLabel argumentLabel = argumentTerm.getLabel(termLabelName); - MultiEvaluationResult argumentInstruction = - argumentLabel instanceof FormulaTermLabel - ? results.get(((FormulaTermLabel) argumentLabel).getId()) - : null; - TruthValue argumentValue = argumentInstruction != null - ? argumentInstruction.evaluate(termLabelName, results) - : evaluateTerm(argumentTerm, termLabelName, results); - TruthValue resultValue = TruthValue.not(argumentValue); - return resultValue; - } else if (term.op() == Junctor.TRUE) { - return TruthValue.TRUE; - } else if (term.op() == Junctor.FALSE) { - return TruthValue.FALSE; - } else if (isIfThenElseFormula(term)) { - JTerm conditionTerm = TermBuilder.goBelowUpdates(term.sub(0)); - JTerm thenTerm = TermBuilder.goBelowUpdates(term.sub(1)); - JTerm elseTerm = TermBuilder.goBelowUpdates(term.sub(2)); - TermLabel conditionLabel = conditionTerm.getLabel(termLabelName); - TermLabel thenLabel = thenTerm.getLabel(termLabelName); - TermLabel elseLabel = elseTerm.getLabel(termLabelName); - MultiEvaluationResult conditionInstruction = - conditionLabel instanceof FormulaTermLabel - ? results.get(((FormulaTermLabel) conditionLabel).getId()) - : null; - MultiEvaluationResult thenInstruction = thenLabel instanceof FormulaTermLabel - ? results.get(((FormulaTermLabel) thenLabel).getId()) - : null; - MultiEvaluationResult elseInstruction = elseLabel instanceof FormulaTermLabel - ? results.get(((FormulaTermLabel) elseLabel).getId()) - : null; - TruthValue conditionValue = conditionInstruction != null - ? conditionInstruction.evaluate(termLabelName, results) - : evaluateTerm(conditionTerm, termLabelName, results); - TruthValue thenValue = - thenInstruction != null ? thenInstruction.evaluate(termLabelName, results) - : evaluateTerm(thenTerm, termLabelName, results); - TruthValue elseValue = - elseInstruction != null ? elseInstruction.evaluate(termLabelName, results) - : evaluateTerm(elseTerm, termLabelName, results); - TruthValue resultValue = - TruthValue.ifThenElse(conditionValue, thenValue, elseValue); - return resultValue; - } else { - return null; - } - } - } - - /** - * Represents the final predicate evaluation result returned by - * {@link TruthValueTracingUtil#evaluate(Node, Name, boolean, boolean)} - * - * @author Martin Hentschel - */ - public static class TruthValueTracingResult { - /** - * The {@link BranchResult}s. - */ - private final List branchResults = new LinkedList<>(); - - /** - * Adds a {@link BranchResult}. - * - * @param result The {@link BranchResult} to add. - */ - public void addBranchResult(BranchResult result) { - if (result != null) { - branchResults.add(result); - } - } - - /** - * Returns all {@link BranchResult}s. - * - * @return The {@link BranchResult}s. - */ - public BranchResult[] getBranchResults() { - return branchResults.toArray(new BranchResult[0]); - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - boolean afterFirst = false; - for (BranchResult result : branchResults) { - if (afterFirst) { - sb.append("\n\n"); - } else { - afterFirst = true; - } - sb.append(result); - } - return sb.toString(); - } - } - - /** - * Represents the unmodifiable predicate results of a leaf {@link Node} ({@link Goal}). - * - * @param results All found results. - * @param leafNode The leaf {@link Node}. - * @param condition The condition under which the leaf {@link Node} is reached from the analyzed - * {@link Node}. - * @param conditionString The human readable condition under which the leaf {@link Node} is - * reached from the - * analyzed {@link Node}. - * @param termLabelName The {@link Name} of the {@link TermLabel} to consider. - * @author Martin Hentschel - */ - public record BranchResult(Node leafNode, Map results, - JTerm condition, - String conditionString, Name termLabelName) { - /** - * Constructor. - * - * @param leafNode The leaf {@link Node}. - * @param results All found results. - * @param condition The condition under which the leaf {@link Node} is reached from the - * analyzed {@link Node}. - * @param conditionString The human readable condition under which the leaf {@link Node} is - * reached from the analyzed {@link Node}. - * @param termLabelName The {@link Name} of the {@link TermLabel} to consider. - */ - public BranchResult { - assert leafNode != null; - assert results != null; - assert termLabelName != null; - } - - /** - * Returns all found results. - * - * @return All found results. - */ - @Override - public Map results() { - return Collections.unmodifiableMap(results); - } - - /** - * Returns the {@link MultiEvaluationResult} for the given {@link FormulaTermLabel}. - * - * @param termLabel The {@link FormulaTermLabel}. - * @return The found {@link MultiEvaluationResult} or {@code null} if not available. - */ - public MultiEvaluationResult getResult(FormulaTermLabel termLabel) { - return termLabel != null ? results.get(termLabel.getId()) : null; - } - - /** - * Updates a result. - *

- * Warning: {@link BranchResult}s are considered to be unmodifiable. This means that - * an update of the result needs to be done before results are shown to the user by the UI. - * - * @param termLabel The {@link FormulaTermLabel} to update. - * @param result The new result of the given {@link FormulaTermLabel}. - */ - public void updateResult(FormulaTermLabel termLabel, MultiEvaluationResult result) { - if (termLabel != null) { - results.put(termLabel.getId(), result); - } - } - - /** - * Returns the condition under which the leaf {@link Node} is reached from the analyzed - * {@link Node}. - * - * @return The condition under which the leaf {@link Node} is reached from the analyzed - * {@link Node}. - */ - @Override - public JTerm condition() { - return condition; - } - - /** - * Returns the human readable condition under which the leaf {@link Node} is reached from - * the analyzed {@link Node}. - * - * @return The human readable condition under which the leaf {@link Node} is reached from - * the analyzed {@link Node}. - */ - @Override - public String conditionString() { - return conditionString; - } - - /** - * Returns the {@link Name} of the {@link TermLabel} to consider. - * - * @return The {@link Name} of the {@link TermLabel} to consider. - */ - @Override - public Name termLabelName() { - return termLabelName; - } - - /** - * Checks if the {@link JTerm} has a {@link TermLabel} with {@link Name} - * {@link #termLabelName ()}. - * - * @param term The {@link JTerm} to check. - * @return {@code true} has {@link TermLabel}, {@code false} do not has {@link TermLabel}. - */ - public boolean hasPredicateLabel(JTerm term) { - return getPredicateLabel(term) != null; - } - - /** - * Returns the first {@link FormulaTermLabel} with {@link Name} {@link #termLabelName ()}. - * - * @param term The {@link JTerm}. - * @return The found {@link FormulaTermLabel} or {@code null} otherwise. - */ - public FormulaTermLabel getPredicateLabel(JTerm term) { - TermLabel label = term.getLabel(termLabelName); - return label instanceof FormulaTermLabel ? (FormulaTermLabel) label : null; - } - - /** - * Returns the leaf {@link Node}. - * - * @return The leaf {@link Node}. - */ - @Override - public Node leafNode() { - return leafNode; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("Goal "); - sb.append(leafNode.serialNr()); - sb.append("\n"); - boolean afterFirst = false; - for (Entry entry : results.entrySet()) { - if (afterFirst) { - sb.append("\n"); - } else { - afterFirst = true; - } - sb.append(entry.getKey()); - sb.append(" = "); - sb.append(entry.getValue().evaluate(termLabelName, results)); - sb.append(" :: "); - sb.append(entry.getValue()); - } - return sb.toString(); - } - - /** - * Creates a pretty printed {@link String}. - * - * @return The pretty printed {@link String}. - */ - public String toPrettyString() { - StringBuilder sb = new StringBuilder(); - sb.append("Goal "); - sb.append(leafNode.serialNr()); - sb.append("\n"); - boolean afterFirst = false; - for (Entry entry : results.entrySet()) { - if (afterFirst) { - sb.append("\n"); - } else { - afterFirst = true; - } - sb.append(entry.getKey()); - sb.append(" = "); - sb.append(entry.getValue().evaluate(termLabelName, results)); - sb.append(" :: "); - sb.append(entry.getValue().toPrettyString(leafNode.proof().getServices())); - } - return sb.toString(); - } - - /** - * Evaluates the given {@link FormulaTermLabel}. - * - * @param termLabel The {@link FormulaTermLabel} to evaluate. - * @return The evaluation result. - */ - public TruthValue evaluate(FormulaTermLabel termLabel) { - if (termLabel != null) { - MultiEvaluationResult instruction = getResult(termLabel); - return instruction != null ? instruction.evaluate(termLabelName, results) : null; - } else { - return null; - } - } - } - - /** - * Represents the possible truth values. - * - * @author Martin Hentschel - */ - public enum TruthValue { - /** - * True. - */ - TRUE, - - /** - * False. - */ - FALSE, - - /** - * Unknown in cases: - *

    - *
  • Predicate evaluates to true and false.
  • - *
  • Predicate is dropped without evaluation.
  • - *
  • Predicate is never evaluated.
  • - *
- */ - UNKNOWN; - - /** - * {@inheritDoc} - * - * @return - */ - @Override - public String toString() { - if (this == TRUE) { - return "true"; - } else if (this == FALSE) { - return "false"; - } else { - return "unknown"; - } - } - - /** - * Computes the {@code and} value. - * - * @param left The left {@link TruthValue}. - * @param right The right {@link TruthValue}. - * @return The computed {@code and} value. - */ - public static TruthValue and(TruthValue left, TruthValue right) { - if (left == null || UNKNOWN.equals(left)) { - if (FALSE.equals(right)) { - return FALSE; - } else { - return UNKNOWN; - } - } else if (right == null || UNKNOWN.equals(right)) { - if (FALSE.equals(left)) { - return FALSE; - } else { - return UNKNOWN; - } - } else { - if (TRUE.equals(left) && TRUE.equals(right)) { - return TRUE; - } else { - return FALSE; - } - } - } - - /** - * Computes the {@code imp} value. - * - * @param left The left {@link TruthValue}. - * @param right The right {@link TruthValue}. - * @return The computed {@code imp} value. - */ - public static TruthValue imp(TruthValue left, TruthValue right) { - return or(not(left), right); - } - - /** - * Computes the {@code or} value. - * - * @param left The left {@link TruthValue}. - * @param right The right {@link TruthValue}. - * @return The computed {@code or} value. - */ - public static TruthValue or(TruthValue left, TruthValue right) { - if (left == null || UNKNOWN.equals(left)) { - if (TRUE.equals(right)) { - return TRUE; - } else { - return UNKNOWN; - } - } else if (right == null || UNKNOWN.equals(right)) { - if (TRUE.equals(left)) { - return TRUE; - } else { - return UNKNOWN; - } - } else { - if (TRUE.equals(left) || TRUE.equals(right)) { - return TRUE; - } else { - return FALSE; - } - } - } - - /** - * Computes the {@code not} value. - * - * @param value The {@link TruthValue}. - * @return The computed {@code not} value. - */ - public static TruthValue not(TruthValue value) { - if (TRUE.equals(value)) { - return FALSE; - } else if (FALSE.equals(value)) { - return TRUE; - } else { - return UNKNOWN; - } - } - - /** - * Computes the {@code eqv} value. - * - * @param left The left {@link TruthValue}. - * @param right The right {@link TruthValue}. - * @return The computed {@code not} value. - */ - public static TruthValue eqv(TruthValue left, TruthValue right) { - return or(and(left, right), and(not(left), not(right))); - } - - /** - * Computes the {@code if-then-else} value. - * - * @param conditionValue The condition value. - * @param thenValue The then value. - * @param elseValue The else value. - * @return The computed {@code if-then-else} value. - */ - public static TruthValue ifThenElse(TruthValue conditionValue, TruthValue thenValue, - TruthValue elseValue) { - if (TRUE.equals(conditionValue)) { - return thenValue; - } else if (FALSE.equals(conditionValue)) { - return elseValue; - } else { - return UNKNOWN; - } - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionAuxiliaryContract.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionAuxiliaryContract.java deleted file mode 100644 index 827feb6cdda..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionAuxiliaryContract.java +++ /dev/null @@ -1,47 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.StatementBlock; -import de.uka.ilkd.key.speclang.AuxiliaryContract; -import de.uka.ilkd.key.speclang.BlockContract; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionAuxiliaryContract; - -/** - *

- * A node in the symbolic execution tree which represents a use block/loop contract application. - *

- *

- * The default implementation is {@link ExecutionAuxiliaryContract} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionAuxiliaryContract - */ -public interface IExecutionAuxiliaryContract extends IExecutionNode { - /** - * Returns the applied {@link AuxiliaryContract}. - * - * @return The applied {@link AuxiliaryContract}. - */ - AuxiliaryContract getContract(); - - /** - * Returns the {@link StatementBlock} at which the {@link BlockContract} is applied. - * - * @return The {@link StatementBlock} at which the {@link BlockContract} is applied. - */ - StatementBlock getBlock(); - - /** - * Checks if the precondition is complied. - * - * @return {@code true} precondition complied, {@code false} precondition not complied. - */ - boolean isPreconditionComplied(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBaseMethodReturn.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBaseMethodReturn.java deleted file mode 100644 index b6bcd068f3f..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBaseMethodReturn.java +++ /dev/null @@ -1,56 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.init.ProofInputException; - -/** - * Defines the common interface of {@link IExecutionMethodReturn} and - * {@link IExecutionExceptionalMethodReturn}. - * - * @author Martin Hentschel - */ -public interface IExecutionBaseMethodReturn extends IExecutionNode { - /** - * A reference to the {@link IExecutionMethodCall} which is now returned. - * - * @return The call of the now returned method. - */ - IExecutionMethodCall getMethodCall(); - - /** - * Returns a human readable signature which describes this element. - * - * @return The human readable signature which describes this element. - * @throws ProofInputException Occurred Exception. - */ - String getSignature() throws ProofInputException; - - /** - * Returns the condition under which this method return is reached from the calling - * {@link IExecutionMethodCall}. - * - * @return The method return condition to reach this node from its {@link IExecutionMethodCall} - * as {@link JTerm}. - */ - JTerm getMethodReturnCondition() throws ProofInputException; - - /** - * Returns the human readable condition under which this method return is reached from the - * calling {@link IExecutionMethodCall}. - * - * @return The human readable method return condition to reach this node from its - * {@link IExecutionMethodCall}. - */ - String getFormattedMethodReturnCondition() throws ProofInputException; - - /** - * Returns the variable value pairs of the state when the method has been called. - * - * @return The variable value pairs. - */ - IExecutionVariable[] getCallStateVariables() throws ProofInputException; -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBlockStartNode.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBlockStartNode.java deleted file mode 100644 index 50f8e1e1068..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBlockStartNode.java +++ /dev/null @@ -1,30 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.SourceElement; - -import org.key_project.util.collection.ImmutableList; - -/** - * An extended {@link IExecutionNode} which groups several child nodes. - * - * @author Martin Hentschel - */ -public interface IExecutionBlockStartNode extends IExecutionNode { - /** - * Checks if a block might be opened. - * - * @return {@code false} block is definitively not opened, {@code true} block is or might be - * opened. - */ - boolean isBlockOpened(); - - /** - * Returns the up to now discovered {@link IExecutionNode}s. - * - * @return The up to now discovered {@link IExecutionNode}s. - */ - ImmutableList> getBlockCompletions(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBranchCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBranchCondition.java deleted file mode 100644 index 3fc623808fd..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBranchCondition.java +++ /dev/null @@ -1,88 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionBranchCondition; - -/** - *

- * A node in the symbolic execution tree which represents a branch condition, e.g. {@code x < 0}. - *

- *

- * The default implementation is {@link ExecutionBranchCondition} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionBranchCondition - */ -public interface IExecutionBranchCondition extends IExecutionNode { - /** - * Returns the optional additional branch label. - * - * @return The additional branch label if available or {@code null} if not available. - */ - String getAdditionalBranchLabel(); - - /** - * Checks if the value of {@link #getBranchCondition()} is already computed. - * - * @return {@code true} value of {@link #getBranchCondition()} is already computed, - * {@code false} value of {@link #getBranchCondition()} needs to be computed. - */ - boolean isBranchConditionComputed(); - - /** - *

- * Returns the branch condition as {@link JTerm}. - *

- *

- * If this branch conditions merged proof nodes this {@link JTerm} is the overall branch - * condition. - *

- * - * @return The branch condition as {@link JTerm}. - */ - JTerm getBranchCondition() throws ProofInputException; - - /** - * Returns the human readable branch condition as string. - * - * @return The human readable branch condition. - */ - String getFormatedBranchCondition() throws ProofInputException; - - /** - * Checks if this branch condition is a merged one. - * - * @return {@code true} is merged branch condition, {@code false} is normal branch condition. - */ - boolean isMergedBranchCondition(); - - /** - *

- * Returns the branch condition nodes in KeY's proof tree which are merged into this - * {@link IExecutionBranchCondition}. - *

- *

- * It includes also {@link #getProofNode()}. - *

- * - * @return The merged proof nodes. - */ - Node[] getMergedProofNodes(); - - /** - * Returns the branch condition {@link JTerm}s. - * - * @return The branch condition {@link JTerm}s. - */ - JTerm[] getMergedBranchCondtions() throws ProofInputException; -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBranchStatement.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBranchStatement.java deleted file mode 100644 index 435c1a16080..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionBranchStatement.java +++ /dev/null @@ -1,26 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.statement.BranchStatement; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionBranchStatement; - -/** - *

- * A node in the symbolic execution tree which represents a node which creates multiple child - * branches defined by branch conditions ({@link IExecutionBranchCondition}), e.g. - * {@code if(x >= 0)}. - *

- *

- * The default implementation is {@link ExecutionBranchStatement} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionBranchStatement - */ -public interface IExecutionBranchStatement extends IExecutionBlockStartNode { -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionConstraint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionConstraint.java deleted file mode 100644 index 58c157233ec..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionConstraint.java +++ /dev/null @@ -1,30 +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.symbolic_execution.model; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionConstraint; - -/** - *

- * A constrained considered during symbolic execution. - *

- *

- * The default implementation is {@link ExecutionConstraint} which is instantiated lazily by the - * {@link IExecutionNode} and {@link IExecutionValue} implementations. - *

- * - * @author Martin Hentschel - * @see IExecutionNode - * @see IExecutionValue - * @see ExecutionConstraint - */ -public interface IExecutionConstraint extends IExecutionElement { - /** - * Returns the {@link JTerm} representing the constraint. - * - * @return The {@link JTerm} representing the constraint. - */ - JTerm getTerm(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionElement.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionElement.java deleted file mode 100644 index 8621eedcdc7..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionElement.java +++ /dev/null @@ -1,101 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.ProofInputException; - -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; - -/** - * Defines the basic methods and properties each element in the symbolic execution tree model has. - * - * @author Martin Hentschel - */ -public interface IExecutionElement { - /** - * Returns the {@link ITreeSettings} to use. - * - * @return The {@link ITreeSettings} to use. - */ - ITreeSettings getSettings(); - - /** - * Returns the {@link Services} used by {@link #getProof()}. - * - * @return The {@link Services} used by {@link #getProof()}. - */ - Services getServices(); - - /** - * Returns the {@link InitConfig} used by {@link #getProof()}. - * - * @return The {@link InitConfig} used by {@link #getProof()}. - */ - InitConfig getInitConfig(); - - /** - * Returns the {@link Proof} from which the symbolic execution tree was extracted. - * - * @return The {@link Proof} from which the symbolic execution tree was extracted. - */ - Proof getProof(); - - /** - * Returns the {@link Node} in KeY's proof tree which is represented by this execution tree - * node. - * - * @return The {@link Node} in KeY's proof tree which is represented by this execution tree - * node. - */ - Node getProofNode(); - - /** - * Returns the applied {@link RuleApp}. - * - * @return The applied {@link RuleApp}. - */ - RuleApp getAppliedRuleApp(); - - /** - * Returns the {@link PosInOccurrence} of the modality of interest including updates. - * - * @return The {@link PosInOccurrence} of the modality of interest including updates. - */ - PosInOccurrence getModalityPIO(); - - /** - * Returns the {@link NodeInfo} of {@link #getProofNode()}. - * - * @return The {@link NodeInfo} of {@link #getProofNode()}. - */ - NodeInfo getProofNodeInfo(); - - /** - * Returns a human readable name which describes this element. - * - * @return The human readable name which describes this element. - * @throws ProofInputException Occurred Exception. - */ - String getName() throws ProofInputException; - - /** - * Returns a human readable element type name. - * - * @return The human readable element type. - */ - String getElementType(); - - /** - * Checks if the proof is disposed. - * - * @return {@code true} proof is disposed, {@code false} proof is not disposed and still valid. - */ - boolean isDisposed(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionExceptionalMethodReturn.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionExceptionalMethodReturn.java deleted file mode 100644 index 6d9b3108129..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionExceptionalMethodReturn.java +++ /dev/null @@ -1,24 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.statement.Throw; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionExceptionalMethodReturn; - -/** - *

- * A node in the symbolic execution tree which represents a exceptional method return. - *

- *

- * The default implementation is {@link ExecutionExceptionalMethodReturn} which is instantiated via - * a {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionExceptionalMethodReturn - */ -public interface IExecutionExceptionalMethodReturn extends IExecutionBaseMethodReturn { -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionJoin.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionJoin.java deleted file mode 100644 index cbc41249859..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionJoin.java +++ /dev/null @@ -1,37 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionJoin; - -/** - *

- * A node in the symbolic execution tree which represents a join. - *

- *

- * The default implementation is {@link ExecutionJoin} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionJoin - */ -public interface IExecutionJoin extends IExecutionNode { - /** - * Checks if the weakening is verified. - * - * @return {@code true} is verified, {@code false} is not verified. - */ - boolean isWeakeningVerified(); - - /** - * Checks if the weakening verification is supported. - * - * @return {@code true} supported, {@code false} not supported. - */ - boolean isWeakeningVerificationSupported(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLink.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLink.java deleted file mode 100644 index 7b6e7b85f58..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLink.java +++ /dev/null @@ -1,25 +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.symbolic_execution.model; - -/** - * A link between two {@link IExecutionNode}s. - * - * @author Martin Hentschel - */ -public interface IExecutionLink { - /** - * Returns the source. - * - * @return The source. - */ - IExecutionNode getSource(); - - /** - * Returns the target. - * - * @return The target. - */ - IExecutionNode getTarget(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLoopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLoopCondition.java deleted file mode 100644 index 21e3495711b..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLoopCondition.java +++ /dev/null @@ -1,39 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.PositionInfo; -import de.uka.ilkd.key.java.ast.expression.Expression; -import de.uka.ilkd.key.java.ast.statement.JavaStatement; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionLoopCondition; - -/** - *

- * A node in the symbolic execution tree which represents a loop condition, e.g. {@code x >= 0}. - *

- *

- * The default implementation is {@link ExecutionLoopCondition} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionLoopCondition - */ -public interface IExecutionLoopCondition extends IExecutionBlockStartNode { - /** - * Returns the loop expression which is executed. - * - * @return The executed loop expression. - */ - Expression getGuardExpression(); - - /** - * Returns the code position of the executed loop expression ({@link #getGuardExpression()}). - * - * @return The code of the executed loop expression. - */ - PositionInfo getGuardExpressionPositionInfo(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLoopInvariant.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLoopInvariant.java deleted file mode 100644 index d40d5dde3ef..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLoopInvariant.java +++ /dev/null @@ -1,46 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.statement.While; -import de.uka.ilkd.key.speclang.LoopSpecification; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionLoopInvariant; - -/** - *

- * A node in the symbolic execution tree which represents a loop invariant application. - *

- *

- * The default implementation is {@link ExecutionLoopInvariant} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionLoopInvariant - */ -public interface IExecutionLoopInvariant extends IExecutionNode { - /** - * Returns the used {@link LoopSpecification}. - * - * @return The used {@link LoopSpecification}. - */ - LoopSpecification getLoopInvariant(); - - /** - * Returns the loop statement which is simulated by its loop invariant. - * - * @return The loop statement which is simulated by its loop invariant. - */ - While getLoopStatement(); - - /** - * Checks if the loop invariant is initially valid. - * - * @return {@code true} initially valid, {@code false} initially invalid. - */ - boolean isInitiallyValid(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLoopStatement.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLoopStatement.java deleted file mode 100644 index 3154c3f046b..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionLoopStatement.java +++ /dev/null @@ -1,26 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.statement.LoopStatement; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionLoopStatement; - -/** - *

- * A node in the symbolic execution tree which represents a loop. e.g. {@code while(x >= 0)}. The - * loop condition ({@code x >= 0}) itself is represented as {@link IExecutionLoopCondition} - * instance. - *

- *

- * The default implementation is {@link ExecutionLoopStatement} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionLoopStatement - */ -public interface IExecutionLoopStatement extends IExecutionBlockStartNode { -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionMethodCall.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionMethodCall.java deleted file mode 100644 index b15c4535516..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionMethodCall.java +++ /dev/null @@ -1,72 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.reference.MethodReference; -import de.uka.ilkd.key.java.ast.statement.MethodBodyStatement; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionMethodCall; - -import org.key_project.util.collection.ImmutableList; - -/** - *

- * A node in the symbolic execution tree which represents a method call, e.g. {@code foo()}. - *

- *

- * The default implementation is {@link ExecutionMethodCall} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionMethodCall - */ -public interface IExecutionMethodCall extends IExecutionNode { - /** - * Returns the {@link MethodReference} instance of the called method. - * - * @return The {@link MethodReference} of the called method. - */ - MethodReference getMethodReference(); - - /** - * Returns the called {@link IProgramMethod}. - * - * @return The called {@link IProgramMethod}. - */ - IProgramMethod getProgramMethod(); - - /** - * Checks if an implicit constructor is called. - * - * @return {@code true} implicit constructor is called, {@code false} method or explicit - * constructor is called. - */ - boolean isImplicitConstructor(); - - /** - * Returns a copy of the {@link MethodReference} which calls the explicit constructor instead of - * the implicit constructor. - * - * @return The {@link MethodReference} to the explicit constructor or {@code null} if no - * constructor is called. - */ - MethodReference getExplicitConstructorMethodReference(); - - /** - * Returns the explicit constructor. - * - * @return The explicit constructor or {@code null} if no constructor is called. - */ - IProgramMethod getExplicitConstructorProgramMethod(); - - /** - * Returns the up to now discovered {@link IExecutionBaseMethodReturn}s. - * - * @return The up to now discovered {@link IExecutionBaseMethodReturn}s. - */ - ImmutableList> getMethodReturns(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionMethodReturn.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionMethodReturn.java deleted file mode 100644 index 16208bf3b99..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionMethodReturn.java +++ /dev/null @@ -1,56 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionMethodReturn; - -/** - *

- * A node in the symbolic execution tree which represents a method return, e.g. {@code return 42}. - *

- *

- * The default implementation is {@link ExecutionMethodReturn} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionMethodReturn - */ -public interface IExecutionMethodReturn extends IExecutionBaseMethodReturn { - /** - * Returns the human readable node name including the return value ({@link #getReturnValues()}). - * - * @return The human readable node name including the return value. - * @throws ProofInputException Occurred Exception. - */ - String getNameIncludingReturnValue() throws ProofInputException; - - /** - * Returns the human readable signature including the return value ({@link #getReturnValues()}). - * - * @return The human readable signature including the return value. - * @throws ProofInputException Occurred Exception. - */ - String getSignatureIncludingReturnValue() throws ProofInputException; - - /** - * Checks if the values of {@link #getReturnValues()} are already computed. - * - * @return {@code true} value of {@link #getReturnValues()} are already computed, {@code false} - * values of {@link #getReturnValues()} needs to be computed. - */ - boolean isReturnValuesComputed(); - - /** - * Returns the possible return values. - * - * @return The possible return values. - * @throws ProofInputException Occurred Exception. - */ - IExecutionMethodReturnValue[] getReturnValues() throws ProofInputException; -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionMethodReturnValue.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionMethodReturnValue.java deleted file mode 100644 index 9e18f314911..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionMethodReturnValue.java +++ /dev/null @@ -1,65 +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.symbolic_execution.model; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionMethodReturn; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionMethodReturnValue; - -/** - *

- * A return value of an {@link IExecutionMethodReturn}. - *

- * The default implementation is {@link ExecutionMethodReturnValue} which is instantiated via a - * {@link ExecutionMethodReturn} instances. - *

- * - * @author Martin Hentschel - * @see ExecutionMethodReturn - * @see ExecutionMethodReturnValue - */ -public interface IExecutionMethodReturnValue extends IExecutionElement { - /** - * Returns the return value. - * - * @return The return value. - * @throws ProofInputException Occurred Exception. - */ - JTerm getReturnValue() throws ProofInputException; - - /** - * Returns the return value as human readable {@link String}. - * - * @return The return value as human readable {@link String}. - * @throws ProofInputException Occurred Exception. - */ - String getReturnValueString() throws ProofInputException; - - /** - * Checks if a condition is available via {@link #getCondition()} under which this return value - * is returned. - * - * @return {@code true} condition is available, {@code false} condition is not available. - * @throws ProofInputException - */ - boolean hasCondition() throws ProofInputException; - - /** - * Returns the optional condition under which the return value is valid. - * - * @return The optional condition under which the return value is valid. - * @throws ProofInputException Occurred Exception. - */ - JTerm getCondition() throws ProofInputException; - - /** - * Returns the optional condition under which the return value is valid as human readable - * {@link String}. - * - * @return The optional condition as human readable {@link String}. - * @throws ProofInputException Occurred Exception. - */ - String getConditionString() throws ProofInputException; -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionNode.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionNode.java deleted file mode 100644 index 82827ad9ee5..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionNode.java +++ /dev/null @@ -1,228 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.PositionInfo; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicEquivalenceClass; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicLayout; - -import org.key_project.util.collection.ImmutableList; - -/** - *

- * Provides the basic methods each node in a symbolic execution tree should have and allows to - * access the children. A symbolic execution tree always starts with an {@link IExecutionStart} and - * is created via a {@link SymbolicExecutionTreeBuilder} instance. - *

- *

- * The following concrete nodes are available - *

    - *
  • {@link IExecutionStart} (root node)
  • - *
  • {@link IExecutionStatement} (single statement, e.g. {@code int x = 1 + 2;})
  • - *
  • {@link IExecutionBranchStatement} (branch statement, e.g. {@code if(x >= 0)})
  • - *
  • {@link IExecutionBranchCondition} (branch condition, e.g. {@code x < 0})
  • - *
  • {@link IExecutionMethodCall} (method call, e.g. {@code foo()})
  • - *
  • {@link IExecutionMethodReturn} (method return, e.g. {@code return 42})
  • - *
  • {@link IExecutionTermination} (termination, e.g. {@code } or - * {@code })
  • - *
- *

- * - * @author Martin Hentschel - */ -public interface IExecutionNode extends IExecutionElement { - /** - * Prefix that is used in {@link IExecutionNode}s which represents an internal state in KeY - * which is not part of the source code. - */ - String INTERNAL_NODE_NAME_START = "<"; - - /** - * Suffix that is used in {@link IExecutionNode}s which represents an internal state in KeY - * which is not part of the source code. - */ - String INTERNAL_NODE_NAME_END = ">"; - - /** - * Returns the parent {@link IExecutionNode} or {@code null} if the current node is the root. - * - * @return The parent {@link IExecutionNode} or {@code null} on root. - */ - IExecutionNode getParent(); - - /** - * Returns the available children. - * - * @return The available children. - */ - IExecutionNode[] getChildren(); - - /** - * Checks if this node has changed the path condition of the parent. - * - * @return {@code true} has different path condition compared to its parent, {@code false} has - * same path condition as parent. - */ - boolean isPathConditionChanged(); - - /** - * Returns the path condition to reach this node as {@link JTerm}. - * - * @return The path condition to reach this node as {@link JTerm}. - */ - JTerm getPathCondition() throws ProofInputException; - - /** - * Returns the human readable path condition to reach this node as string. - * - * @return The human readable path condition as string. - */ - String getFormatedPathCondition() throws ProofInputException; - - /** - * Returns the method call stack. - * - * @return The method call stack. - */ - IExecutionNode[] getCallStack(); - - /** - * Returns all available {@link IExecutionConstraint}s. - * - * @return The available {@link IExecutionConstraint}s. - */ - IExecutionConstraint[] getConstraints(); - - /** - * Returns the active statement which is executed in the code. - * - * @return The active statement which is executed in the code. - */ - S getActiveStatement(); - - /** - * Returns the {@link PositionInfo} of {@link #getActiveStatement()}. - * - * @return The {@link PositionInfo} of {@link #getActiveStatement()}. - */ - PositionInfo getActivePositionInfo(); - - /** - * Returns the variable value pairs of the current state. - * - * @return The variable value pairs. - * @throws ProofInputException Occurred Exception. - */ - IExecutionVariable[] getVariables() throws ProofInputException; - - /** - * Returns the variable value pairs of the current state under the given condition. - * - * @param condition A {@link JTerm} specifying some additional constraints to consider. - * @return The variable value pairs. - */ - IExecutionVariable[] getVariables(JTerm condition) throws ProofInputException; - - /** - * Returns the number of memory layouts. - * - * @return The number of memory layouts. - * @throws ProofInputException Occurred Exception. - */ - int getLayoutsCount() throws ProofInputException; - - /** - * Returns the equivalence classes of the memory layout with the given index. - * - * @param layoutIndex The index of the memory layout. - * @return The equivalence classes of the memory layout at the given index. - * @throws ProofInputException Occurred Exception. - */ - ImmutableList getLayoutsEquivalenceClasses(int layoutIndex) - throws ProofInputException; - - /** - * Returns the initial memory layout before the method was executed. - * - * @param layoutIndex The index of the memory layout. - * @return The initial memory layout at the given index. - * @throws ProofInputException Occurred Exception. - */ - ISymbolicLayout getInitialLayout(int layoutIndex) throws ProofInputException; - - /** - * Returns the current memory layout which shows the memory structure before the current node in - * the symbolic execution tree is executed. - * - * @param layoutIndex The index of the memory layout. - * @return The current memory layout at the given index. - * @throws ProofInputException Occurred Exception. - */ - ISymbolicLayout getCurrentLayout(int layoutIndex) throws ProofInputException; - - /** - * Returns all code blocks completed by this {@link IExecutionBlockStartNode}. - * - * @return All code blocks completed by this {@link IExecutionBlockStartNode}. - */ - ImmutableList> getCompletedBlocks(); - - /** - * Returns the condition under which this node completes the code block of the given - * {@link IExecutionBlockStartNode}. - * - * @param completedNode The completed {@link IExecutionBlockStartNode} for which the condition - * is requested. - * @return The condition under which this node completes the code block of the given - * {@link IExecutionBlockStartNode}. - */ - JTerm getBlockCompletionCondition(IExecutionBlockStartNode completedNode) - throws ProofInputException; - - /** - * Returns the human readable condition under which this node completes the code block of the - * given {@link IExecutionBlockStartNode}. - * - * @param completedNode The completed {@link IExecutionBlockStartNode} for which the condition - * is requested. - * @return The human readable condition under which this node completes the code block of the - * given {@link IExecutionBlockStartNode}. - */ - String getFormatedBlockCompletionCondition(IExecutionBlockStartNode completedNode) - throws ProofInputException; - - /** - * Returns the outgoing {@link IExecutionLink}. - * - * @param target The target {@link IExecutionNode}. - * @return The found {@link IExecutionLink} or {@code null} if such a link is not available. - */ - IExecutionLink getOutgoingLink(IExecutionNode target); - - /** - * Returns all available outgoing links. - * - * @return The available outgoing links. - */ - ImmutableList getOutgoingLinks(); - - /** - * Returns the incoming {@link IExecutionLink}. - * - * @param source The source {@link IExecutionNode}. - * @return The found {@link IExecutionLink} or {@code null} if such a link is not available. - */ - IExecutionLink getIncomingLink(IExecutionNode source); - - /** - * Returns all available incoming links. - * - * @return The available incoming links. - */ - ImmutableList getIncomingLinks(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionOperationContract.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionOperationContract.java deleted file mode 100644 index 9ee4eee6e33..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionOperationContract.java +++ /dev/null @@ -1,140 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.speclang.Contract; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionOperationContract; - -import org.key_project.util.collection.ImmutableList; - -/** - *

- * A node in the symbolic execution tree which represents a use operation contract application. - *

- *

- * The default implementation is {@link ExecutionOperationContract} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionOperationContract - */ -public interface IExecutionOperationContract extends IExecutionNode { - /** - * Returns the applied {@link Contract}. - * - * @return The applied {@link Contract}. - */ - Contract getContract(); - - /** - * Returns the {@link IProgramMethod} of the applied {@link Contract}. - * - * @return The {@link IProgramMethod} of the applied {@link Contract}. - */ - IProgramMethod getContractProgramMethod(); - - /** - * Checks if the precondition is complied. - * - * @return {@code true} precondition complied, {@code false} precondition not complied. - */ - boolean isPreconditionComplied(); - - /** - * Checks if a not null check is available (instance method) or not (static method or - * constructor). - * - * @return {@code true} not null check available, {@code false} not null check is not available. - */ - boolean hasNotNullCheck(); - - /** - * Checks if the not null check is complied. - * - * @return {@code true} not null check complied, {@code false} not null check not complied. - */ - boolean isNotNullCheckComplied(); - - /** - * Returns the result {@link JTerm} in which the result of the applied {@link Contract} is - * stored. - * - * @return The result {@link JTerm} in which the result of the applied {@link Contract} is - * stored. - * @throws ProofInputException Occurred Exception. - */ - JTerm getResultTerm() throws ProofInputException; - - /** - * Returns the exception {@link JTerm} in which a by the {@link Contract} thrown - * {@link Exception} is stored. - * - * @return The exception {@link JTerm} in which a by the {@link Contract} thrown - * {@link Exception} is stored. - * @throws ProofInputException Occurred Exception. - */ - JTerm getExceptionTerm() throws ProofInputException; - - /** - * Returns the self {@link JTerm} of the called method for which a {@link Contract} is applied. - * - * @return The self {@link JTerm} or {@code null} if not available. - * @throws ProofInputException Occurred Exception. - */ - JTerm getSelfTerm() throws ProofInputException; - - /** - * Returns the parameters of the called method for which a {@link Contract} is applied. - * - * @return The parameters of the called method for which a {@link Contract} is applied. - * @throws ProofInputException Occurred Exception. - */ - ImmutableList getContractParams() throws ProofInputException; - - /** - * Returns the human readable result {@link JTerm} in which the result of the applied - * {@link Contract} is stored. - * - * @return The human readable result {@link JTerm} in which the result of the applied - * {@link Contract} is stored. - * @throws ProofInputException Occurred Exception. - */ - String getFormatedResultTerm() throws ProofInputException; - - /** - * Returns the human readable exception {@link JTerm} in which a by the {@link Contract} thrown - * {@link Exception} is stored. - * - * @return The human readable exception {@link JTerm} in which a by the {@link Contract} thrown - * {@link Exception} is stored. - * @throws ProofInputException Occurred Exception. - */ - String getFormatedExceptionTerm() throws ProofInputException; - - /** - * Returns the human readable self {@link JTerm} of the called method for which a - * {@link Contract} is applied. - * - * @return The human readable self {@link JTerm} or {@code null} if not available. - * @throws ProofInputException Occurred Exception. - */ - String getFormatedSelfTerm() throws ProofInputException; - - /** - * Returns the human readable parameters of the called method for which a {@link Contract} is - * applied. - * - * @return The human readable parameters of the called method for which a {@link Contract} is - * applied. - * @throws ProofInputException Occurred Exception. - */ - String getFormatedContractParams() throws ProofInputException; -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionStart.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionStart.java deleted file mode 100644 index 588e98b2228..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionStart.java +++ /dev/null @@ -1,38 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionStart; - -import org.key_project.util.collection.ImmutableList; - -/** - *

- * The start node of a symbolic execution tree. - *

- *

- * The default implementation is {@link ExecutionStart} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionStart - */ -public interface IExecutionStart extends IExecutionNode { - /** - * The default name of an {@link IExecutionStart}. - */ - String DEFAULT_START_NODE_NAME = - INTERNAL_NODE_NAME_START + "start" + INTERNAL_NODE_NAME_END; - - /** - * Returns the up to now discovered {@link IExecutionTermination}s. - * - * @return The up to now discovered {@link IExecutionTermination}s. - */ - ImmutableList getTerminations(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionStatement.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionStatement.java deleted file mode 100644 index 756768d6080..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionStatement.java +++ /dev/null @@ -1,25 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionStatement; - -/** - *

- * A node in the symbolic execution tree which represents a single statement, e.g. - * {@code int x = 1 + 2;}. - *

- *

- * The default implementation is {@link ExecutionStatement} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionStatement - */ -public interface IExecutionStatement extends IExecutionNode { -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionTermination.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionTermination.java deleted file mode 100644 index 2b486a28d8b..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionTermination.java +++ /dev/null @@ -1,104 +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.symbolic_execution.model; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionTermination; - -import org.key_project.logic.sort.Sort; -import org.key_project.prover.sequent.Sequent; - -/** - *

- * A node in the symbolic execution tree which represents the normal termination of a branch, e.g. - * {@code } in case of normal termination or {@code } - * in case of exceptional termination. - *

- *

- * The default implementation is {@link ExecutionTermination} which is instantiated via a - * {@link SymbolicExecutionTreeBuilder} instance. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionTreeBuilder - * @see ExecutionTermination - */ -public interface IExecutionTermination extends IExecutionNode { - /** - * The default name of a termination node with {@link TerminationKind#NORMAL}. - */ - String NORMAL_TERMINATION_NODE_NAME = - INTERNAL_NODE_NAME_START + "end" + INTERNAL_NODE_NAME_END; - - /** - * The default name of a termination node with {@link TerminationKind#LOOP_BODY}. - */ - String LOOP_BODY_TERMINATION_NODE_NAME = - INTERNAL_NODE_NAME_START + "loop body end" + INTERNAL_NODE_NAME_END; - - /** - * Returns the {@link IProgramVariable} which is used in the {@link Sequent} of - * {@link Proof#root()} to check if a normal or exceptional termination occurred. - * - * @return The {@link IProgramVariable} which is used to caught global exceptions. - */ - IProgramVariable getExceptionVariable(); - - /** - * Returns the {@link Sort} of the caught exception. - * - * @return The {@link Sort} of the caught exception. - */ - Sort getExceptionSort(); - - /** - * Returns the {@link TerminationKind}. - * - * @return The {@link TerminationKind}. - */ - TerminationKind getTerminationKind(); - - /** - * Checks if this branch would be closed without the uninterpreted predicate and thus be treated - * as valid/closed in a regular proof. - * - * @return {@code true} verified/closed, {@code false} not verified/still open - */ - boolean isBranchVerified(); - - /** - * Defines the possible termination kinds. - * - * @author Martin Hentschel - */ - enum TerminationKind { - /** - * Normal termination without any exceptions. - */ - NORMAL, - - /** - * Termination with uncaught exception. - */ - EXCEPTIONAL, - - /** - * Partial termination of a loop body. - */ - LOOP_BODY, - - /** - * Normal termination without any exceptions of the block contract validity branch. - */ - BLOCK_CONTRACT_NORMAL, - - /** - * Termination with uncaught exception of the block contract validity branch. - */ - BLOCK_CONTRACT_EXCEPTIONAL - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionValue.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionValue.java deleted file mode 100644 index 60f30085a5f..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionValue.java +++ /dev/null @@ -1,133 +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.symbolic_execution.model; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionValue; - -/** - *

- * A value of an {@link IExecutionVariable}, e.g. the method parameter {@code int x = 42;} will have - * the variable value pair {@code x = 42}. This class represents the value ({@code 42}). - *

- *

- * The default implementation is {@link ExecutionValue} which is instantiated lazily by the - * {@link IExecutionVariable} implementation. - *

- * - * @author Martin Hentschel - * @see IExecutionVariable - * @see ExecutionValue - */ -public interface IExecutionValue extends IExecutionElement { - /** - * Returns the condition under which the variable ({@link #getVariable()}) has this value. - * - * @return The condition. - * @throws ProofInputException Occurred Exception. - */ - JTerm getCondition() throws ProofInputException; - - /** - * Returns the condition under which the variable ({@link #getVariable()}) has this value as - * human readable {@link String}. - * - * @return The condition as human readable {@link String}. - * @throws ProofInputException Occurred Exception. - */ - String getConditionString() throws ProofInputException; - - /** - *

- * Checks if the value is unknown. - *

- *

- * Imagine the following class: - * - *

-     * 
-     * public class A {
-     *    private A next;
-     *
-     *    public int main() {
-     *       return 42; // breakpoint
-     *    }
-     * }
-     * 
-     * 
- * - * If the main method is debugged symbolically and stopped at the statement marked with the - * comment {@code // breakpoint} the field {@code self.next} has the symbolic value - * {@code SVself.next}. And its field {@code self.next.next} has again a symbolic value - * {@code SVself.next.next}. This chain is infinite deep. But on the other side the Sequent - * contains no information about {@code self.next} so the symbolic value can be {@code null} or - * a concrete object. Such symbolic values which are not founded in the Sequent are treated in - * the symbolic execution API as "unknown" to avoid infinite deep value hierarchies if they are - * not cyclic. - *

- * - * @return {@code true} value is unknown, {@code false} value is known. - */ - boolean isValueUnknown() throws ProofInputException; - - /** - * Returns the value of the variable. - * - * @return The value of the variable. - */ - JTerm getValue() throws ProofInputException; - - /** - * Returns the value of the variable as human readable string representation. - * - * @return The value of the variable as human readable string representation. - */ - String getValueString() throws ProofInputException; - - /** - *

- * Checks if the value represents an object or an attribute of the object defined by the parent - * {@link IExecutionValue}. - *

- *

- * All values which are not a basic datatype (integer, boolean, ...) and not an instance of a - * library class will be treated as object. - *

- * - * @return {@code true} is an object, {@code false} is an attribute of the object defined by the - * parent {@link IExecutionValue}. - * @throws ProofInputException Occurred Exception. - */ - boolean isValueAnObject() throws ProofInputException; - - /** - * Returns the type of the variable as human readable string. - * - * @return The type of the variable as human readable string. - */ - String getTypeString() throws ProofInputException; - - /** - * Returns the parent {@link IExecutionVariable}. - * - * @return The parent {@link IExecutionVariable}. - */ - IExecutionVariable getVariable(); - - /** - * Returns contained child variables which forms complex data types. - * - * @return The contained child variables. - */ - IExecutionVariable[] getChildVariables() throws ProofInputException; - - /** - * Returns all available {@link IExecutionConstraint}s. - * - * @return The available {@link IExecutionConstraint}s. - * @throws ProofInputException Occurred Exception. - */ - IExecutionConstraint[] getConstraints() throws ProofInputException; -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionVariable.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionVariable.java deleted file mode 100644 index aa98e8047f6..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/IExecutionVariable.java +++ /dev/null @@ -1,86 +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.symbolic_execution.model; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionVariable; - -/** - *

- * A variable value pair contained in an {@link IExecutionNode}, e.g. the method parameter - * {@code int x = 42;} will have the variable value pair {@code x = 42}. This class represents the - * variable ({@code x}) which is represented while its values are represented as child - * {@link IExecutionValue} instances. - *

- *

- * The default implementation is {@link ExecutionVariable} which is instantiated lazily by the - * {@link IExecutionNode} implementations. - *

- * - * @author Martin Hentschel - * @see IExecutionNode - * @see IExecutionValue - * @see ExecutionVariable - */ -public interface IExecutionVariable extends IExecutionElement { - /** - * Returns the {@link IProgramVariable} which contains the represented value. - * - * @return The {@link IProgramVariable} which contains the represented value. - */ - IProgramVariable getProgramVariable(); - - /** - * Returns the index in the parent array if an array cell value is represented. - * - * @return The index in the parent array or {@code null} if no array cell value is represented. - */ - JTerm getArrayIndex(); - - /** - * Returns the human readable index in the parent array if an array cell value is represented. - * - * @return The human readable index in the parent array or {@code null} if no array cell value - * is represented. - */ - String getArrayIndexString(); - - /** - * Checks if the current value is part of a parent array. - * - * @return {@code true} is array cell value, {@code false} is a "normal" value. - */ - boolean isArrayIndex(); - - /** - * Returns the optional additional condition considered during value computation. - * - * @return The optional additional condition considered during value computation. - */ - JTerm getAdditionalCondition(); - - /** - * Returns the parent {@link IExecutionValue} if available. - * - * @return The parent {@link IExecutionValue} if available and {@code null} otherwise. - */ - IExecutionValue getParentValue(); - - /** - * Returns the possible values of this {@link IExecutionVariable}. - * - * @return The possible values of this {@link IExecutionVariable}. - */ - IExecutionValue[] getValues() throws ProofInputException; - - /** - * Creates recursive a term which can be used to determine the value of - * {@link #getProgramVariable()}. - * - * @return The created term. - */ - JTerm createSelectTerm(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/ITreeSettings.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/ITreeSettings.java deleted file mode 100644 index 957d8a5e984..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/ITreeSettings.java +++ /dev/null @@ -1,50 +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.symbolic_execution.model; - -/** - * Provides the settings used to construct the symbolic execution tree. - * - * @author Martin Hentschel - */ -public interface ITreeSettings { - /** - * Checks if multiple branch conditions are merged or not. - * - * @return {@code true} merge branch conditions which means that a branch condition never - * contains another branch condition or {@code false} allow that branch conditions - * contains branch conditions. - */ - boolean mergeBranchConditions(); - - /** - * Checks if unicode characters are used. - * - * @return {@code true} use unicode characters, {@code false} do not use unicode characters. - */ - boolean useUnicode(); - - /** - * Checks if pretty printing is used or not. - * - * @return {@code true} use pretty printing, {@code false} do not use pretty printing. - */ - boolean usePrettyPrinting(); - - /** - * Checks how variables are computed. - * - * @return {@code true} {@link IExecutionVariable} are only computed from updates, {@code false} - * {@link IExecutionVariable}s are computed according to the type structure of the - * visible memory. - */ - boolean variablesAreOnlyComputedFromUpdates(); - - /** - * Checks if conditions should be simplified or not. - * - * @return {@code true} simplify conditions, {@code false} do not simplify conditions. - */ - boolean simplifyConditions(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionBlockStartNode.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionBlockStartNode.java deleted file mode 100644 index 1c67bf47f23..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionBlockStartNode.java +++ /dev/null @@ -1,93 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionBlockStartNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; - -import org.key_project.util.collection.ImmutableList; - -/** - * Provides a basic implementation of {@link IExecutionBlockStartNode}. - * - * @author Martin Hentschel - */ -public abstract class AbstractExecutionBlockStartNode - extends AbstractExecutionNode implements IExecutionBlockStartNode { - /** - * The up to know discovered completing {@link IExecutionNode}s. - */ - private ImmutableList> blockCompletions = ImmutableList.nil(); - - /** - * Defines if a block is or might be opened. - */ - private boolean blockOpened = true; - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - protected AbstractExecutionBlockStartNode(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isBlockOpened() { - return blockOpened; - } - - /** - * Defines if a block might be opened or not. - * - * @param blockOpened {@code false} block is definitively not opened, {@code true} block is or - * might be opened. - */ - public void setBlockOpened(boolean blockOpened) { - this.blockOpened = blockOpened; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList> getBlockCompletions() { - return blockCompletions; - } - - /** - * Removes the given block completion. - * - * @param completion The block completion to be removed. - * @author Anna Filighera - */ - public void removeBlockCompletion(IExecutionNode completion) { - blockCompletions = blockCompletions.removeAll(completion); - } - - /** - * Registers the given {@link IExecutionNode}. - * - * @param blockCompletion The {@link IExecutionNode} to register. - */ - public void addBlockCompletion(IExecutionNode blockCompletion) { - if (blockCompletion != null && !blockCompletions.contains(blockCompletion)) { - if (blockCompletion instanceof AbstractExecutionNode) { - blockCompletions = blockCompletions.append(blockCompletion); - } else { - throw new IllegalArgumentException( - "Unsupported block completion: " + blockCompletion); - } - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionElement.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionElement.java deleted file mode 100644 index 433fb05d0db..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionElement.java +++ /dev/null @@ -1,183 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionElement; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.rules.RuleApp; - -/** - * Provides a basic implementation of {@link IExecutionElement}. - * - * @author Martin Hentschel - */ -public abstract class AbstractExecutionElement implements IExecutionElement { - /** - * The used {@link TreeSettings}. - */ - private final ITreeSettings settings; - - /** - * The {@link Node} of KeY's proof tree which is represented by this {@link IExecutionNode}. - */ - private final Node proofNode; - - /** - * The human-readable name of this node. - */ - private String name; - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - protected AbstractExecutionElement(ITreeSettings settings, Node proofNode) { - assert settings != null; - assert proofNode != null; - this.settings = settings; - this.proofNode = proofNode; - } - - /** - * {@inheritDoc} - */ - @Override - public Services getServices() { - Proof proof = getProof(); - return proof != null && !proof.isDisposed() ? proof.getServices() : null; - } - - /** - * {@inheritDoc} - */ - @Override - public RuleApp getAppliedRuleApp() { - return proofNode.getAppliedRuleApp(); - } - - /** - * {@inheritDoc} - */ - @Override - public InitConfig getInitConfig() { - Proof proof = getProof(); - return proof != null && !proof.isDisposed() ? proof.getInitConfig() : null; - } - - /** - * {@inheritDoc} - */ - @Override - public Proof getProof() { - return getProofNode().proof(); - } - - /** - * {@inheritDoc} - */ - @Override - public Node getProofNode() { - return proofNode; - } - - /** - * {@inheritDoc} - */ - @Override - public NodeInfo getProofNodeInfo() { - return getProofNode().getNodeInfo(); - } - - /** - * {@inheritDoc} - */ - @Override - public String getName() throws ProofInputException { - synchronized (this) { - if (name == null) { - name = lazyComputeName(); - } - return name; - } - } - - /** - * Sets the name. - * - * @param name The new name to set. - */ - protected void setName(String name) { - this.name = name; - } - - /** - * Checks if the value of {@link #getName()} is already computed. - * - * @return {@code ture} name is computed, {@code false} name is not computed yet. - */ - protected boolean isNameComputed() { - return name != null; - } - - /** - * Computes the name of this node lazily when {@link #getName()} is called the first time. - * - * @return The human-readable name of this {@link IExecutionNode}. - */ - protected abstract String lazyComputeName() throws ProofInputException; - - /** - * Converts the given {@link JTerm} into a {@link String} respecting - * {@link ITreeSettings#usePrettyPrinting()}. - * - * @param term The {@link JTerm} to convert. - * @param services The {@link Services} to use. - * @return The {@link String} representation of the given {@link JTerm}. - */ - protected String formatTerm(JTerm term, Services services) { - return SymbolicExecutionUtil.formatTerm(term, services, settings.useUnicode(), - settings.usePrettyPrinting()); - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - try { - return getElementType() + " " + getName(); - } catch (ProofInputException e) { - return getElementType() + " " + e.getMessage(); - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isDisposed() { - return getProof().isDisposed(); - } - - /** - * {@inheritDoc} - */ - @Override - public ITreeSettings getSettings() { - return settings; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionMethodReturn.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionMethodReturn.java deleted file mode 100644 index dfeb55b8771..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionMethodReturn.java +++ /dev/null @@ -1,204 +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.symbolic_execution.model.impl; - -import java.util.LinkedList; -import java.util.List; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.UpdateApplication; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionBaseMethodReturn; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionBranchCondition; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodCall; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.SequentFormula; - -/** - * The default implementation of {@link IExecutionBaseMethodReturn}. - * - * @author Martin Hentschel - */ -public abstract class AbstractExecutionMethodReturn - extends AbstractExecutionNode implements IExecutionBaseMethodReturn { - /** - * The {@link IExecutionMethodCall} which is now returned. - */ - private final ExecutionMethodCall methodCall; - - /** - * The signature. - */ - private String signature; - - /** - * The method return condition to reach this node from its calling {@link IExecutionMethodCall}. - */ - private JTerm methodReturnCondition; - - /** - * The human-readable method return condition to reach this node from its calling - * {@link IExecutionMethodCall}. - */ - private String formattedMethodReturnCondition; - - /** - * The variable value pairs of the state when the method has been called. - */ - private IExecutionVariable[] callStateVariables; - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param methodCall The {@link IExecutionMethodCall} which is now returned. - */ - protected AbstractExecutionMethodReturn(ITreeSettings settings, Node proofNode, - ExecutionMethodCall methodCall) { - super(settings, proofNode); - assert methodCall != null; - this.methodCall = methodCall; - this.methodCall.addMethodReturn(this); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionMethodCall getMethodCall() { - return methodCall; - } - - /** - * {@inheritDoc} - */ - @Override - public String getSignature() throws ProofInputException { - if (signature == null) { - signature = lazyComputeSignature(); - } - return signature; - } - - /** - * Computes the signature lazily when {@link #getSignature()} is called the first time. - * - * @return The name including the return value. - * @throws ProofInputException - */ - protected abstract String lazyComputeSignature() throws ProofInputException; - - - /** - * {@inheritDoc} - */ - @Override - public JTerm getMethodReturnCondition() throws ProofInputException { - if (methodReturnCondition == null) { - lazyComputeMethodReturnCondition(); - } - return methodReturnCondition; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormattedMethodReturnCondition() throws ProofInputException { - if (methodReturnCondition == null) { - lazyComputeMethodReturnCondition(); - } - return formattedMethodReturnCondition; - } - - /** - * Computes the method return condition lazily when {@link #getMethodReturnCondition()} or - * {@link #getFormattedMethodReturnCondition()} is called the first time. - * - * @throws ProofInputException Occurred Exception - */ - protected void lazyComputeMethodReturnCondition() throws ProofInputException { - final InitConfig initConfig = getProof().getInitConfig(); - if (initConfig != null) { // Otherwise Proof is disposed. - final Services services = initConfig.getServices(); - // Collect branch conditions - List bcs = new LinkedList<>(); - AbstractExecutionNode parent = getParent(); - while (parent != null && parent != methodCall) { - if (parent instanceof IExecutionBranchCondition) { - bcs.add(((IExecutionBranchCondition) parent).getBranchCondition()); - } - parent = parent.getParent(); - } - // Add current branch condition to path - methodReturnCondition = services.getTermBuilder().and(bcs); - // Simplify path condition - if (getSettings().simplifyConditions()) { - methodReturnCondition = - SymbolicExecutionUtil.simplify(initConfig, getProof(), methodReturnCondition); - } - methodReturnCondition = - SymbolicExecutionUtil.improveReadability(methodReturnCondition, services); - // Format path condition - formattedMethodReturnCondition = formatTerm(methodReturnCondition, services); - } - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionVariable[] getCallStateVariables() throws ProofInputException { - synchronized (this) { - if (callStateVariables == null) { - callStateVariables = lazyComputeCallStateVariables(); - } - return callStateVariables; - } - } - - /** - * Computes the variables lazily when {@link #getCallStateVariables()} is called the first time. - * - * @return The {@link IExecutionVariable}s of the state when the method has been called. - * @throws ProofInputException - */ - protected IExecutionVariable[] lazyComputeCallStateVariables() throws ProofInputException { - // Get relevant information in current node - Node proofNode = methodCall.getProofNode(); - assert proofNode.childrenCount() == 1; - PosInOccurrence originalPIO = methodCall.getModalityPIO(); - int index = originalPIO.isInAntec() - ? proofNode.sequent().antecedent() - .indexOf(originalPIO.sequentFormula()) - : proofNode.sequent().succedent() - .indexOf(originalPIO.sequentFormula()); - // Search relevant position in child node - Node childNode = proofNode.child(0); - SequentFormula nodeSF = - originalPIO.isInAntec() ? childNode.sequent().antecedent().get(index) - : childNode.sequent().succedent().get(index); - PosInOccurrence modalityPIO = - new PosInOccurrence(nodeSF, originalPIO.posInTerm(), originalPIO.isInAntec()); - var modalityTerm = modalityPIO.subTerm(); - while (modalityTerm.op() instanceof UpdateApplication) { - modalityPIO = modalityPIO.down(1); - modalityTerm = modalityPIO.subTerm(); - } - // Compute variables - return SymbolicExecutionUtil.createExecutionVariables(this, childNode, modalityPIO, - getMethodReturnCondition()); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionNode.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionNode.java deleted file mode 100644 index 63fc0bf0fd8..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionNode.java +++ /dev/null @@ -1,582 +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.symbolic_execution.model.impl; - -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.PositionInfo; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.UpdateApplication; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeSymbolicLayoutExtractor; -import de.uka.ilkd.key.symbolic_execution.model.*; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicEquivalenceClass; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicLayout; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.CollectionUtil; - -/** - * Provides a basic implementation of {@link IExecutionNode}. - * - * @author Martin Hentschel - */ -public abstract class AbstractExecutionNode - extends AbstractExecutionElement implements IExecutionNode { - /** - * Reference to the parent {@link IExecutionNode}. - */ - private AbstractExecutionNode parent; - - /** - * Contains all child {@link IExecutionNode}s. - */ - private final List> children = new LinkedList<>(); - - /** - * The contained call stack. - */ - private IExecutionNode[] callStack; - - /** - * The available {@link IExecutionConstraint}s. - */ - private IExecutionConstraint[] constraints; - - /** - * The variable value pairs of the current state. - */ - private IExecutionVariable[] variables; - - /** - * The variable value pairs of the current state under given conditions. - */ - private final Map conditionalVariables = - new HashMap<>(); - - /** - * The used {@link ExecutionNodeSymbolicLayoutExtractor}. - */ - private ExecutionNodeSymbolicLayoutExtractor layoutExtractor; - - /** - * The {@link PosInOccurrence} of the modality or its updates. - */ - private PosInOccurrence modalityPIO; - - /** - * The up to know discovered completed {@link IExecutionBlockStartNode}s. - */ - private ImmutableList> completedBlocks = ImmutableList.nil(); - - /** - * The already computed block completion conditions. - */ - private final Map, JTerm> blockCompletionConditions = - new HashMap<>(); - - /** - * The already computed human-readable block completion conditions. - */ - private final Map, String> formattedBlockCompletionConditions = - new HashMap<>(); - - /** - * The up to know discovered outgoing links. - */ - private ImmutableList outgoingLinks = ImmutableList.nil(); - - /** - * The up to know discovered incoming links. - */ - private ImmutableList incomingLinks = ImmutableList.nil(); - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - protected AbstractExecutionNode(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - public AbstractExecutionNode getParent() { - return parent; - } - - /** - * Sets the parent {@link AbstractExecutionNode}. - * - * @param parent The parent {@link AbstractExecutionNode} to set. - */ - public void setParent(AbstractExecutionNode parent) { - this.parent = parent; - } - - /** - * {@inheritDoc} - */ - @Override - public AbstractExecutionNode[] getChildren() { - return children.toArray(new AbstractExecutionNode[0]); - } - - /** - * Adds a new child {@link AbstractExecutionNode}. - * - * @param child A new child {@link AbstractExecutionNode}. - */ - public void addChild(AbstractExecutionNode child) { - if (child != null) { - children.add(child); - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isPathConditionChanged() { - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getPathCondition() throws ProofInputException { - // Search path condition of the parent which is used by default. - JTerm result = null; - AbstractExecutionNode parent = getParent(); - while (result == null && parent != null) { - if (parent.isPathConditionChanged()) { - result = parent.getPathCondition(); - } else { - parent = parent.getParent(); - } - } - // Check if a path condition was found. - return result != null ? result : getServices().getTermBuilder().tt(); - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedPathCondition() throws ProofInputException { - // Search path condition of the parent which is used by default. - String result = null; - AbstractExecutionNode parent = getParent(); - while (result == null && parent != null) { - if (parent.isPathConditionChanged()) { - result = parent.getFormatedPathCondition(); - } else { - parent = parent.getParent(); - } - } - // Check if a path condition was found. - if (!isDisposed()) { - return result != null ? result : getServices().getTermBuilder().tt().toString(); - } else { - return result; - } - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionNode[] getCallStack() { - return callStack; - } - - /** - * Sets the call stack. - * - * @param callStack The call stack. - */ - public void setCallStack(IExecutionNode[] callStack) { - this.callStack = callStack; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionConstraint[] getConstraints() { - synchronized (this) { - if (constraints == null) { - constraints = lazyComputeConstraints(); - } - return constraints; - } - } - - /** - * Computes the constraints lazily when {@link #getConstraints()} is called the first time. - * - * @return The {@link IExecutionConstraint}s of the current state. - */ - protected abstract IExecutionConstraint[] lazyComputeConstraints(); - - /** - * {@inheritDoc} - */ - @SuppressWarnings("unchecked") - @Override - public S getActiveStatement() { - return (S) getProofNodeInfo().getActiveStatement(); - } - - /** - * {@inheritDoc} - */ - @Override - public PositionInfo getActivePositionInfo() { - return getActiveStatement().getPositionInfo(); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionVariable[] getVariables() throws ProofInputException { - synchronized (this) { - if (variables == null) { - variables = lazyComputeVariables(); - } - return variables; - } - } - - /** - * Computes the variables lazily when {@link #getVariables()} is called the first time. - * - * @return The {@link IExecutionVariable}s of the current state. - * @throws ProofInputException - */ - protected IExecutionVariable[] lazyComputeVariables() throws ProofInputException { - return SymbolicExecutionUtil.createExecutionVariables(this); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionVariable[] getVariables(JTerm condition) throws ProofInputException { - synchronized (this) { - IExecutionVariable[] result = conditionalVariables.get(condition); - if (result == null) { - result = lazyComputeVariables(condition); - conditionalVariables.put(condition, result); - } - return result; - } - } - - /** - * Computes the variables lazily when {@link #getVariables(JTerm)} is called the first time. - * - * @param condition A {@link JTerm} specifying some additional constraints to consider. - * @return The {@link IExecutionVariable}s of the current state under the given condition. - * @throws ProofInputException - */ - protected IExecutionVariable[] lazyComputeVariables(JTerm condition) - throws ProofInputException { - return SymbolicExecutionUtil.createExecutionVariables(this, condition); - } - - /** - * Returns the used {@link ExecutionNodeSymbolicLayoutExtractor}. - * - * @return The used {@link ExecutionNodeSymbolicLayoutExtractor}. - * @throws ProofInputException Occurred Exception. - */ - public ExecutionNodeSymbolicLayoutExtractor getLayoutExtractor() throws ProofInputException { - synchronized (this) { - if (layoutExtractor == null) { - layoutExtractor = lazyComputeLayoutExtractor(); - } - return layoutExtractor; - } - } - - /** - * Instantiates the used {@link ExecutionNodeSymbolicLayoutExtractor} lazily when - * {@link #getLayoutExtractor()} is called the first time. - * - * @return The created {@link ExecutionNodeSymbolicLayoutExtractor}. - * @throws ProofInputException Occurred Exception. - */ - protected ExecutionNodeSymbolicLayoutExtractor lazyComputeLayoutExtractor() - throws ProofInputException { - ExecutionNodeSymbolicLayoutExtractor result = - new ExecutionNodeSymbolicLayoutExtractor(this); - result.analyse(); - return result; - } - - /** - * {@inheritDoc} - */ - @Override - public int getLayoutsCount() throws ProofInputException { - return getLayoutExtractor().getLayoutsCount(); - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicLayout getInitialLayout(int layoutIndex) throws ProofInputException { - return getLayoutExtractor().getInitialLayout(layoutIndex); - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicLayout getCurrentLayout(int layoutIndex) throws ProofInputException { - return getLayoutExtractor().getCurrentLayout(layoutIndex); - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getLayoutsEquivalenceClasses(int layoutIndex) - throws ProofInputException { - return getLayoutExtractor().getEquivalenceClasses(layoutIndex); - } - - /** - * {@inheritDoc} - */ - @Override - public PosInOccurrence getModalityPIO() { - if (modalityPIO == null) { - modalityPIO = lazyComputeModalityPIO(); - } - return modalityPIO; - } - - /** - * Computes the {@link PosInOccurrence} lazily when {@link #getModalityPIO()} is called the - * first time. - * - * @return The {@link PosInOccurrence}s of the modality or its updates. - */ - protected PosInOccurrence lazyComputeModalityPIO() { - PosInOccurrence originalPio = - getProofNode().getAppliedRuleApp().posInOccurrence(); - // Try to go back to the parent which provides the updates - PosInOccurrence pio = originalPio; - var term = pio.subTerm(); - if (!pio.isTopLevel() && term.op() != UpdateApplication.UPDATE_APPLICATION) { - pio = pio.up(); - term = pio.subTerm(); - } - // Return found updates or the original pio otherwise - return term.op() == UpdateApplication.UPDATE_APPLICATION ? pio : originalPio; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList> getCompletedBlocks() { - return completedBlocks; - } - - /** - * Registers the given {@link IExecutionBlockStartNode}. - * - * @param completedBlock The {@link IExecutionBlockStartNode} to register. - */ - public void addCompletedBlock(IExecutionBlockStartNode completedBlock) { - if (completedBlock != null && !completedBlocks.contains(completedBlock)) { - completedBlocks = completedBlocks.append(completedBlock); - } - } - - /** - * Removes the given {@link IExecutionBlockStartNode} from registration. - * - * @param completedBlock The {@link IExecutionBlockStartNode} to be remove. - * @author Anna Filighera - */ - public void removeCompletedBlock(IExecutionBlockStartNode completedBlock) { - if (completedBlock != null && completedBlocks.contains(completedBlock)) { - completedBlocks = completedBlocks.removeAll(completedBlock); - blockCompletionConditions.remove(completedBlock); - formattedBlockCompletionConditions.remove(completedBlock); - } - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getBlockCompletionCondition(IExecutionBlockStartNode completedNode) - throws ProofInputException { - JTerm result = blockCompletionConditions.get(completedNode); - if (result == null) { - result = (JTerm) lazyComputeBlockCompletionCondition(completedNode, false); - } - return result; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedBlockCompletionCondition(IExecutionBlockStartNode completedNode) - throws ProofInputException { - String result = formattedBlockCompletionConditions.get(completedNode); - if (result == null) { - result = (String) lazyComputeBlockCompletionCondition(completedNode, true); - } - return result; - } - - /** - * Computes the condition lazily when {@link #getBlockCompletionCondition} or - * {@link #getFormatedBlockCompletionCondition} is called the first time. - * - * @param completedNode The completed {@link IExecutionNode} for which the condition is - * requested. - * @param returnFormattedCondition {@code true} formatted condition is returned, {@code false} - * {@link JTerm} is returned. - * @throws ProofInputException Occurred Exception - */ - protected Object lazyComputeBlockCompletionCondition(IExecutionBlockStartNode completedNode, - boolean returnFormattedCondition) throws ProofInputException { - final InitConfig initConfig = getInitConfig(); - if (initConfig != null && // Otherwise Proof is disposed. - completedBlocks.contains(completedNode)) { - final Services services = initConfig.getServices(); - // Collect branch conditions - List bcs = new LinkedList<>(); - AbstractExecutionNode parent = getParent(); - while (parent != null && parent != completedNode) { - if (parent instanceof IExecutionBranchCondition) { - JTerm bc = ((IExecutionBranchCondition) parent).getBranchCondition(); - if (bc == null) { - return null; // Proof disposed in between, computation not possible - } - bcs.add(bc); - } - parent = parent.getParent(); - } - // Add current branch condition to path - JTerm condition = services.getTermBuilder().and(bcs); - // Simplify path condition - if (getSettings().simplifyConditions()) { - condition = SymbolicExecutionUtil.simplify(initConfig, getProof(), condition); - } - condition = SymbolicExecutionUtil.improveReadability(condition, services); - // Format path condition - String formattedCondition = formatTerm(condition, services); - // Update maps - blockCompletionConditions.put(completedNode, condition); - formattedBlockCompletionConditions.put(completedNode, formattedCondition); - return returnFormattedCondition ? formattedCondition : condition; - } else { - return null; - } - } - - /** - * Removes the given child. - * - * @param child The child to be removed. - * @author Anna Filighera - */ - public void removeChild(IExecutionNode child) { - children.remove(child); - } - - /** - * Adds the given {@link IExecutionLink} as outgoing link. - * - * @param link The {@link IExecutionLink} to add. - */ - public void addOutgoingLink(IExecutionLink link) { - outgoingLinks = outgoingLinks.prepend(link); - } - - /** - * Removes the given {@link IExecutionLink} from the outgoing links. - * - * @param link The {@link IExecutionLink} to remove. - */ - public void removeOutgoingLink(IExecutionLink link) { - outgoingLinks = outgoingLinks.removeAll(link); - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionLink getOutgoingLink(final IExecutionNode target) { - return CollectionUtil.search(outgoingLinks, element -> element.getTarget() == target); - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getOutgoingLinks() { - return outgoingLinks; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionLink getIncomingLink(final IExecutionNode source) { - return CollectionUtil.search(incomingLinks, element -> element.getSource() == source); - } - - /** - * Adds the given {@link IExecutionLink} as incoming link. - * - * @param link The {@link IExecutionLink} to add. - */ - public void addIncomingLink(IExecutionLink link) { - incomingLinks = incomingLinks.prepend(link); - } - - /** - * Removes the given {@link IExecutionLink} from the incoming links. - * - * @param link The {@link IExecutionLink} to remove. - */ - public void removeIncomingLink(IExecutionLink link) { - incomingLinks = incomingLinks.removeAll(link); - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getIncomingLinks() { - return incomingLinks; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionValue.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionValue.java deleted file mode 100644 index 0209bfb6d04..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionValue.java +++ /dev/null @@ -1,231 +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.symbolic_execution.model.impl; - -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.OriginTermLabel; -import de.uka.ilkd.key.logic.op.ProgramVariable; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.*; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.sequent.PosInOccurrence; - -/** - * Provides a basic implementation of {@link IExecutionValue}. - * - * @author Martin Hentschel - */ -public abstract class AbstractExecutionValue extends AbstractExecutionElement - implements IExecutionValue { - /** - * The parent {@link IExecutionVariable} which provides this {@link IExecutionValue}. - */ - private final IExecutionVariable variable; - - /** - * The condition under which the variable has this value. - */ - private final JTerm condition; - - /** - * The {@link IExecutionConstraint}s. - */ - private IExecutionConstraint[] constraints; - - /** - * The value. - */ - private final JTerm value; - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param variable The parent {@link IExecutionVariable} which contains this value. - * @param condition The condition. - * @param value The value. - */ - protected AbstractExecutionValue(ITreeSettings settings, Node proofNode, - IExecutionVariable variable, JTerm condition, JTerm value) { - super(settings, proofNode); - this.variable = variable; - this.condition = condition; - this.value = value; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionConstraint[] getConstraints() throws ProofInputException { - synchronized (this) { - if (constraints == null) { - constraints = lazyComputeConstraints(); - } - return constraints; - } - } - - /** - * Computes the related constraints lazily when {@link #getConstraints()} is called the first - * time. - * - * @return The related {@link IExecutionConstraint}s. - * @throws ProofInputException Occurred Exception - */ - protected IExecutionConstraint[] lazyComputeConstraints() throws ProofInputException { - if (!isDisposed() && !isValueUnknown()) { - List constraints = new LinkedList<>(); - IExecutionConstraint[] allConstraints = getNodeConstraints(); - Set relevantTerms = collectRelevantTerms(getServices(), getValue()); - for (IExecutionConstraint constraint : allConstraints) { - if (containsTerm(constraint.getTerm(), relevantTerms)) { - constraints.add(constraint); - } - } - return constraints.toArray(new IExecutionConstraint[0]); - } else { - return new IExecutionConstraint[0]; - } - } - - /** - * Returns all available {@link IExecutionConstraint}s of the {@link IExecutionNode} on which - * this {@link IExecutionValue} is part of. - * - * @return All available {@link IExecutionConstraint}s. - */ - protected abstract IExecutionConstraint[] getNodeConstraints(); - - /** - * Collects all {@link JTerm}s contained in relevant constraints. - * - * @param services The {@link Services} to use. - * @param term The initial {@link JTerm}. - * @return The relevant {@link JTerm}s. - */ - protected Set collectRelevantTerms(Services services, JTerm term) { - final Set terms = new HashSet<>(); - fillRelevantTerms(services, term, terms); - return terms; - } - - /** - * Utility method used by {@link #collectRelevantTerms(Services, JTerm)}. - * - * @param services The {@link Services} to use. - * @param term The initial {@link JTerm}. - * @param toFill The {@link Set} of relevant {@link JTerm}s to fill. - */ - protected void fillRelevantTerms(Services services, JTerm term, Set toFill) { - if (term != null) { - if (term.op() instanceof ProgramVariable - || SymbolicExecutionUtil.isSelect(services, term)) { - toFill.add(OriginTermLabel.removeOriginLabels(term, services)); - } else { - for (int i = 0; i < term.arity(); i++) { - fillRelevantTerms(services, term.sub(i), toFill); - } - } - } - } - - /** - * Checks if the given {@link JTerm} contains at least one of the given once. - * - * @param term The {@link JTerm} to search in. - * @param toSearch The {@link JTerm}s to search. - * @return {@code true} at least one {@link JTerm} is contained, {@code false} none of the - * {@link JTerm}s is contained. - */ - protected boolean containsTerm(JTerm term, Set toSearch) { - if (toSearch.contains(OriginTermLabel.removeOriginLabels(term, getServices()))) { - return true; - } else { - boolean contained = false; - int i = 0; - while (!contained && i < term.arity()) { - contained = containsTerm(term.sub(i), toSearch); - i++; - } - return contained; - } - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionVariable getVariable() { - return variable; - } - - /** - * {@inheritDoc} - */ - @Override - public PosInOccurrence getModalityPIO() { - return getVariable().getModalityPIO(); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() throws ProofInputException { - String conditionString = getConditionString(); - if (conditionString != null) { - return getVariable().getName() + " {" + getConditionString() + "}"; - } else { - return getVariable().getName(); - } - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Value"; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getCondition() throws ProofInputException { - return condition; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getValue() throws ProofInputException { - return value; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isValueAnObject() throws ProofInputException { - if (isValueUnknown()) { - return false; - } else { - JTerm value = getValue(); - return SymbolicExecutionUtil.hasReferenceSort(getServices(), value); - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionVariable.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionVariable.java deleted file mode 100644 index 1b9f7dc9493..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/AbstractExecutionVariable.java +++ /dev/null @@ -1,149 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionValue; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.sequent.PosInOccurrence; - -/** - * Provides a basic implementation of {@link IExecutionVariable}s. - * - * @author Martin Hentschel - */ -public abstract class AbstractExecutionVariable extends AbstractExecutionElement - implements IExecutionVariable { - /** - * The represented {@link IProgramVariable} which value is shown. - */ - private final IProgramVariable programVariable; - - /** - * The parent {@link ExecutionValue} or {@code null} if not available. - */ - private final IExecutionValue parentValue; - - /** - * The index in the parent array. - */ - private final JTerm arrayIndex; - - /** - * An optional additional condition to consider. - */ - private final JTerm additionalCondition; - - /** - * The {@link PosInOccurrence} of the modality of interest. - */ - private final PosInOccurrence modalityPIO; - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param programVariable The represented {@link IProgramVariable} which value is shown. - * @param parentValue The parent {@link IExecutionValue} or {@code null} if not available. - * @param arrayIndex The index in the parent array. - * @param additionalCondition An optional additional condition to consider. - * @param modalityPIO The {@link PosInOccurrence} of the modality of interest. - */ - protected AbstractExecutionVariable(ITreeSettings settings, Node proofNode, - IProgramVariable programVariable, IExecutionValue parentValue, JTerm arrayIndex, - JTerm additionalCondition, PosInOccurrence modalityPIO) { - super(settings, proofNode); - this.programVariable = programVariable; - this.parentValue = parentValue; - this.arrayIndex = arrayIndex; - this.additionalCondition = additionalCondition; - this.modalityPIO = modalityPIO; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getAdditionalCondition() { - return additionalCondition; - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() throws ProofInputException { - IProgramVariable pv = getProgramVariable(); - if (pv != null) { - return SymbolicExecutionUtil.getDisplayString(pv); - } else { - return "[" + getArrayIndexString() + "]"; - } - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramVariable getProgramVariable() { - return programVariable; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getArrayIndex() { - return arrayIndex; - } - - /** - * {@inheritDoc} - */ - @Override - public String getArrayIndexString() { - return arrayIndex != null ? formatTerm(arrayIndex, getServices()) : null; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isArrayIndex() { - return getArrayIndex() != null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Variable"; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionValue getParentValue() { - return parentValue; - } - - /** - * {@inheritDoc} - */ - @Override - public PosInOccurrence getModalityPIO() { - return modalityPIO; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionAllArrayIndicesVariable.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionAllArrayIndicesVariable.java deleted file mode 100644 index 3f15e48f0cf..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionAllArrayIndicesVariable.java +++ /dev/null @@ -1,203 +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.symbolic_execution.model.impl; - -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.TermBuilder; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.logic.op.JFunction; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionValue; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Name; -import org.key_project.logic.op.Function; -import org.key_project.prover.engine.impl.ApplyStrategyInfo; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; - -import org.jspecify.annotations.NonNull; - -/** - * An implementation of {@link IExecutionVariable} used to query all array indices at the same time. - * This supports also arrays where the length is symbolic and not a concrete number. - * - * @author Martin Hentschel - */ -public class ExecutionAllArrayIndicesVariable extends ExecutionVariable { - /** - * The name of the constant used to query the value of all array indices. - */ - public static final String ARRAY_INDEX_CONSTANT_NAME = "*"; - - /** - * The name used to represent the fact that a value is not available. - */ - public static final String NOT_A_VALUE_NAME = ""; - - /** - * The constant representing an arbitrary array index. - */ - private JTerm constant; - - /** - * The constant representing the fact that no value is available. - */ - private final JTerm notAValue; - - /** - * Constructor. - * - * @param parentNode The parent {@link IExecutionNode}. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param modalityPIO The {@link PosInOccurrence} of the modality of interest. - * @param parentValue The parent {@link IExecutionValue} representing the array. - * @param arrayProgramVariable The {@link IProgramVariable} of the array. - * @param additionalCondition An optional additional condition to consider. - */ - public ExecutionAllArrayIndicesVariable(IExecutionNode parentNode, Node proofNode, - PosInOccurrence modalityPIO, ExecutionValue parentValue, - IProgramVariable arrayProgramVariable, JTerm additionalCondition) { - super(parentNode, proofNode, modalityPIO, parentValue, arrayProgramVariable, - additionalCondition); - assert parentValue != null; - TermBuilder tb = getServices().getTermBuilder(); - Function notAValueFunction = - new JFunction(new Name(tb.newName(NOT_A_VALUE_NAME)), JavaDLTheory.ANY); - notAValue = tb.func(notAValueFunction); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() throws ProofInputException { - // Ensure that constant is defined - if (constant == null) { - getValues(); - } - // Compute name - String arrayName = super.lazyComputeName(); - return arrayName + "[" + constant + "]"; - } - - /** - * Computes the value for {@link #getValues()} lazily when the method is called the first time. - * - * @throws ProofInputException Occurred Exception. - */ - protected ExecutionValue[] lazyComputeValues() throws ProofInputException { - InitConfig initConfig = getInitConfig(); - if (initConfig != null) { // Otherwise proof is disposed. - // New OneStepSimplifier is required because it has an internal state and the default - // instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(initConfig, true); - final Services sideServices = sideProofEnv.getServicesForEnvironment(); - final TermBuilder tb = sideServices.getTermBuilder(); - // Start site proof to extract the value of the result variable. - JTerm siteProofCondition = getAdditionalCondition() != null - ? tb.and(getAdditionalCondition(), getParentValue().getCondition()) - : getParentValue().getCondition(); - JTerm arrayTerm = createArrayTerm(); - // Create index constant - Function constantFunction = - new JFunction(new Name(tb.newName(ARRAY_INDEX_CONSTANT_NAME)), - sideServices.getTypeConverter().getIntegerLDT().targetSort()); - constant = tb.func(constantFunction); - setName(lazyComputeName()); // Update name because constant has changed - JTerm arrayIndex = tb.dotArr(arrayTerm, constant); - // Create if check - Function arrayLengthFunction = - sideServices.getTypeConverter().getHeapLDT().getLength(); - JTerm arrayRange = tb.and(tb.geq(constant, tb.zero()), - tb.lt(constant, tb.func(arrayLengthFunction, arrayTerm))); - JTerm resultIf = tb.ife(arrayRange, arrayIndex, notAValue); - - // Create predicate which will be used in formulas to store the value interested in. - Function resultPredicate = - new JFunction(new Name(tb.newName("ResultPredicate")), - JavaDLTheory.FORMULA, resultIf.sort()); - // Create formula which contains the value interested in. - JTerm resultTerm = tb.func(resultPredicate, resultIf); - // Create Sequent to prove with new succedent. - Sequent sequent = SymbolicExecutionUtil.createSequentToProveWithNewSuccedent( - getProofNode(), getModalityPIO(), siteProofCondition, resultTerm, false); - // Perform side proof - ApplyStrategyInfo<@NonNull Proof, Goal> info = - SymbolicExecutionSideProofUtil.startSideProof(getProof(), - sideProofEnv, sequent, StrategyProperties.METHOD_NONE, - StrategyProperties.LOOP_NONE, - StrategyProperties.QUERY_OFF, StrategyProperties.SPLITTING_DELAYED); - try { - return instantiateValuesFromSideProof(initConfig, sideServices, tb, info, - resultPredicate, arrayTerm, // Pass array to ensure that unknown values are - // correctly computed. - siteProofCondition); - } finally { - SymbolicExecutionSideProofUtil.disposeOrStore( - "All array indices value computation on node " + getProofNode().serialNr(), - info); - } - } else { - return null; - } - } - - /** - * {@inheritDoc} - */ - @Override - protected boolean isValidValue(JTerm value) { - return notAValue != value; - } - - /** - * Creates a {@link JTerm} to access the array. - * - * @return The {@link JTerm} to access the array. - */ - public JTerm createArrayTerm() { - return getParentValue().getVariable().createSelectTerm(); - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm createSelectTerm() { - assert constant != null : "Call getValues() before calling createSelectTerm()."; - return getServices().getTermBuilder().dotArr(createArrayTerm(), constant); - } - - /** - * Returns the constant representing an arbitrary array index. - * - * @return The constant representing an arbitrary array index. - */ - public JTerm getConstant() { - return constant; - } - - /** - * Returns the constant representing the fact that no value is available. - * - * @return The constant representing the fact that no value is available. - */ - public JTerm getNotAValue() { - return notAValue; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionAuxiliaryContract.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionAuxiliaryContract.java deleted file mode 100644 index e86bce9bc04..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionAuxiliaryContract.java +++ /dev/null @@ -1,214 +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.symbolic_execution.model.impl; - -import java.util.LinkedHashMap; -import java.util.Map; - -import de.uka.ilkd.key.java.JavaTools; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.Statement; -import de.uka.ilkd.key.java.ast.StatementBlock; -import de.uka.ilkd.key.java.ast.declaration.LocalVariableDeclaration; -import de.uka.ilkd.key.java.ast.reference.ExecutionContext; -import de.uka.ilkd.key.java.ast.reference.ReferencePrefix; -import de.uka.ilkd.key.java.ast.statement.MethodFrame; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.TermBuilder; -import de.uka.ilkd.key.logic.op.ElementaryUpdate; -import de.uka.ilkd.key.logic.op.LocationVariable; -import de.uka.ilkd.key.logic.op.ProgramVariable; -import de.uka.ilkd.key.logic.op.UpdateApplication; -import de.uka.ilkd.key.logic.op.UpdateJunctor; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.rule.AbstractAuxiliaryContractBuiltInRuleApp; -import de.uka.ilkd.key.speclang.AuxiliaryContract; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionAuxiliaryContract; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Named; - -/** - * The default implementation of {@link IExecutionAuxiliaryContract}. - * - * @author Martin Hentschel - */ -public class ExecutionAuxiliaryContract extends AbstractExecutionNode - implements IExecutionAuxiliaryContract { - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - public ExecutionAuxiliaryContract(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Block Contract"; - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() throws ProofInputException { - // Find self term - JTerm self = null; - JTerm applicationTerm = (JTerm) getModalityPIO().subTerm(); - JTerm modalityTerm = TermBuilder.goBelowUpdates(applicationTerm); - ExecutionContext ec = - JavaTools.getInnermostExecutionContext(modalityTerm.javaBlock(), getServices()); - if (ec != null) { - ReferencePrefix prefix = ec.getRuntimeInstance(); - if (prefix instanceof ProgramVariable) { - self = getServices().getTermBuilder().var((ProgramVariable) prefix); - } - } - Node usageNode = getProofNode().child(2); - assert "Usage".equals(usageNode.getNodeInfo().getBranchLabel()) - : "Block Contract Rule has changed."; - JTerm usagePrecondition = (JTerm) usageNode.sequent().antecedent() - .get(usageNode.sequent().antecedent().size() - 1).formula(); - // Find remembrance heaps and local variables - while (applicationTerm.op() == UpdateApplication.UPDATE_APPLICATION) { - assert applicationTerm.sub(0) == usagePrecondition.sub(0) - : "Block Contract Rule has changed."; - applicationTerm = applicationTerm.sub(1); - usagePrecondition = usagePrecondition.sub(1); - } - assert usagePrecondition.op() == UpdateApplication.UPDATE_APPLICATION - : "Block Contract Rule has changed."; - Map remembranceHeaps = new LinkedHashMap<>(); - Map remembranceLocalVariables = - new LinkedHashMap<>(); - collectRemembranceVariables(usagePrecondition.sub(0), remembranceHeaps, - remembranceLocalVariables); - // Find remaining information - Node validitiyNode = getProofNode().child(0); - assert "Validity".equals(validitiyNode.getNodeInfo().getBranchLabel()) - : "Block Contract Rule has changed."; - JTerm validitiyModalityTerm = TermBuilder.goBelowUpdates(SymbolicExecutionUtil - .posInOccurrenceInOtherNode(getProofNode(), getModalityPIO(), validitiyNode)); - MethodFrame mf = - JavaTools.getInnermostMethodFrame(validitiyModalityTerm.javaBlock(), getServices()); - StatementBlock sb = mf != null ? mf.getBody() - : (StatementBlock) validitiyModalityTerm.javaBlock().program(); - AuxiliaryContract.Variables variables = getContract().getVariables(); - // Skip break and continues - int statementIndex = variables.breakFlags.size() + variables.continueFlags.size(); - JTerm returnFlag = null; - JTerm result = null; - if (variables.returnFlag != null) { - returnFlag = declaredVariableAsTerm(sb, statementIndex); - statementIndex++; // Skip return flag - if (variables.result != null) { - result = declaredVariableAsTerm(sb, statementIndex); - statementIndex++; // Result variable - } - } - JTerm exception = null; - if (variables.exception != null) { - exception = declaredVariableAsTerm(sb, statementIndex); - } - // getPlainText() does not use breakFlags, continueFlags, returnFlag, - // remembranceLocalVariables, outerRemembrancevariables - AuxiliaryContract.Terms terms = new AuxiliaryContract.Terms(self, null, null, returnFlag, - result, exception, remembranceHeaps, remembranceLocalVariables, null, null); - - // Compute text - return getContract().getPlainText(getServices(), terms); - } - - /** - * Returns the variable declared by the statement at the given index as {@link JTerm}. - * - * @param sb The {@link StatementBlock} which contains all variable declarations. - * @param statementIndex The index in the {@link StatementBlock} with the variable declaration - * of interest. - * @return The variable as {@link JTerm}. - */ - protected JTerm declaredVariableAsTerm(StatementBlock sb, int statementIndex) { - Statement resultInitStatement = sb.getStatementAt(statementIndex); - assert resultInitStatement instanceof LocalVariableDeclaration - : "Block Contract Rule has changed."; - Named var = ((LocalVariableDeclaration) resultInitStatement).getVariables().get(0) - .getProgramVariable(); - assert var != null : "Block Contract Rule has changed."; - return getServices().getTermBuilder().var((ProgramVariable) var); - } - - /** - * Collects recursive all remembrance variables. - * - * @param term The {@link JTerm} to start collecting. - * @param remembranceHeaps The {@link Map} to fill. - * @param remembranceLocalVariables The {@link Map} to fill. - */ - protected void collectRemembranceVariables(JTerm term, - Map remembranceHeaps, - Map remembranceLocalVariables) { - if (term.op() == UpdateJunctor.PARALLEL_UPDATE) { - for (JTerm sub : term.subs()) { - collectRemembranceVariables(sub, remembranceHeaps, remembranceLocalVariables); - } - } else if (term.op() instanceof ElementaryUpdate eu) { - if (SymbolicExecutionUtil.isHeap(eu.lhs(), - getServices().getTypeConverter().getHeapLDT())) { - remembranceHeaps.put((LocationVariable) term.sub(0).op(), - getServices().getTermBuilder().varOfUpdateableOp(eu.lhs())); - } else { - remembranceLocalVariables.put((LocationVariable) term.sub(0).op(), - getServices().getTermBuilder().varOfUpdateableOp(eu.lhs())); - } - } else { - assert false : "Unsupported update term with operator '" + term.op() + "'."; - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isPreconditionComplied() { - boolean complied = getProofNode().child(1).isClosed(); - return complied; - } - - /** - * {@inheritDoc} - */ - @Override - public AuxiliaryContract getContract() { - return ((AbstractAuxiliaryContractBuiltInRuleApp) getProofNode().getAppliedRuleApp()) - .getContract(); - } - - /** - * {@inheritDoc} - */ - @Override - public StatementBlock getBlock() { - return (StatementBlock) ((AbstractAuxiliaryContractBuiltInRuleApp) getProofNode() - .getAppliedRuleApp()).getStatement(); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionBranchCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionBranchCondition.java deleted file mode 100644 index d7af2754cfb..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionBranchCondition.java +++ /dev/null @@ -1,320 +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.symbolic_execution.model.impl; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionBranchCondition; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.sequent.PosInOccurrence; - -/** - * The default implementation of {@link IExecutionBranchCondition}. - * - * @author Martin Hentschel - */ -public class ExecutionBranchCondition extends AbstractExecutionNode - implements IExecutionBranchCondition { - /** - * The optional additional branch label. - */ - private final String additionalBranchLabel; - - /** - * The {@link JTerm} which represents the branch condition. - */ - private JTerm branchCondition; - - /** - * The human readable branch condition. - */ - private String formatedBranchCondition; - - /** - * The path condition to reach this node. - */ - private JTerm pathCondition; - - /** - * The human readable path condition to reach this node. - */ - private String formatedPathCondition; - - /** - * Merged branch conditions. - */ - private List mergedProofNodes; - - /** - * Contains the merged branch conditions. - */ - private JTerm[] mergedBranchCondtions; - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param additionalBranchLabel The optional additional branch label. - */ - public ExecutionBranchCondition(ITreeSettings settings, Node proofNode, - String additionalBranchLabel) { - super(settings, proofNode); - this.additionalBranchLabel = additionalBranchLabel; - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() throws ProofInputException { - return getFormatedBranchCondition(); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Branch Condition"; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedBranchCondition() throws ProofInputException { - if (branchCondition == null) { - lazyComputeBranchCondition(); - } - return formatedBranchCondition; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isBranchConditionComputed() { - return branchCondition != null; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getBranchCondition() throws ProofInputException { - if (branchCondition == null) { - lazyComputeBranchCondition(); - } - return branchCondition; - } - - /** - * Computes the branch condition lazily when {@link #getBranchCondition()} or - * {@link #getFormatedBranchCondition()} is called the first time. - * - * @throws ProofInputException Occurred Exception - */ - protected void lazyComputeBranchCondition() throws ProofInputException { - final InitConfig initConfig = getInitConfig(); - if (initConfig != null) { // Otherwise proof is disposed. - final Services services = initConfig.getServices(); - // Compute branch condition - if (isMergedBranchCondition()) { - // Add all merged branch conditions - JTerm[] mergedConditions = getMergedBranchCondtions(); - branchCondition = services.getTermBuilder().and(mergedBranchCondtions); - // Simplify merged branch conditions - if (mergedConditions.length >= 2) { - if (getSettings().simplifyConditions()) { - branchCondition = - SymbolicExecutionUtil.simplify(initConfig, getProof(), branchCondition); - } - branchCondition = - SymbolicExecutionUtil.improveReadability(branchCondition, services); - } - } else { - branchCondition = SymbolicExecutionUtil.computeBranchCondition(getProofNode(), - getSettings().simplifyConditions(), true); - } - // Format branch condition - formatedBranchCondition = formatTerm(branchCondition, services); - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isPathConditionChanged() { - return true; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getPathCondition() throws ProofInputException { - if (pathCondition == null) { - lazyComputePathCondition(); - } - return pathCondition; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedPathCondition() throws ProofInputException { - if (formatedPathCondition == null) { - lazyComputePathCondition(); - } - return formatedPathCondition; - } - - /** - * Computes the path condition lazily when {@link #getPathCondition()} or - * {@link #getFormatedPathCondition()} is called the first time. - * - * @throws ProofInputException Occurred Exception - */ - protected void lazyComputePathCondition() throws ProofInputException { - InitConfig initConfig = getInitConfig(); - if (initConfig != null) { // Otherwise proof is disposed. - final Services services = initConfig.getServices(); - // Get path to parent - JTerm parentPath; - if (getParent() != null) { - parentPath = getParent().getPathCondition(); - } else { - parentPath = services.getTermBuilder().tt(); - } - // Add current branch condition to path - JTerm branchCondition = getBranchCondition(); - if (branchCondition == null) { - return; // Proof disposed in between. - } - pathCondition = services.getTermBuilder().and(parentPath, branchCondition); - // Simplify path condition - if (getSettings().simplifyConditions()) { - pathCondition = - SymbolicExecutionUtil.simplify(initConfig, getProof(), pathCondition); - } - pathCondition = SymbolicExecutionUtil.improveReadability(pathCondition, services); - // Format path condition - formatedPathCondition = formatTerm(pathCondition, services); - } - } - - /** - * Adds a merged proof {@link Node}. - * - * @param node The proof {@link Node} to add. - */ - public void addMergedProofNode(Node node) { - if (mergedProofNodes == null) { - mergedProofNodes = new LinkedList<>(); - mergedProofNodes.add(getProofNode()); - } - mergedProofNodes.add(node); - } - - /** - * {@inheritDoc} - */ - @Override - public Node[] getMergedProofNodes() { - return mergedProofNodes != null - ? mergedProofNodes.toArray(new Node[0]) - : new Node[0]; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm[] getMergedBranchCondtions() throws ProofInputException { - if (mergedBranchCondtions == null) { - mergedBranchCondtions = lazyComputeMergedBranchCondtions(); - } - return mergedBranchCondtions; - } - - /** - * Computes the branch condition lazily when {@link #getMergedBranchCondtions()} is called the - * first time. - * - * @throws ProofInputException Occurred Exception - */ - protected JTerm[] lazyComputeMergedBranchCondtions() throws ProofInputException { - if (isMergedBranchCondition()) { - JTerm[] result = new JTerm[mergedProofNodes.size()]; - Iterator iter = mergedProofNodes.iterator(); - for (int i = 0; i < result.length; i++) { - result[i] = SymbolicExecutionUtil.computeBranchCondition(iter.next(), - getSettings().simplifyConditions(), true); - } - return result; - } else { - return new JTerm[0]; - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isMergedBranchCondition() { - return mergedProofNodes != null && !mergedProofNodes.isEmpty(); - } - - /** - * {@inheritDoc} - */ - @Override - public String getAdditionalBranchLabel() { - return additionalBranchLabel; - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - protected PosInOccurrence lazyComputeModalityPIO() { - return SymbolicExecutionUtil - .findModalityWithMaxSymbolicExecutionLabelId(getProofNode().sequent()); - } - - /** - * {@inheritDoc} - */ - @Override - public SourceElement getActiveStatement() { - JTerm modalityTerm = (JTerm) getModalityPIO().subTerm(); - SourceElement firstStatement = modalityTerm.javaBlock().program().getFirstElement(); - return NodeInfo.computeActiveStatement(firstStatement); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionBranchStatement.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionBranchStatement.java deleted file mode 100644 index 66e0d4ecd84..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionBranchStatement.java +++ /dev/null @@ -1,69 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.ast.statement.BranchStatement; -import de.uka.ilkd.key.java.ast.statement.If; -import de.uka.ilkd.key.java.ast.statement.Switch; -import de.uka.ilkd.key.pp.PrettyPrinter; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionBranchStatement; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -/** - * The default implementation of {@link IExecutionBranchStatement}. - * - * @author Martin Hentschel - */ -public class ExecutionBranchStatement extends AbstractExecutionBlockStartNode - implements IExecutionBranchStatement { - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - public ExecutionBranchStatement(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() { - BranchStatement bs = getActiveStatement(); - if (bs instanceof If) { - PrettyPrinter p = PrettyPrinter.purePrinter(); - p.performActionOnIf((If) bs, false); - return p.result(); - } else if (bs instanceof Switch) { - PrettyPrinter p = PrettyPrinter.purePrinter(); - p.performActionOnSwitch((Switch) bs, false); - return p.result(); - } else { - return bs.toString(); - } - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Branch Statement"; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionConstraint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionConstraint.java deleted file mode 100644 index d11209b0a40..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionConstraint.java +++ /dev/null @@ -1,80 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; - -import org.key_project.prover.sequent.PosInOccurrence; - -/** - * The default implementation of {@link IExecutionConstraint}. - * - * @author Martin Hentschel - */ -public class ExecutionConstraint extends AbstractExecutionElement implements IExecutionConstraint { - /** - * The {@link JTerm} representing the constraint. - */ - private final JTerm term; - - /** - * The {@link PosInOccurrence} of the modality of interest. - */ - private final PosInOccurrence modalityPIO; - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param term The {@link JTerm} representing the constraint. - */ - public ExecutionConstraint(ITreeSettings settings, Node proofNode, - PosInOccurrence modalityPIO, - JTerm term) { - super(settings, proofNode); - assert term != null; - assert modalityPIO != null; - this.term = term; - this.modalityPIO = modalityPIO; - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() throws ProofInputException { - return formatTerm(term, getServices()); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Constraint"; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getTerm() { - return term; - } - - /** - * {@inheritDoc} - */ - @Override - public PosInOccurrence getModalityPIO() { - return modalityPIO; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionExceptionalMethodReturn.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionExceptionalMethodReturn.java deleted file mode 100644 index 837f9182880..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionExceptionalMethodReturn.java +++ /dev/null @@ -1,83 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.expression.Expression; -import de.uka.ilkd.key.java.ast.statement.Throw; -import de.uka.ilkd.key.logic.op.ProgramVariable; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionExceptionalMethodReturn; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodCall; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.util.java.StringUtil; - -/** - * The default implementation of {@link IExecutionExceptionalMethodReturn}. - * - * @author Martin Hentschel - */ -public class ExecutionExceptionalMethodReturn extends AbstractExecutionMethodReturn - implements IExecutionExceptionalMethodReturn { - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param methodCall The {@link IExecutionMethodCall} which is now returned. - */ - public ExecutionExceptionalMethodReturn(ITreeSettings settings, Node proofNode, - ExecutionMethodCall methodCall) { - super(settings, proofNode, methodCall); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() { - String exceptionType; - Expression expression = getActiveStatement().getExpression(); - if (expression instanceof ProgramVariable) { - KeYJavaType type = ((ProgramVariable) expression).getKeYJavaType(); - exceptionType = type.getFullName(); - } else { - exceptionType = expression.toString(); - } - return INTERNAL_NODE_NAME_START + "throw " + exceptionType + INTERNAL_NODE_NAME_END; - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeSignature() throws ProofInputException { - String methodName = getMethodCall().getName(); - return INTERNAL_NODE_NAME_START + "exceptional return" - + (!StringUtil.isTrimmedEmpty(methodName) ? " of " + methodName : "") - + INTERNAL_NODE_NAME_END; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Exceptional Method Return"; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionJoin.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionJoin.java deleted file mode 100644 index 7fb207758ca..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionJoin.java +++ /dev/null @@ -1,74 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionJoin; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -/** - * The default implementation of {@link IExecutionJoin}. - * - * @author Martin Hentschel - */ -public class ExecutionJoin extends AbstractExecutionNode implements IExecutionJoin { - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - public ExecutionJoin(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() { - return "Join"; - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Join"; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isWeakeningVerified() { - if (isWeakeningVerificationSupported()) { - return SymbolicExecutionUtil.lazyComputeIsMainBranchVerified(getProofNode().child(0)); - } else { - return true; - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isWeakeningVerificationSupported() { - return SymbolicExecutionUtil.isWeakeningGoalEnabled(getProof()); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLink.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLink.java deleted file mode 100644 index 8eff5671ca8..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLink.java +++ /dev/null @@ -1,51 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.symbolic_execution.model.IExecutionLink; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; - -/** - * The default implementation of {@link IExecutionLink}. - * - * @author Martin Hentschel - */ -public class ExecutionLink implements IExecutionLink { - /** - * The source {@link IExecutionNode}. - */ - private final IExecutionNode source; - - /** - * The target {@link IExecutionNode}. - */ - private final IExecutionNode target; - - /** - * Constructor. - * - * @param source The source {@link IExecutionNode}. - * @param target The target {@link IExecutionNode}. - */ - public ExecutionLink(IExecutionNode source, IExecutionNode target) { - this.source = source; - this.target = target; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionNode getSource() { - return source; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionNode getTarget() { - return target; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLoopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLoopCondition.java deleted file mode 100644 index 0f1d3b3e605..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLoopCondition.java +++ /dev/null @@ -1,81 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.ast.PositionInfo; -import de.uka.ilkd.key.java.ast.expression.Expression; -import de.uka.ilkd.key.java.ast.statement.If; -import de.uka.ilkd.key.java.ast.statement.JavaStatement; -import de.uka.ilkd.key.java.ast.statement.LoopStatement; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionLoopCondition; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -/** - * The default implementation of {@link IExecutionLoopCondition}. - * - * @author Martin Hentschel - */ -public class ExecutionLoopCondition extends AbstractExecutionBlockStartNode - implements IExecutionLoopCondition { - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - public ExecutionLoopCondition(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() { - return getGuardExpression().toString(); - } - - /** - * {@inheritDoc} - */ - @Override - public Expression getGuardExpression() { - if (getActiveStatement() instanceof LoopStatement) { - return ((LoopStatement) getActiveStatement()).getGuardExpression(); - } else if (getActiveStatement() instanceof If) { - return ((If) getActiveStatement()).getExpression(); - } else { - return null; - } - } - - /** - * {@inheritDoc} - */ - @Override - public PositionInfo getGuardExpressionPositionInfo() { - return getGuardExpression().getPositionInfo(); - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Loop Condition"; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLoopInvariant.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLoopInvariant.java deleted file mode 100644 index 4758355311d..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLoopInvariant.java +++ /dev/null @@ -1,96 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.statement.While; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.rule.LoopInvariantBuiltInRuleApp; -import de.uka.ilkd.key.speclang.LoopSpecification; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionLoopInvariant; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -/** - * The default implementation of {@link IExecutionLoopInvariant}. - * - * @author Martin Hentschel - */ -public class ExecutionLoopInvariant extends AbstractExecutionNode - implements IExecutionLoopInvariant { - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - public ExecutionLoopInvariant(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - public LoopInvariantBuiltInRuleApp getAppliedRuleApp() { - return (LoopInvariantBuiltInRuleApp) super.getAppliedRuleApp(); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() { - return getLoopInvariant().getPlainText(getServices(), getAppliedRuleApp().getHeapContext(), - getSettings().usePrettyPrinting(), getSettings().useUnicode(), false).trim(); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Loop Invariant"; - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - public LoopSpecification getLoopInvariant() { - return ((LoopInvariantBuiltInRuleApp) getProofNode().getAppliedRuleApp()).getSpec(); - } - - /** - * {@inheritDoc} - */ - @Override - public While getLoopStatement() { - return ((LoopInvariantBuiltInRuleApp) getProofNode().getAppliedRuleApp()) - .getLoopStatement(); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isInitiallyValid() { - boolean initiallyValid = false; - if (getProofNode().childrenCount() >= 1) { - initiallyValid = getProofNode().child(0).isClosed(); - } - return initiallyValid; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLoopStatement.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLoopStatement.java deleted file mode 100644 index d11c8f810eb..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionLoopStatement.java +++ /dev/null @@ -1,79 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.ast.statement.*; -import de.uka.ilkd.key.pp.PrettyPrinter; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionLoopStatement; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -/** - * The default implementation of {@link IExecutionLoopStatement}. - * - * @author Martin Hentschel - */ -public class ExecutionLoopStatement extends AbstractExecutionBlockStartNode - implements IExecutionLoopStatement { - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - public ExecutionLoopStatement(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() { - LoopStatement ls = getActiveStatement(); - if (ls.getGuardExpression() != null) { - if (ls instanceof While) { - PrettyPrinter p = PrettyPrinter.purePrinter(); - p.performActionOnWhile((While) ls, false); - return p.result(); - } else if (ls instanceof For) { - PrettyPrinter p = PrettyPrinter.purePrinter(); - p.performActionOnFor((For) ls, false); - return p.result(); - } else if (ls instanceof EnhancedFor) { - PrettyPrinter p = PrettyPrinter.purePrinter(); - p.performActionOnEnhancedFor((EnhancedFor) ls, false); - return p.result(); - } else if (ls instanceof Do) { - PrettyPrinter p = PrettyPrinter.purePrinter(); - p.performActionOnDo((Do) ls, false); - return p.result(); - } else { - return ls.toString(); - } - } else { - return ls.toString(); - } - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Loop Statement"; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionMethodCall.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionMethodCall.java deleted file mode 100644 index 4d87cb12684..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionMethodCall.java +++ /dev/null @@ -1,167 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.ast.reference.MethodReference; -import de.uka.ilkd.key.java.ast.statement.MethodBodyStatement; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionBaseMethodReturn; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodCall; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; -import de.uka.ilkd.key.util.KeYTypeUtil; - -import org.key_project.util.collection.ImmutableList; - -/** - * The default implementation of {@link IExecutionMethodCall}. - * - * @author Martin Hentschel - */ -public class ExecutionMethodCall extends AbstractExecutionNode - implements IExecutionMethodCall { - /** - * The up to know discovered {@link IExecutionBaseMethodReturn}s. - */ - private ImmutableList> methodReturns = ImmutableList.nil(); - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - public ExecutionMethodCall(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() { - return INTERNAL_NODE_NAME_START + "call " + getMethodCallText() + INTERNAL_NODE_NAME_END; - } - - /** - * Computes the method call text. - * - * @return The method call text. - */ - protected String getMethodCallText() { - MethodReference explicitConstructorMR = getExplicitConstructorMethodReference(); - String call = explicitConstructorMR != null ? explicitConstructorMR.toString() - : getMethodReference().toString(); - if (call.endsWith(";")) { - call = call.substring(0, call.length() - 1); - } - return call; - } - - /** - * Removes the given {@link IExecutionBaseMethodReturn}. - * - * @param methodReturn The {@link IExecutionBaseMethodReturn} to be deleted. - * @author Anna Filighera - */ - public void removeMethodReturn(IExecutionBaseMethodReturn methodReturn) { - methodReturns = methodReturns.removeAll(methodReturn); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isImplicitConstructor() { - return KeYTypeUtil.isImplicitConstructor(getProgramMethod()); - } - - /** - * {@inheritDoc} - */ - @Override - public MethodReference getExplicitConstructorMethodReference() { - IProgramMethod explicitConstructor = getExplicitConstructorProgramMethod(); - if (explicitConstructor != null) { - MethodReference mr = getMethodReference(); - return new MethodReference(mr.getArguments(), - explicitConstructor.getProgramElementName(), null); // Ignore the prefix because it - // is ugly if a constructor is - // called on an object not part - // of the symbolic execution - // tree. - } else { - return null; - } - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramMethod getExplicitConstructorProgramMethod() { - IProgramMethod pm = getProgramMethod(); - if (KeYTypeUtil.isImplicitConstructor(pm)) { - return KeYTypeUtil.findExplicitConstructor(getServices(), pm); - } else { - return null; - } - } - - /** - * {@inheritDoc} - */ - @Override - public MethodReference getMethodReference() { - return getActiveStatement().getMethodReference(); - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramMethod getProgramMethod() { - return getActiveStatement().getProgramMethod(getServices()); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Method Call"; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList> getMethodReturns() { - return methodReturns; - } - - /** - * Registers the given {@link IExecutionBaseMethodReturn}. - * - * @param methodReturn The {@link IExecutionBaseMethodReturn} to register. - */ - public void addMethodReturn(IExecutionBaseMethodReturn methodReturn) { - if (methodReturn != null) { - assert methodReturn.getMethodCall() == this; - methodReturns = methodReturns.append(methodReturn); - } - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionMethodReturn.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionMethodReturn.java deleted file mode 100644 index 1df059ea03d..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionMethodReturn.java +++ /dev/null @@ -1,402 +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.symbolic_execution.model.impl; - -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.reference.MethodReference; -import de.uka.ilkd.key.java.ast.statement.MethodBodyStatement; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.ProgramElementName; -import de.uka.ilkd.key.logic.label.SymbolicExecutionTermLabel; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.logic.op.LocationVariable; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodCall; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodReturn; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodReturnValue; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil.SiteProofVariableValueInput; -import de.uka.ilkd.key.util.MiscTools; - -import org.key_project.prover.engine.impl.ApplyStrategyInfo; -import org.key_project.util.java.StringUtil; - -/** - * The default implementation of {@link IExecutionMethodReturn}. - * - * @author Martin Hentschel - */ -public class ExecutionMethodReturn extends AbstractExecutionMethodReturn - implements IExecutionMethodReturn { - /** - * The node name with signature including the return value. - */ - private String signatureIncludingReturnValue; - - /** - * The node name including the return value. - */ - private String nameIncludingReturnValue; - - /** - * The possible return values. - */ - private IExecutionMethodReturnValue[] returnValues; - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param methodCall The {@link IExecutionMethodCall} which is now returned. - */ - public ExecutionMethodReturn(ITreeSettings settings, Node proofNode, - ExecutionMethodCall methodCall) { - super(settings, proofNode, methodCall); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() throws ProofInputException { - return createMethodReturnName(null, computeCalledMethodName()); - } - - /** - * Computes the name of the called method. - * - * @return The name of the called method. - */ - protected String computeCalledMethodName() { - MethodReference explicitConstructorMR = - getMethodCall().getExplicitConstructorMethodReference(); - return explicitConstructorMR != null ? explicitConstructorMR.getMethodName().toString() - : getMethodCall().getProgramMethod().getName(); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeSignature() throws ProofInputException { - return createMethodReturnName(null, computeCalledMethodSignature()); - } - - /** - * Computes the signature of the called method. - * - * @return The signature of the called method. - */ - protected String computeCalledMethodSignature() throws ProofInputException { - MethodReference explicitConstructorMR = - getMethodCall().getExplicitConstructorMethodReference(); - String call = explicitConstructorMR != null ? explicitConstructorMR.toString() - : getMethodCall().getMethodReference().toString(); - if (call.endsWith(";")) { - call = call.substring(0, call.length() - 1); - } - return call; - } - - /** - * {@inheritDoc} - */ - @Override - public String getNameIncludingReturnValue() throws ProofInputException { - if (nameIncludingReturnValue == null) { - nameIncludingReturnValue = lazyComputeNameIncludingReturnValue(); - } - return nameIncludingReturnValue; - } - - /** - * Computes the name including the return value lazily when - * {@link #getNameIncludingReturnValue()} is called the first time. - * - * @return The name including the return value. - * @throws ProofInputException - */ - protected String lazyComputeNameIncludingReturnValue() throws ProofInputException { - IExecutionMethodReturnValue[] returnValues = getReturnValues(); - if (returnValues.length == 0) { - return createMethodReturnName(null, computeCalledMethodName()); - } else if (returnValues.length == 1) { - return createMethodReturnName(returnValues[0].getName() + " ", - computeCalledMethodName()); - } else { - StringBuilder sb = new StringBuilder(); - sb.append('\n'); - boolean afterFirst = false; - for (IExecutionMethodReturnValue value : returnValues) { - if (afterFirst) { - sb.append(", \n"); - } else { - afterFirst = true; - } - sb.append('\t'); - sb.append(value.getName()); - } - sb.append('\n'); - return createMethodReturnName(sb.toString(), computeCalledMethodName()); - } - } - - /** - * {@inheritDoc} - */ - @Override - public String getSignatureIncludingReturnValue() throws ProofInputException { - if (signatureIncludingReturnValue == null) { - signatureIncludingReturnValue = lazyComputeSigntureIncludingReturnValue(); - } - return signatureIncludingReturnValue; - } - - /** - * Computes the signature including the return value lazily when - * {@link #getNameIncludingReturnValue()} is called the first time. - * - * @return The name including the return value. - * @throws ProofInputException - */ - protected String lazyComputeSigntureIncludingReturnValue() throws ProofInputException { - IExecutionMethodReturnValue[] returnValues = getReturnValues(); - if (returnValues.length == 0) { - return createMethodReturnName(null, computeCalledMethodSignature()); - } else if (returnValues.length == 1) { - return createMethodReturnName(returnValues[0].getName() + " ", - computeCalledMethodSignature()); - } else { - StringBuilder sb = new StringBuilder(); - sb.append('\n'); - boolean afterFirst = false; - for (IExecutionMethodReturnValue value : returnValues) { - if (afterFirst) { - sb.append(", \n"); - } else { - afterFirst = true; - } - sb.append('\t'); - sb.append(value.getName()); - } - sb.append('\n'); - return createMethodReturnName(sb.toString(), computeCalledMethodSignature()); - } - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionMethodReturnValue[] getReturnValues() throws ProofInputException { - if (returnValues == null) { - returnValues = lazyComputeReturnValues(); - } - return returnValues; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isReturnValuesComputed() { - return returnValues != null; - } - - /** - * Computes the return value lazily when {@link #getReturnValues()} is called the first time. - * - * @return The return value. - * @throws ProofInputException Occurred Exception. - */ - protected IExecutionMethodReturnValue[] lazyComputeReturnValues() throws ProofInputException { - InitConfig initConfig = getInitConfig(); - if (initConfig != null) { // Otherwise proof is disposed. - final Services services = initConfig.getServices(); - // Check if a result variable is available - MethodBodyStatement mbs = getMethodCall().getActiveStatement(); - IProgramVariable resultVar = mbs.getResultVariable(); - // Create a temporary result variable for non void methods in case that it is missing in - // method frame - if (resultVar == null) { - IProgramMethod pm = mbs.getProgramMethod(services); - if (!pm.isVoid()) { - resultVar = new LocationVariable( - new ProgramElementName(services.getTermBuilder().newName("TmpResultVar")), - pm.getReturnType()); - } - } - if (resultVar != null) { - // Search the node with applied rule "methodCallReturn" which provides the required - // updates - Node methodReturnNode = findMethodReturnNode(getProofNode()); - if (methodReturnNode != null) { - // Start site proof to extract the value of the result variable. - // New OneStepSimplifier is required because it has an internal state and the - // default instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(getProof(), true); - SiteProofVariableValueInput input = - SymbolicExecutionUtil.createExtractReturnVariableValueSequent(services, - mbs.getBodySourceAsTypeReference(), mbs.getProgramMethod(services), - mbs.getDesignatedContext(), methodReturnNode, getProofNode(), - resultVar); - ApplyStrategyInfo info = - SymbolicExecutionSideProofUtil.startSideProof( - getProof(), sideProofEnv, input.getSequentToProve(), - StrategyProperties.METHOD_NONE, StrategyProperties.LOOP_NONE, - StrategyProperties.QUERY_OFF, StrategyProperties.SPLITTING_NORMAL); - try { - if (info.getProof().openGoals().size() == 1) { - Goal goal = info.getProof().openGoals().head(); - JTerm returnValue = SymbolicExecutionSideProofUtil - .extractOperatorValue(goal, input.getOperator()); - assert returnValue != null; - returnValue = SymbolicExecutionUtil - .replaceSkolemConstants(goal.sequent(), returnValue, services); - return new IExecutionMethodReturnValue[] { - new ExecutionMethodReturnValue(getSettings(), getProofNode(), - getModalityPIO(), returnValue, null) }; - } else { - // Group equal values of different branches - Map> valueNodeMap = - new LinkedHashMap<>(); - for (Goal goal : info.getProof().openGoals()) { - JTerm returnValue = SymbolicExecutionSideProofUtil - .extractOperatorValue(goal, input.getOperator()); - assert returnValue != null; - returnValue = SymbolicExecutionUtil.replaceSkolemConstants( - goal.node().sequent(), returnValue, services); - List nodeList = valueNodeMap.computeIfAbsent(returnValue, - k -> new LinkedList<>()); - nodeList.add(goal.node()); - } - // Create result - if (valueNodeMap.size() == 1) { - JTerm returnValue = valueNodeMap.keySet().iterator().next(); - return new IExecutionMethodReturnValue[] { - new ExecutionMethodReturnValue(getSettings(), getProofNode(), - getModalityPIO(), returnValue, null) }; - } else { - IExecutionMethodReturnValue[] result = - new IExecutionMethodReturnValue[valueNodeMap.size()]; - int i = 0; - for (Entry> entry : valueNodeMap.entrySet()) { - List conditions = new LinkedList<>(); - for (Node node : entry.getValue()) { - JTerm condition = - SymbolicExecutionUtil.computePathCondition( - node, getSettings().simplifyConditions(), false); - conditions.add(condition); - } - JTerm condition = services.getTermBuilder().or(conditions); - if (conditions.size() >= 2) { - if (getSettings().simplifyConditions()) { - condition = SymbolicExecutionUtil.simplify(initConfig, - info.getProof(), condition); - } - } - condition = SymbolicExecutionUtil.improveReadability(condition, - info.getProof().getServices()); - result[i] = new ExecutionMethodReturnValue(getSettings(), - getProofNode(), getModalityPIO(), entry.getKey(), - condition); - i++; - } - return result; - } - } - } finally { - SymbolicExecutionSideProofUtil - .disposeOrStore("Return value computation on method return node " - + methodReturnNode.serialNr() + ".", info); - } - } else { - return new IExecutionMethodReturnValue[0]; - } - } else { - return new IExecutionMethodReturnValue[0]; - } - } else { - return new IExecutionMethodReturnValue[0]; - } - } - - /** - * Searches from the given {@link Node} the parent which applies the rule "methodCallReturn" in - * the same modality. - * - * @param node The {@link Node} to start search from. - * @return The found {@link Node} with rule "methodCallReturn" or {@code null} if no node was - * found. - */ - protected Node findMethodReturnNode(Node node) { - Node resultNode = null; - SymbolicExecutionTermLabel origianlLabel = - SymbolicExecutionUtil.getSymbolicExecutionLabel(node.getAppliedRuleApp()); - if (origianlLabel != null) { - while (node != null && resultNode == null) { - if ("methodCallReturn".equals(MiscTools.getRuleDisplayName(node))) { - SymbolicExecutionTermLabel currentLabel = - SymbolicExecutionUtil.getSymbolicExecutionLabel(node.getAppliedRuleApp()); - if (origianlLabel.equals(currentLabel)) { - resultNode = node; - } - } - node = node.parent(); - } - } - return resultNode; - } - - /** - * Creates the human readable name which is shown in {@link IExecutionMethodReturn} instances. - * - * @param returnValue The return value. - * @param methodName The name of the method that is completely executed. - * @return The created human readable name. - */ - public static String createMethodReturnName(Object returnValue, String methodName) { - return INTERNAL_NODE_NAME_START + "return" - + (returnValue != null ? " " + returnValue + "as result" : "") - + (!StringUtil.isTrimmedEmpty(methodName) ? " of " + methodName : "") - + INTERNAL_NODE_NAME_END; - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Method Return"; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionMethodReturnValue.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionMethodReturnValue.java deleted file mode 100644 index 7fe3b29cf48..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionMethodReturnValue.java +++ /dev/null @@ -1,164 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodReturnValue; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; - -import org.key_project.prover.sequent.PosInOccurrence; - -/** - * The default implementation of {@link IExecutionMethodReturnValue}. - * - * @author Martin Hentschel - */ -public class ExecutionMethodReturnValue extends AbstractExecutionElement - implements IExecutionMethodReturnValue { - /** - * The return value. - */ - private final JTerm returnValue; - - /** - * The {@link PosInOccurrence} of the modality of interest. - */ - private final PosInOccurrence modalityPIO; - - /** - * The return value as human readable {@link String}. - */ - private String returnValueString; - - /** - * The optional condition. - */ - private final JTerm condition; - - /** - * The optional condition as human readable {@link String}. - */ - private String conditionString; - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param returnValue The return value. - * @param condition The optional condition or {@code null} if no condition is available. - */ - public ExecutionMethodReturnValue(ITreeSettings settings, Node proofNode, - PosInOccurrence modalityPIO, JTerm returnValue, - JTerm condition) { - super(settings, proofNode); - assert returnValue != null; - assert modalityPIO != null; - this.returnValue = returnValue; - this.condition = condition; - this.modalityPIO = modalityPIO; - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Return Value"; - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() throws ProofInputException { - if (hasCondition()) { - return getReturnValueString() + " {" + getConditionString() + "}"; - } else { - return getReturnValueString(); - } - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getReturnValue() throws ProofInputException { - return returnValue; - } - - /** - * {@inheritDoc} - */ - @Override - public String getReturnValueString() throws ProofInputException { - if (returnValueString == null) { - returnValueString = lazyComputeReturnValueString(); - } - return returnValueString; - } - - /** - * Computes the human readable return value of this node lazily when - * {@link #getReturnValueString()} is called the first time. - * - * @return The human readable return value. - */ - protected String lazyComputeReturnValueString() throws ProofInputException { - return !isDisposed() ? formatTerm(returnValue, getServices()) : null; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean hasCondition() throws ProofInputException { - return condition != null; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getCondition() throws ProofInputException { - return condition; - } - - /** - * {@inheritDoc} - */ - @Override - public String getConditionString() throws ProofInputException { - if (conditionString == null) { - conditionString = lazyComputeConditionString(); - } - return conditionString; - } - - /** - * Computes the human readable return value of this node lazily when - * {@link #getConditionString()} is called the first time. - * - * @return The human readable return value. - */ - protected String lazyComputeConditionString() throws ProofInputException { - if (hasCondition()) { - return !isDisposed() ? formatTerm(condition, getServices()) : null; - } else { - return null; - } - } - - /** - * {@inheritDoc} - */ - @Override - public PosInOccurrence getModalityPIO() { - return modalityPIO; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionOperationContract.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionOperationContract.java deleted file mode 100644 index a1fb21b6202..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionOperationContract.java +++ /dev/null @@ -1,386 +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.symbolic_execution.model.impl; - -import java.util.List; -import java.util.Map; - -import de.uka.ilkd.key.java.JavaTools; -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.ProgramElement; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.expression.operator.CopyAssignment; -import de.uka.ilkd.key.java.ast.statement.MethodFrame; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.TermBuilder; -import de.uka.ilkd.key.logic.op.Equality; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.logic.op.Junctor; -import de.uka.ilkd.key.logic.op.LocationVariable; -import de.uka.ilkd.key.logic.op.ProgramVariable; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.rule.AbstractContractRuleApp; -import de.uka.ilkd.key.rule.ContractRuleApp; -import de.uka.ilkd.key.rule.UseOperationContractRule; -import de.uka.ilkd.key.rule.UseOperationContractRule.Instantiation; -import de.uka.ilkd.key.speclang.Contract; -import de.uka.ilkd.key.speclang.FunctionalOperationContract; -import de.uka.ilkd.key.speclang.FunctionalOperationContractImpl; -import de.uka.ilkd.key.speclang.HeapContext; -import de.uka.ilkd.key.speclang.OperationContract; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionOperationContract; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil.ContractPostOrExcPostExceptionVariableResult; - -import org.key_project.util.collection.ImmutableList; - -/** - * The default implementation of {@link IExecutionOperationContract}. - * - * @author Martin Hentschel - */ -public class ExecutionOperationContract extends AbstractExecutionNode - implements IExecutionOperationContract { - /** - * The exception {@link JTerm} used by the applied {@link Contract}. - */ - private JTerm exceptionTerm; - - /** - * The result {@link JTerm} used by the applied {@link Contract}. - */ - private JTerm resultTerm; - - /** - * The self {@link JTerm} or {@code null} if not available. - */ - private JTerm selfTerm; - - /** - * The current contract parameters. - */ - private ImmutableList contractParams; - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - public ExecutionOperationContract(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() throws ProofInputException { - if (!isDisposed()) { - final Services services = getServices(); - // Make sure that the contract is compatible - if (!(getContract() instanceof FunctionalOperationContract contract)) { - throw new ProofInputException("Unsupported contract: " + getContract()); - } - // Compute instantiation - Instantiation inst = UseOperationContractRule.computeInstantiation( - (JTerm) getProofNode().getAppliedRuleApp().posInOccurrence().subTerm(), services); - // Extract used result and exception variable from proof nodes - resultTerm = searchResultTerm(contract, inst, services); - ContractPostOrExcPostExceptionVariableResult search = - SymbolicExecutionUtil.searchContractPostOrExcPostExceptionVariable( - getProofNode().child(0), services); // Post branch - exceptionTerm = search.getExceptionEquality().sub(0); - // Rename variables in contract to the current one - List heapContext = - HeapContext.getModifiableHeaps(services, inst.transaction()); - Map atPreVars = - UseOperationContractRule.computeAtPreVars(heapContext, services, inst); - Map atPres = HeapContext.getAtPres(atPreVars, services); - LocationVariable baseHeap = services.getTypeConverter().getHeapLDT().getHeap(); - JTerm baseHeapTerm = services.getTermBuilder().getBaseHeap(); - if (contract.hasSelfVar()) { - if (inst.pm().isConstructor()) { - selfTerm = searchConstructorSelfDefinition(search.getWorkingTerm(), - inst.staticType(), services); - if (selfTerm == null) { - throw new ProofInputException( - "Can't find self term, implementation of UseOperationContractRule might has changed!"); - } - KeYJavaType selfType = services.getJavaInfo().getKeYJavaType(selfTerm.sort()); - if (inst.staticType() != selfType) { - throw new ProofInputException("Type \"" + inst.staticType() - + "\" expected but found \"" + selfType - + "\", implementation of UseOperationContractRule might has changed!"); - } - } else { - selfTerm = UseOperationContractRule.computeSelf(baseHeapTerm, atPres, baseHeap, - inst, resultTerm, services.getTermFactory()); - } - } - contractParams = UseOperationContractRule.computeParams(baseHeapTerm, atPres, baseHeap, - inst, services.getTermFactory()); - // Compute contract text - return FunctionalOperationContractImpl.getText(contract, contractParams, resultTerm, - selfTerm, exceptionTerm, baseHeap, baseHeapTerm, heapContext, atPres, false, - services, getSettings().usePrettyPrinting(), getSettings().useUnicode(), - false).trim(); - } else { - return null; - } - } - - /** - * Tries to find the self {@link JTerm} of the given {@link KeYJavaType}. - * - * @param term The {@link JTerm} to start search in. - * @param staticType The expected {@link KeYJavaType}. - * @param services The {@link Services} to use. - * @return The found self {@link JTerm} or {@code null} if not available. - */ - protected JTerm searchConstructorSelfDefinition(JTerm term, KeYJavaType staticType, - Services services) { - if (term.op() == Junctor.NOT && term.sub(0).op() == Equality.EQUALS - && term.sub(0).sub(0).op() instanceof LocationVariable - && SymbolicExecutionUtil.isNullSort(term.sub(0).sub(1).sort(), services) - && services.getJavaInfo().getKeYJavaType(term.sub(0).sub(0).sort()) == staticType) { - return term.sub(0).sub(0); - } else { - JTerm result = null; - int i = term.arity() - 1; - while (result == null && i >= 0) { - result = searchConstructorSelfDefinition(term.sub(i), staticType, services); - i--; - } - return result; - } - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getResultTerm() throws ProofInputException { - synchronized (this) { - if (!isNameComputed()) { - getName(); // Compute name and result term - } - return resultTerm; - } - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getExceptionTerm() throws ProofInputException { - synchronized (this) { - if (!isNameComputed()) { - getName(); // Compute name and exception term - } - return exceptionTerm; - } - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getSelfTerm() throws ProofInputException { - synchronized (this) { - if (!isNameComputed()) { - getName(); // Compute name and self term - } - return selfTerm; - } - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getContractParams() throws ProofInputException { - synchronized (this) { - if (!isNameComputed()) { - getName(); // Compute name and contract term - } - return contractParams; - } - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedResultTerm() throws ProofInputException { - JTerm resultTerm = getResultTerm(); - return resultTerm != null ? formatTerm(resultTerm, getServices()) : null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedExceptionTerm() throws ProofInputException { - JTerm exceptionTerm = getExceptionTerm(); - return exceptionTerm != null ? formatTerm(exceptionTerm, getServices()) : null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedSelfTerm() throws ProofInputException { - JTerm selfTerm = getSelfTerm(); - return selfTerm != null ? formatTerm(selfTerm, getServices()) : null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getFormatedContractParams() throws ProofInputException { - ImmutableList contractParams = getContractParams(); - if (contractParams != null && !contractParams.isEmpty()) { - StringBuilder sb = new StringBuilder(); - boolean afterFirst = false; - for (JTerm term : contractParams) { - if (afterFirst) { - sb.append(", "); - } else { - afterFirst = true; - } - sb.append(formatTerm(term, getServices())); - } - return sb.toString(); - } else { - return null; - } - } - - /** - * Searches the result {@link JTerm}. - * - * @param contract The {@link FunctionalOperationContract}. - * @param inst The {@link Instantiation}. - * @param services The {@link Services}. - * @return The found result {@link JTerm} or {@code null} otherwise. - */ - protected JTerm searchResultTerm(FunctionalOperationContract contract, Instantiation inst, - Services services) { - JTerm resultTerm = null; - if (contract.hasResultVar()) { - ProgramVariable resultVar = - extractResultVariableFromPostBranch(getProofNode(), services); - if (resultVar == null) { - // Result variable not found in child, create a temporary variable to use in - // specification - resultVar = UseOperationContractRule.computeResultVar(inst, services); - } - resultTerm = services.getTermBuilder().var(resultVar); - } - return resultTerm; - } - - /** - * Extracts the result variable from the given post branch. - * - * @param node The {@link Node} which is the post or exceptional post branch of an applied - * {@link ContractRuleApp}. - * @param services The {@link Services} to use. - * @return The found {@link LocationVariable} or {@code null} if not found. - */ - protected static LocationVariable extractResultVariableFromPostBranch(Node node, - Services services) { - JTerm postModality = SymbolicExecutionUtil.posInOccurrenceInOtherNode(node, - node.getAppliedRuleApp().posInOccurrence(), node.child(0)); - postModality = TermBuilder.goBelowUpdates(postModality); - MethodFrame mf = JavaTools.getInnermostMethodFrame(postModality.javaBlock(), services); - SourceElement firstElement = NodeInfo.computeActiveStatement(mf.getFirstElement()); - if (!(firstElement instanceof CopyAssignment assignment)) { - return null; - } - ProgramElement rightChild = assignment.getChildAt(1); - if (!(rightChild instanceof LocationVariable)) { - return null; - } - return (LocationVariable) rightChild; - } - - /** - * {@inheritDoc} - */ - @Override - public Contract getContract() { - return ((AbstractContractRuleApp) getProofNode().getAppliedRuleApp()).getInstantiation(); - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramMethod getContractProgramMethod() { - Contract contract = getContract(); - if (contract instanceof OperationContract) { - return ((OperationContract) contract).getTarget(); - } else { - return null; - } - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Operation Contract"; - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isPreconditionComplied() { - boolean complied = false; - if (getProofNode().childrenCount() >= 3) { - complied = getProofNode().child(2).isClosed(); - } - return complied; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean hasNotNullCheck() { - return getProofNode().childrenCount() >= 4; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isNotNullCheckComplied() { - if (hasNotNullCheck()) { - return getProofNode().child(3).isClosed(); - } else { - return false; - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionStart.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionStart.java deleted file mode 100644 index 66833249987..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionStart.java +++ /dev/null @@ -1,114 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionStart; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionTermination; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableList; - -/** - * The default implementation of {@link IExecutionStart}. - * - * @author Martin Hentschel - */ -public class ExecutionStart extends AbstractExecutionNode - implements IExecutionStart { - /** - * The up to know discovered {@link IExecutionTermination}s. - */ - private ImmutableList terminations = ImmutableList.nil(); - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - public ExecutionStart(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() { - return DEFAULT_START_NODE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Start"; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getTerminations() { - return terminations; - } - - /** - * Registers the given {@link IExecutionTermination}. - * - * @param termination The {@link IExecutionTermination} to register. - */ - public void addTermination(IExecutionTermination termination) { - if (termination != null) { - terminations = terminations.append(termination); - } - } - - /** - * {@inheritDoc} - */ - @Override - protected PosInOccurrence lazyComputeModalityPIO() { - return SymbolicExecutionUtil - .findModalityWithMaxSymbolicExecutionLabelId(getProofNode().sequent()); - } - - /** - * {@inheritDoc} - */ - @Override - public SourceElement getActiveStatement() { - JTerm modalityTerm = (JTerm) getModalityPIO().subTerm(); - SourceElement firstStatement = modalityTerm.javaBlock().program().getFirstElement(); - return NodeInfo.computeActiveStatement(firstStatement); - } - - /** - * Removes the given termination. - * - * @param termination The termination to be deleted. - * @author Anna Filighera - */ - public void removeTermination(IExecutionTermination termination) { - terminations = terminations.removeAll(termination); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionStatement.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionStatement.java deleted file mode 100644 index f1f493477f1..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionStatement.java +++ /dev/null @@ -1,55 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionStatement; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -/** - * The default implementation of {@link IExecutionStatement}. - * - * @author Martin Hentschel - */ -public class ExecutionStatement extends AbstractExecutionNode - implements IExecutionStatement { - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - */ - public ExecutionStatement(ITreeSettings settings, Node proofNode) { - super(settings, proofNode); - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() { - return getActiveStatement().toString(); - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return "Statement"; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionTermination.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionTermination.java deleted file mode 100644 index 6caf3400f5e..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionTermination.java +++ /dev/null @@ -1,168 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.logic.sort.NullSort; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionTermination; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.sort.Sort; - -/** - * The default implementation of {@link IExecutionTermination}. - * - * @author Martin Hentschel - */ -public class ExecutionTermination extends AbstractExecutionNode - implements IExecutionTermination { - /** - * Contains the exception variable which is used to check if the executed program in proof - * terminates normally. - */ - private final IProgramVariable exceptionVariable; - - /** - * The {@link Sort} of the uncaught exception. - */ - private Sort exceptionSort; - - /** - * The {@link TerminationKind}. - */ - private TerminationKind terminationKind; - - /** - * Constructor. - * - * @param settings The {@link ITreeSettings} to use. - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param exceptionVariable Contains the exception variable which is used to check if the - * executed program in proof terminates normally. - * @param terminationKind The {@link TerminationKind} or {@code null} to compute it when it is - * requested the first time (normal or exceptional termination only). - */ - public ExecutionTermination(ITreeSettings settings, Node proofNode, - IProgramVariable exceptionVariable, TerminationKind terminationKind) { - super(settings, proofNode); - this.exceptionVariable = exceptionVariable; - this.terminationKind = terminationKind; - } - - /** - * {@inheritDoc} - */ - @Override - protected String lazyComputeName() { - return switch (getTerminationKind()) { - case EXCEPTIONAL -> INTERNAL_NODE_NAME_START + "uncaught " + exceptionSort - + INTERNAL_NODE_NAME_END; - case LOOP_BODY -> LOOP_BODY_TERMINATION_NODE_NAME; - case BLOCK_CONTRACT_NORMAL -> INTERNAL_NODE_NAME_START + "block contract end" - + INTERNAL_NODE_NAME_END; - case BLOCK_CONTRACT_EXCEPTIONAL -> INTERNAL_NODE_NAME_START + "block contract uncaught " - + exceptionSort - + INTERNAL_NODE_NAME_END; - default -> NORMAL_TERMINATION_NODE_NAME; - }; - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramVariable getExceptionVariable() { - return exceptionVariable; - } - - /** - * {@inheritDoc} - */ - @Override - public TerminationKind getTerminationKind() { - if (terminationKind == null) { - if (isBlockContractTermination()) { - terminationKind = - isExceptionalTermination() ? TerminationKind.BLOCK_CONTRACT_EXCEPTIONAL - : TerminationKind.BLOCK_CONTRACT_NORMAL; - } else { - terminationKind = isExceptionalTermination() ? TerminationKind.EXCEPTIONAL - : TerminationKind.NORMAL; - } - } - return terminationKind; - } - - /** - * Checks if a block contract terminates. - * - * @return {@code true} A block contract terminates, {@code false} normal execution terminates. - */ - protected boolean isBlockContractTermination() { - return SymbolicExecutionUtil.isBlockContractValidityBranch(getModalityPIO()); - } - - /** - * Checks if is an exceptional termination. - * - * @return {@code true} exceptional termination, {@code false} normal termination. - */ - protected boolean isExceptionalTermination() { - Sort sort = getExceptionSort(); - return sort != null && !(sort instanceof NullSort); - } - - /** - * {@inheritDoc} - */ - @Override - public Sort getExceptionSort() { - if (exceptionSort == null) { - exceptionSort = - SymbolicExecutionUtil.lazyComputeExceptionSort(getProofNode(), exceptionVariable); - } - return exceptionSort; - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] lazyComputeConstraints() { - return SymbolicExecutionUtil.createExecutionConstraints(this); - } - - /** - * {@inheritDoc} - */ - @Override - public String getElementType() { - return switch (getTerminationKind()) { - case EXCEPTIONAL -> "Exceptional Termination"; - case LOOP_BODY -> "Loop Body Termination"; - case BLOCK_CONTRACT_NORMAL -> "Block Contract Termination"; - case BLOCK_CONTRACT_EXCEPTIONAL -> "Block Contract Exceptional Termination"; - default -> "Termination"; - }; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isBranchVerified() { - if (TerminationKind.BLOCK_CONTRACT_NORMAL.equals(terminationKind) - || TerminationKind.BLOCK_CONTRACT_EXCEPTIONAL.equals(terminationKind)) { - return SymbolicExecutionUtil.lazyComputeIsAdditionalBranchVerified(getProofNode()); - } else { - return SymbolicExecutionUtil.lazyComputeIsMainBranchVerified(getProofNode()); - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionValue.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionValue.java deleted file mode 100644 index 987e724df11..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionValue.java +++ /dev/null @@ -1,252 +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.symbolic_execution.model.impl; - -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.abstraction.ClassType; -import de.uka.ilkd.key.java.ast.abstraction.Field; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.abstraction.Type; -import de.uka.ilkd.key.java.ast.declaration.ArrayDeclaration; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.logic.op.ProgramVariable; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionValue; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.sort.Sort; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.ArrayUtil; - -/** - * The default implementation of {@link IExecutionValue}. - * - * @author Martin Hentschel - */ -public class ExecutionValue extends AbstractExecutionValue { - /** - * Is the value unknown? - */ - private final boolean valueUnknown; - - /** - * The value as human-readable {@link String}. - */ - private final String valueString; - - /** - * The type of the value. - */ - private final String typeString; - - /** - * The condition under which the variable has this value as human-readable {@link String}. - */ - private final String conditionString; - - /** - * The child {@link IExecutionVariable}s. - */ - private IExecutionVariable[] childVariables; - - /** - * Constructor. - * - * @param proofNode The {@link Node} of KeY's proof tree which is represented by this - * {@link IExecutionNode}. - * @param variable The parent {@link ExecutionVariable} which contains this value. - * @param valueUnknown Is the value unknown? - * @param value The value. - * @param valueString The value as human-readable string. - * @param typeString The type of the value. - * @param condition The condition under which the variable has this value - * @param conditionString the condition under which the variable has this value as - * human-readable {@link String} - */ - public ExecutionValue(Node proofNode, ExecutionVariable variable, boolean valueUnknown, - JTerm value, String valueString, String typeString, JTerm condition, - String conditionString) { - super(variable.getSettings(), proofNode, variable, condition, value); - this.valueUnknown = valueUnknown; - this.valueString = valueString; - this.typeString = typeString; - this.conditionString = conditionString; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isValueUnknown() throws ProofInputException { - return valueUnknown; - } - - /** - * {@inheritDoc} - */ - @Override - public String getValueString() throws ProofInputException { - return valueString; - } - - /** - * {@inheritDoc} - */ - @Override - public String getTypeString() throws ProofInputException { - return typeString; - } - - /** - * {@inheritDoc} - */ - @Override - public IExecutionVariable[] getChildVariables() throws ProofInputException { - synchronized (this) { - if (childVariables == null) { - childVariables = lazyComputeChildVariables(); - } - return childVariables; - } - } - - /** - * Computes the contained child variables lazily when {@link #getChildVariables()} is called the - * first time. - * - * @return The contained child {@link IExecutionVariable}s. - * @throws ProofInputException Occurred Exception. - */ - protected IExecutionVariable[] lazyComputeChildVariables() throws ProofInputException { - List children = new LinkedList<>(); - if (!isDisposed()) { - final Services services = getServices(); - JTerm value = getValue(); - if (value != null && !isValueUnknown()) { // Don't show children of unknown values - Sort valueSort = value.sort(); - if (valueSort != services.getJavaInfo().getNullType().getSort()) { - KeYJavaType keyType = services.getJavaInfo().getKeYJavaType(valueSort); - if (keyType != null) { // Can be null, e.g. if Sort is the Sort of Heap - Type javaType = keyType.getJavaType(); - if (javaType instanceof ArrayDeclaration ad) { - // Array value - Set pvs = - SymbolicExecutionUtil.getProgramVariables(ad.length()); - if (pvs.size() == 1) { - ExecutionVariable lengthVariable = new ExecutionVariable( - getVariable().getParentNode(), getVariable().getProofNode(), - getVariable().getModalityPIO(), this, pvs.iterator().next(), - getVariable().getAdditionalCondition()); - children.add(lengthVariable); - ExecutionValue[] lengthValues = lengthVariable.getValues(); - if (!ArrayUtil.isEmpty(lengthValues)) { - for (ExecutionValue lengthValue : lengthValues) { - try { - int length = getSettings().usePrettyPrinting() - ? Integer.valueOf(lengthValue.getValueString()) - : Integer.valueOf(SymbolicExecutionUtil - .formatTerm(lengthValue.getValue(), - services, false, true)); - for (int i = 0; i < length; i++) { - JTerm indexTerm = - services.getTermBuilder().zTerm(i); - ExecutionVariable childI = new ExecutionVariable( - getVariable().getParentNode(), - getVariable().getProofNode(), - getVariable().getModalityPIO(), this, indexTerm, - lengthValue, - getVariable().getAdditionalCondition()); - children.add(childI); - } - } catch (NumberFormatException e) { - ExecutionAllArrayIndicesVariable arrayStarVariable = - new ExecutionAllArrayIndicesVariable( - getVariable().getParentNode(), - getVariable().getProofNode(), - getVariable().getModalityPIO(), this, - (IProgramVariable) value.op(), - getVariable().getAdditionalCondition()); - children.add(arrayStarVariable); - } - } - } else { - // Should never happen, just backup - ExecutionAllArrayIndicesVariable arrayStarVariable = - new ExecutionAllArrayIndicesVariable( - getVariable().getParentNode(), - getVariable().getProofNode(), - getVariable().getModalityPIO(), this, - (IProgramVariable) value.op(), - getVariable().getAdditionalCondition()); - children.add(arrayStarVariable); - } - } else { - // Should never happen, just backup - ExecutionAllArrayIndicesVariable arrayStarVariable = - new ExecutionAllArrayIndicesVariable( - getVariable().getParentNode(), getVariable().getProofNode(), - getVariable().getModalityPIO(), this, - (IProgramVariable) value.op(), - getVariable().getAdditionalCondition()); - children.add(arrayStarVariable); - } - } else if (javaType instanceof ClassType) { - // Normal value - ImmutableList fields = - ((ClassType) javaType).getAllFields(services); - for (Field field : fields) { - ImmutableList vars = services.getJavaInfo() - .getAllAttributes(field.getFullName(), keyType); - for (ProgramVariable var : vars) { - if (!var.isImplicit() && !var.isStatic()) { - children.add( - new ExecutionVariable(getVariable().getParentNode(), - getVariable().getProofNode(), - getVariable().getModalityPIO(), this, - field.getProgramVariable(), - getVariable().getAdditionalCondition())); - } - } - } - } - } - } - } - } - return children.toArray(new IExecutionVariable[0]); - } - - /** - * {@inheritDoc} - */ - @Override - public String getConditionString() throws ProofInputException { - return conditionString; - } - - /** - * {@inheritDoc} - */ - @Override - public ExecutionVariable getVariable() { - return (ExecutionVariable) super.getVariable(); - } - - /** - * {@inheritDoc} - */ - @Override - protected IExecutionConstraint[] getNodeConstraints() { - return getVariable().getParentNode().getConstraints(); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionVariable.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionVariable.java deleted file mode 100644 index 67b3744fe19..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionVariable.java +++ /dev/null @@ -1,361 +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.symbolic_execution.model.impl; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.TermBuilder; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionValue; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil.SiteProofVariableValueInput; - -import org.key_project.logic.op.Operator; -import org.key_project.prover.engine.impl.ApplyStrategyInfo; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableList; - -import org.jspecify.annotations.NonNull; - -/** - * The default implementation of {@link IExecutionVariable}. - * - * @author Martin Hentschel - */ -public class ExecutionVariable extends AbstractExecutionVariable { - /** - * The parent {@link IExecutionNode} which provides this {@link ExecutionVariable}. - */ - private final IExecutionNode parentNode; - - /** - * The {@link ExecutionValue} from which the array length was computed. - */ - private final ExecutionValue lengthValue; - - /** - * The possible values of this {@link IExecutionValue}. - */ - private ExecutionValue[] values; - - /** - * Constructor for a "normal" value. - * - * @param parentNode The parent {@link IExecutionNode} which provides this - * {@link ExecutionVariable}. - * @param programVariable The represented {@link IProgramVariable} which value is shown. - * @param additionalCondition An optional additional condition to consider. - */ - public ExecutionVariable(IExecutionNode parentNode, Node proofNode, - PosInOccurrence modalityPIO, - IProgramVariable programVariable, - JTerm additionalCondition) { - this(parentNode, proofNode, modalityPIO, null, programVariable, additionalCondition); - } - - /** - * Constructor for a "normal" child value. - * - * @param parentNode The parent {@link IExecutionNode} which provides this - * {@link ExecutionVariable}. - * @param parentValue The parent {@link ExecutionValue} or {@code null} if not available. - * @param programVariable The represented {@link IProgramVariable} which value is shown. - * @param additionalCondition An optional additional condition to consider. - */ - public ExecutionVariable(IExecutionNode parentNode, Node proofNode, - PosInOccurrence modalityPIO, ExecutionValue parentValue, - IProgramVariable programVariable, JTerm additionalCondition) { - super(parentNode.getSettings(), proofNode, programVariable, parentValue, null, - additionalCondition, modalityPIO); - assert programVariable != null; - assert modalityPIO != null; - this.parentNode = parentNode; - this.lengthValue = null; - } - - /** - * Constructor for an array cell value. - * - * @param parentNode The parent {@link IExecutionNode} which provides this - * {@link ExecutionVariable}. - * @param parentValue The parent {@link ExecutionValue} or {@code null} if not available. - * @param arrayIndex The index in the parent array. - * @param lengthValue The {@link ExecutionValue} from which the array length was computed. - * @param additionalCondition An optional additional condition to consider. - */ - public ExecutionVariable(IExecutionNode parentNode, Node proofNode, - PosInOccurrence modalityPIO, ExecutionValue parentValue, JTerm arrayIndex, - ExecutionValue lengthValue, JTerm additionalCondition) { - super(parentNode.getSettings(), proofNode, null, parentValue, arrayIndex, - additionalCondition, modalityPIO); - assert modalityPIO != null; - this.parentNode = parentNode; - this.lengthValue = lengthValue; - } - - /** - * {@inheritDoc} - */ - @Override - public ExecutionValue[] getValues() throws ProofInputException { - synchronized (this) { - if (values == null) { - values = lazyComputeValues(); - } - return values; - } - } - - /** - * Computes the value for {@link #getValues()} lazily when the method is called the first time. - * - * @throws ProofInputException Occurred Exception. - */ - protected ExecutionValue[] lazyComputeValues() throws ProofInputException { - InitConfig initConfig = getInitConfig(); - if (initConfig != null) { // Otherwise proof is disposed. - // New OneStepSimplifier is required because it has an internal state and the default - // instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(initConfig, true); - final Services services = sideProofEnv.getServicesForEnvironment(); - final TermBuilder tb = services.getTermBuilder(); - // Start site proof to extract the value of the result variable. - SiteProofVariableValueInput sequentToProve; - JTerm siteProofSelectTerm = null; - JTerm siteProofCondition; - if (getAdditionalCondition() != null) { - siteProofCondition = getAdditionalCondition(); - } else { - siteProofCondition = tb.tt(); - } - if (getParentValue() != null - || SymbolicExecutionUtil.isStaticVariable(getProgramVariable())) { - siteProofSelectTerm = createSelectTerm(); - if (getParentValue() != null) { // Is null at static variables - siteProofCondition = - tb.and(siteProofCondition, getParentValue().getCondition()); - } - if (lengthValue != null) { - siteProofCondition = tb.and(siteProofCondition, lengthValue.getCondition()); - } - sequentToProve = - SymbolicExecutionUtil.createExtractTermSequent(services, getProofNode(), - getModalityPIO(), siteProofCondition, siteProofSelectTerm, true); - } else { - sequentToProve = SymbolicExecutionUtil.createExtractVariableValueSequent(services, - getProofNode(), getModalityPIO(), siteProofCondition, getProgramVariable()); - } - ApplyStrategyInfo<@NonNull Proof, Goal> info = - SymbolicExecutionSideProofUtil.startSideProof(getProof(), - sideProofEnv, sequentToProve.getSequentToProve(), - StrategyProperties.METHOD_NONE, - StrategyProperties.LOOP_NONE, StrategyProperties.QUERY_OFF, - StrategyProperties.SPLITTING_DELAYED); - try { - return instantiateValuesFromSideProof(initConfig, services, tb, info, - sequentToProve.getOperator(), siteProofSelectTerm, siteProofCondition); - } finally { - SymbolicExecutionSideProofUtil.disposeOrStore( - "Value computation on node " + getProofNode().serialNr(), info); - } - } else { - return null; - } - } - - /** - * Analyzes the side proof defined by the {@link ApplyStrategyInfo} and creates - * {@link ExecutionValue}s from it. - * - * @param initConfig The {@link InitConfig} of the side proof. - * @param services The {@link Services} of the side proof. - * @param tb The {@link TermBuilder} of the side proof. - * @param info The side proof. - * @param resultOperator The {@link Operator} of the result predicate. - * @param siteProofSelectTerm The queried value. - * @param siteProofCondition The condition under which the value is queried. - * @return The created {@link ExecutionValue} instances. - * @throws ProofInputException Occurred Exception. - */ - protected ExecutionValue[] instantiateValuesFromSideProof(InitConfig initConfig, - Services services, TermBuilder tb, ApplyStrategyInfo info, - Operator resultOperator, - JTerm siteProofSelectTerm, JTerm siteProofCondition) throws ProofInputException { - List result = - new ArrayList<>(info.getProof().openGoals().size()); - // Group values of the branches - Map> valueMap = new LinkedHashMap<>(); - List unknownValues = new LinkedList<>(); - groupGoalsByValue(info.getProof().openGoals(), resultOperator, siteProofSelectTerm, - siteProofCondition, valueMap, unknownValues, services); - // Instantiate child values - for (Entry> valueEntry : valueMap.entrySet()) { - JTerm value = valueEntry.getKey(); - if (isValidValue(value)) { - // Format return vale - String valueString = formatTerm(value, services); - // Determine type - String typeString = value.sort().toString(); - // Compute value condition - JTerm condition = computeValueCondition(tb, valueEntry.getValue(), initConfig); - String conditionString = null; - if (condition != null) { - conditionString = formatTerm(condition, services); - } - // Update result - result.add(new ExecutionValue(getProofNode(), this, false, value, valueString, - typeString, condition, conditionString)); - } - } - // Instantiate unknown child values - if (!unknownValues.isEmpty()) { - // Compute value condition - JTerm condition = computeValueCondition(tb, unknownValues, initConfig); - String conditionString = null; - if (condition != null) { - conditionString = formatTerm(condition, services); - } - // Update result - result.add(new ExecutionValue(getProofNode(), this, true, - null, null, null, condition, conditionString)); - } - // Return child values as result - return result.toArray(new ExecutionValue[0]); - } - - /** - * Checks if the given {@link JTerm} represents a valid value. - * - * @param value The value to check. - * @return {@code true} valid value, {@code false} invalid value to be ignored. - */ - protected boolean isValidValue(JTerm value) { - return true; - } - - /** - * Groups all {@link Goal}s which provides the same value. - * - * @param goals All available {@link Goal}s to group. - * @param operator The {@link Operator} of the {@link JTerm} which provides the value. - * @param services The {@link Services} to use. - */ - protected void groupGoalsByValue(ImmutableList goals, Operator operator, - JTerm siteProofSelectTerm, JTerm siteProofCondition, Map> valueMap, - List unknownValues, Services services) throws ProofInputException { - for (Goal goal : goals) { - // Extract value - JTerm value = SymbolicExecutionSideProofUtil.extractOperatorValue(goal, operator); - assert value != null; - value = SymbolicExecutionUtil.replaceSkolemConstants(goal.sequent(), value, services); - // Compute unknown flag if required - boolean unknownValue = false; - if (siteProofSelectTerm != null) { - if (SymbolicExecutionUtil.isNullSort(value.sort(), services)) { - unknownValue = SymbolicExecutionUtil.isNull(getProofNode(), siteProofCondition, - siteProofSelectTerm); // Check if the symbolic value is not null, if it - // fails the value is treated as unknown - } else { - unknownValue = SymbolicExecutionUtil.isNotNull(getProofNode(), - siteProofCondition, siteProofSelectTerm); // Check if the symbolic value is - // not null, if it fails the value - // is treated as unknown - } - } - // Add to result list - if (unknownValue) { - unknownValues.add(goal); - } else { - List valueList = valueMap.computeIfAbsent(value, k -> new LinkedList<>()); - valueList.add(goal); - } - } - } - - /** - * Computes the combined path condition of all {@link Goal}s which is the or combination of each - * path condition per {@link Goal}. - * - * @param tb The {@link TermBuilder} to use passed to ensure that it is still available even if - * the {@link Proof} is disposed in between. - * @param valueGoals The {@link Goal}s to compute combined path condition for. - * @param initConfig The {@link InitConfig} to use. - * @return The combined path condition. - * @throws ProofInputException Occurred Exception. - */ - protected JTerm computeValueCondition(TermBuilder tb, List valueGoals, - InitConfig initConfig) throws ProofInputException { - if (!valueGoals.isEmpty()) { - List pathConditions = new LinkedList<>(); - Proof proof = null; - for (Goal valueGoal : valueGoals) { - pathConditions.add(SymbolicExecutionUtil.computePathCondition(valueGoal.node(), - getSettings().simplifyConditions(), false)); - proof = valueGoal.node().proof(); - } - JTerm comboundPathCondition = tb.or(pathConditions); - if (getSettings().simplifyConditions()) { - comboundPathCondition = - SymbolicExecutionUtil.simplify(initConfig, proof, comboundPathCondition); - } - comboundPathCondition = SymbolicExecutionUtil.improveReadability(comboundPathCondition, - initConfig.getServices()); - return comboundPathCondition; - } else { - return tb.tt(); - } - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm createSelectTerm() { - return SymbolicExecutionUtil.createSelectTerm(this); - } - - /** - * {@inheritDoc} - */ - @Override - public ExecutionValue getParentValue() { - return (ExecutionValue) super.getParentValue(); - } - - /** - * Returns the parent {@link IExecutionNode} which provides this {@link ExecutionVariable}. - * - * @return The parent {@link IExecutionNode} which provides this {@link ExecutionVariable}. - */ - public IExecutionNode getParentNode() { - return parentNode; - } - - /** - * Returns the {@link ExecutionValue} from which the array length was computed. - * - * @return The {@link ExecutionValue} from which the array length was computed. - */ - public ExecutionValue getLengthValue() { - return lengthValue; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/TreeSettings.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/TreeSettings.java deleted file mode 100644 index 374a42adfe7..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/TreeSettings.java +++ /dev/null @@ -1,81 +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.symbolic_execution.model.impl; - -import de.uka.ilkd.key.symbolic_execution.model.IExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.model.ITreeSettings; - -/** - * The default implementation of {@link ITreeSettings}. - * - * @param mergeBranchConditions {@code true} merge branch conditions which means that a branch - * condition never contains - * another branch condition or {@code false} allow that branch conditions contains branch - * conditions. - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} - * {@link IExecutionVariable}s are computed according to the type structure of the visible - * memory. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @author Martin Hentschel - */ -public record TreeSettings(boolean mergeBranchConditions, boolean useUnicode, - boolean usePrettyPrinting, boolean variablesAreOnlyComputedFromUpdates, - boolean simplifyConditions) implements ITreeSettings { - /** - * Constructor. - * - * @param mergeBranchConditions {@code true} merge branch conditions which means that a branch - * condition never contains another branch condition or {@code false} allow that branch - * conditions contains branch conditions. - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - */ - public TreeSettings { - } - - /** - * {@inheritDoc} - */ - @Override - public boolean mergeBranchConditions() { return mergeBranchConditions; } - - /** - * {@inheritDoc} - */ - @Override - public boolean useUnicode() { return useUnicode; } - - /** - * {@inheritDoc} - */ - @Override - public boolean usePrettyPrinting() { return usePrettyPrinting; } - - /** - * {@inheritDoc} - */ - @Override - public boolean variablesAreOnlyComputedFromUpdates() { - return variablesAreOnlyComputedFromUpdates; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean simplifyConditions() { return simplifyConditions; } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/IModelSettings.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/IModelSettings.java deleted file mode 100644 index fcd85bcc43b..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/IModelSettings.java +++ /dev/null @@ -1,32 +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.symbolic_execution.object_model; - -/** - * Provides the settings used to construct a symbolic object model. - * - * @author Martin Hentschel - */ -public interface IModelSettings { - /** - * Checks if unicode characters are used. - * - * @return {@code true} use unicode characters, {@code false} do not use unicode characters. - */ - boolean isUseUnicode(); - - /** - * Checks if pretty printing is used or not. - * - * @return {@code true} use pretty printing, {@code false} do not use pretty printing. - */ - boolean isUsePrettyPrinting(); - - /** - * Checks if conditions should be simplified or not. - * - * @return {@code true} simplify conditions, {@code false} do not simplify conditions. - */ - boolean isSimplifyConditions(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicAssociation.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicAssociation.java deleted file mode 100644 index b4c8d9985f3..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicAssociation.java +++ /dev/null @@ -1,99 +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.symbolic_execution.object_model; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.symbolic_execution.object_model.impl.SymbolicAssociation; - -/** - *

- * Represents an association of an {@link ISymbolicState} or {@link ISymbolicObject} which is a - * reference to an {@link ISymbolicObject}. - *

- *

- * The default implementation is {@link SymbolicAssociation}. - *

- * - * @author Martin Hentschel - * @see SymbolicAssociation - */ -public interface ISymbolicAssociation extends ISymbolicElement { - /** - * Returns a human readable name. - * - * @return A human readable name. - */ - String getName(); - - /** - * Checks if an array index or a program variable is represented. - * - * @return {@code true} array index, {@code false} program variable. - */ - boolean isArrayIndex(); - - /** - * Returns the represented array index or {@code null} if a program variable is represented.. - * - * @return The represented array index or {@code null} if a program variable is represented.. - */ - JTerm getArrayIndex(); - - /** - * Returns the human readable array index or {@code null} if a program variable is represented.. - * - * @return The human readable array index or {@code null} if a program variable is represented.. - */ - String getArrayIndexString(); - - /** - * Returns the represented {@link IProgramVariable}. - * - * @return The represented {@link IProgramVariable}. - */ - IProgramVariable getProgramVariable(); - - /** - * Returns the represented {@link IProgramVariable} as human readable {@link String}. - * - * @return The represented {@link IProgramVariable} as human readable {@link String}. - */ - String getProgramVariableString(); - - /** - * Returns the target {@link ISymbolicObject}. - * - * @return The target {@link ISymbolicObject}. - */ - ISymbolicObject getTarget(); - - /** - *

- * Returns the optional condition under which this association is valid. - *

- *

- * The condition should be {@code null} by default. Only in rare cases, e.g. path condition is - * not strong enough to describe the path completely, is a condition is provided. - *

- * - * @return The optional condition under which this association is valid. - */ - JTerm getCondition(); - - /** - *

- * Returns the optional condition under which this association is valid as human readable - * {@link String}. - *

- *

- * The condition should be {@code null} by default. Only in rare cases, e.g. path condition is - * not strong enough to describe the path completely, is a condition is provided. - *

- * - * @return The optional condition under which this association is valid as human readable - * {@link String}. - */ - String getConditionString(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicAssociationValueContainer.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicAssociationValueContainer.java deleted file mode 100644 index 412fbf2db41..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicAssociationValueContainer.java +++ /dev/null @@ -1,69 +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.symbolic_execution.object_model; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.symbolic_execution.object_model.impl.AbstractSymbolicAssociationValueContainer; - -import org.key_project.util.collection.ImmutableList; - -/** - *

- * This interface is not instantiated directly because it defines only the common behavior of - * {@link ISymbolicState} and {@link ISymbolicObject} which is to contain associations (references - * to other {@link ISymbolicObject}s) and values (local variables of simple types). - *

- *

- * The default abstract implementation is {@link AbstractSymbolicAssociationValueContainer}. - *

- * - * @author Martin Hentschel - * @see AbstractSymbolicAssociationValueContainer - * @see ISymbolicObject - * @see ISymbolicState - */ -public interface ISymbolicAssociationValueContainer extends ISymbolicElement { - /** - * Returns the contained associations. - * - * @return The contained associations. - */ - ImmutableList getAssociations(); - - /** - * Returns the {@link ISymbolicAssociation} with the given {@link IProgramVariable}. - * - * @param programVariable The {@link IProgramVariable} for which the - * {@link ISymbolicAssociation} is requested. - * @param isArrayIndex Is array index? - * @param arrayIndex The array index. - * @param condition The optional condition under which this association is valid. - * @return The found {@link ISymbolicAssociation} or {@code null} if no - * {@link ISymbolicAssociation} is available with the given {@link IProgramVariable}. - */ - ISymbolicAssociation getAssociation(IProgramVariable programVariable, - boolean isArrayIndex, JTerm arrayIndex, JTerm condition); - - /** - * Returns the contained values. - * - * @return The contained values. - */ - ImmutableList getValues(); - - /** - * Returns the {@link ISymbolicValue} with the given {@link IProgramVariable}. - * - * @param programVariable The {@link IProgramVariable} for which the {@link ISymbolicValue} is - * requested. - * @param isArrayIndex Is array index? - * @param arrayIndex The array index. - * @param condition The optional condition under which this value is valid. - * @return The found {@link ISymbolicValue} or {@code null} if no {@link ISymbolicValue} is - * available with the given {@link IProgramVariable}. - */ - ISymbolicValue getValue(IProgramVariable programVariable, boolean isArrayIndex, - JTerm arrayIndex, JTerm condition); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicElement.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicElement.java deleted file mode 100644 index d81761b15f3..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicElement.java +++ /dev/null @@ -1,18 +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.symbolic_execution.object_model; - -/** - * Defines the basic methods and properties each element in an symbolic object model has to have. - * - * @author Martin Hentschel - */ -public interface ISymbolicElement { - /** - * Returns the {@link IModelSettings} to use. - * - * @return The {@link IModelSettings} to use. - */ - IModelSettings getSettings(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicEquivalenceClass.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicEquivalenceClass.java deleted file mode 100644 index 838e790e73c..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicEquivalenceClass.java +++ /dev/null @@ -1,56 +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.symbolic_execution.object_model; - -import de.uka.ilkd.key.logic.JTerm; - -import org.key_project.util.collection.ImmutableList; - -/** - * An equivalence class which defines which {@link JTerm}s represent the same - * {@link ISymbolicObject} - * in an {@link ISymbolicLayout}. - * - * @author Martin Hentschel - */ -public interface ISymbolicEquivalenceClass extends ISymbolicElement { - /** - * Returns the terms which represents the same {@link ISymbolicObject}. - * - * @return The terms which represents the same {@link ISymbolicObject}. - */ - ImmutableList getTerms(); - - /** - * Checks if a {@link JTerm} is contained. - * - * @param term The {@link JTerm} to check. - * @return {@code true} {@link JTerm} is contained, {@code false} {@link JTerm} is not - * contained. - */ - boolean containsTerm(JTerm term); - - /** - * Returns the terms which represents the same {@link ISymbolicObject} as human readable - * {@link String}. - * - * @return The terms which represents the same {@link ISymbolicObject} as human readable - * {@link String}. - */ - ImmutableList getTermStrings(); - - /** - * Returns the most representative term. - * - * @return The most representative term. - */ - JTerm getRepresentative(); - - /** - * Returns the most representative term as human readable {@link String}. - * - * @return The most representative term as human readable {@link String}. - */ - String getRepresentativeString(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicLayout.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicLayout.java deleted file mode 100644 index 215ec54385e..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicLayout.java +++ /dev/null @@ -1,54 +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.symbolic_execution.object_model; - -import de.uka.ilkd.key.symbolic_execution.SymbolicLayoutExtractor; -import de.uka.ilkd.key.symbolic_execution.SymbolicLayoutReader; -import de.uka.ilkd.key.symbolic_execution.SymbolicLayoutWriter; -import de.uka.ilkd.key.symbolic_execution.object_model.impl.SymbolicLayout; - -import org.key_project.util.collection.ImmutableList; - -/** - *

- * This interface represents the root element of a symbolic memory layout. - *

- *

- * A symbolic memory layout defines how a heap and stack looks like and which objects are the same - * (equivalent classes). Such memory layouts can be created automatically via a - * {@link SymbolicLayoutExtractor} and saved/loaded via - * {@link SymbolicLayoutWriter}/{@link SymbolicLayoutReader}. - *

- *

- * The default implementation is {@link SymbolicLayout}. - *

- * - * @author Martin Hentschel - * @see SymbolicLayoutExtractor - * @see SymbolicLayoutWriter - * @see SymbolicLayoutReader - * @see SymbolicLayout - */ -public interface ISymbolicLayout extends ISymbolicElement { - /** - * Returns the equivalence classes. - * - * @return The equivalence classes. - */ - ImmutableList getEquivalenceClasses(); - - /** - * Returns the symbolic state. - * - * @return the symbolic state. - */ - ISymbolicState getState(); - - /** - * Returns all available symbolic objects. - * - * @return The available symbolic objects. - */ - ImmutableList getObjects(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicObject.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicObject.java deleted file mode 100644 index d47c72c4d12..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicObject.java +++ /dev/null @@ -1,50 +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.symbolic_execution.object_model; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.symbolic_execution.object_model.impl.SymbolicObject; - -import org.key_project.logic.sort.Sort; - -/** - *

- * Represents a symbolic object in an {@link ISymbolicLayout}. - *

- *

- * The default implementation is {@link SymbolicObject}. - *

- * - * @author Martin Hentschel - * @see SymbolicObject - */ -public interface ISymbolicObject extends ISymbolicAssociationValueContainer { - /** - * Returns the name of this object. - * - * @return The name of this object. - */ - JTerm getName(); - - /** - * Returns the name of this object as human readable {@link String}. - * - * @return The name of this object as human readable {@link String}. - */ - String getNameString(); - - /** - * Returns the type of this object. - * - * @return The type of this object. - */ - Sort getType(); - - /** - * Returns the type of this object as human readable string. - * - * @return The type of this object as human readable string. - */ - String getTypeString(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicState.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicState.java deleted file mode 100644 index 3ba45b8edc7..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicState.java +++ /dev/null @@ -1,26 +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.symbolic_execution.object_model; - -import de.uka.ilkd.key.symbolic_execution.object_model.impl.SymbolicState; - -/** - *

- * Represents the symbolic state of an {@link ISymbolicLayout}. - *

- *

- * The default implementation is {@link SymbolicState}. - *

- * - * @author Martin Hentschel - * @see SymbolicState - */ -public interface ISymbolicState extends ISymbolicAssociationValueContainer { - /** - * Returns the name of this state. - * - * @return The name of this state. - */ - String getName(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicValue.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicValue.java deleted file mode 100644 index 988e70f8379..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/ISymbolicValue.java +++ /dev/null @@ -1,126 +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.symbolic_execution.object_model; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.symbolic_execution.object_model.impl.SymbolicValue; - -import org.key_project.logic.sort.Sort; - -/** - *

- * Represents a variable of an {@link ISymbolicState} or {@link ISymbolicObject} which contains a - * value of a primitive type. - *

- *

- * The default implementation is {@link SymbolicValue}. - *

- * - * @author Martin Hentschel - * @see SymbolicValue - */ -public interface ISymbolicValue extends ISymbolicElement { - /** - * Returns a human readable name. - * - * @return A human readable name. - */ - String getName(); - - /** - * Checks if an array index or a program variable is represented. - * - * @return {@code true} array index, {@code false} program variable. - */ - boolean isArrayIndex(); - - /** - * Returns the represented array index or {@code null} if a program variable is represented.. - * - * @return The represented array index or {@code null} if a program variable is represented.. - */ - JTerm getArrayIndex(); - - /** - * Returns the human readable array index or {@code null} if a program variable is represented.. - * - * @return The human readable array index or {@code null} if a program variable is represented.. - */ - String getArrayIndexString(); - - /** - * Returns the represented {@link IProgramVariable} or {@code null} if an array index is - * represented. - * - * @return The represented {@link IProgramVariable} or {@code null} if an array index is - * represented. - */ - IProgramVariable getProgramVariable(); - - /** - * Returns the represented {@link IProgramVariable} as human readable {@link String} or - * {@code null} if an array index is represented. - * - * @return The represented {@link IProgramVariable} as human readable {@link String} or - * {@code null} if an array index is represented. - */ - String getProgramVariableString(); - - /** - * Returns the value of the represented variable. - * - * @return The value of the represented variable. - */ - JTerm getValue(); - - /** - * Returns the value of the represented variable as human readable {@link String}. - * - * @return The value of the represented variable as human readable {@link String}. - */ - String getValueString(); - - /** - * Returns the type of the value. - * - * @return The type of the value. - */ - Sort getType(); - - /** - * Returns the type of the value as human readable string. - * - * @return The type of the value as human readable string. - */ - String getTypeString(); - - /** - *

- * Returns the optional condition under which this value is valid. - *

- *

- * The condition should be {@code null} by default. Only in rare cases, e.g. path condition is - * not strong enough to describe the path completely, is a condition is provided. - *

- * - * @return The optional condition under which this value is valid. - */ - JTerm getCondition(); - - /** - *

- * Returns the optional condition under which this value is valid as human readable - * {@link String}. - *

- *

- * The condition should be {@code null} by default. Only in rare cases, e.g. path condition is - * not strong enough to describe the path completely, is a condition is provided. - *

- * - * @return The optional condition under which this value is valid as human readable - * {@link String}. - */ - String getConditionString(); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/AbstractElement.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/AbstractElement.java deleted file mode 100644 index 9c37c7b7e9f..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/AbstractElement.java +++ /dev/null @@ -1,52 +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.symbolic_execution.object_model.impl; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.symbolic_execution.object_model.IModelSettings; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicElement; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -/** - * Default implementation of {@link ISymbolicElement}. - * - * @author Martin Hentschel - */ -public abstract class AbstractElement implements ISymbolicElement { - /** - * The {@link IModelSettings} to use. - */ - private final IModelSettings settings; - - /** - * Constructor. - * - * @param settings The {@link IModelSettings} to use. - */ - protected AbstractElement(IModelSettings settings) { - this.settings = settings; - } - - /** - * {@inheritDoc} - */ - @Override - public IModelSettings getSettings() { - return settings; - } - - /** - * Converts the given {@link JTerm} into a {@link String} respecting - * {@link IModelSettings#isUsePrettyPrinting()}. - * - * @param term The {@link JTerm} to convert. - * @param services The {@link Services} to use. - * @return The {@link String} representation of the given {@link JTerm}. - */ - protected String formatTerm(JTerm term, Services services) { - return SymbolicExecutionUtil.formatTerm(term, services, settings.isUseUnicode(), - settings.isUsePrettyPrinting()); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/AbstractSymbolicAssociationValueContainer.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/AbstractSymbolicAssociationValueContainer.java deleted file mode 100644 index d400e974a46..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/AbstractSymbolicAssociationValueContainer.java +++ /dev/null @@ -1,103 +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.symbolic_execution.object_model.impl; - -import java.util.Objects; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.symbolic_execution.object_model.IModelSettings; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicAssociation; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicAssociationValueContainer; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicValue; - -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.CollectionUtil; - -/** - * Default implementation of {@link ISymbolicAssociationValueContainer}. - * - * @author Martin Hentschel - */ -public abstract class AbstractSymbolicAssociationValueContainer extends AbstractElement - implements ISymbolicAssociationValueContainer { - /** - * The contained {@link ISymbolicAssociation}s. - */ - private ImmutableList associations = ImmutableList.nil(); - - /** - * The contained {@link ISymbolicValue}s. - */ - private ImmutableList values = ImmutableList.nil(); - - /** - * Constructor. - * - * @param settings The {@link IModelSettings} to use. - */ - protected AbstractSymbolicAssociationValueContainer(IModelSettings settings) { - super(settings); - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getAssociations() { - return associations; - } - - /** - * Adds a new {@link ISymbolicAssociation}. - * - * @param association The new {@link ISymbolicAssociation} to add. - */ - public void addAssociation(ISymbolicAssociation association) { - associations = associations.append(association); - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicAssociation getAssociation(final IProgramVariable programVariable, - final boolean isArrayIndex, final JTerm arrayIndex, final JTerm condition) { - return CollectionUtil.search(associations, - element -> element.getProgramVariable() == programVariable - && element.isArrayIndex() == isArrayIndex - && Objects.equals(element.getArrayIndex(), arrayIndex) - && Objects.equals(element.getCondition(), condition)); - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getValues() { - return values; - } - - /** - * Adds a new {@link ISymbolicValue}. - * - * @param value The new {@link ISymbolicValue} to add. - */ - public void addValue(ISymbolicValue value) { - values = values.append(value); - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicValue getValue(final IProgramVariable programVariable, - final boolean isArrayIndex, final JTerm arrayIndex, final JTerm condition) { - return CollectionUtil.search(values, - element -> element.getProgramVariable() == programVariable - && element.isArrayIndex() == isArrayIndex - && Objects.equals(element.getArrayIndex(), arrayIndex) - && Objects.equals(element.getCondition(), condition)); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/ModelSettings.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/ModelSettings.java deleted file mode 100644 index aa4e65891f9..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/ModelSettings.java +++ /dev/null @@ -1,69 +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.symbolic_execution.object_model.impl; - -import de.uka.ilkd.key.symbolic_execution.object_model.IModelSettings; - -/** - * Default implementation of {@link IModelSettings}. - * - * @author Martin Hentschel - */ -public class ModelSettings implements IModelSettings { - /** - * {@code true} use unicode characters, {@code false} do not use unicode characters. - */ - private final boolean useUnicode; - - /** - * {@code true} use pretty printing, {@code false} do not use pretty printing. - */ - private final boolean usePrettyPrinting; - - /** - * {@code true} simplify conditions, {@code false} do not simplify conditions. - */ - private final boolean simplifyConditions; - - /** - * Constructor. - * - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - */ - public ModelSettings(boolean useUnicode, boolean usePrettyPrinting, - boolean simplifyConditions) { - this.useUnicode = useUnicode; - this.usePrettyPrinting = usePrettyPrinting; - this.simplifyConditions = simplifyConditions; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isUseUnicode() { - return useUnicode; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isUsePrettyPrinting() { - return usePrettyPrinting; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isSimplifyConditions() { - return simplifyConditions; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicAssociation.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicAssociation.java deleted file mode 100644 index d3c10cf60f0..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicAssociation.java +++ /dev/null @@ -1,282 +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.symbolic_execution.object_model.impl; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.logic.op.Junctor; -import de.uka.ilkd.key.symbolic_execution.object_model.IModelSettings; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicAssociation; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicObject; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -/** - * Default implementation of {@link ISymbolicAssociation}. - * - * @author Martin Hentschel - */ -public class SymbolicAssociation extends AbstractElement implements ISymbolicAssociation { - /** - * The {@link Services} to use. - */ - private final Services services; - - /** - * The array index. - */ - private final JTerm arrayIndex; - - /** - * The array start index or {@code null} if not used. - */ - private final JTerm arrayStartIndex; - - /** - * The array end index or {@code null} if not used. - */ - private final JTerm arrayEndIndex; - - /** - * The {@link IProgramVariable}. - */ - private final IProgramVariable programVariable; - - /** - * The target {@link ISymbolicObject}. - */ - private final ISymbolicObject target; - - /** - * The optional condition under which this association is valid. - */ - private final JTerm condition; - - /** - * Constructor. - * - * @param services The {@link Services} to use. - * @param arrayIndex The array index. - * @param target The target {@link ISymbolicObject}. - * @param condition The optional condition under which this association is valid. - * @param settings The {@link IModelSettings} to use. - */ - public SymbolicAssociation(Services services, JTerm arrayIndex, ISymbolicObject target, - JTerm condition, IModelSettings settings) { - super(settings); - assert services != null; - assert target != null; - this.services = services; - this.programVariable = null; - this.arrayIndex = arrayIndex; - this.target = target; - this.condition = condition; - this.arrayStartIndex = null; - this.arrayEndIndex = null; - } - - /** - * Constructor. - * - * @param services The {@link Services} to use. - * @param arrayIndex The array index. - * @param arrayStartIndex The array start index or {@code null} if not used. - * @param arrayEndIndex The array end index or {@code null} if not used. - * @param target The target {@link ISymbolicObject}. - * @param condition The optional condition under which this association is valid. - * @param settings The {@link IModelSettings} to use. - */ - public SymbolicAssociation(Services services, JTerm arrayIndex, JTerm arrayStartIndex, - JTerm arrayEndIndex, ISymbolicObject target, JTerm condition, IModelSettings settings) { - super(settings); - assert services != null; - assert target != null; - this.services = services; - this.programVariable = null; - this.arrayIndex = arrayIndex; - this.target = target; - this.condition = condition; - this.arrayStartIndex = arrayStartIndex; - this.arrayEndIndex = arrayEndIndex; - } - - /** - * Constructor. - * - * @param services The {@link Services} to use. - * @param programVariable The {@link IProgramVariable}. - * @param target The target {@link ISymbolicObject}. - * @param condition The optional condition under which this association is valid. - * @param settings The {@link IModelSettings} to use. - */ - public SymbolicAssociation(Services services, IProgramVariable programVariable, - ISymbolicObject target, JTerm condition, IModelSettings settings) { - super(settings); - assert services != null; - assert programVariable != null; - assert target != null; - this.services = services; - this.programVariable = programVariable; - this.target = target; - this.arrayIndex = null; - this.condition = condition; - this.arrayStartIndex = null; - this.arrayEndIndex = null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getName() { - StringBuilder sb = new StringBuilder(); - if (isArrayRange()) { - sb.append("["); - if (getArrayStartIndex() != null) { - sb.append(getArrayIndexString()); - sb.append(" >= "); - sb.append(getArrayStartIndexString()); - } - if (getArrayStartIndex() != null && getArrayEndIndex() != null) { - sb.append(" and "); - } - if (getArrayEndIndex() != null) { - sb.append(getArrayIndexString()); - sb.append(" <= "); - sb.append(getArrayEndIndexString()); - } - sb.append("]"); - } else if (isArrayIndex()) { - sb.append("["); - sb.append(getArrayIndexString()); - sb.append("]"); - } else { - sb.append(getProgramVariableString()); - } - if (condition != null && condition.op() != Junctor.TRUE) { - sb.append(" {"); - sb.append(getConditionString()); - sb.append("}"); - } - return sb.toString(); - } - - /** - * Checks if an array index is represented. - * - * @return {@code true} is array index, {@code false} is something else. - */ - public boolean isArrayIndex() { - return arrayIndex != null && (arrayStartIndex == null || arrayEndIndex == null); - } - - /** - * Checks if an array range is represented. - * - * @return {@code true} is array range, {@code false} is something else. - */ - public boolean isArrayRange() { - return arrayStartIndex != null && arrayEndIndex != null; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getArrayIndex() { - return arrayIndex; - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramVariable getProgramVariable() { - return programVariable; - } - - /** - * {@inheritDoc} - */ - @Override - public String getProgramVariableString() { - return SymbolicExecutionUtil.getDisplayString(programVariable); - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicObject getTarget() { - return target; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return "Association " + getName() + " to " + getTarget(); - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getCondition() { - return condition; - } - - /** - * {@inheritDoc} - */ - @Override - public String getConditionString() { - return condition != null ? formatTerm(condition, services) : null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getArrayIndexString() { - return arrayIndex != null ? formatTerm(arrayIndex, services) : null; - } - - /** - * Returns the array start index. - * - * @return The array start index. - */ - public JTerm getArrayStartIndex() { - return arrayStartIndex; - } - - /** - * Returns the human readable array start index. - * - * @return The human readable array start index. - */ - public String getArrayStartIndexString() { - return arrayStartIndex != null ? formatTerm(arrayStartIndex, services) : null; - } - - /** - * Returns the array end index. - * - * @return The array end index. - */ - public JTerm getArrayEndIndex() { - return arrayEndIndex; - } - - /** - * Returns the human readable array end index. - * - * @return The human readable array end index. - */ - public String getArrayEndIndexString() { - return arrayEndIndex != null ? formatTerm(arrayEndIndex, services) : null; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicEquivalenceClass.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicEquivalenceClass.java deleted file mode 100644 index fa8ac71369e..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicEquivalenceClass.java +++ /dev/null @@ -1,134 +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.symbolic_execution.object_model.impl; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.ldt.HeapLDT; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.OriginTermLabel; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.symbolic_execution.object_model.IModelSettings; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicEquivalenceClass; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicObject; - -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.CollectionUtil; - -/** - * Default implementation of {@link ISymbolicEquivalenceClass}. - * - * @author Martin Hentschel - */ -public class SymbolicEquivalenceClass extends AbstractElement implements ISymbolicEquivalenceClass { - /** - * The {@link Services} to use. - */ - private final Services services; - - /** - * The contained {@link JTerm}s which represents the same {@link ISymbolicObject}. - */ - private ImmutableList terms; - - /** - * Constructor. - * - * @param services The {@link Services} to use. - * @param settings The {@link IModelSettings} to use. - */ - public SymbolicEquivalenceClass(Services services, IModelSettings settings) { - this(services, ImmutableList.nil(), settings); - } - - /** - * Constructor. - * - * @param services The {@link Services} to use. - * @param terms The contained {@link JTerm}s which represents the same {@link ISymbolicObject}. - * @param settings The {@link IModelSettings} to use. - */ - public SymbolicEquivalenceClass(Services services, ImmutableList terms, - IModelSettings settings) { - super(settings); - this.services = services; - this.terms = terms; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getTerms() { - return terms; - } - - /** - * Adds a new {@link JTerm}. - * - * @param term The new {@link JTerm} to add. - */ - public void addTerm(JTerm term) { - terms = terms.append(OriginTermLabel.removeOriginLabels(term, services)); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean containsTerm(JTerm term) { - return terms.contains(OriginTermLabel.removeOriginLabels(term, services)); - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getTermStrings() { - ImmutableList strings = ImmutableList.nil(); - for (JTerm term : terms) { - strings = strings.append(formatTerm(term, services)); - } - return strings; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getRepresentative() { - // Prefer null if contained in equivalence class - final HeapLDT heapLDT = services.getTypeConverter().getHeapLDT(); - JTerm nullTerm = CollectionUtil.search(terms, element -> element.op() == heapLDT.getNull()); - if (nullTerm != null) { - return nullTerm; - } else { - // Prefer terms which are a program variable - JTerm representative = - CollectionUtil.search(terms, element -> element.op() instanceof IProgramVariable); - return representative != null ? representative : // Return term with program variable - terms.head(); // Return the first term - } - } - - /** - * {@inheritDoc} - */ - @Override - public String getRepresentativeString() { - JTerm representative = getRepresentative(); - if (representative != null) { - return formatTerm(representative, services); - } else { - return null; - } - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return "Equivalence Class " + getTermStrings(); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicLayout.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicLayout.java deleted file mode 100644 index c87100deb5e..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicLayout.java +++ /dev/null @@ -1,89 +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.symbolic_execution.object_model.impl; - -import de.uka.ilkd.key.symbolic_execution.object_model.IModelSettings; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicEquivalenceClass; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicLayout; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicObject; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicState; - -import org.key_project.util.collection.ImmutableList; - -/** - * Default implementation of {@link ISymbolicLayout}. - * - * @author Martin Hentschel - */ -public class SymbolicLayout extends AbstractElement implements ISymbolicLayout { - /** - * The contained {@link ISymbolicEquivalenceClass}. - */ - private final ImmutableList equivalenceClasses; - - /** - * The {@link ISymbolicState}. - */ - private ISymbolicState state; - - /** - * The contained {@link ISymbolicObject}s. - */ - private ImmutableList objects = ImmutableList.nil(); - - /** - * Constructor. - * - * @param equivalenceClasses The provided equivalence classes. - * @param settings The {@link IModelSettings} to use. - */ - public SymbolicLayout(IModelSettings settings, - ImmutableList equivalenceClasses) { - super(settings); - assert equivalenceClasses != null; - this.equivalenceClasses = equivalenceClasses; - } - - /** - * {@inheritDoc} - */ - @Override - public ISymbolicState getState() { - return state; - } - - /** - * Sets the {@link ISymbolicState}. - * - * @param state The {@link ISymbolicState} to set. - */ - public void setState(ISymbolicState state) { - this.state = state; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getObjects() { - return objects; - } - - /** - * Adds a new {@link ISymbolicObject}. - * - * @param object The new {@link ISymbolicObject} to add. - */ - public void addObject(ISymbolicObject object) { - objects = objects.append(object); - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList getEquivalenceClasses() { - return equivalenceClasses; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicObject.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicObject.java deleted file mode 100644 index 7113f3818eb..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicObject.java +++ /dev/null @@ -1,83 +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.symbolic_execution.object_model.impl; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.symbolic_execution.object_model.IModelSettings; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicObject; - -import org.key_project.logic.sort.Sort; - -/** - * Default implementation of {@link ISymbolicObject}. - * - * @author Martin Hentschel - */ -public class SymbolicObject extends AbstractSymbolicAssociationValueContainer - implements ISymbolicObject { - /** - * The {@link Services} to use. - */ - private final Services services; - - /** - * The name. - */ - private final JTerm name; - - /** - * Constructor. - * - * @param services The {@link Services} to use. - * @param name The name. - * @param settings The {@link IModelSettings} to use. - */ - public SymbolicObject(Services services, JTerm name, IModelSettings settings) { - super(settings); - this.services = services; - this.name = name; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getName() { - return name; - } - - /** - * {@inheritDoc} - */ - @Override - public String getNameString() { - return formatTerm(name, services); - } - - /** - * {@inheritDoc} - */ - @Override - public Sort getType() { - return name != null ? name.sort() : null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getTypeString() { - Sort sort = getType(); - return sort != null ? sort.toString() : null; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return "Object " + getNameString(); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicState.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicState.java deleted file mode 100644 index 133b59590d3..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicState.java +++ /dev/null @@ -1,39 +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.symbolic_execution.object_model.impl; - -import de.uka.ilkd.key.symbolic_execution.object_model.IModelSettings; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicState; - -/** - * Default implementation of {@link ISymbolicState}. - * - * @author Martin Hentschel - */ -public class SymbolicState extends AbstractSymbolicAssociationValueContainer - implements ISymbolicState { - /** - * The name of this state. - */ - private final String name; - - /** - * Constructor. - * - * @param name The name of this state. - * @param settings The {@link IModelSettings} to use. - */ - public SymbolicState(String name, IModelSettings settings) { - super(settings); - this.name = name; - } - - /** - * {@inheritDoc} - */ - @Override - public String getName() { - return name; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicValue.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicValue.java deleted file mode 100644 index f716500252d..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/object_model/impl/SymbolicValue.java +++ /dev/null @@ -1,307 +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.symbolic_execution.object_model.impl; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.logic.op.Junctor; -import de.uka.ilkd.key.symbolic_execution.object_model.IModelSettings; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicValue; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.sort.Sort; - -/** - * Default implementation of {@link ISymbolicValue}. - * - * @author Martin Hentschel - */ -public class SymbolicValue extends AbstractElement implements ISymbolicValue { - /** - * The {@link Services} to use. - */ - private final Services services; - - /** - * The array index. - */ - private final JTerm arrayIndex; - - /** - * The array start index or {@code null} if not used. - */ - private final JTerm arrayStartIndex; - - /** - * The array end index or {@code null} if not used. - */ - private final JTerm arrayEndIndex; - - /** - * The {@link IProgramVariable}. - */ - private final IProgramVariable programVariable; - - /** - * The value {@link JTerm}. - */ - private final JTerm value; - - /** - * The optional condition under which this value is valid. - */ - private final JTerm condition; - - /** - * Constructor. - * - * @param services The {@link Services} to use. - * @param arrayIndex The array index. - * @param value The value {@link JTerm}. - * @param condition The optional condition under which this value is valid. - * @param settings The {@link IModelSettings} to use. - */ - public SymbolicValue(Services services, JTerm arrayIndex, JTerm value, JTerm condition, - IModelSettings settings) { - super(settings); - assert services != null; - assert arrayIndex != null; - this.services = services; - this.programVariable = null; - this.arrayIndex = arrayIndex; - this.value = value; - this.condition = condition; - this.arrayStartIndex = null; - this.arrayEndIndex = null; - } - - /** - * Constructor. - * - * @param services The {@link Services} to use. - * @param arrayIndex The array index. - * @param arrayStartIndex The array start index or {@code null} if not used. - * @param arrayEndIndex The array end index or {@code null} if not used. - * @param value The value {@link JTerm}. - * @param condition The optional condition under which this value is valid. - * @param settings The {@link IModelSettings} to use. - */ - public SymbolicValue(Services services, JTerm arrayIndex, JTerm arrayStartIndex, - JTerm arrayEndIndex, JTerm value, JTerm condition, IModelSettings settings) { - super(settings); - assert services != null; - assert arrayIndex != null; - this.services = services; - this.programVariable = null; - this.arrayIndex = arrayIndex; - this.value = value; - this.condition = condition; - this.arrayStartIndex = arrayStartIndex; - this.arrayEndIndex = arrayEndIndex; - } - - /** - * Constructor. - * - * @param services The {@link Services} to use. - * @param programVariable The {@link IProgramVariable}. - * @param value The value {@link JTerm}. - * @param condition The optional condition under which this value is valid. - * @param settings The {@link IModelSettings} to use. - */ - public SymbolicValue(Services services, IProgramVariable programVariable, JTerm value, - JTerm condition, IModelSettings settings) { - super(settings); - assert services != null; - assert programVariable != null; - this.services = services; - this.programVariable = programVariable; - this.value = value; - this.arrayIndex = null; - this.condition = condition; - this.arrayStartIndex = null; - this.arrayEndIndex = null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getName() { - StringBuilder sb = new StringBuilder(); - if (isArrayRange()) { - sb.append("["); - if (getArrayStartIndex() != null) { - sb.append(getArrayIndexString()); - sb.append(" >= "); - sb.append(getArrayStartIndexString()); - } - if (getArrayStartIndex() != null && getArrayEndIndex() != null) { - sb.append(" and "); - } - if (getArrayEndIndex() != null) { - sb.append(getArrayIndexString()); - sb.append(" <= "); - sb.append(getArrayEndIndexString()); - } - sb.append("]"); - } else if (isArrayIndex()) { - sb.append("["); - sb.append(getArrayIndexString()); - sb.append("]"); - } else { - sb.append(getProgramVariableString()); - } - if (condition != null && condition.op() != Junctor.TRUE) { - sb.append(" {"); - sb.append(getConditionString()); - sb.append("}"); - } - return sb.toString(); - } - - /** - * Checks if an array index is represented. - * - * @return {@code true} is array index, {@code false} is something else. - */ - public boolean isArrayIndex() { - return arrayIndex != null && (arrayStartIndex == null || arrayEndIndex == null); - } - - /** - * Checks if an array range is represented. - * - * @return {@code true} is array range, {@code false} is something else. - */ - public boolean isArrayRange() { - return arrayStartIndex != null && arrayEndIndex != null; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getArrayIndex() { - return arrayIndex; - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramVariable getProgramVariable() { - return programVariable; - } - - /** - * {@inheritDoc} - */ - @Override - public String getProgramVariableString() { - return SymbolicExecutionUtil.getDisplayString(programVariable); - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getValue() { - return value; - } - - /** - * {@inheritDoc} - */ - @Override - public String getValueString() { - return formatTerm(value, services); - } - - /** - * {@inheritDoc} - */ - @Override - public Sort getType() { - return value != null ? value.sort() : null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getTypeString() { - Sort sort = getType(); - return sort != null ? sort.toString() : null; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return "Value of " + getName() + " is " + getValueString(); - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm getCondition() { - return condition; - } - - /** - * {@inheritDoc} - */ - @Override - public String getConditionString() { - return condition != null ? formatTerm(condition, services) : null; - } - - /** - * {@inheritDoc} - */ - @Override - public String getArrayIndexString() { - return arrayIndex != null ? formatTerm(arrayIndex, services) : null; - } - - /** - * Returns the array start index. - * - * @return The array start index. - */ - public JTerm getArrayStartIndex() { - return arrayStartIndex; - } - - /** - * Returns the human readable array start index. - * - * @return The human readable array start index. - */ - public String getArrayStartIndexString() { - return arrayStartIndex != null ? formatTerm(arrayStartIndex, services) : null; - } - - /** - * Returns the array end index. - * - * @return The array end index. - */ - public JTerm getArrayEndIndex() { - return arrayEndIndex; - } - - /** - * Returns the human readable array end index. - * - * @return The human readable array end index. - */ - public String getArrayEndIndexString() { - return arrayEndIndex != null ? formatTerm(arrayEndIndex, services) : null; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodPO.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodPO.java deleted file mode 100644 index 703d565510e..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodPO.java +++ /dev/null @@ -1,390 +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.symbolic_execution.po; - -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Properties; - -import de.uka.ilkd.key.java.JavaInfo; -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.StatementBlock; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.expression.Expression; -import de.uka.ilkd.key.java.ast.statement.MethodBodyStatement; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.SymbolicExecutionTermLabel; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.logic.op.JModality; -import de.uka.ilkd.key.logic.op.LocationVariable; -import de.uka.ilkd.key.logic.op.ProgramVariable; -import de.uka.ilkd.key.pp.PosTableLayouter; -import de.uka.ilkd.key.pp.PrettyPrinter; -import de.uka.ilkd.key.proof.init.AbstractOperationPO; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.settings.Configuration; -import de.uka.ilkd.key.speclang.PositionedString; -import de.uka.ilkd.key.speclang.jml.translation.Context; -import de.uka.ilkd.key.speclang.njml.JmlIO; - -import org.key_project.prover.sequent.Sequent; -import org.key_project.util.collection.ImmutableArray; -import org.key_project.util.collection.ImmutableList; - -/** - *

- * This proof obligation executes an {@link IProgramMethod} with an optional precondition. - *

- *

- * The generated {@link Sequent} has the following form: - * - *

- * {@code
- * ==>
- *  &
- * 
- * ->
- * 
- * 
- * exc=null;
- * try {
- *   
- * } catch(java.lang.Exception e) {
- *    exc = e
- * }
- * 
- *  (exc = null &  & )
- * }
- * 
- *

- * - * @author Martin Hentschel - */ -public class ProgramMethodPO extends AbstractOperationPO { - /** - * The {@link IProgramMethod} to execute code parts from. - */ - private final IProgramMethod pm; - - /** - * The precondition in JML syntax. - */ - private final String precondition; - - /** - * Constructor. - * - * @param initConfig The {@link InitConfig} to use. - * @param name The name to use. - * @param pm The {@link IProgramMethod} to execute code parts from. - * @param precondition An optional precondition to use. - */ - public ProgramMethodPO(InitConfig initConfig, String name, IProgramMethod pm, - String precondition) { - super(initConfig, name); - assert pm != null; - this.pm = pm; - this.precondition = precondition; - } - - /** - * Constructor. - * - * @param initConfig The {@link InitConfig} to use. - * @param name The name to use. - * @param pm The {@link IProgramMethod} to execute code parts from. - * @param precondition An optional precondition to use. - * @param addUninterpretedPredicate {@code true} postcondition contains uninterpreted predicate, - * {@code false} uninterpreted predicate is not contained in postcondition. - * @param addSymbolicExecutionLabel {@code true} to add the {@link SymbolicExecutionTermLabel} - * to the modality, {@code false} to not label the modality. - */ - public ProgramMethodPO(InitConfig initConfig, String name, IProgramMethod pm, - String precondition, boolean addUninterpretedPredicate, - boolean addSymbolicExecutionLabel) { - super(initConfig, name, addUninterpretedPredicate, addSymbolicExecutionLabel); - assert pm != null; - this.pm = pm; - this.precondition = precondition; - } - - /** - * {@inheritDoc} - */ - @Override - public IProgramMethod getProgramMethod() { - return pm; - } - - /** - * {@inheritDoc} - */ - @Override - protected boolean isTransactionApplicable() { - return false; - } - - /** - * {@inheritDoc} - */ - @Override - protected KeYJavaType getCalleeKeYJavaType() { - return pm.getContainerType(); - } - - /** - * {@inheritDoc} - */ - @Override - protected ImmutableList buildOperationBlocks( - ImmutableList formalParVars, ProgramVariable selfVar, - ProgramVariable resultVar, Services services) { - // Get program method to execute - IProgramMethod pm = getProgramMethod(); - // Extracts code parts of the method - ImmutableArray args = new ImmutableArray<>( - formalParVars.toArray(new ProgramVariable[formalParVars.size()])); - MethodBodyStatement mbs = new MethodBodyStatement(pm, selfVar, resultVar, args); - StatementBlock result = new StatementBlock(mbs); - return ImmutableList.nil().prepend(null, result, null, null); - } - - /** - * {@inheritDoc} - */ - @Override - protected JTerm generateMbyAtPreDef(LocationVariable selfVar, - ImmutableList paramVars, Services services) { - return tb.tt(); - } - - /** - * {@inheritDoc} - */ - @Override - protected JTerm getPre(List modHeaps, LocationVariable selfVar, - ImmutableList paramVars, - Map atPreVars, Services services) { - if (precondition != null && !precondition.isEmpty()) { - var context = Context.inMethod(getProgramMethod(), services.getTermBuilder()); - JmlIO io = new JmlIO(services).context(context).parameters(paramVars); - - PositionedString ps = new PositionedString(precondition); - return io.parseExpression(ps); - } else { - return tb.tt(); - } - } - - /** - * {@inheritDoc} - */ - @Override - protected JTerm getPost(List modHeaps, LocationVariable selfVar, - ImmutableList paramVars, LocationVariable resultVar, - LocationVariable exceptionVar, Map atPreVars, - Services services) { - return tb.tt(); - } - - /** - * {@inheritDoc} - */ - @Override - protected JTerm buildFrameClause(List modHeaps, Map heapToAtPre, - LocationVariable selfVar, ImmutableList paramVars, - Services services) { - return tb.tt(); - } - - /** - * {@inheritDoc} - */ - @Override - protected JModality.JavaModalityKind getTerminationMarker() { - return JModality.JavaModalityKind.DIA; - } - - /** - * {@inheritDoc} - */ - @Override - protected boolean isMakeNamesUnique() { - return false; // Unique names crashes precondition parsing if names are renamed. - } - - /** - * {@inheritDoc} - */ - @Override - protected boolean isCopyOfMethodArgumentsUsed() { - return false; - } - - /** - * {@inheritDoc} - */ - @Override - protected String buildPOName(boolean transactionFlag) { - return name; - } - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() { - return pm.hashCode() + (precondition != null ? precondition.hashCode() : 0); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof ProgramMethodPO other) { - return Objects.equals(pm, other.getProgramMethod()) - && Objects.equals(precondition, other.getPrecondition()); - } else { - return false; - } - } - - /** - * Returns the precondition in JML syntax. - * - * @return The precondition in JML syntax. - */ - public String getPrecondition() { - return precondition; - } - - /** - * {@inheritDoc} - * - * @return - */ - @Override - public Configuration createLoaderConfig() { - var c = super.createLoaderConfig(); - c.set("method", getProgramMethodSignature(getProgramMethod(), true)); - if (getPrecondition() != null && !getPrecondition().isEmpty()) { - c.set("precondition", getPrecondition()); - } - return c; - } - - /** - * Returns a human-readable full qualified method signature. - * - * @param pm The {@link IProgramMethod} which provides the signature. - * @param includeType Include the container type? - * @return The human-readable method signature. - */ - public static String getProgramMethodSignature(IProgramMethod pm, boolean includeType) { - PosTableLayouter l = PosTableLayouter.pure(); - l.beginC(0); - if (includeType) { - KeYJavaType type = pm.getContainerType(); - l.print(type.getFullName()); - l.print("#"); - } - PrettyPrinter x = new PrettyPrinter(l); - x.writeFullMethodSignature(pm); - l.end(); - return x.result(); - } - - /** - * Searches the {@link IProgramMethod} defined by the given {@link Properties}. - * - * @param initConfig The already loaded {@link InitConfig}. - * @param properties The settings of the proof obligation to instantiate. - * @return The found {@link IProgramMethod}. - * @throws IOException Occurred Exception if it was not possible to find the - * {@link IProgramMethod}. - */ - public static IProgramMethod getProgramMethod(InitConfig initConfig, Configuration properties) - throws IOException { - // Get container class and method signature - String value = properties.getString("method"); - if (value == null) { - throw new IOException("Property \"method\" is not defined."); - } - int classMethodSeparator = value.indexOf('#'); - if (classMethodSeparator < 0) { - throw new IOException( - "Property \"method\" does not contain the class method separator \"#\"."); - } - String className = value.substring(0, classMethodSeparator); - String signature = value.substring(classMethodSeparator + 1); - JavaInfo javaInfo = initConfig.getServices().getJavaInfo(); - // Split signature in name and parameter type names - int breaketsStart = signature.indexOf('('); - if (breaketsStart < 0) { - throw new IOException("Method signature \"" + signature - + "\" does not contain required character \"(\"."); - } - int breaketsEnd = signature.lastIndexOf(')'); - if (breaketsEnd < 0) { - throw new IOException("Method signature \"" + signature - + "\" does not contain required character \")\"."); - } - if (breaketsEnd < breaketsStart) { - throw new IOException( - "Method signature has not valid order of chracters \"(\" and \")\"."); - } - String name = signature.substring(0, breaketsStart); - String parameters = signature.substring(breaketsStart + 1, breaketsEnd); - String[] types = parameters.isEmpty() ? new String[0] : parameters.split(","); - // Find container and parameter types - KeYJavaType type = javaInfo.getKeYJavaType(className.trim()); - if (type == null) { - throw new IOException("Can't find type \"" + className + "\"."); - } - ImmutableList parameterTypes = ImmutableList.nil(); - for (String s : types) { - KeYJavaType paramType = javaInfo.getKeYJavaType(s.trim()); - if (paramType == null) { - throw new IOException("Can't find type \"" + s + "\"."); - } - parameterTypes = parameterTypes.append(paramType); - } - IProgramMethod pm = javaInfo.getProgramMethod(type, name.trim(), parameterTypes, type); - if (pm == null) { - pm = javaInfo.getConstructor(type, parameterTypes, type); - if (pm == null) { - throw new IOException("Can't find program method \"" + value + "\"."); - } - } - return pm; - } - - /** - * Returns the optional defined precondition. - * - * @param properties The proof obligation settings to read from. - * @return The precondition or {@code null} if not available. - */ - public static String getPrecondition(Configuration properties) { - return properties.getString("precondition"); - } - - @Override - protected JTerm getGlobalDefs(LocationVariable heap, JTerm heapTerm, JTerm selfTerm, - ImmutableList paramTerms, Services services) { - // TODO Auto-generated method stub - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public KeYJavaType getContainerType() { - return getProgramMethod().getContainerType(); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodPOLoader.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodPOLoader.java deleted file mode 100644 index a3092226089..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodPOLoader.java +++ /dev/null @@ -1,43 +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.symbolic_execution.po; - -import java.io.IOException; - -import de.uka.ilkd.key.proof.init.IPersistablePO; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.loader.ProofObligationLoader; -import de.uka.ilkd.key.settings.Configuration; - -import org.jspecify.annotations.NullMarked; - -import static de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO.*; - -@NullMarked -public class ProgramMethodPOLoader implements ProofObligationLoader { - /** - * Instantiates a new proof obligation with the given settings. - * - * @param initConfig The already load {@link InitConfig}. - * @param properties The settings of the proof obligation to instantiate. - * @return The instantiated proof obligation. - */ - @Override - public IPersistablePO.LoadedPOContainer loadFrom(InitConfig initConfig, - Configuration properties) - throws IOException { - return new IPersistablePO.LoadedPOContainer(new ProgramMethodPO(initConfig, - getName(properties), - getProgramMethod(initConfig, properties), getPrecondition(properties), - isAddUninterpretedPredicate(properties), isAddSymbolicExecutionLabel(properties))); - } - - @Override - public boolean handles(String identifier) { - return ProgramMethodPOLoader.class.getSimpleName().equals(identifier) - || ProgramMethodPOLoader.class.getName().equals(identifier) - || ProgramMethodPO.class.getSimpleName().equals(identifier) - || ProgramMethodPO.class.getName().equals(identifier); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodSubsetPO.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodSubsetPO.java deleted file mode 100644 index c644821018b..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodSubsetPO.java +++ /dev/null @@ -1,413 +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.symbolic_execution.po; - -import java.io.IOException; -import java.util.*; - -import de.uka.ilkd.key.java.*; -import de.uka.ilkd.key.java.ast.Statement; -import de.uka.ilkd.key.java.ast.StatementBlock; -import de.uka.ilkd.key.java.ast.StatementContainer; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.reference.ExecutionContext; -import de.uka.ilkd.key.java.ast.reference.TypeRef; -import de.uka.ilkd.key.java.ast.statement.Branch; -import de.uka.ilkd.key.java.ast.statement.BranchStatement; -import de.uka.ilkd.key.java.ast.statement.MethodFrame; -import de.uka.ilkd.key.java.ast.statement.Return; -import de.uka.ilkd.key.java.visitor.UndeclaredProgramVariableCollector; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.SymbolicExecutionTermLabel; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.logic.op.LocationVariable; -import de.uka.ilkd.key.logic.op.ProgramVariable; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.settings.Configuration; - -import org.key_project.prover.sequent.Sequent; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.parsing.Position; - -// need to switch spotless off for this comment as it replaces @code with @code -// spotless:off -/** - *

- * This proof obligation executes selected statements of the body of a given {@link IProgramMethod}. - * The statements are selected by its source location. All statements which ends in the given source - * range ]{@code startPosition}, {@code endPosition}] are executed. - *

- *

- * To select statements by its end position is required, because KeY's recorder includes also - * leading space and leading comments into a statements position. Another drawback is that the end - * position of the previous statement is exactly the start position of the following statement. - *

- *

- * Imagine the following snippet: - * - *

- * {@code
- *     int x = 1; // from 3/59 to 4/16
- *     int y = 2; // from 4/16 to 5/16
- *     int z = 3; // from 5/16 to 6/16
- * }
- * 
- *

- *

- * To execute only the last two statements a user would select intuitively the source - * range 5/0 to 6/16 (the text without leading white space) which matches exactly the used selection - * definition. - *

- *

- * The generated {@link Sequent} has the following form: - * - *

- * {@code
- * ==>
- *  &
- * 
- * ->
- * 
- * 
- * exc=null;
- * try {
- *   
- * } catch(java.lang.Exception e) {
- *  exc = e
- * }
- * 
- * (exc = null &  & )
- * }
- * 
- *

- * - * @author Martin Hentschel - */ -//spotless:on -public class ProgramMethodSubsetPO extends ProgramMethodPO { - public static final String START_LINE = "startLine"; - public static final String START_COLUMN = "startColumn"; - public static final String END_LINE = "endLine"; - public static final String END_COLUMN = "endColumn"; - /** - * Contains all undeclared variables used in the method part to execute. - */ - private UndeclaredProgramVariableCollector undeclaredVariableCollector; - - /** - * The start position. - */ - private final Position startPosition; - - /** - * The end position. - */ - private final Position endPosition; - - /** - * Constructor. - * - * @param initConfig The {@link InitConfig} to use. - * @param name The name to use. - * @param pm The {@link IProgramMethod} to execute code parts from. - * @param precondition An optional precondition to use. - * @param startPosition The start position. - * @param endPosition The end position. - */ - public ProgramMethodSubsetPO(InitConfig initConfig, String name, IProgramMethod pm, - String precondition, Position startPosition, Position endPosition) { - super(initConfig, name, pm, precondition); - assert startPosition != null; - assert endPosition != null; - this.startPosition = startPosition; - this.endPosition = endPosition; - } - - /** - * Constructor. - * - * @param initConfig The {@link InitConfig} to use. - * @param name The name to use. - * @param pm The {@link IProgramMethod} to execute code parts from. - * @param precondition An optional precondition to use. - * @param startPosition The start position. - * @param endPosition The end position. - * @param addUninterpretedPredicate {@code true} postcondition contains uninterpreted predicate, - * {@code false} uninterpreted predicate is not contained in postcondition. - * @param addSymbolicExecutionLabel {@code true} to add the {@link SymbolicExecutionTermLabel} - * to the modality, {@code false} to not label the modality. - */ - public ProgramMethodSubsetPO(InitConfig initConfig, String name, IProgramMethod pm, - String precondition, Position startPosition, Position endPosition, - boolean addUninterpretedPredicate, boolean addSymbolicExecutionLabel) { - super(initConfig, name, pm, precondition, addUninterpretedPredicate, - addSymbolicExecutionLabel); - assert startPosition != null; - assert endPosition != null; - this.startPosition = startPosition; - this.endPosition = endPosition; - } - - /** - * {@inheritDoc} - */ - @Override - protected ImmutableList buildOperationBlocks( - ImmutableList formalParVars, ProgramVariable selfVar, - ProgramVariable resultVar, Services services) { - // Get program method to execute - KeYJavaType type = getCalleeKeYJavaType(); - IProgramMethod pm = getProgramMethod(); - // Extracts code parts of the method - List statementsToExecute = new LinkedList<>(); - collectStatementsToExecute(statementsToExecute, pm.getBody()); - Statement[] statements = - statementsToExecute.toArray(new Statement[0]); - StatementBlock blockToExecute = new StatementBlock(statements); - MethodFrame mf = new MethodFrame(endsWithReturn(statements) ? resultVar : null, - new ExecutionContext(new TypeRef(type), pm, selfVar), blockToExecute); - StatementBlock result = new StatementBlock(mf); - // Collect undeclared variables - undeclaredVariableCollector = new UndeclaredProgramVariableCollector(result, services); - undeclaredVariableCollector.start(); - // Register undeclared variables - Set undeclaredVariables = undeclaredVariableCollector.result(); - for (LocationVariable x : undeclaredVariables) { - register(x, services); - } - return ImmutableList.nil().prepend(null, result, null, null); - } - - /** - * Collects recursive the {@link Statement}s which are in the given source range defined by - * {@link #startPosition} and {@link #endPosition}. - * - * @param toFill The result {@link List} to fill. - * @param container The {@link StatementContainer} to seach in. - */ - protected void collectStatementsToExecute(List toFill, - StatementContainer container) { - for (int i = 0; i < container.getStatementCount(); i++) { - Statement s = container.getStatementAt(i); - if (s.getEndPosition().compareTo(startPosition) > 0 - && s.getEndPosition().compareTo(endPosition) <= 0) { - // Statement found which ends in the interval ]startPosition, endPosition] - toFill.add(s); - } else { - // Continue search in children - if (s instanceof StatementContainer) { - collectStatementsToExecute(toFill, (StatementContainer) s); - } else if (s instanceof BranchStatement bs) { - for (int j = 0; j < bs.getBranchCount(); j++) { - Branch branch = bs.getBranchAt(j); - collectStatementsToExecute(toFill, branch); - } - } - } - } - } - - /** - * Checks if the last statement is a {@link Return} statement. - * - * @param statements The statements to check. - * @return {@code true} last statement is {@link Return}, {@code false} statements are empty or - * last statement is something else. - */ - protected boolean endsWithReturn(Statement[] statements) { - if (statements != null && statements.length >= 1) { - return statements[statements.length - 1] instanceof Return; - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - @Override - protected JTerm getPre(List modHeaps, LocationVariable selfVar, - ImmutableList paramVars, - Map atPreVars, Services services) { - ImmutableList paramVarsList = - convert(undeclaredVariableCollector.result()); - return super.getPre(modHeaps, selfVar, paramVarsList, atPreVars, services); - } - - /** - * {@inheritDoc} - */ - @Override - protected JTerm buildFreePre(LocationVariable selfVar, KeYJavaType selfKJT, - ImmutableList paramVars, List heaps, - Services proofServices) { - ImmutableList paramVarsList = - convert(undeclaredVariableCollector.result()); - return super.buildFreePre(selfVar, selfKJT, paramVarsList, heaps, proofServices); - } - - /** - * {@inheritDoc} - */ - @Override - protected JTerm ensureUninterpretedPredicateExists(ImmutableList paramVars, - ImmutableList formalParamVars, LocationVariable exceptionVar, - String name, Services proofServices) { - ImmutableList paramVarsList = - convert(undeclaredVariableCollector.result()); - return super.ensureUninterpretedPredicateExists(paramVarsList, formalParamVars, - exceptionVar, name, proofServices); - } - - /** - * Converts the given {@link Collection} into an {@link ImmutableList}. - * - * @param c The {@link Collection} to convert. - * @return The created {@link ImmutableList}. - */ - protected static ImmutableList convert(Collection c) { - ImmutableList result = ImmutableList.nil(); - for (LocationVariable var : c) { - result = result.append(var); - } - return result; - } - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() { - return super.hashCode() + (getStartPosition() != null ? getStartPosition().hashCode() : 0) - + (getEndPosition() != null ? getEndPosition().hashCode() : 0); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof ProgramMethodSubsetPO other) { - return super.equals(obj) - && Objects.equals(getStartPosition(), other.getStartPosition()) - && Objects.equals(getEndPosition(), other.getEndPosition()); - } else { - return false; - } - } - - /** - * Returns the start position. - * - * @return The start position. - */ - public Position getStartPosition() { - return startPosition; - } - - /** - * Returns the end position. - * - * @return The end position. - */ - public Position getEndPosition() { - return endPosition; - } - - /** - * {@inheritDoc} - * - * @return - */ - @Override - public Configuration createLoaderConfig() { - var c = super.createLoaderConfig(); - if (getStartPosition() != null) { - c.set(START_LINE, getStartPosition().line() + ""); - c.set(START_COLUMN, getStartPosition().column() + ""); - } - if (getEndPosition() != null) { - c.set(END_LINE, getEndPosition().line() + ""); - c.set(END_COLUMN, getEndPosition().column() + ""); - } - return c; - } - - /** - * Extracts the start position from the given {@link Properties}. - * - * @param properties The proof obligation settings to read from. - * @return The defined start {@link Position}. - * @throws IOException Occurred Exception if it was not possible to read the start position. - */ - protected static Position getStartPosition(Configuration properties) throws IOException { - String line = properties.getString(START_LINE); - if (line == null || line.isEmpty()) { - throw new IOException("Start line property \"startLine\" is not available or empty."); - } - String column = properties.getString(START_COLUMN); - if (column == null || column.isEmpty()) { - throw new IOException( - "Start column property \"startColumn\" is not available or empty."); - } - int lineValue; - try { - lineValue = Integer.parseInt(line); - } catch (NumberFormatException e) { - throw new IOException("Start line \"" + line + "\" is no valid integer."); - } - if (lineValue < 0) { - throw new IOException("Start line \"" + line + "\" is a negative integer."); - } - int columnValue; - try { - columnValue = Integer.parseInt(column); - } catch (NumberFormatException e) { - throw new IOException("Start column \"" + column + "\" is no valid integer."); - } - if (columnValue < 0) { - throw new IOException("Start column \"" + column + "\" is a negative integer."); - } - return Position.newOneBased(lineValue, columnValue); - } - - /** - * Extracts the end position from the given {@link Properties}. - * - * @param properties - * The proof obligation settings to read from. - * @return The defined end {@link Position}. - * @throws IOException - * Occurred Exception if it was not possible to read the end position. - */ - protected static Position getEndPosition(Configuration properties) throws IOException { - String line = properties.getString(END_LINE); - if (line == null || line.isEmpty()) { - throw new IOException("End line property \"endLine\" is not available or empty."); - } - String column = properties.getString(END_COLUMN); - if (column == null || column.isEmpty()) { - throw new IOException("End column property \"endColumn\" is not available or empty."); - } - int lineValue; - try { - lineValue = Integer.parseInt(line); - } catch (NumberFormatException e) { - throw new IOException("End line \"" + line + "\" is no valid integer."); - } - if (lineValue <= 0) { - throw new IOException("End line \"" + line + "\" is a negative integer."); - } - int columnValue; - try { - columnValue = Integer.parseInt(column); - } catch (NumberFormatException e) { - throw new IOException("End column \"" + column + "\" is no valid integer."); - } - if (columnValue <= 0) { - throw new IOException("End column \"" + column + "\" is a negative integer."); - } - return Position.newOneBased(lineValue, columnValue); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodSubsetPOLoader.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodSubsetPOLoader.java deleted file mode 100644 index 0ce8cb402c8..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodSubsetPOLoader.java +++ /dev/null @@ -1,48 +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.symbolic_execution.po; - -import java.io.IOException; - -import de.uka.ilkd.key.proof.init.*; -import de.uka.ilkd.key.proof.init.loader.ProofObligationLoader; -import de.uka.ilkd.key.settings.Configuration; - -import org.jspecify.annotations.NullMarked; - -/** - * @author Alexander Weigl - * @version 1 (28.12.23) - */ -@NullMarked -public class ProgramMethodSubsetPOLoader implements ProofObligationLoader { - /** - * Instantiates a new proof obligation with the given settings. - * - * @param initConfig The already loaded {@link InitConfig}. - * @param properties The settings of the proof obligation to instantiate. - * @return The instantiated proof obligation. - * @throws IOException Occurred Exception. - */ - @Override - public IPersistablePO.LoadedPOContainer loadFrom(InitConfig initConfig, - Configuration properties) throws IOException { - return new IPersistablePO.LoadedPOContainer( - new ProgramMethodSubsetPO(initConfig, AbstractPO.getName(properties), - ProgramMethodPO.getProgramMethod(initConfig, properties), - ProgramMethodPO.getPrecondition(properties), - ProgramMethodSubsetPO.getStartPosition(properties), - ProgramMethodSubsetPO.getEndPosition(properties), - AbstractOperationPO.isAddUninterpretedPredicate(properties), - AbstractOperationPO.isAddSymbolicExecutionLabel(properties))); - } - - @Override - public boolean handles(String identifier) { - return ProgramMethodSubsetPO.class.getName().equals(identifier) - || ProgramMethodSubsetPO.class.getSimpleName().equals(identifier) - || getClass().getName().equals(identifier) - || getClass().getSimpleName().equals(identifier); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/TruthValuePOExtension.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/TruthValuePOExtension.java deleted file mode 100644 index 291cab5614e..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/TruthValuePOExtension.java +++ /dev/null @@ -1,88 +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.symbolic_execution.po; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.TermFactory; -import de.uka.ilkd.key.logic.label.FormulaTermLabel; -import de.uka.ilkd.key.logic.label.TermLabel; -import de.uka.ilkd.key.logic.op.ProgramVariable; -import de.uka.ilkd.key.proof.init.AbstractOperationPO; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.POExtension; -import de.uka.ilkd.key.proof.init.ProofOblInput; -import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil; -import de.uka.ilkd.key.symbolic_execution.profile.SymbolicExecutionJavaProfile; - -import org.key_project.util.collection.ImmutableArray; - -/** - * Implementation of {@link POExtension} to support truth value evaluation. - * - * @author Martin Hentschel - */ -public class TruthValuePOExtension implements POExtension { - /** - * {@inheritDoc} - */ - @Override - public boolean isPOSupported(ProofOblInput po) { - return po instanceof AbstractOperationPO; - } - - /** - * {@inheritDoc} - */ - @Override - public JTerm modifyPostTerm(AbstractOperationPO abstractOperationPO, InitConfig proofConfig, - Services services, ProgramVariable selfTerm, - JTerm postTerm) { - if (SymbolicExecutionJavaProfile.isTruthValueEvaluationEnabled(proofConfig)) { - return labelPostTerm(services, postTerm); - } else { - return postTerm; - } - } - - /** - * Labels all predicates in the given {@link JTerm} and its children with a - * {@link FormulaTermLabel}. - * - * @param services The {@link Services} to use. - * @param term The {@link JTerm} to label. - * @return The labeled {@link JTerm}. - */ - protected JTerm labelPostTerm(Services services, JTerm term) { - if (term != null) { - final TermFactory tf = services.getTermFactory(); - // Label children of operator - if (TruthValueTracingUtil.isLogicOperator(term)) { - JTerm[] newSubs = new JTerm[term.arity()]; - boolean subsChanged = false; - for (int i = 0; i < newSubs.length; i++) { - JTerm oldTerm = term.sub(i); - newSubs[i] = labelPostTerm(services, oldTerm); - if (oldTerm != newSubs[i]) { - subsChanged = true; - } - } - term = subsChanged - ? tf.createTerm(term.op(), new ImmutableArray<>(newSubs), - term.boundVars(), term.getLabels()) - : term; - } - ImmutableArray oldLabels = term.getLabels(); - TermLabel[] newLabels = oldLabels.toArray(new TermLabel[oldLabels.size() + 1]); - int labelID = - services.getCounter(FormulaTermLabel.PROOF_COUNTER_NAME).getCountPlusPlus(); - int labelSubID = FormulaTermLabel.newLabelSubID(services, labelID); - newLabels[oldLabels.size()] = new FormulaTermLabel(labelID, labelSubID); - return tf.createTerm(term.op(), term.subs(), term.boundVars(), - new ImmutableArray<>(newLabels)); - } else { - return null; - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SimplifyTermProfile.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SimplifyTermProfile.java deleted file mode 100644 index 00f9e5f051f..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SimplifyTermProfile.java +++ /dev/null @@ -1,115 +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.symbolic_execution.profile; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.label.SingletonLabelFactory; -import de.uka.ilkd.key.logic.label.TermLabelManager.TermLabelConfiguration; -import de.uka.ilkd.key.proof.init.JavaProfile; -import de.uka.ilkd.key.proof.init.Profile; -import de.uka.ilkd.key.rule.label.TermLabelPolicy; -import de.uka.ilkd.key.strategy.StrategyFactory; -import de.uka.ilkd.key.symbolic_execution.strategy.SimplifyTermStrategy; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionStrategy; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Name; -import org.key_project.util.collection.DefaultImmutableSet; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.ImmutableSet; - -/** - * An extended {@link JavaProfile} used in side proofs to simplify a {@link JTerm}. - * - * @author Martin Hentschel - */ -public class SimplifyTermProfile extends JavaProfile { - /** - * The {@link Name} of this {@link Profile}. - */ - public static final String NAME = "Java Profile for Term Simplification"; - - /** - * The used {@link StrategyFactory} of the {@link SymbolicExecutionStrategy}. - */ - private final static StrategyFactory SIDE_PROOF_FACTORY = new SimplifyTermStrategy.Factory(); - - /** - *

- * The default instance of this class. - *

- *

- * It is typically used in the {@link Thread} of the user interface. Other instances of this - * class are typically only required to use them in different {@link Thread}s (not the UI - * {@link Thread}). - *

- */ - public static SimplifyTermProfile defaultInstance; - - /** - * Constructor. - */ - public SimplifyTermProfile() { - } - - /** - * {@inheritDoc} - */ - @Override - protected ImmutableList computeTermLabelConfiguration() { - ImmutableList result = super.computeTermLabelConfiguration(); - ImmutableList symExcPolicies = - ImmutableList.nil() - .prepend((state, services, applicationPosInOccurrence, applicationTerm, rule, - goal, hint, tacletTerm, - newTerm, label) -> label); - result = result.prepend(new TermLabelConfiguration(SymbolicExecutionUtil.RESULT_LABEL_NAME, - new SingletonLabelFactory<>(SymbolicExecutionUtil.RESULT_LABEL), null, - symExcPolicies, null, null, null, null, null)); - return result; - } - - /** - * {@inheritDoc} - */ - @Override - protected ImmutableSet getStrategyFactories() { - return DefaultImmutableSet.nil().add(SIDE_PROOF_FACTORY); - } - - /** - * {@inheritDoc} - */ - @Override - public StrategyFactory getDefaultStrategyFactory() { - return SIDE_PROOF_FACTORY; - } - - /** - * {@inheritDoc} - */ - @Override - public String ident() { - return NAME; - } - - /** - *

- * Returns the default instance of this class. - *

- *

- * It is typically used in the {@link Thread} of the user interface. Other instances of this - * class are typically only required to use them in different {@link Thread}s (not the UI - * {@link Thread}). - *

- * - * @return The default instance for usage in the {@link Thread} of the user interface. - */ - public static synchronized SimplifyTermProfile getDefaultInstance() { - if (defaultInstance == null) { - defaultInstance = new SimplifyTermProfile(); - } - return defaultInstance; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SymbolicExecutionJavaProfile.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SymbolicExecutionJavaProfile.java deleted file mode 100644 index 021dd65a003..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SymbolicExecutionJavaProfile.java +++ /dev/null @@ -1,332 +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.symbolic_execution.profile; - -import de.uka.ilkd.key.logic.label.BlockContractValidityTermLabel; -import de.uka.ilkd.key.logic.label.BlockContractValidityTermLabelFactory; -import de.uka.ilkd.key.logic.label.FormulaTermLabel; -import de.uka.ilkd.key.logic.label.FormulaTermLabelFactory; -import de.uka.ilkd.key.logic.label.SingletonLabelFactory; -import de.uka.ilkd.key.logic.label.SymbolicExecutionTermLabel; -import de.uka.ilkd.key.logic.label.SymbolicExecutionTermLabelFactory; -import de.uka.ilkd.key.logic.label.TermLabelFactory; -import de.uka.ilkd.key.logic.label.TermLabelManager.TermLabelConfiguration; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.JavaProfile; -import de.uka.ilkd.key.proof.init.Profile; -import de.uka.ilkd.key.rule.BuiltInRule; -import de.uka.ilkd.key.rule.label.BlockContractValidityTermLabelUpdate; -import de.uka.ilkd.key.rule.label.FormulaTermLabelMerger; -import de.uka.ilkd.key.rule.label.FormulaTermLabelRefactoring; -import de.uka.ilkd.key.rule.label.FormulaTermLabelUpdate; -import de.uka.ilkd.key.rule.label.LoopBodyTermLabelUpdate; -import de.uka.ilkd.key.rule.label.LoopInvariantNormalBehaviorTermLabelUpdate; -import de.uka.ilkd.key.rule.label.RemoveInCheckBranchesTermLabelRefactoring; -import de.uka.ilkd.key.rule.label.StayOnFormulaTermLabelPolicy; -import de.uka.ilkd.key.rule.label.StayOnOperatorTermLabelPolicy; -import de.uka.ilkd.key.rule.label.SymbolicExecutionTermLabelUpdate; -import de.uka.ilkd.key.rule.label.TermLabelPolicy; -import de.uka.ilkd.key.rule.label.TermLabelRefactoring; -import de.uka.ilkd.key.rule.label.TermLabelUpdate; -import de.uka.ilkd.key.strategy.StrategyFactory; -import de.uka.ilkd.key.symbolic_execution.rule.ModalitySideProofRule; -import de.uka.ilkd.key.symbolic_execution.rule.QuerySideProofRule; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionGoalChooserFactory; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionStrategy; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Name; -import org.key_project.prover.engine.GoalChooserFactory; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.ImmutableSet; - -/** - * An extended {@link JavaProfile} used by the symbolic execution API. - * - * @author Martin Hentschel - */ -public class SymbolicExecutionJavaProfile extends JavaProfile { - /** - * The {@link Name} of this {@link Profile}. - */ - public static final String NAME = "Java Profile for Symbolic Execution"; - - /** - * The used {@link StrategyFactory} of the {@link SymbolicExecutionStrategy}. - */ - private final static StrategyFactory SYMBOLIC_EXECUTION_FACTORY = - new SymbolicExecutionStrategy.Factory(); - - /** - * {@code true} truth value evaluation is enabled, {@code false} truth value evaluation is - * disabled. - */ - private final Boolean truthValueEvaluationEnabled; - - /** - *

- * The default instance of this class. - *

- *

- * It is typically used in the {@link Thread} of the user interface. Other instances of this - * class are typically only required to use them in different {@link Thread}s (not the UI - * {@link Thread}). - *

- */ - public static SymbolicExecutionJavaProfile defaultInstance; - - /** - *

- * The default instance of this class. - *

- *

- * It is typically used in the {@link Thread} of the user interface. Other instances of this - * class are typically only required to use them in different {@link Thread}s (not the UI - * {@link Thread}). - *

- */ - public static SymbolicExecutionJavaProfile defaultInstanceWithTruthValueEvaluation; - - /** - * Constructor. - * - * @param predicateEvaluationEnabled {@code true} predicate evaluation is enabled, {@code false} - * predicate evaluation is disabled. - */ - public SymbolicExecutionJavaProfile(boolean predicateEvaluationEnabled) { - this.truthValueEvaluationEnabled = predicateEvaluationEnabled; - initTermLabelManager(); - } - - /** - * {@inheritDoc} - */ - @Override - protected ImmutableSet> computeSupportedGoalChooserBuilder() { - return super.computeSupportedGoalChooserBuilder() - .add(new SymbolicExecutionGoalChooserFactory()); - } - - /** - * {@inheritDoc} - */ - @Override - protected void initTermLabelManager() { - if (truthValueEvaluationEnabled != null) { - // Create TermLabelManager only after predicate evaluation enabled flag is set. - super.initTermLabelManager(); - } - } - - /** - * {@inheritDoc} - */ - @Override - protected ImmutableList computeTermLabelConfiguration() { - ImmutableList result = super.computeTermLabelConfiguration(); - result = result - .prepend(getSymbolicExecutionTermLabelConfigurations(truthValueEvaluationEnabled)); - return result; - } - - /** - * Returns the additional {@link TermLabelFactory} instances used for symbolic execution. - * - * @param predicateEvaluationEnabled {@code true} predicate evaluation is enabled, {@code false} - * predicate evaluation is disabled. - * @return The additional {@link TermLabelFactory} instances used for symbolic execution. - */ - public static ImmutableList getSymbolicExecutionTermLabelConfigurations( - boolean predicateEvaluationEnabled) { - ImmutableList symExcPolicies = - ImmutableList.nil().prepend(new StayOnOperatorTermLabelPolicy()); - - ImmutableList bcUps = ImmutableList.nil() - .prepend(new BlockContractValidityTermLabelUpdate()); - ImmutableList lbUps = - ImmutableList.nil().prepend(new LoopBodyTermLabelUpdate()); - ImmutableList nbUps = ImmutableList.nil() - .prepend(new LoopInvariantNormalBehaviorTermLabelUpdate()); - ImmutableList seUps = - ImmutableList.nil().prepend(new SymbolicExecutionTermLabelUpdate()); - - ImmutableList bcRefs = - ImmutableList.nil().prepend( - new RemoveInCheckBranchesTermLabelRefactoring(BlockContractValidityTermLabel.NAME)); - ImmutableList lbRefs = ImmutableList.nil() - .prepend(new RemoveInCheckBranchesTermLabelRefactoring( - SymbolicExecutionUtil.LOOP_BODY_LABEL_NAME)); - ImmutableList nbRefs = ImmutableList.nil() - .prepend(new RemoveInCheckBranchesTermLabelRefactoring( - SymbolicExecutionUtil.LOOP_INVARIANT_NORMAL_BEHAVIOR_LABEL_NAME)); - ImmutableList seRefs = - ImmutableList.nil().prepend( - new RemoveInCheckBranchesTermLabelRefactoring(SymbolicExecutionTermLabel.NAME)); - - ImmutableList result = ImmutableList.nil(); - result = result.prepend(new TermLabelConfiguration(BlockContractValidityTermLabel.NAME, - new BlockContractValidityTermLabelFactory(), null, symExcPolicies, null, null, bcUps, - bcRefs, null)); - result = - result.prepend(new TermLabelConfiguration(SymbolicExecutionUtil.LOOP_BODY_LABEL_NAME, - new SingletonLabelFactory<>(SymbolicExecutionUtil.LOOP_BODY_LABEL), null, - symExcPolicies, null, null, lbUps, lbRefs, null)); - result = result.prepend(new TermLabelConfiguration( - SymbolicExecutionUtil.LOOP_INVARIANT_NORMAL_BEHAVIOR_LABEL_NAME, - new SingletonLabelFactory<>( - SymbolicExecutionUtil.LOOP_INVARIANT_NORMAL_BEHAVIOR_LABEL), - null, symExcPolicies, null, null, nbUps, nbRefs, null)); - result = result.prepend(new TermLabelConfiguration(SymbolicExecutionTermLabel.NAME, - new SymbolicExecutionTermLabelFactory(), null, symExcPolicies, null, null, seUps, - seRefs, null)); - if (predicateEvaluationEnabled) { - ImmutableList predPolicies = - ImmutableList.nil().prepend(new StayOnFormulaTermLabelPolicy()); - ImmutableList predUpdates = - ImmutableList.nil().prepend(new FormulaTermLabelUpdate()); - ImmutableList predRefs = ImmutableList - .nil().prepend(new FormulaTermLabelRefactoring()); - result = result.prepend(new TermLabelConfiguration(FormulaTermLabel.NAME, - new FormulaTermLabelFactory(), null, predPolicies, null, null, predUpdates, - predRefs, new FormulaTermLabelMerger())); - } - return result; - } - - /** - * {@inheritDoc} - */ - @Override - protected ImmutableSet getStrategyFactories() { - ImmutableSet set = super.getStrategyFactories(); - set = set.add(SYMBOLIC_EXECUTION_FACTORY); - return set; - } - - /** - * {@inheritDoc} - */ - @Override - protected ImmutableList initBuiltInRules() { - ImmutableList builtInRules = super.initBuiltInRules(); - builtInRules = builtInRules.prepend(QuerySideProofRule.INSTANCE); - builtInRules = builtInRules.prepend(ModalitySideProofRule.INSTANCE); - return builtInRules; - } - - /** - * {@inheritDoc} - */ - @Override - public String ident() { - return NAME; - } - - /** - * Checks if predicate evaluation is enabled or not. - * - * @return {@code true} predicate evaluation is enabled, {@code false} predicate evaluation is - * disabled. - */ - public boolean isPredicateEvaluationEnabled() { - return truthValueEvaluationEnabled; - } - - /** - *

- * Returns the default instance of this class. - *

- *

- * It is typically used in the {@link Thread} of the user interface. Other instances of this - * class are typically only required to use them in different {@link Thread}s (not the UI - * {@link Thread}). - *

- * - * @return The default instance for usage in the {@link Thread} of the user interface. - */ - public static synchronized SymbolicExecutionJavaProfile getDefaultInstance() { - return getDefaultInstance(false); - } - - /** - *

- * Returns the default instance of this class. - *

- *

- * It is typically used in the {@link Thread} of the user interface. Other instances of this - * class are typically only required to use them in different {@link Thread}s (not the UI - * {@link Thread}). - *

- * - * @param truthValueEvaluationEnabled {@code true} truth value evaluation is enabled, - * {@code false} truth value evaluation is disabled. - * @return The default instance for usage in the {@link Thread} of the user interface. - */ - public static synchronized SymbolicExecutionJavaProfile getDefaultInstance( - boolean truthValueEvaluationEnabled) { - if (!truthValueEvaluationEnabled) { - if (defaultInstance == null) { - defaultInstance = new SymbolicExecutionJavaProfile(false); - } - return defaultInstance; - } else { - if (defaultInstanceWithTruthValueEvaluation == null) { - defaultInstanceWithTruthValueEvaluation = new SymbolicExecutionJavaProfile(true); - } - return defaultInstanceWithTruthValueEvaluation; - } - } - - /** - * Checks if truth value evaluation is enabled in the given {@link Proof}. - * - * @param proof The {@link Proof} to check. - * @return {@code true} truth value evaluation is enabled, {@code false} truth value evaluation - * is disabled. - */ - public static boolean isTruthValueTracingEnabled(Proof proof) { - if (proof != null && !proof.isDisposed()) { - return isTruthValueEvaluationEnabled(proof.getInitConfig()); - } else { - return false; - } - } - - /** - * Checks if truth value evaluation is enabled in the given {@link InitConfig}. - * - * @param initConfig The {@link InitConfig} to check. - * @return {@code true} truth value evaluation is enabled, {@code false} truth value evaluation - * is disabled. - */ - public static boolean isTruthValueEvaluationEnabled(InitConfig initConfig) { - if (initConfig != null) { - return isTruthValueEvaluationEnabled(initConfig.getProfile()); - } else { - return false; - } - } - - /** - * Checks if predicate evaluation is enabled in the given {@link Profile}. - * - * @param profile The {@link Profile} to check. - * @return {@code true} predicate evaluation is enabled, {@code false} predicate evaluation is - * disabled. - */ - public static boolean isTruthValueEvaluationEnabled(Profile profile) { - if (profile instanceof SymbolicExecutionJavaProfile) { - return ((SymbolicExecutionJavaProfile) profile).isPredicateEvaluationEnabled(); - } else { - return false; - } - } - - @Override - public String displayName() { - return NAME; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SymbolicExecutionJavaProfileDefaultProfileResolver.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SymbolicExecutionJavaProfileDefaultProfileResolver.java deleted file mode 100644 index 0540ea16ab5..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SymbolicExecutionJavaProfileDefaultProfileResolver.java +++ /dev/null @@ -1,31 +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.symbolic_execution.profile; - -import de.uka.ilkd.key.proof.init.DefaultProfileResolver; -import de.uka.ilkd.key.proof.init.Profile; - -/** - * A {@link DefaultProfileResolver} which returns - * {@link SymbolicExecutionJavaProfile#getDefaultInstance()}. - * - * @author Martin Hentschel - */ -public class SymbolicExecutionJavaProfileDefaultProfileResolver implements DefaultProfileResolver { - /** - * {@inheritDoc} - */ - @Override - public String getProfileName() { - return SymbolicExecutionJavaProfile.NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Profile getDefaultProfile() { - return SymbolicExecutionJavaProfile.getDefaultInstance(); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/AbstractSideProofRule.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/AbstractSideProofRule.java deleted file mode 100644 index 970edb2e2eb..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/AbstractSideProofRule.java +++ /dev/null @@ -1,137 +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.symbolic_execution.rule; - -import java.util.Deque; -import java.util.LinkedList; -import java.util.List; - -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.JFunction; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.rule.BuiltInRule; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil; - -import org.key_project.logic.Name; -import org.key_project.logic.Namespace; -import org.key_project.logic.PosInTerm; -import org.key_project.logic.op.Function; -import org.key_project.logic.sort.Sort; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.util.collection.Pair; - -/** - * Provides the basic functionality of {@link BuiltInRule} which computes something in a side proof. - * - * @author Martin Hentschel - */ -public abstract class AbstractSideProofRule implements BuiltInRule { - /** - *

- * Creates a constant which is used in the original {@link Proof} to store the computed result - * in form of {@code QueryResult = ...} - *

- *

- * The used name is registered in the {@link Namespace} of the {@link Services}. - *

- * - * @param services The {@link Services} to use- - * @param sort The {@link Sort} to use. - * @return The created constant. - */ - protected Function createResultConstant(Services services, Sort sort) { - String functionName = services.getTermBuilder().newName("QueryResult"); - Function function = new JFunction(new Name(functionName), sort); - services.getNamespaces().functions().addSafely(function); - return function; - } - - /** - * Creates the result {@link JFunction} used in a predicate to compute the result in the - * side - * proof. - * - * @param services The {@link Services} to use. - * @param sort The {@link Sort} to use. - * @return The created result {@link JFunction}. - */ - protected Function createResultFunction(Services services, Sort sort) { - return new JFunction(new Name(services.getTermBuilder().newName("ResultPredicate")), - JavaDLTheory.FORMULA, sort); - } - - /** - *

- * Starts the side proof and extracts the result {@link JTerm} and conditions. - *

- *

- * New used names are automatically added to the {@link Namespace} of the {@link Services}. - *

- * - * @param goal The {@link Goal} on which this {@link BuiltInRule} should be applied on. - * @param sideProofEnvironment The given {@link ProofEnvironment} of the side proof. - * @param sequentToProve The {@link Sequent} to prove in a side proof. - * @param newPredicate The {@link JFunction} which is used to compute the result. - * @return The found result {@link JTerm} and the conditions. - * @throws ProofInputException Occurred Exception. - */ - protected List computeResultsAndConditions(Goal goal, - ProofEnvironment sideProofEnvironment, Sequent sequentToProve, - Function newPredicate) throws ProofInputException { - return SymbolicExecutionSideProofUtil.computeResultsAndConditions(goal.getOverlayServices(), - goal.proof(), - sideProofEnvironment, sequentToProve, newPredicate, - "Side proof rule on node " + goal.node().serialNr() + ".", - StrategyProperties.METHOD_CONTRACT, StrategyProperties.LOOP_INVARIANT, - StrategyProperties.QUERY_ON, StrategyProperties.SPLITTING_DELAYED, true); - } - - /** - * Replaces the {@link JTerm} defined by the given {@link PosInOccurrence} with the given new - * {@link JTerm}. - * - * @param pio The {@link PosInOccurrence} which defines the {@link JTerm} to replace. - * @param newTerm The new {@link JTerm}. - * @return The created {@link SequentFormula} in which the {@link JTerm} is replaced. - */ - protected static SequentFormula replace(PosInOccurrence pio, - JTerm newTerm, Services services) { - // Iterate along the PosInOccurrence and collect the parents and indices - Deque> indexAndParents = new LinkedList<>(); - JTerm root = (JTerm) pio.sequentFormula().formula(); - final PosInTerm pit = pio.posInTerm(); - for (int i = 0, sz = pit.depth(); i < sz; i++) { - int next = pit.getIndexAt(i); - indexAndParents.addFirst(new Pair<>(next, root)); - root = root.sub(next); - } - // Iterate over the collected parents and replace terms - root = newTerm; - for (Pair pair : indexAndParents) { - JTerm parent = pair.second; - JTerm[] newSubs = parent.subs().toArray(new JTerm[parent.arity()]); - newSubs[pair.first] = root; - root = services.getTermFactory().createTerm(parent.op(), newSubs, parent.boundVars(), - parent.getLabels()); - } - return new SequentFormula(root); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isApplicableOnSubTerms() { - return false; - } - -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/ModalitySideProofRule.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/ModalitySideProofRule.java deleted file mode 100644 index 17ad88fed2f..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/ModalitySideProofRule.java +++ /dev/null @@ -1,247 +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.symbolic_execution.rule; - -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.TermBuilder; -import de.uka.ilkd.key.logic.TermServices; -import de.uka.ilkd.key.logic.op.*; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.rule.BuiltInRule; -import de.uka.ilkd.key.rule.DefaultBuiltInRuleApp; -import de.uka.ilkd.key.rule.IBuiltInRuleApp; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Name; -import org.key_project.logic.op.Function; -import org.key_project.prover.rules.RuleAbortException; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.util.collection.ImmutableArray; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.Pair; - -import org.jspecify.annotations.NonNull; - -/** - *

- * A {@link BuiltInRule} which evaluates a modality in a side proof. - *

- *

- * This rule is applicable on top level terms ({@link SequentFormula}) of the form. - *

    - *
  • {@code {...}\[...\]( = )} or
  • - *
  • {@code {...}\<...\>( = )} or
  • - *
  • {@code {...}\[...\]( = )} or
  • - *
  • {@code {...}\<...\>( = )}
  • - *
- * The leading updates are optional and any {@link JModality} is supported. - *

- *

- * The original {@link SequentFormula} which contains the equality is always removed in the - * following {@link Goal}. For each possible result value is a {@link SequentFormula} added to the - * {@link Sequent} of the form: - *

    - *
  • Antecedent: {@code -> = } or
  • - *
  • Antecedent: {@code -> = } or
  • - *
  • Succedent: {@code & = } or
  • - *
  • Succedent: {@code & = }
  • - *
- * The side proof uses the default side proof settings (splitting = delayed) and is started via - * {@link SymbolicExecutionSideProofUtil#startSideProof}. In - * case that at least one result branch has applicable rules an exception is thrown and the rule is - * aborted. - *

- * - * @author Martin Hentschel - */ -public class ModalitySideProofRule extends AbstractSideProofRule { - /** - * The singleton instance of this class. - */ - public static final ModalitySideProofRule INSTANCE = new ModalitySideProofRule(); - - /** - * The {@link Name} of this rule. - */ - private static final Name NAME = new Name("Evaluate Modality in Side Proof"); - - /** - * Constructor to forbid multiple instances. - */ - private ModalitySideProofRule() { - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isApplicable(Goal goal, PosInOccurrence pio) { - boolean applicable = false; - if (pio != null && pio.isTopLevel()) { - // abort if inside of transformer - if (Transformer.inTransformer(pio)) { - return false; - } - JTerm term = TermBuilder.goBelowUpdates((JTerm) pio.subTerm()); - if (term.op() instanceof JModality - && SymbolicExecutionUtil.getSymbolicExecutionLabel(term) == null) { - JTerm equalityTerm = term.sub(0); - if (equalityTerm.op() == Junctor.IMP) { - equalityTerm = equalityTerm.sub(0); - } - if (equalityTerm.op() == Junctor.NOT) { - equalityTerm = equalityTerm.sub(0); - } - if (equalityTerm.op() == Equality.EQUALS) { - if (equalityTerm.sub(0).op() instanceof IProgramVariable - || equalityTerm.sub(1).op() instanceof IProgramVariable) { - - applicable = true; - } - } - } - } - return applicable; - } - - /** - * {@inheritDoc} - */ - @Override - public IBuiltInRuleApp createApp(PosInOccurrence pos, TermServices services) { - return new DefaultBuiltInRuleApp(this, pos); - } - - /** - * {@inheritDoc} - */ - @Override - public @NonNull ImmutableList apply(Goal goal, RuleApp ruleApp) - throws RuleAbortException { - try { - // Extract required Terms from goal - PosInOccurrence pio = ruleApp.posInOccurrence(); - JTerm topLevelTerm = (JTerm) pio.subTerm(); - Pair, JTerm> updatesAndTerm = - TermBuilder.goBelowUpdates2(topLevelTerm); - JTerm modalityTerm = updatesAndTerm.second; - ImmutableList updates = updatesAndTerm.first; - boolean inImplication = false; - JTerm equalityTerm = modalityTerm.sub(0); - if (equalityTerm.op() == Junctor.IMP) { - inImplication = true; - equalityTerm = equalityTerm.sub(0); - } - boolean negation = false; - if (equalityTerm.op() == Junctor.NOT) { - negation = true; - equalityTerm = equalityTerm.sub(0); - } - JTerm otherTerm; - JTerm varTerm; - boolean varFirst; - if (equalityTerm.sub(0).op() instanceof LocationVariable) { - otherTerm = equalityTerm.sub(1); - varTerm = equalityTerm.sub(0); - varFirst = true; - } else { - otherTerm = equalityTerm.sub(0); - varTerm = equalityTerm.sub(1); - varFirst = false; - } - // Compute sequent for side proof to compute query in. - // New OneStepSimplifier is required because it has an internal state and the default - // instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(goal.proof(), true); - final Services sideProofServices = sideProofEnv.getServicesForEnvironment(); - Sequent sequentToProve = SymbolicExecutionSideProofUtil - .computeGeneralSequentToProve(goal.sequent(), - pio.sequentFormula()); - Function newPredicate = createResultFunction(sideProofServices, varTerm.sort()); - final TermBuilder tb = sideProofServices.getTermBuilder(); - JTerm newTerm = tb.func(newPredicate, varTerm); - JTerm newModalityTerm = sideProofServices.getTermFactory().createTerm(modalityTerm.op(), - new ImmutableArray<>(newTerm), modalityTerm.boundVars(), - modalityTerm.getLabels()); - JTerm newModalityWithUpdatesTerm = tb.applySequential(updates, newModalityTerm); - sequentToProve = sequentToProve - .addFormula(new SequentFormula(newModalityWithUpdatesTerm), false, false) - .sequent(); - // Compute results and their conditions - List conditionsAndResultsMap = - computeResultsAndConditions(goal, sideProofEnv, sequentToProve, - newPredicate); - // Create new single goal in which the query is replaced by the possible results - ImmutableList goals = goal.split(1); - Goal resultGoal = goals.head(); - resultGoal.removeFormula(pio); - // Create results - Set resultTerms = new LinkedHashSet<>(); - for (ResultsAndCondition conditionsAndResult : conditionsAndResultsMap) { - JTerm conditionTerm = tb.and(conditionsAndResult.conditions()); - JTerm resultEqualityTerm = - varFirst ? tb.equals(conditionsAndResult.result(), otherTerm) - : tb.equals(otherTerm, conditionsAndResult.result()); - JTerm resultTerm = pio.isInAntec() ? tb.imp(conditionTerm, resultEqualityTerm) - : tb.and(conditionTerm, resultEqualityTerm); - resultTerms.add(resultTerm); - } - // Add results to goal - if (inImplication) { - // Change implication - JTerm newCondition = tb.or(resultTerms); - if (negation) { - newCondition = tb.not(newCondition); - } - JTerm newImplication = tb.imp(newCondition, modalityTerm.sub(0).sub(1)); - JTerm newImplicationWithUpdates = tb.applySequential(updates, newImplication); - resultGoal.addFormula(new SequentFormula(newImplicationWithUpdates), - pio.isInAntec(), false); - } else { - // Add result directly as new top level formula - for (JTerm result : resultTerms) { - resultGoal.addFormula(new SequentFormula(result), pio.isInAntec(), false); - } - } - return goals; - } catch (Exception e) { - throw new RuleAbortException(e.getMessage()); - } - } - - /** - * {@inheritDoc} - */ - @Override - public Name name() { - return NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public String displayName() { - return NAME.toString(); - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return displayName(); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/QuerySideProofRule.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/QuerySideProofRule.java deleted file mode 100644 index 614dcb995db..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/QuerySideProofRule.java +++ /dev/null @@ -1,307 +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.symbolic_execution.rule; - -import java.util.List; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.TermBuilder; -import de.uka.ilkd.key.logic.TermServices; -import de.uka.ilkd.key.logic.op.*; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.rule.BuiltInRule; -import de.uka.ilkd.key.rule.DefaultBuiltInRuleApp; -import de.uka.ilkd.key.rule.IBuiltInRuleApp; -import de.uka.ilkd.key.rule.QueryExpand; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil; - -import org.key_project.logic.Name; -import org.key_project.logic.op.Function; -import org.key_project.logic.sort.Sort; -import org.key_project.prover.rules.RuleAbortException; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PIOPathIterator; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.util.collection.ImmutableList; - -import org.jspecify.annotations.NonNull; - -/** - *

- * A {@link BuiltInRule} which evaluates a query in a side proof. - *

- *

- * This rule is applicable on each equality which contains a query: - *

    - *
  • {@code ...( = )...} or
  • - *
  • {@code ...( = )...}
  • - *
- *

- *

- * The original {@link SequentFormula} which contains the equality is always removed in the - * following {@link Goal}. How the result of the query computed in the side proof is represented - * depends on the occurrence of the equality: - *

    - *
  1. top level {@code = } or {@code = }
    - * For each possible result value is a {@link SequentFormula} added to the {@link Sequent} of the - * form: - *
      - *
    • Antecedent: {@code -> = } or
    • - *
    • Antecedent: {@code -> = } or
    • - *
    • Succedent: {@code & = } or
    • - *
    • Succedent: {@code & = }
    • - *
    - *
  2. - *
  3. right side of an implication on top level - * {@code -> = } or - * {@code -> = }
    - * For each possible result value is a {@link SequentFormula} added to the {@link Sequent} of the - * form: - *
      - *
    • Antecedent: {@code - * - * - -
      - *  -> ( ->  = )} or
    • - *
    • Antecedent: {@code - * - * - -
      - *  -> ( ->  = )} or
    • - *
    • Succedent: {@code - * - * - -
      - *  -> ( &  = )} or
    • - *
    • Succedent: {@code - * - * - -
      - *  -> ( &  = )}
    • - *
    - *
  4. - *
  5. everywhere else {@code ...( = )...} or - * {@code ...( = )...}
    - * In the original {@link SequentFormula} is the {@code } replaced by a new constant function - * named {@code QueryResult} and added to the antecedent/succedent in which it was contained before. - * For each possible result value is an additional {@link SequentFormula} added to the - * antecedent of the form: - *
      - *
    • {@code -> QueryResult = } or
    • - *
    • {@code -> = QueryResult}
    • - *
    - *
  6. - *
- * The side proof uses the default side proof settings (splitting = delayed) and is started via - * {@link SymbolicExecutionSideProofUtil#startSideProof}. In - * case that at least one result branch has applicable rules an exception is thrown and the rule is - * aborted. - *

- * - * @author Martin Hentschel - */ -public final class QuerySideProofRule extends AbstractSideProofRule { - /** - * The singleton instance of this class. - */ - public static final QuerySideProofRule INSTANCE = new QuerySideProofRule(); - - /** - * The {@link Name} of this rule. - */ - private static final Name NAME = new Name("Evaluate Query in Side Proof"); - - /** - * Constructor to forbid multiple instances. - */ - private QuerySideProofRule() { - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isApplicable(Goal goal, PosInOccurrence pio) { - boolean applicable = false; - if (pio != null) { - // abort if inside of transformer - if (Transformer.inTransformer(pio)) { - return false; - } - JTerm term = (JTerm) pio.subTerm(); - if (term != null) { - if (term.op() == Equality.EQUALS) { - applicable = isApplicableQuery(goal, term.sub(0), pio) - || isApplicableQuery(goal, term.sub(1), pio); - } - } - } - return applicable; - } - - /** - * Checks if the query term is supported. The functionality is identical to - * {@link QueryExpand#isApplicable(Goal, PosInOccurrence)}. - * - * @param goal The {@link Goal}. - * @param pmTerm The {@link JTerm} to with the query to check. - * @param pio The {@link PosInOccurrence} in the {@link Goal}. - * @return {@code true} is applicable, {@code false} is not applicable - */ - private boolean isApplicableQuery(Goal goal, JTerm pmTerm, - PosInOccurrence pio) { - if (pmTerm.op() instanceof IProgramMethod pm && pmTerm.freeVars().isEmpty()) { - final Sort nullSort = goal.proof().getJavaInfo().nullSort(); - if (pm.isStatic() - || (pmTerm.sub(1).sort().extendsTrans(goal.proof().getJavaInfo().objectSort()) - && !pmTerm.sub(1).sort().extendsTrans(nullSort))) { - PIOPathIterator it = pio.iterator(); - while (it.next() != -1) { - var focus = it.getSubTerm(); - if (focus.op() instanceof UpdateApplication - || focus.op() instanceof JModality) { - return false; - } - } - return true; - } - } - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public IBuiltInRuleApp createApp(PosInOccurrence pos, TermServices services) { - return new DefaultBuiltInRuleApp(this, pos); - } - - /** - * {@inheritDoc} - */ - @Override - public @NonNull ImmutableList apply(Goal goal, RuleApp ruleApp) - throws RuleAbortException { - try { - // Extract required Terms from goal - PosInOccurrence pio = ruleApp.posInOccurrence(); - Sequent goalSequent = goal.sequent(); - var equalitySF = pio.sequentFormula(); - JTerm equalityTerm = (JTerm) pio.subTerm(); - JTerm queryTerm; - JTerm varTerm; - boolean varFirst; - if (equalityTerm.sub(0).op() instanceof LocationVariable) { - queryTerm = equalityTerm.sub(1); - varTerm = equalityTerm.sub(0); - varFirst = true; - } else { - queryTerm = equalityTerm.sub(0); - varTerm = equalityTerm.sub(1); - varFirst = false; - } - JTerm queryConditionTerm = null; - if (equalitySF.formula().op() == Junctor.IMP - && equalitySF.formula().sub(1) == equalityTerm) { - queryConditionTerm = (JTerm) equalitySF.formula().sub(0); - } - // Compute sequent for side proof to compute query in. - // New OneStepSimplifier is required because it has an internal state and the default - // instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(goal.proof(), true); - final Services sideProofServices = sideProofEnv.getServicesForEnvironment(); - Sequent sequentToProve = SymbolicExecutionSideProofUtil - .computeGeneralSequentToProve(goalSequent, equalitySF); - Function newPredicate = createResultFunction(sideProofServices, queryTerm.sort()); - JTerm newTerm = sideProofServices.getTermBuilder().func(newPredicate, queryTerm); - sequentToProve = - sequentToProve.addFormula(new SequentFormula(newTerm), false, false) - .sequent(); - // Compute results and their conditions - List conditionsAndResultsMap = - computeResultsAndConditions(goal, sideProofEnv, sequentToProve, - newPredicate); - // Create new single goal in which the query is replaced by the possible results - ImmutableList goals = goal.split(1); - Goal resultGoal = goals.head(); - final var services = goal.getOverlayServices(); - final TermBuilder tb = services.getTermBuilder(); - resultGoal.removeFormula(pio); - if (pio.isTopLevel() || queryConditionTerm != null) { - for (ResultsAndCondition conditionsAndResult : conditionsAndResultsMap) { - JTerm conditionTerm = tb.and(conditionsAndResult.conditions()); - JTerm newEqualityTerm = - varFirst ? tb.equals(varTerm, conditionsAndResult.result()) - : tb.equals(conditionsAndResult.result(), varTerm); - JTerm resultTerm = pio.isInAntec() ? tb.imp(conditionTerm, newEqualityTerm) - : tb.and(conditionTerm, newEqualityTerm); - if (queryConditionTerm != null) { - resultTerm = tb.imp(queryConditionTerm, resultTerm); - } - resultGoal.addFormula(new SequentFormula(resultTerm), pio.isInAntec(), false); - } - } else { - Function resultFunction = createResultConstant(services, varTerm.sort()); - JTerm resultFunctionTerm = tb.func(resultFunction); - resultGoal.addFormula( - replace(pio, - tb.equals(resultFunctionTerm, varTerm), - services), - pio.isInAntec(), false); - for (ResultsAndCondition conditionsAndResult : conditionsAndResultsMap) { - JTerm conditionTerm = tb.and(conditionsAndResult.conditions()); - JTerm resultTerm = tb.imp(conditionTerm, - varFirst ? tb.equals(resultFunctionTerm, conditionsAndResult.result()) - : tb.equals(conditionsAndResult.result(), resultFunctionTerm)); - resultGoal.addFormula(new SequentFormula(resultTerm), true, false); - } - } - return goals; - } catch (Exception e) { - throw new RuleAbortException(e.getMessage()); - } - } - - /** - * {@inheritDoc} - */ - @Override - public Name name() { - return NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public String displayName() { - return NAME.toString(); - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return displayName(); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isApplicableOnSubTerms() { - return true; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/ResultsAndCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/ResultsAndCondition.java deleted file mode 100644 index a581ac63d82..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/rule/ResultsAndCondition.java +++ /dev/null @@ -1,19 +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.symbolic_execution.rule; - -import java.util.Set; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.Node; - -/** - * The return value of a side proof. - * - * @param result a term representing the result (first formula of succedent) - * @param conditions formulas of the antecedent - * @param node the final node of the side proof - */ -public record ResultsAndCondition(JTerm result, Set conditions, Node node) { -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/AbstractBackwardSlicer.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/AbstractBackwardSlicer.java deleted file mode 100644 index 50ecca997ca..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/AbstractBackwardSlicer.java +++ /dev/null @@ -1,205 +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.symbolic_execution.slicing; - -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.SortedSet; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.NonTerminalProgramElement; -import de.uka.ilkd.key.java.ast.ProgramElement; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.expression.Expression; -import de.uka.ilkd.key.java.ast.expression.operator.CopyAssignment; -import de.uka.ilkd.key.java.ast.reference.ReferencePrefix; -import de.uka.ilkd.key.java.ast.reference.ThisReference; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicEquivalenceClass; - -import org.key_project.util.collection.ImmutableArray; -import org.key_project.util.collection.ImmutableList; - -/** - * Provides a basic implementation of backward slicing algorithms. - * - * @author Martin Hentschel - */ -public abstract class AbstractBackwardSlicer extends AbstractSlicer { - /** - * {@inheritDoc} - */ - @Override - public ImmutableArray doSlicing(Node seedNode, Location seedLocation, - ImmutableList sec) throws ProofInputException { - final Services services = seedNode.proof().getServices(); - Set relevantLocations = null; - List result = new LinkedList<>(); - Map> oldAliases = null; - Node previousChild = null; - while (seedNode != null && (relevantLocations == null || !relevantLocations.isEmpty())) { - if (NodeInfo.isSymbolicExecutionRuleApplied(seedNode)) { - SequentInfo info = analyzeSequent(seedNode, sec); - if (info != null) { // Modality of interest - SourceElement activeStatement = seedNode.getNodeInfo().getActiveStatement(); - Map> aliases = info.getAliases(); - ReferencePrefix thisReference = info.getThisReference(); - if (relevantLocations == null) { - // Initialize relevant locations if required - relevantLocations = new HashSet<>(); - relevantLocations.add(normalizeAlias(services, seedLocation, info)); - } - // Check if current node is part of the slice or not - if (accept(seedNode, previousChild, services, relevantLocations, info, - activeStatement)) { - result.add(seedNode); - } - if (oldAliases != null) { - try { - // Update relevant locations if required - if (activeStatement instanceof CopyAssignment) { - SourceElement originalTarget = - ((CopyAssignment) activeStatement).getArguments().get(0); - ReferencePrefix relevantTarget = toReferencePrefix(originalTarget); - Location normalizedPrefix = - normalizeAlias(services, relevantTarget, info); - relevantLocations = - updateOutdatedLocations(services, relevantLocations, aliases, - oldAliases, normalizedPrefix, thisReference); - } - } catch (IllegalArgumentException e) { - // Nothing to do, expression with side effects is evaluated - } - } - oldAliases = aliases; - } - } - previousChild = seedNode; - seedNode = seedNode.parent(); - } - return new ImmutableArray<>(result); - } - - /** - * Decides if the given {@link Node} is part of the slice or not. - * - * @param node The {@link Node} to check. - * @param previousChild The previously visited child {@link Node} or {@code null} the first - * time. - * @param services The {@link Services} to use. - * @param relevantLocations The relevant locations. - * @param info The {@link SequentInfo} with the aliases and so on. - * @param activeStatement The currently active statement. - * @return {@code true} {@link Node} should be part of slice, {@code false} {@link Node} should - * not be part of slice. - */ - protected abstract boolean accept(Node node, Node previousChild, Services services, - Set relevantLocations, SequentInfo info, SourceElement activeStatement) - throws ProofInputException; - - /** - * Updates the relevant locations. - * - * @param read The {@link Expression} which provides new relevant locations. - * @param relevantLocations The relevant locations to update. - * @param info The {@link SequentInfo} with the aliases and so on. - * @param services The {@link Services} to use. - */ - protected void updateRelevantLocations(final ProgramElement read, - final Set relevantLocations, final SequentInfo info, - final Services services) { - ReferencePrefix relevantElement = toReferencePrefix(read); - if (relevantElement != null) { - Location normalizedElement = normalizeAlias(services, relevantElement, info); - relevantLocations.add(normalizedElement); - } else if (read instanceof NonTerminalProgramElement ntpe) { - for (int i = 0; i < ntpe.getChildCount(); i++) { - updateRelevantLocations(ntpe.getChildAt(i), relevantLocations, info, services); - } - } - } - - /** - * Updates the outdated locations. This means that locations with the given prefix are replaced - * with another previously (old) available alternative. - * - * @param services - * The {@link Services} to use. - * @param oldLocationsToUpdate - * The locations to update. - * @param newAliases - * The new aliases. - * @param oldAliases - * The old aliases. - * @param outdatedPrefix - * The prefix of outdated locations. - * @param thisReference - * The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - * @return The updated locations. - */ - protected Set updateOutdatedLocations(Services services, - Set oldLocationsToUpdate, Map> newAliases, - Map> oldAliases, Location outdatedPrefix, - ReferencePrefix thisReference) { - // Ensure that at least one possibly outdated location is available. - if (!oldLocationsToUpdate.isEmpty()) { - // Ensure that alternatives are different - SortedSet newAlternatives = newAliases.get(outdatedPrefix); - if (newAlternatives == null) { - newAlternatives = createSortedSet(); - newAlternatives.add(outdatedPrefix); - } - SortedSet oldAlternatives = oldAliases.get(outdatedPrefix); - if (oldAlternatives == null) { - oldAlternatives = createSortedSet(); - oldAlternatives.add(outdatedPrefix); - } - if (!newAlternatives.equals(oldAlternatives)) { - // Compute old variables - ImmutableList> newAlternativeVariables = - ImmutableList.nil(); - for (Location newALternative : newAlternatives) { - newAlternativeVariables = - newAlternativeVariables.prepend(newALternative.getAccesses()); - } - // Compute new alternative - Location newAlternative = findNewAlternative(oldAlternatives, newAlternatives); - // Compute new locations - Set newLocations = new HashSet<>(); - for (Location oldLocation : oldLocationsToUpdate) { - ImmutableList oldVariables = oldLocation.getAccesses(); - int commonPrefixLength = - computeFirstCommonPrefixLength(newAlternativeVariables, oldVariables); - if (commonPrefixLength >= 1) { - if (newAlternative != null) { // Otherwise the relevant location is dropped - // because it was not known before - if (commonPrefixLength == oldVariables.size()) { - newLocations.add(newAlternative); - } else { - ImmutableList oldRemainignVariables = - oldVariables.skip(commonPrefixLength); - ImmutableList newAccesses = - newAlternative.getAccesses().append(oldRemainignVariables); - newLocations.add(new Location(newAccesses)); - } - } - } else { - newLocations.add(oldLocation); // Maintain location - } - } - return newLocations; - } else { - return oldLocationsToUpdate; - } - } else { - return oldLocationsToUpdate; - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/AbstractSlicer.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/AbstractSlicer.java deleted file mode 100644 index 2ed640332d2..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/AbstractSlicer.java +++ /dev/null @@ -1,1072 +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.symbolic_execution.slicing; - -import java.util.*; - -import de.uka.ilkd.key.java.JavaTools; -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.expression.Expression; -import de.uka.ilkd.key.java.ast.expression.PassiveExpression; -import de.uka.ilkd.key.java.ast.reference.*; -import de.uka.ilkd.key.ldt.HeapLDT; -import de.uka.ilkd.key.ldt.JavaDLTheory; -import de.uka.ilkd.key.logic.*; -import de.uka.ilkd.key.logic.label.ParameterlessTermLabel; -import de.uka.ilkd.key.logic.label.SymbolicExecutionTermLabel; -import de.uka.ilkd.key.logic.op.*; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicEquivalenceClass; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; -import de.uka.ilkd.key.util.ProofStarter; -import de.uka.ilkd.key.util.SideProofUtil; - -import org.key_project.logic.Name; -import org.key_project.logic.op.Function; -import org.key_project.logic.op.UpdateableOperator; -import org.key_project.logic.sort.Sort; -import org.key_project.prover.engine.impl.ApplyStrategyInfo; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.util.collection.ImmutableArray; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.Pair; -import org.key_project.util.java.CollectionUtil; - -/** - * Defines the basic functionality for slicing algorithms. - * - * @author Martin Hentschel - */ -public abstract class AbstractSlicer { - /** - * Computes the slice. - * - * @param seedNode The seed {@link Node} to start slicing at. - * @param term The seed {@link JTerm}. - * @param sec The optional {@link ISymbolicEquivalenceClass}es to consider. - * @return The computed slice. - */ - public ImmutableArray slice(Node seedNode, JTerm term, - ImmutableList sec) throws ProofInputException { - return slice(seedNode, toLocation(seedNode.proof().getServices(), term), sec); - } - - /** - * Computes the slice. - * - * @param seedNode The seed {@link Node} to start slicing at. - * @param seedLocation The seed {@link ReferencePrefix}. - * @param sec The optional {@link ISymbolicEquivalenceClass}es to consider. - * @return The computed slice. - */ - public ImmutableArray slice(Node seedNode, ReferencePrefix seedLocation, - ImmutableList sec) throws ProofInputException { - // Solve this reference - PosInOccurrence pio = - seedNode.getAppliedRuleApp().posInOccurrence(); - final JTerm topLevel = (JTerm) pio.sequentFormula().formula(); - JTerm modalityTerm = TermBuilder.goBelowUpdates(topLevel); - Services services = seedNode.proof().getServices(); - ExecutionContext ec = - JavaTools.getInnermostExecutionContext(modalityTerm.javaBlock(), services); - ReferencePrefix thisReference = ec != null ? ec.getRuntimeInstance() : null; - // Perform slicing - return slice(seedNode, toLocation(services, seedLocation, ec, thisReference), sec); - } - - /** - * Computes the slice. - * - * @param seedNode The seed {@link Node} to start slicing at. - * @param seedLocation The seed {@link ReferencePrefix}. - * @param sec The optional {@link ISymbolicEquivalenceClass}es to consider. - * @return The computed slice. - */ - public ImmutableArray slice(Node seedNode, Location seedLocation, - ImmutableList sec) throws ProofInputException { - // Ensure that seed node is valid - if (seedNode.getAppliedRuleApp() == null) { - throw new IllegalStateException( - "No rule applied on seed Node '" + seedNode.serialNr() + "'."); - } - PosInOccurrence pio = - seedNode.getAppliedRuleApp().posInOccurrence(); - JTerm applicationTerm = (JTerm) pio.subTerm(); - Pair, JTerm> pair = TermBuilder.goBelowUpdates2(applicationTerm); - JTerm modalityTerm = pair.second; - SymbolicExecutionTermLabel label = - SymbolicExecutionUtil.getSymbolicExecutionLabel(modalityTerm); - if (label == null) { - throw new IllegalStateException("Modality at applied rule does not have the " - + SymbolicExecutionTermLabel.NAME + " term label."); - } - // Perform slicing - return doSlicing(seedNode, seedLocation, sec); - } - - /** - * Performs the slicing. - * - * @param seedNode The seed {@link Node} to start slicing at. - * @param seedLocation The seed {@link Location}. - * @param sec The optional {@link ISymbolicEquivalenceClass}es to consider. - * @return The computed slice. - */ - protected abstract ImmutableArray doSlicing(Node seedNode, Location seedLocation, - ImmutableList sec) throws ProofInputException; - - /** - * The result returned by {@link AbstractSlicer#analyzeSequent}. - * - * @author Martin Hentschel - */ - protected static class SequentInfo { - /** - * The found aliases. - */ - private final Map> aliases; - - /** - * The local values. - */ - private final Map localValues; - - /** - * The current {@link ExecutionContext}. - */ - private final ExecutionContext executionContext; - - /** - * The 'this'-reference if available. - */ - private final ReferencePrefix thisReference; - - /** - * Constructor. - * - * @param aliases The found aliases. - * @param thisReference The this-reference if available. - */ - public SequentInfo(Map> aliases, - Map localValues, ExecutionContext executionContext, - ReferencePrefix thisReference) { - assert aliases != null; - assert localValues != null; - this.aliases = aliases; - this.localValues = localValues; - this.executionContext = executionContext; - this.thisReference = thisReference; - } - - /** - * Returns the found aliases. - * - * @return The found aliases. - */ - public Map> getAliases() { - return aliases; - } - - /** - * Returns the local values. - * - * @return The local values. - */ - public Map getLocalValues() { - return localValues; - } - - /** - * Returns the current {@link ExecutionContext}. - * - * @return The current {@link ExecutionContext}. - */ - public ExecutionContext getExecutionContext() { - return executionContext; - } - - /** - * Returns the this-reference if available. - * - * @return The this-reference if available. - */ - public ReferencePrefix getThisReference() { - return thisReference; - } - } - - /** - * Computes the aliases specified by the updates of the current {@link Node} at the application - * {@link PosInOccurrence} and computes the current {@code this} reference. - * - * @param node The {@link Node} to analyze. - * @return The computed {@link SequentInfo} or {@code null} if the {@link Node} is not - * supported. - */ - protected SequentInfo analyzeSequent(Node node, ImmutableList sec) { - PosInOccurrence pio = - node.getAppliedRuleApp().posInOccurrence(); - JTerm topLevel = (JTerm) pio.sequentFormula().formula(); - Pair, JTerm> pair = TermBuilder.goBelowUpdates2(topLevel); - JTerm modalityTerm = pair.second; - SymbolicExecutionTermLabel label = - SymbolicExecutionUtil.getSymbolicExecutionLabel(modalityTerm); - Services services = node.proof().getServices(); - HeapLDT heapLDT = services.getTypeConverter().getHeapLDT(); - if (label != null) { - // Solve this reference - ExecutionContext ec = - JavaTools.getInnermostExecutionContext(modalityTerm.javaBlock(), services); - ReferencePrefix thisReference = ec != null ? ec.getRuntimeInstance() : null; - // Compute aliases - Map> aliases = - new HashMap<>(); - Map localValues = new HashMap<>(); - analyzeEquivalenceClasses(services, sec, aliases, thisReference); - analyzeSequent(services, node.sequent(), aliases, thisReference); - analyzeUpdates(pair.first, services, heapLDT, aliases, localValues, ec, thisReference); - return new SequentInfo(aliases, localValues, ec, thisReference); - } else { - return null; // Not the modality of interest. - } - } - - /** - * Analyzes the given {@link ISymbolicEquivalenceClass}es. - * - * @param services The {@link Services} to use. - * @param sec The {@link ISymbolicEquivalenceClass} to analyze. - * @param aliases The alias {@link Map} to fill. - * @param thisReference The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - */ - protected void analyzeEquivalenceClasses(Services services, - ImmutableList sec, - Map> aliases, ReferencePrefix thisReference) { - if (sec != null) { - for (ISymbolicEquivalenceClass eq : sec) { - ImmutableList terms = eq.getTerms(); - List locations = new ArrayList<>(terms.size()); - for (JTerm term : terms) { - if (SymbolicExecutionUtil.hasReferenceSort(services, term)) { - Location location = toLocation(services, term); - if (location != null) { - locations.add(location); - } - } - } - if (locations.size() >= 2) { - Location first = null; - for (Location location : locations) { - if (first == null) { - first = location; - } else { - updateAliases(services, first, location, aliases, thisReference); - } - } - } - } - } - } - - /** - * Analyzes the given {@link Sequent} for equalities specified by top level formulas. - * - * @param services The {@link Services} to use. - * @param sequent The {@link Sequent} to analyze. - * @param aliases The alias {@link Map} to fill. - * @param thisReference The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - */ - protected void analyzeSequent(Services services, Sequent sequent, - Map> aliases, ReferencePrefix thisReference) { - for (SequentFormula sf : sequent.antecedent()) { - JTerm term = (JTerm) sf.formula(); - if (Equality.EQUALS == term.op()) { - analyzeEquality(services, term, aliases, thisReference); - } - } - for (SequentFormula sf : sequent.succedent()) { - JTerm term = (JTerm) sf.formula(); - if (Junctor.NOT == term.op()) { - JTerm negatedTerm = term.sub(0); - if (Equality.EQUALS == negatedTerm.op()) { - analyzeEquality(services, negatedTerm, aliases, thisReference); - } - } - } - } - - /** - * Analyzes the given equality {@link JTerm} for aliased locations. - * - * @param services The {@link Services} to use. - * @param equality The equality {@link JTerm} to analyze. - * @param aliases The alias {@link Map} to fill. - * @param thisReference The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - */ - protected void analyzeEquality(Services services, JTerm equality, - Map> aliases, ReferencePrefix thisReference) { - JTerm firstSub = equality.sub(0); - JTerm secondSub = equality.sub(1); - if (SymbolicExecutionUtil.hasReferenceSort(services, firstSub) - && SymbolicExecutionUtil.hasReferenceSort(services, secondSub)) { - Location first = toLocation(services, firstSub); - Location second = toLocation(services, secondSub); - if (first != null && second != null) { - updateAliases(services, first, second, aliases, thisReference); - } - } - } - - /** - * Utility method used by {@link #analyzeSequent} to analyze the given updates. - * - * @param updates The update {@link JTerm}s to analyze. - * @param services The {@link Services} to use. - * @param heapLDT The {@link HeapLDT} of the {@link Services}. - * @param aliases The alias {@link Map} to fill. - * @param localValues The local values to fill. - * @param ec The current {@link ExecutionContext}. - * @param thisReference The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - */ - protected void analyzeUpdates(ImmutableList updates, Services services, HeapLDT heapLDT, - Map> aliases, Map localValues, - ExecutionContext ec, ReferencePrefix thisReference) { - for (JTerm update : updates) { - analyzeUpdate(update, services, heapLDT, aliases, localValues, ec, thisReference); - } - } - - /** - * Recursive utility method used by - * {@link #analyzeUpdates} to analyze a given update. - * - * @param term The update {@link JTerm} to analyze. - * @param services The {@link Services} to use. - * @param heapLDT The {@link HeapLDT} of the {@link Services}. - * @param aliases The alias {@link Map} to fill. - * @param localValues The local values to fill. - * @param ec The current {@link ExecutionContext}. - * @param thisReference The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - */ - protected void analyzeUpdate(JTerm term, Services services, HeapLDT heapLDT, - Map> aliases, Map localValues, - ExecutionContext ec, ReferencePrefix thisReference) { - if (term.op() == UpdateJunctor.PARALLEL_UPDATE - || term.op() == UpdateApplication.UPDATE_APPLICATION) { - for (int i = 0; i < term.arity(); i++) { - analyzeUpdate(term.sub(i), services, heapLDT, aliases, localValues, ec, - thisReference); - } - } else if (term.op() instanceof ElementaryUpdate) { - UpdateableOperator target = ((ElementaryUpdate) term.op()).lhs(); - if (SymbolicExecutionUtil.isHeap(target, heapLDT)) { - analyzeHeapUpdate(term.sub(0), services, heapLDT, aliases, thisReference); - } else { - if (target instanceof ProgramVariable) { - localValues.put((ProgramVariable) target, term.sub(0)); - } - Location sourceLocation = toLocation(services, term.sub(0)); - if (target instanceof ReferencePrefix && sourceLocation != null) { - Location targetLocation = - toLocation(services, (ReferencePrefix) target, ec, thisReference); - updateAliases(services, targetLocation, sourceLocation, aliases, thisReference); - } - } - } else { - throw new IllegalArgumentException("Can not analyze update '" + term + "'."); - } - } - - /** - * Recursive utility method used by {@link #analyzeUpdate} to - * analyze a given update. - * - * @param term The heap update {@link JTerm} to analyze. - * @param services The {@link Services} to use. - * @param heapLDT The {@link HeapLDT} of the {@link Services}. - * @param aliases The alias {@link Map} to fill. - * @param thisReference The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - */ - protected void analyzeHeapUpdate(JTerm term, Services services, HeapLDT heapLDT, - Map> aliases, ReferencePrefix thisReference) { - final Function store = heapLDT.getStore(); - final Function create = heapLDT.getCreate(); - if (term.op() == store) { - // Analyze parent heap - analyzeHeapUpdate(term.sub(0), services, heapLDT, aliases, thisReference); - // Check for alias in current store - if (SymbolicExecutionUtil.hasReferenceSort(services, term.sub(3))) { - Location source = toLocation(services, term.sub(3)); - if (source != null) { - Location targetPrefix = toLocation(services, term.sub(1)); - Location targetVariable = toLocation(services, term.sub(2)); - updateAliases(services, - targetPrefix != null ? targetPrefix.append(targetVariable) : targetVariable, - source, aliases, thisReference); - } - } - } else if (term.op() == create) { - // Analyze parent heap - analyzeHeapUpdate(term.sub(0), services, heapLDT, aliases, thisReference); - } else if (term.op() instanceof IProgramVariable) { - // Nothing to do, root of heap reached. - } else if (SymbolicExecutionUtil.isHeap(term.op(), heapLDT)) { - // Nothing to do, just another heap - } else { - throw new IllegalStateException("Can not analyze heap update '" + term + "'."); - } - } - - /** - * Recursive method to list all modified {@link Location}s in the given {@link JTerm}. - * - * @param term The update {@link JTerm} to analyze. - * @param services The {@link Services} to use. - * @param heapLDT The {@link HeapLDT} of the {@link Services}. - * @param listToFill The result {@link List} with {@link Location}s to fill. - * @param ec The current {@link ExecutionContext}. - * @param thisReference The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - */ - protected void listModifiedLocations(JTerm term, Services services, HeapLDT heapLDT, - List listToFill, ExecutionContext ec, ReferencePrefix thisReference, - Set relevantLocations, Node node) throws ProofInputException { - if (term.op() == UpdateJunctor.PARALLEL_UPDATE - || term.op() == UpdateApplication.UPDATE_APPLICATION) { - for (int i = 0; i < term.arity(); i++) { - listModifiedLocations(term.sub(i), services, heapLDT, listToFill, ec, thisReference, - relevantLocations, node); - } - } else if (term.op() instanceof ElementaryUpdate) { - UpdateableOperator target = ((ElementaryUpdate) term.op()).lhs(); - if (SymbolicExecutionUtil.isBaseHeap(target, heapLDT)) { - listModifiedHeapLocations(term.sub(0), services, heapLDT, listToFill, thisReference, - relevantLocations, node); - } else { - if (target instanceof ProgramVariable) { - listToFill - .add(toLocation(services, (ProgramVariable) target, ec, thisReference)); - } - } - } else { - throw new IllegalArgumentException("Can not analyze update '" + term + "'."); - } - } - - /** - * Recursive utility method used by - * {@link #listModifiedLocations} to analyze a - * given update. - * - * @param term The heap update {@link JTerm} to analyze. - * @param services The {@link Services} to use. - * @param heapLDT The {@link HeapLDT} of the {@link Services}. - * @param listToFill The result {@link List} with {@link Location}s to fill. - * @param thisReference The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - */ - protected void listModifiedHeapLocations(JTerm term, Services services, HeapLDT heapLDT, - List listToFill, ReferencePrefix thisReference, - Set relevantLocations, Node node) throws ProofInputException { - if (term.op() == heapLDT.getStore()) { - // Analyze parent heap - listModifiedHeapLocations(term.sub(0), services, heapLDT, listToFill, thisReference, - relevantLocations, node); - // Check for alias in current store - if (SymbolicExecutionUtil.hasReferenceSort(services, term.sub(3))) { - Location source = toLocation(services, term.sub(3)); - if (source != null) { - Location targetPrefix = toLocation(services, term.sub(1)); - listToFill.add(targetPrefix); - } - } - } else if (term.op() == heapLDT.getCreate()) { - // Analyze parent heap - listModifiedHeapLocations(term.sub(0), services, heapLDT, listToFill, thisReference, - relevantLocations, node); - } else if (term.op() instanceof IProgramVariable) { - // Nothing to do, root of heap reached. - } else if (term.op() == heapLDT.getAnon()) { - if (!relevantLocations.isEmpty()) { // Nothing to do if relevant locations are empty - JTerm anonHeap = term.sub(2); - // Idea: Compute all values of relevant locations in a side proof. Modified - // locations are anonymized. - // New OneStepSimplifier is required because it has an internal state and the - // default instance can't be used parallel. - ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(node.proof(), true); - ApplyStrategyInfo info = null; - try { - // Create location terms - List resultLocations = - new ArrayList<>(relevantLocations.size()); - List resultTerms = new ArrayList<>(relevantLocations.size()); - List resultSorts = new ArrayList<>(relevantLocations.size()); - for (Location location : relevantLocations) { - JTerm locationTerm = - location.toTerm(sideProofEnv.getServicesForEnvironment()); - if (!(locationTerm.op() instanceof IProgramVariable)) { // Ignore local - // variables. - resultLocations.add(location); - resultTerms.add(locationTerm); - resultSorts.add(locationTerm.sort()); - } - } - if (!resultTerms.isEmpty()) { - // Create predicate which will be used in formulas to store the value - // interested in. - Function newPredicate = new JFunction( - new Name(sideProofEnv.getServicesForEnvironment().getTermBuilder() - .newName("ResultPredicate")), - JavaDLTheory.FORMULA, new ImmutableArray<>(resultSorts)); - // Create formula which contains the value interested in. - JTerm newTerm = - sideProofEnv.getServicesForEnvironment().getTermBuilder().func( - newPredicate, resultTerms.toArray(new JTerm[0])); - - Sequent sequentToProve = - SymbolicExecutionUtil.createSequentToProveWithNewSuccedent(node, - node.getAppliedRuleApp().posInOccurrence(), newTerm); - ProofStarter starter = SideProofUtil.createSideProof(sideProofEnv, - sequentToProve, "Analyze Anon Update"); - info = SymbolicExecutionSideProofUtil.startSideProof(node.proof(), starter, - StrategyProperties.METHOD_CONTRACT, StrategyProperties.LOOP_INVARIANT, - StrategyProperties.QUERY_ON, StrategyProperties.SPLITTING_NORMAL); - // Check for anonymized values in the side proof goals - assert !info.getProof().closed(); - for (Goal goal : info.getProof().openGoals()) { - JTerm operatorTerm = SymbolicExecutionSideProofUtil - .extractOperatorTerm(goal, newPredicate); - assert operatorTerm != null; - for (int i = 0; i < operatorTerm.arity(); i++) { - JTerm valueTerm = SymbolicExecutionUtil.replaceSkolemConstants( - goal.sequent(), operatorTerm.sub(i), services); - if (valueTerm.arity() >= 1) { - JTerm heap = valueTerm.sub(0); - if (anonHeap.equals(heap)) { - listToFill.add(resultLocations.get(i)); - } - } - } - } - } - } finally { - SymbolicExecutionSideProofUtil.disposeOrStore("Analyze Anon Update", info); - } - } - } else if (SymbolicExecutionUtil.isHeap(term.op(), heapLDT)) { - if (!relevantLocations.isEmpty()) { // Nothing to do if relevant locations are empty - // Idea: Compute all values of relevant locations in a side proof. Modified - // locations are anonymized. - // New OneStepSimplifier is required because it has an internal state and the - // default instance can't be used parallel. - ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(node.proof(), true); - ApplyStrategyInfo info = null; - try { - // Create location terms - List resultLocations = - new ArrayList<>(relevantLocations.size()); - List resultTerms = new ArrayList<>(relevantLocations.size()); - List resultSorts = new ArrayList<>(relevantLocations.size()); - for (Location location : relevantLocations) { - JTerm locationTerm = - location.toTerm(sideProofEnv.getServicesForEnvironment()); - if (!(locationTerm.op() instanceof IProgramVariable)) { // Ignore local - // variables. - resultLocations.add(location); - resultTerms.add(locationTerm); - resultSorts.add(locationTerm.sort()); - } - } - if (!resultTerms.isEmpty()) { - // Create predicate which will be used in formulas to store the value - // interested in. - Function newPredicate = new JFunction( - new Name(sideProofEnv.getServicesForEnvironment().getTermBuilder() - .newName("ResultPredicate")), - JavaDLTheory.FORMULA, new ImmutableArray<>(resultSorts)); - // Create formula which contains the value interested in. - TermBuilder tb = sideProofEnv.getServicesForEnvironment().getTermBuilder(); - JTerm newTerm = tb.func(newPredicate, - resultTerms.toArray(new JTerm[0])); - newTerm = tb.apply( - tb.elementary(heapLDT.getHeapForName(HeapLDT.BASE_HEAP_NAME), term), - newTerm); - Sequent sequentToProve = SymbolicExecutionUtil - .createSequentToProveWithNewSuccedent(node, null, newTerm); - ProofStarter starter = SideProofUtil.createSideProof(sideProofEnv, - sequentToProve, "Analyze Anon Update"); - info = SymbolicExecutionSideProofUtil.startSideProof(node.proof(), starter, - StrategyProperties.METHOD_CONTRACT, StrategyProperties.LOOP_INVARIANT, - StrategyProperties.QUERY_ON, StrategyProperties.SPLITTING_NORMAL); - // Check for anonymized values in the side proof goals - assert !info.getProof().closed(); - for (Goal goal : info.getProof().openGoals()) { - JTerm operatorTerm = SymbolicExecutionSideProofUtil - .extractOperatorTerm(goal, newPredicate); - assert operatorTerm != null; - for (int i = 0; i < operatorTerm.arity(); i++) { - JTerm valueTerm = SymbolicExecutionUtil.replaceSkolemConstants( - goal.sequent(), operatorTerm.sub(i), services); - if (valueTerm.arity() >= 1) { - JTerm heap = valueTerm.sub(0); - if (heap.containsLabel( - ParameterlessTermLabel.ANON_HEAP_LABEL)) { - listToFill.add(resultLocations.get(i)); - } - } - } - } - } - } finally { - SymbolicExecutionSideProofUtil.disposeOrStore("Analyze Heap Assignment", info); - } - } - } else { - throw new IllegalStateException("Can not analyze update '" + term + "'."); - } - } - - /** - * Adds the found alias consisting of first and second {@link ReferencePrefix} to the alias - * {@link Map}. If required, all participating entries in the {@link Map} are updated to ensure - * consistency. - * - * @param services The {@link Services} to use. - * @param first The first alias. - * @param second The second alias. - * @param aliases The alias {@link Map} to update. - * @param thisReference The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - */ - protected void updateAliases(Services services, Location first, Location second, - Map> aliases, ReferencePrefix thisReference) { - // Try to get Set for key - SortedSet firstValues = aliases.get(first); - SortedSet secondValues = aliases.get(second); - SortedSet values; - if (firstValues == null && secondValues == null) { - values = createSortedSet(); - aliases.put(first, values); - aliases.put(second, values); - } else if (firstValues != null && secondValues == null) { - values = firstValues; - aliases.put(second, values); - } else if (firstValues == null && secondValues != null) { - values = secondValues; - aliases.put(first, values); - } else if (firstValues != null && secondValues != null) { // both are not null - values = firstValues; - for (Location existingLocation : secondValues) { - aliases.put(existingLocation, values); - } - values.addAll(secondValues); - } else { - // Can not happen! - throw new IllegalStateException("Reached a state which should never happen."); - } - values.add(first); - values.add(second); - } - - /** - * Creates a {@link SortedSet} which ensures that the elements are sorted. - * - * @return The new created {@link SortedSet}. - */ - protected SortedSet createSortedSet() { - return new TreeSet<>(new Comparator<>() { - /** - * {@inheritDoc} - */ - @Override - public int compare(Location o1, Location o2) { - int o1DotCount = o1.getDepth(); - int o2DotCount = o2.getDepth(); - if (o1DotCount < o2DotCount) { - return 1; - } else if (o1DotCount > o2DotCount) { - return -1; - } else { - return o1.toString().compareTo(o2.toString()); - } - } - }); // Order is important for normalization; - } - - /** - * Returns the representative alias for the given {@link ReferencePrefix}. - * - * @param services The {@link Services} to use. - * @param referencePrefix The {@link ReferencePrefix}. - * @param info The {@link SequentInfo} with the aliases and so on. - * @return The representative alias. - */ - protected Location normalizeAlias(Services services, ReferencePrefix referencePrefix, - SequentInfo info) { - Location location = toLocation(services, referencePrefix, info.getExecutionContext(), - info.getThisReference()); - return normalizeAlias(services, location, info); - } - - /** - * Returns the representative alias for the given {@link Location}. - * - * @param services The {@link Services} to use. - * @param location The {@link Location}. - * @param info The {@link SequentInfo} with the aliases and so on. - * @return The representative alias. - */ - protected Location normalizeAlias(Services services, Location location, SequentInfo info) { - ImmutableList normalizedAccesses = ImmutableList.nil(); - for (Access access : location.getAccesses()) { - if (access.isArrayIndex()) { - access = normalizeArrayIndex(access, info); - } - normalizedAccesses = normalizedAccesses.append(access); - Location oldLocation = new Location(normalizedAccesses); - Location newLocation = computeRepresentativeAlias(oldLocation, info.getAliases()); - if (!oldLocation.equals(newLocation)) { - normalizedAccesses = normalizeAlias(services, newLocation, info).getAccesses(); - } - } - return new Location(normalizedAccesses); - } - - /** - * Normalizes the given array index. - * - * @param access The {@link Access} representing an array index. - * @param info The {@link SequentInfo} with the aliases and so on. - * @return The normalized array access. - */ - protected Access normalizeArrayIndex(Access access, SequentInfo info) { - ImmutableArray oldTerms = access.getDimensionExpressions(); - JTerm[] newTerms = new JTerm[oldTerms.size()]; - for (int i = 0; i < newTerms.length; i++) { - JTerm oldTerm = oldTerms.get(i); - if (oldTerm.op() instanceof ProgramVariable) { - JTerm value = info.getLocalValues().get((ProgramVariable) oldTerm.op()); - if (value != null) { - oldTerm = value; - } - } - newTerms[i] = oldTerm; - } - return new Access(new ImmutableArray<>(newTerms)); - } - - /** - * Computes the representative alias of the given {@link Location}. - * - * @param location The given {@link Location}. - * @param aliases The available aliases. - * @return The representative alias. - */ - protected Location computeRepresentativeAlias(Location location, - Map> aliases) { - Set alternatives = aliases.get(location); - if (alternatives != null) { - return alternatives.iterator().next(); // Return first alternative - } else { - return location; - } - } - - /** - * Computes the {@link ReferencePrefix} of the given {@link SourceElement}. - * - * @param sourceElement The {@link SourceElement} to work with. - * @return The {@link ReferencePrefix} or {@code null} if the {@link SourceElement} can't be - * represented as {@link ReferencePrefix}. - */ - protected ReferencePrefix toReferencePrefix(SourceElement sourceElement) { - if (sourceElement instanceof PassiveExpression) { - if (sourceElement.getChildCount() != 1) { - throw new IllegalStateException( - "PassiveExpression '" + sourceElement + "' has not exactly one child."); - } - sourceElement = ((PassiveExpression) sourceElement).getChildAt(0); - } - if (sourceElement instanceof FieldReference) { - return (FieldReference) sourceElement; - } else if (sourceElement instanceof ProgramVariable) { - return (ProgramVariable) sourceElement; - } else if (sourceElement instanceof ArrayReference) { - return (ArrayReference) sourceElement; - } else { - return null; - } - } - - /** - * Checks if the given {@link SourceElement} is directly or indirectly contained (aliased) in - * the {@link Set} of relevant locations. If it is contained, the element will be removed. - * - * @param services The {@link Services} to use. - * @param sourceElement The {@link SourceElement} to check. - * @param relevantLocations The {@link Set} with locations of interest. - * @param info The {@link SequentInfo} with the aliases and so on. - * @return {@code true} is relevant and was removed, {@code false} is not relevant and nothing - * has changed. - */ - protected boolean removeRelevant(Services services, ReferencePrefix sourceElement, - Set relevantLocations, SequentInfo info) { - Location normalized = normalizeAlias(services, sourceElement, info); - return performRemoveRelevant(services, normalized, relevantLocations, info); - } - - /** - * Checks if the given {@link Location} is directly or indirectly contained (aliased) in the - * {@link Set} of relevant locations. If it is contained, the element will be removed. - * - * @param services The {@link Services} to use. - * @param location The {@link Location} to check. - * @param relevantLocations The {@link Set} with locations of interest. - * @param info The {@link SequentInfo} with the aliases and so on. - * @return {@code true} is relevant and was removed, {@code false} is not relevant and nothing - * has changed. - */ - protected boolean removeRelevant(Services services, Location location, - Set relevantLocations, SequentInfo info) { - Location normalized = normalizeAlias(services, location, info); - return performRemoveRelevant(services, normalized, relevantLocations, info); - } - - /** - * Checks if the given {@link Location} is directly or indirectly contained (aliased) in the - * {@link Set} of relevant locations. If it is contained, the element will be removed. - * - * @param services The {@link Services} to use. - * @param normalized The {@link Location} to check. - * @param relevantLocations The {@link Set} with locations of interest. - * @param info The {@link SequentInfo} with the aliases and so on. - * @return {@code true} is relevant and was removed, {@code false} is not relevant and nothing - * has changed. - */ - protected boolean performRemoveRelevant(Services services, Location normalized, - Set relevantLocations, SequentInfo info) { - boolean relevant = false; - Iterator iterator = relevantLocations.iterator(); - while (!relevant && iterator.hasNext()) { - Location next = iterator.next(); - Location nextNormalized = normalizeAlias(services, next, info); - if (normalized.equals(nextNormalized)) { - iterator.remove(); - relevant = true; - } - } - return relevant; - } - - /** - * Converts the given {@link ReferencePrefix} into a {@link Location}. - * - * @param services The {@link Services} to use. - * @param prefix The {@link ReferencePrefix} to convert. - * @param ec The current {@link ExecutionContext}. - * @param thisReference The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - * @return The {@link Location} representing the given {@link ReferencePrefix}. - */ - protected Location toLocation(Services services, ReferencePrefix prefix, ExecutionContext ec, - ReferencePrefix thisReference) { - ImmutableList accesses = - toLocationRecursive(services, prefix, ec, thisReference, ImmutableList.nil()); - return new Location(accesses); - } - - /** - * Utility method used by {@link #toLocation} to - * recursively extract the {@link Access} instances. - * - * @param services The {@link Services} to use. - * @param prefix The {@link ReferencePrefix} to work with. - * @param ec The current {@link ExecutionContext}. - * @param thisReference The {@link ReferencePrefix} which is represented by {@code this} - * ({@link ThisReference}). - * @param children The already known child {@link Access}s. - * @return An {@link ImmutableList} containing all {@link Access}s of the - * {@link ReferencePrefix} in the order of access. - */ - protected ImmutableList toLocationRecursive(Services services, ReferencePrefix prefix, - ExecutionContext ec, ReferencePrefix thisReference, ImmutableList children) { - if (prefix instanceof ProgramVariable) { - return children.prepend(new Access((ProgramVariable) prefix)); - } else if (prefix instanceof FieldReference fr) { - ReferencePrefix parent = fr.getReferencePrefix(); - children = children.prepend(new Access(fr.getProgramVariable())); - if (parent != null) { - return toLocationRecursive(services, parent, ec, thisReference, children); - } else { - return children; - } - } else if (prefix instanceof ThisReference) { - if (thisReference instanceof ProgramVariable) { - return children.prepend(new Access((ProgramVariable) thisReference)); - } else if (thisReference instanceof FieldReference) { - return toLocationRecursive(services, thisReference, ec, thisReference, children); - } else { - throw new IllegalStateException( - "Unsupported this reference '" + thisReference + "'."); - } - } else if (prefix instanceof ArrayReference ar) { - children = - children.prepend(new Access(toTerm(services, ar.getDimensionExpressions(), ec))); - return toLocationRecursive(services, ar.getReferencePrefix(), ec, thisReference, - children); - } else { - throw new IllegalStateException("Unsupported prefix '" + prefix + "'."); - } - } - - /** - * Converts the given {@link Expression}s into {@link JTerm}s. - * - * @param services The {@link Services} to use. - * @param expressions The {@link Expression}s to convert. - * @param ec The current {@link ExecutionContext}. - * @return The created {@link JTerm}s. - */ - public static ImmutableArray toTerm(Services services, - ImmutableArray expressions, ExecutionContext ec) { - JTerm[] terms = new JTerm[expressions.size()]; - int i = 0; - for (Expression expression : expressions) { - terms[i] = toTerm(services, expression, ec); - i++; - } - return new ImmutableArray<>(terms); - } - - /** - * Converts the given {@link Expression} into a {@link JTerm}. - * - * @param services The {@link Services} to use. - * @param expression The {@link Expression} to convert. - * @param ec The current {@link ExecutionContext}. - * @return The created {@link JTerm}. - */ - public static JTerm toTerm(Services services, Expression expression, ExecutionContext ec) { - return services.getTypeConverter().convertToLogicElement(expression, ec); - } - - /** - * Converts the given {@link JTerm} into a {@link Location}. - * - * @param services The {@link Services} to use. - * @param term The {@link JTerm} to convert. - * @return The {@link Location} or {@code null} if the {@link JTerm} could not be represented as - * {@link Location}. - */ - public static Location toLocation(Services services, JTerm term) { - if (term.op() instanceof ProgramVariable) { - return new Location(new Access((ProgramVariable) term.op())); - } else if (SymbolicExecutionUtil.isNullSort(term.sort(), services)) { - return null; - } else { - HeapLDT heapLDT = services.getTypeConverter().getHeapLDT(); - if (term.op() == heapLDT.getSelect(term.sort(), services)) { - Location prefix = toLocation(services, term.sub(1)); - JTerm arrayIndex = - SymbolicExecutionUtil.getArrayIndex(services, heapLDT, term.sub(2)); - if (arrayIndex != null) { - return prefix.append(new Access(arrayIndex)); - } else { - Location variable = toLocation(services, term.sub(2)); - return prefix != null ? prefix.append(variable) : variable; - } - } else { - String name = term.op().name().toString(); - int index = name.indexOf("::"); - if (index >= 0) { - String fullTypeName = name.substring(0, index); - String fieldName = name.substring(index + 3); - ProgramVariable pv = - services.getJavaInfo().getAttribute(fullTypeName + "::" + fieldName); - assert term.op() == services.getTypeConverter().getHeapLDT() - .getFieldSymbolForPV((LocationVariable) pv, services); - return new Location(new Access(pv)); - } else { - return null; - } - } - } - } - - /** - * Returns the first found alternative which is still valid. - * - * @param oldAlternatives The old alternatives. - * @param newAlternatives The new alternatives. - * @return The found alternative or {@code null} if not available. - */ - protected Location findNewAlternative(final SortedSet oldAlternatives, - final SortedSet newAlternatives) { - return CollectionUtil.search(oldAlternatives, - element -> !newAlternatives.contains(element)); - } - - /** - * Computes the length of a common prefix. - * - * @param candidates The possible candidates. - * @param toCheck The {@link ImmutableList} to check. - * @return The common prefix length which is {@code 0} if no elements are common. - */ - public static int computeFirstCommonPrefixLength(ImmutableList> candidates, - ImmutableList toCheck) { - int commonLength = 0; - Iterator> iter = candidates.iterator(); - while (commonLength < 1 && iter.hasNext()) { - ImmutableList next = iter.next(); - if (startsWith(toCheck, next)) { - commonLength = next.size(); - } - } - return commonLength; - } - - /** - * Checks if the given {@link ImmutableList} starts with the given prefix. - * - * @param list The {@link List} to check. - * @param prefix The prefix to check. - * @return {@code true} the first elements in the {@link ImmutableList} are the prefix, - * {@code false} if the first elements are not equal to the prefix. - */ - public static boolean startsWith(ImmutableList list, ImmutableList prefix) { - if (list.size() >= prefix.size()) { - Iterator listIter = list.iterator(); - Iterator prefixIter = prefix.iterator(); - boolean same = true; - while (same && prefixIter.hasNext()) { - T listNext = listIter.next(); - T prefixNext = prefixIter.next(); - if (!Objects.equals(listNext, prefixNext)) { - same = false; - } - } - return same; - } else { - return false; - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/Access.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/Access.java deleted file mode 100644 index 2f670d3216a..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/Access.java +++ /dev/null @@ -1,122 +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.symbolic_execution.slicing; - -import java.util.Objects; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.ProgramVariable; - -import org.key_project.util.collection.ImmutableArray; - -public class Access { - /** - * The {@link ProgramVariable} or {@code null} if an array index is accessed. - */ - private final ProgramVariable programVariable; - - /** - * The accessed array index or {@code null} if it is not an array access. - */ - private final ImmutableArray dimensionExpressions; - - /** - * Constructor. - * - * @param programVariable The accessed {@link ProgramVariable}. - */ - public Access(ProgramVariable programVariable) { - assert programVariable != null; - this.programVariable = programVariable; - this.dimensionExpressions = null; - } - - /** - * Constructor. - * - * @param dimensionExpressions The accessed array index. - */ - public Access(ImmutableArray dimensionExpressions) { - assert dimensionExpressions != null; - this.programVariable = null; - this.dimensionExpressions = dimensionExpressions; - } - - /** - * Constructor. - * - * @param dimensionExpressions The accessed array index. - */ - public Access(JTerm... dimensionExpressions) { - assert dimensionExpressions != null; - this.programVariable = null; - this.dimensionExpressions = new ImmutableArray<>(dimensionExpressions); - } - - /** - * Returns the {@link ProgramVariable} or {@code null} if an array index is accessed. - * - * @return The {@link ProgramVariable} or {@code null} if an array index is accessed. - */ - public ProgramVariable getProgramVariable() { - return programVariable; - } - - /** - * Returns the accessed array index or {@code null} if it is not an array access. - * - * @return The accessed array index or {@code null} if it is not an array access. - */ - public ImmutableArray getDimensionExpressions() { - return dimensionExpressions; - } - - /** - * Checks if an array index is accessed. - * - * @return {@code true} array index is accessed, {@code false} otherwise. - */ - public boolean isArrayIndex() { - return dimensionExpressions != null; - } - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() { - int hashcode = 5; - hashcode = hashcode * 17 + (programVariable != null ? programVariable.hashCode() : 0); - hashcode = - hashcode * 17 + (dimensionExpressions != null ? dimensionExpressions.hashCode() : 0); - return hashcode; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof Access other) { - return Objects.equals(programVariable, other.getProgramVariable()) - && Objects.equals(dimensionExpressions, other.getDimensionExpressions()); - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - if (programVariable != null) { - return programVariable.toString(); - } else if (dimensionExpressions != null) { - return dimensionExpressions.toString(); - } else { - return "Undefined"; - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/Location.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/Location.java deleted file mode 100644 index 47af4e7f22e..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/Location.java +++ /dev/null @@ -1,170 +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.symbolic_execution.slicing; - -import java.util.Objects; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.LocationVariable; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.op.Function; -import org.key_project.util.collection.ImmutableList; - -/** - * Represents a location like a local variable, method parameter, static field or an instance field - * on a specified object. - * - * @author Martin Hentschel - */ -public class Location { - /** - * The {@link Access} path. - */ - private final ImmutableList accesses; - - /** - * Constructor. - * - * @param accesses The {@link Access} path. - */ - public Location(ImmutableList accesses) { - assert accesses != null; - this.accesses = accesses; - } - - /** - * Constructor. - * - * @param accesses The {@link Access} path. - */ - public Location(Access... accesses) { - assert accesses != null; - this.accesses = ImmutableList.nil().append(accesses); - } - - /** - * Returns the {@link Access} path. - * - * @return The {@link Access} path. - */ - public ImmutableList getAccesses() { - return accesses; - } - - /** - * Returns the access depth. - * - * @return The access depth. - */ - public int getDepth() { - return accesses.size(); - } - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() { - int hashcode = 5; - hashcode = hashcode * 17 + (accesses != null ? accesses.hashCode() : 0); - return hashcode; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof Location other) { - return Objects.equals(accesses, other.getAccesses()); - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - boolean afterFirst = false; - for (Access access : accesses) { - if (afterFirst) { - sb.append('.'); - } else { - afterFirst = true; - } - sb.append(access); - } - return sb.toString(); - } - - /** - * Creates a new {@link Location} in which the sub is appended. - * - * @param sub The {@link Location} to append. - * @return The new {@link Location}. - */ - public Location append(Location sub) { - return new Location(accesses.append(sub.getAccesses())); - } - - /** - * Creates a new {@link Location} in which the sub is appended. - * - * @param sub The {@link Access} to append. - * @return The new {@link Location}. - */ - public Location append(Access sub) { - return new Location(accesses.append(sub)); - } - - /** - * Converts this {@link Location} into a {@link JTerm}. - * - * @param services The {@link Services} to use. - * @return The created {@link JTerm}. - */ - public JTerm toTerm(Services services) { - JTerm parent = null; - for (Access access : accesses) { - if (access.isArrayIndex()) { - // Special handling for array indices. - assert parent != null; - assert access.getDimensionExpressions().size() == 1; - parent = services.getTermBuilder().dotArr(parent, - access.getDimensionExpressions().get(0)); - } else if (SymbolicExecutionUtil.isStaticVariable(access.getProgramVariable())) { - // Static field access - assert parent == null; - Function function = - services.getTypeConverter().getHeapLDT().getFieldSymbolForPV( - (LocationVariable) access.getProgramVariable(), services); - parent = services.getTermBuilder().staticDot(access.getProgramVariable().sort(), - function); - } else if (parent == null) { - // Direct access to a variable - assert parent == null; - parent = services.getTermBuilder().var(access.getProgramVariable()); - } else if (services.getJavaInfo().getArrayLength() == access.getProgramVariable()) { - // Special handling for length attribute of arrays - assert parent != null; - Function function = services.getTypeConverter().getHeapLDT().getLength(); - parent = services.getTermBuilder().func(function, parent); - } else { - // Field access on the parent variable - assert parent != null; - Function function = - services.getTypeConverter().getHeapLDT().getFieldSymbolForPV( - (LocationVariable) access.getProgramVariable(), services); - parent = services.getTermBuilder().dot(access.getProgramVariable().sort(), parent, - function); - } - } - return parent; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/ThinBackwardSlicer.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/ThinBackwardSlicer.java deleted file mode 100644 index 9a7400b69ce..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/slicing/ThinBackwardSlicer.java +++ /dev/null @@ -1,97 +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.symbolic_execution.slicing; - -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.expression.Expression; -import de.uka.ilkd.key.java.ast.expression.operator.CopyAssignment; -import de.uka.ilkd.key.java.ast.reference.ReferencePrefix; -import de.uka.ilkd.key.java.ast.statement.MethodBodyStatement; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramVariable; -import de.uka.ilkd.key.logic.op.UpdateApplication; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.util.collection.ImmutableArray; - -/** - * Implementation of thin backward slicing. - * - * @author Martin Hentschel - */ -public class ThinBackwardSlicer extends AbstractBackwardSlicer { - /** - * {@inheritDoc} - */ - @Override - protected boolean accept(Node node, Node previousChild, Services services, - Set relevantLocations, SequentInfo info, SourceElement activeStatement) - throws ProofInputException { - try { - boolean accept = false; - if (activeStatement instanceof CopyAssignment copyAssignment) { - ImmutableArray arguments = copyAssignment.getArguments(); - if (arguments.size() >= 1) { - SourceElement originalTarget = arguments.get(0); - ReferencePrefix relevantTarget = toReferencePrefix(originalTarget); - if (relevantTarget != null - && removeRelevant(services, relevantTarget, relevantLocations, info)) { - accept = true; - for (int i = 1; i < arguments.size(); i++) { - Expression read = arguments.get(i); - updateRelevantLocations(read, relevantLocations, info, services); - } - } - } - } else if (activeStatement instanceof MethodBodyStatement mbs) { - IProgramVariable resultVariable = mbs.getResultVariable(); - ReferencePrefix relevantTarget = toReferencePrefix(resultVariable); - if (relevantTarget != null - && removeRelevant(services, relevantTarget, relevantLocations, info)) { - accept = true; - } - } else if (SymbolicExecutionUtil.isLoopInvariant(node, node.getAppliedRuleApp()) - || SymbolicExecutionUtil.isOperationContract(node, node.getAppliedRuleApp()) - || SymbolicExecutionUtil.isBlockSpecificationElement(node, - node.getAppliedRuleApp())) { - // Compute this reference - PosInOccurrence pio = node.getAppliedRuleApp().posInOccurrence(); - // Compute modified locations - List modifiedLocations = new LinkedList<>(); - JTerm loopConditionModalityTerm = - SymbolicExecutionUtil.posInOccurrenceInOtherNode(node, pio, previousChild); - if (loopConditionModalityTerm.op() != UpdateApplication.UPDATE_APPLICATION) { - throw new IllegalStateException( - "Use Loop Invariant/Operation Contract rule implementation has changed at node " - + node.serialNr() + "."); - } - JTerm updateTerm = UpdateApplication.getTarget(loopConditionModalityTerm); - while (updateTerm.op() == UpdateApplication.UPDATE_APPLICATION) { - listModifiedLocations(UpdateApplication.getUpdate(updateTerm), services, - services.getTypeConverter().getHeapLDT(), modifiedLocations, - info.getExecutionContext(), info.getThisReference(), relevantLocations, - previousChild); - updateTerm = UpdateApplication.getTarget(updateTerm); - } - // Check modified locations - for (Location location : modifiedLocations) { - if (removeRelevant(services, location, relevantLocations, info)) { - accept = true; - } - } - } - return accept; - } catch (IllegalArgumentException e) { - return false; // Do not accept, expression with side effects is evaluated - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/AbstractCallStackBasedStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/AbstractCallStackBasedStopCondition.java deleted file mode 100644 index 3ad97614135..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/AbstractCallStackBasedStopCondition.java +++ /dev/null @@ -1,206 +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.symbolic_execution.strategy; - -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.Map; - -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.engine.SingleRuleApplicationInfo; -import org.key_project.prover.engine.StopCondition; -import org.key_project.prover.rules.RuleApp; - -import org.jspecify.annotations.NonNull; -import org.jspecify.annotations.Nullable; - -/** - * Provides the basic functionality for {@link StopCondition}s which stops the auto mode when the - * call stack size of the starting set node has a special difference to the call stack size of the - * current set node, e.g. "step over" or "step return". - * - * @author Martin Hentschel - * @see StepOverSymbolicExecutionTreeNodesStopCondition - * @see StepReturnSymbolicExecutionTreeNodesStopCondition - */ -public abstract class AbstractCallStackBasedStopCondition implements StopCondition { - /** - * Maps a {@link Goal} to the initial call stack size at which the auto mode was started. - */ - private final Map startingCallStackSizePerGoal = - new LinkedHashMap<>(); - - /** - * {@inheritDoc} - */ - @Override - public int getMaximalWork(int maxApplications, long timeout) { - startingCallStackSizePerGoal.clear(); // Reset initial call stack size of all goals. Will be - // filled in isGoalAllowed. - return 0; // Return unknown because there is no relation between applied rules and step over - // functionality. - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isGoalAllowed(Goal goal, int maxApplications, long timeout, long startTime, - int countApplied) { - if (goal != null) { - Node node = goal.node(); - // Check if goal is allowed - RuleApp ruleApp = goal.getRuleAppManager().peekNext(); - if (SymbolicExecutionUtil.isSymbolicExecutionTreeNode(node, ruleApp)) { - // Check if goal is treated the first time - NodeStartEntry startingCallStackSizeEntry = startingCallStackSizePerGoal.get(goal); - if (startingCallStackSizeEntry == null) { - Node parentSetNode = SymbolicExecutionUtil.findParentSetNode(node); - int startingCallStackSize = SymbolicExecutionUtil.computeStackSize( - parentSetNode != null ? parentSetNode.getAppliedRuleApp() : null); - startingCallStackSizeEntry = new NodeStartEntry(node, startingCallStackSize); - startingCallStackSizePerGoal.put(goal, startingCallStackSizeEntry); - return true; // Initial check, no need to stop - } else { - if (node != startingCallStackSizeEntry.getNode()) { - // Check if current call stack size matches the end condition - int currentCallStackSize = SymbolicExecutionUtil.computeStackSize(ruleApp); - if (isCallStackSizeReached( - startingCallStackSizeEntry.getNodeCallStackSize(), - currentCallStackSize)) { - // Get parent node to make sure that already one node was executed which - // does not match the end condition - Node parentSetNode = SymbolicExecutionUtil.findParentSetNode(node); - int parentStackSize = SymbolicExecutionUtil - .computeStackSize(parentSetNode.getAppliedRuleApp()); - // Parent node also don't fulfill the call stack limit, stop now - // Parent node is deeper in call stack, so continue - return !isCallStackSizeReached( - startingCallStackSizeEntry.getNodeCallStackSize(), - parentStackSize); - } else { - // Currently deeper in call stack, continue - return true; - } - } else { - return true; // Initial node - } - } - } else { - // Internal proof node, allow rule - return true; - } - } else { - return true; // Allowed, because ApplyStrategy will handle the null case - } - } - - /** - * Checks if the call stack size limit is reached. - * - * @param initialCallStackSize The call stack size of the initial set node. - * @param currentCallStackSize The call stack size of the current set node. - * @return {@code true} limit reached, {@code false} limit node reached. - */ - protected abstract boolean isCallStackSizeReached(int initialCallStackSize, - int currentCallStackSize); - - /** - * {@inheritDoc} - */ - @Override - public boolean shouldStop(int maxApplications, long timeout, long startTime, - int countApplied, SingleRuleApplicationInfo singleRuleApplicationInfo) { - // Check if a rule was applied - if (singleRuleApplicationInfo != null) { - // Get the node on which a rule was applied. - Goal goal = singleRuleApplicationInfo.getGoal(); - Node goalNode = goal.node(); - assert goalNode.childrenCount() == 0; // Make sure that this is the current goal node - Node updatedNode = goalNode.parent(); - // Check if multiple branches where created. - if (updatedNode.childrenCount() >= 2) { - // If an initial call stack size is available for the goal it must be used for all - // other new created goals. - NodeStartEntry startingCallStackSizeValue = startingCallStackSizePerGoal.get(goal); - if (startingCallStackSizeValue != null) { - // Reuse initial call stack size for new created goals - Iterator childIter = updatedNode.childrenIterator(); - while (childIter.hasNext()) { - Node next = childIter.next(); - Goal nextGoal = next.proof().getOpenGoal(next); - // Check if the current goal is a new one - if (nextGoal != goal) { - // New goal found, use the initial call stack size for it. - startingCallStackSizePerGoal.put(nextGoal, startingCallStackSizeValue); - } - } - } - } - } - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public @NonNull String getStopMessage(int maxApplications, long timeout, long startTime, - int countApplied, @Nullable SingleRuleApplicationInfo singleRuleApplicationInfo) { - return ""; - } - - /** - * Instances of this class are used in - * {@link AbstractCallStackBasedStopCondition#startingCallStackSizePerGoal} to represent the - * initial {@link Node} of {@link Goal} on which the auto mode was started together with its - * call stack size. - * - * @author Martin Hentschel - */ - private static class NodeStartEntry { - /** - * The initial {@link Node} of a {@link Goal} on that the auto mode was started. - */ - private final Node node; - - /** - * The call stack size of {@link #node}. - */ - private final int nodeCallStackSize; - - /** - * Constructor. - * - * @param node The initial {@link Node} of a {@link Goal} on that the auto mode was started. - * @param nodeCallStackSize The call stack size of {@link #node}. - */ - public NodeStartEntry(Node node, int nodeCallStackSize) { - super(); - this.node = node; - this.nodeCallStackSize = nodeCallStackSize; - } - - /** - * Returns the initial {@link Node} of a {@link Goal} on that the auto mode was started. - * - * @return The initial {@link Node} of a {@link Goal} on that the auto mode was started. - */ - public Node getNode() { - return node; - } - - /** - * Returns the call stack size of {@link #getNode()}. - * - * @return The call stack size of {@link #getNode()}. - */ - public int getNodeCallStackSize() { - return nodeCallStackSize; - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/BreakpointStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/BreakpointStopCondition.java deleted file mode 100644 index d76f67e57c7..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/BreakpointStopCondition.java +++ /dev/null @@ -1,150 +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.symbolic_execution.strategy; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.strategy.IBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.IBreakpoint; - -import org.key_project.prover.engine.SingleRuleApplicationInfo; -import org.key_project.prover.rules.RuleApp; - -import org.checkerframework.checker.nullness.qual.NonNull; -import org.jspecify.annotations.Nullable; - -/** - * An {@link IBreakpointStopCondition} which can be used during proof. - * - * @author Martin Hentschel - */ -public class BreakpointStopCondition implements IBreakpointStopCondition { - /** - * The used {@link IBreakpoint}s. - */ - private final Set breakpoints = new HashSet<>(); - - /** - * Indicates that a breakpoint is hit. - */ - private boolean breakpointHit = false; - - /** - * Creates a new {@link BreakpointStopCondition}. - * - * @param breakpoints The {@link IBreakpoint} to use. - */ - public BreakpointStopCondition(IBreakpoint... breakpoints) { - if (breakpoints != null) { - Collections.addAll(this.breakpoints, breakpoints); - } - } - - /** - * {@inheritDoc} - */ - @Override - public int getMaximalWork(int maxApplications, long timeout) { - breakpointHit = false; - return 0; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isGoalAllowed(Goal goal, int maxApplications, long timeout, long startTime, - int countApplied) { - for (IBreakpoint breakpoint : breakpoints) { - breakpoint.updateState(goal, maxApplications, timeout, startTime, countApplied); - } - if (goal != null) { - Node node = goal.node(); - // Check if goal is allowed - RuleApp ruleApp = goal.getRuleAppManager().peekNext(); - SourceElement activeStatement = NodeInfo.computeActiveStatement(ruleApp); - breakpointHit = isBreakpointHit(activeStatement, ruleApp, node); - } - return countApplied == 0 || !breakpointHit; - } - - /** - * {@inheritDoc} - */ - @Override - public String getGoalNotAllowedMessage(Goal goal, int maxApplications, long timeout, - long startTime, int countApplied) { - return "Breakpoint hit!"; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean shouldStop(int maxApplications, long timeout, long startTime, - int countApplied, SingleRuleApplicationInfo singleRuleApplicationInfo) { - return false; - } - - /** - * Checks if a breakpoint is hit. - * - * @param activeStatement the activeStatement of the node - * @param ruleApp the applied {@link RuleApp} - * @param node the current node - * @return {@code true} at least one breakpoint is hit, {@code false} all breakpoints are not - * hit. - */ - protected boolean isBreakpointHit(SourceElement activeStatement, - RuleApp ruleApp, Node node) { - boolean result = false; - Iterator iter = breakpoints.iterator(); - while (!result && iter.hasNext()) { - IBreakpoint next = iter.next(); - result = - next.isEnabled() && next.isBreakpointHit(activeStatement, ruleApp, node); - } - return result; - } - - /** - * {@inheritDoc} - */ - @Override - public @NonNull String getStopMessage(int maxApplications, long timeout, long startTime, - int countApplied, @Nullable SingleRuleApplicationInfo singleRuleApplicationInfo) { - return "Breakpoint hit!"; - } - - /** - * {@inheritDoc} - */ - @Override - public void addBreakpoint(IBreakpoint breakpoint) { - breakpoints.add(breakpoint); - } - - /** - * {@inheritDoc} - */ - @Override - public void removeBreakpoint(IBreakpoint breakpoint) { - breakpoints.remove(breakpoint); - } - - /** - * {@inheritDoc} - */ - @Override - public Set getBreakpoints() { - return breakpoints; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CompoundStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CompoundStopCondition.java deleted file mode 100644 index 90ea11362c7..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CompoundStopCondition.java +++ /dev/null @@ -1,146 +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.symbolic_execution.strategy; - -import java.util.Collections; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -import de.uka.ilkd.key.proof.Goal; - -import org.key_project.prover.engine.SingleRuleApplicationInfo; -import org.key_project.prover.engine.StopCondition; - -import org.jspecify.annotations.NonNull; -import org.jspecify.annotations.NullMarked; -import org.jspecify.annotations.Nullable; - -/** - * This {@link StopCondition} contains other {@link StopCondition} as children and stops the auto - * mode if at least on of its children force it. - * - * @author Martin Hentschel - */ -@NullMarked -public class CompoundStopCondition implements StopCondition { - /** - * The child {@link StopCondition}s to use. - */ - private final List> children = new LinkedList<>(); - - /** - * The last {@link StopCondition} treated in - * {@link StopCondition#isGoalAllowed} which - * will provide the reason via - * {@link StopCondition#getGoalNotAllowedMessage}. - */ - private @Nullable StopCondition lastGoalAllowedChild = null; - - /** - * The last {@link StopCondition} treated in {@link StopCondition#shouldStop}, - * which will provide the reason via {@link StopCondition#getStopMessage}. - */ - private @Nullable StopCondition lastShouldStopChild; - - /** - * Constructor. - * - * @param children The child {@link StopCondition}s to use. - */ - @SafeVarargs - public CompoundStopCondition(StopCondition... children) { - Collections.addAll(this.children, children); - } - - /** - * Adds new child {@link StopCondition}s. - * - * @param children The child {@link StopCondition}s to use. - */ - @SafeVarargs - public final void addChildren(StopCondition... children) { - Collections.addAll(this.children, children); - } - - public void removeChild(StopCondition child) { - children.remove(child); - } - - /** - * {@inheritDoc} - */ - @Override - public int getMaximalWork(int maxApplications, long timeout) { - // Get maximal work on each child because they might use this method for initialization - // purpose. - for (StopCondition child : children) { - child.getMaximalWork(maxApplications, timeout); - } - lastGoalAllowedChild = null; - lastShouldStopChild = null; - return 0; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isGoalAllowed(@Nullable Goal goal, int maxApplications, long timeout, - long startTime, - int countApplied) { - boolean allowed = true; - Iterator> childIter = children.iterator(); - while (allowed && childIter.hasNext()) { - lastGoalAllowedChild = childIter.next(); - allowed = lastGoalAllowedChild.isGoalAllowed(goal, maxApplications, timeout, startTime, - countApplied); - } - return allowed; - } - - /** - * {@inheritDoc} - */ - @Override - public String getGoalNotAllowedMessage(@Nullable Goal goal, int maxApplications, long timeout, - long startTime, int countApplied) { - return lastGoalAllowedChild != null - ? lastGoalAllowedChild.getGoalNotAllowedMessage(goal, maxApplications, timeout, - startTime, countApplied) - : "Internal state. Method getGoalNotAllowedMessage called, but last allowed goal is null"; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean shouldStop(int maxApplications, long timeout, long startTime, - int countApplied, SingleRuleApplicationInfo singleRuleApplicationInfo) { - boolean stop = false; - Iterator> childIter = children.iterator(); - while (!stop && childIter.hasNext()) { - lastShouldStopChild = childIter.next(); - stop = lastShouldStopChild.shouldStop(maxApplications, timeout, startTime, - countApplied, singleRuleApplicationInfo); - } - return stop; - } - - /** - * {@inheritDoc} - */ - @Override - public @NonNull String getStopMessage(int maxApplications, long timeout, long startTime, - int countApplied, @Nullable SingleRuleApplicationInfo singleRuleApplicationInfo) { - return lastShouldStopChild != null - ? lastShouldStopChild.getStopMessage(maxApplications, timeout, startTime, - countApplied, singleRuleApplicationInfo) - : ""; - } - - public List> getChildren() { - return children; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CutHeapObjectsFeature.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CutHeapObjectsFeature.java deleted file mode 100644 index 78e45aeb98c..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CutHeapObjectsFeature.java +++ /dev/null @@ -1,81 +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.symbolic_execution.strategy; - -import java.util.Iterator; - -import de.uka.ilkd.key.logic.op.Equality; -import de.uka.ilkd.key.logic.op.Junctor; -import de.uka.ilkd.key.strategy.termProjection.SVInstantiationProjection; - -import org.key_project.logic.Name; -import org.key_project.logic.Term; -import org.key_project.prover.proof.ProofGoal; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.prover.strategy.costbased.MutableState; -import org.key_project.prover.strategy.costbased.feature.BinaryFeature; - -import org.jspecify.annotations.NonNull; - -/** - *

- * This {@link BinaryFeature} checks if a cut with an equality for an alias check should be done or - * not. - *

- *

- * This means the cut is only applied if the cut formula is not an equality or if it is not a - * negated formula or if the (negated) equality is not contained as top term - * ({@link SequentFormula}) in the {@link Sequent} ignoring the order of the equality children. - *

- * - * @author Martin Hentschel - */ -public class CutHeapObjectsFeature extends BinaryFeature { - /** - * {@inheritDoc} - */ - @Override - protected > boolean filter(RuleApp app, - PosInOccurrence pos, Goal goal, MutableState mState) { - Term cutFormula = - SVInstantiationProjection.create(new Name("cutFormula"), false).toTerm(app, pos, - (de.uka.ilkd.key.proof.Goal) goal, - mState); - if (cutFormula != null) { - if (cutFormula.op() == Junctor.NOT) { - cutFormula = cutFormula.sub(0); - } - if (cutFormula.op() == Equality.EQUALS) { - Term cutFormulaC0 = cutFormula.sub(0); - Term cutFormulaC1 = cutFormula.sub(1); - boolean contains = false; - Iterator iter = goal.sequent().iterator(); - while (!contains && iter.hasNext()) { - var formula = iter.next().formula(); - if (formula.op() == Junctor.NOT) { - formula = formula.sub(0); - } - if (formula.op() == Equality.EQUALS) { - // Check equality ignore order of equality sub terms - if (cutFormulaC0.equals(formula.sub(0))) { - contains = cutFormulaC1.equals(formula.sub(1)); - } else { - contains = cutFormulaC0.equals(formula.sub(1)) - && cutFormulaC1.equals(formula.sub(0)); - } - } - } - return !contains; // Perform cut only if equality is not already part of the - // sequent's top formulas - } else { - return true; // Unknown cut type - } - } else { - return false; // Cut without cutFormula is not possible - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CutHeapObjectsTermGenerator.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CutHeapObjectsTermGenerator.java deleted file mode 100644 index 2b677db3ad5..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CutHeapObjectsTermGenerator.java +++ /dev/null @@ -1,111 +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.symbolic_execution.strategy; - -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.Set; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.ldt.HeapLDT; -import de.uka.ilkd.key.logic.DefaultVisitor; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.JFunction; -import de.uka.ilkd.key.proof.Goal; - -import org.key_project.logic.Term; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.prover.strategy.costbased.MutableState; -import org.key_project.prover.strategy.costbased.termgenerator.TermGenerator; - -/** - * This {@link TermGenerator} is used by the {@link SymbolicExecutionStrategy} to add early alias - * checks of used objects as target of store operations on heaps. To achieve this, this - * {@link TermGenerator} generates equality {@link JTerm}s for each possible combination of objects. - * - * @author Martin Hentschel - */ -public class CutHeapObjectsTermGenerator implements TermGenerator { - /** - * {@inheritDoc} - */ - @Override - public Iterator generate(RuleApp app, PosInOccurrence pos, - Goal goal, - MutableState mState) { - // Compute collect terms of sequent formulas - Sequent sequent = goal.sequent(); - Set topTerms = new LinkedHashSet<>(); - for (final SequentFormula sf : sequent) { - topTerms.add(sf.formula()); - } - // Compute equality terms - HeapLDT heapLDT = goal.node().proof().getServices().getTypeConverter().getHeapLDT(); - Set equalityTerms = new LinkedHashSet<>(); - for (final SequentFormula sf : sequent) { - collectEqualityTerms(sf, equalityTerms, topTerms, heapLDT, - goal.node().proof().getServices()); - } - return equalityTerms.iterator(); - } - - /** - * Computes all possible equality terms between objects in the given {@link SequentFormula}. - * - * @param sf The {@link SequentFormula} to work with. - * @param equalityTerms The result {@link Set} with the equality {@link JTerm}s to fill. - * @param topTerms The terms of all sequent formulas - * @param heapLDT The {@link HeapLDT} to use. - * @param services TODO - */ - protected void collectEqualityTerms(SequentFormula sf, - Set equalityTerms, - Set topTerms, HeapLDT heapLDT, Services services) { - // Collect objects (target of store operations on heap) - Set storeLocations = new LinkedHashSet<>(); - collectStoreLocations(sf.formula(), storeLocations, heapLDT); - // Check if equality checks are possible - if (storeLocations.size() >= 2) { - // Generate all possible equality checks - JTerm[] storeLocationsArray = storeLocations.toArray(new JTerm[0]); - for (int i = 0; i < storeLocationsArray.length; i++) { - for (int j = i + 1; j < storeLocationsArray.length; j++) { - JTerm equality = services.getTermBuilder().equals(storeLocationsArray[i], - storeLocationsArray[j]); - if (!topTerms.contains(equality)) { - // The not is because the order of the branches is nicer (assumption: - // default case that objects are different is shown in symbolic execution - // trees on the left) - JTerm negatedEquality = services.getTermBuilder().not(equality); - if (!topTerms.contains(negatedEquality)) { - // Do equality cut only if knowledge is not already part of the sequent - equalityTerms.add(negatedEquality); - } - } - } - } - } - } - - /** - * Collects recursive all possible targets of store operations on a heap. - * - * @param term The {@link JTerm} to start search in. - * @param storeLocations The result {@link Set} to fill. - * @param heapLDT The {@link HeapLDT} to use (it provides the store and create - * {@link JFunction}). - */ - protected void collectStoreLocations(Term term, - final Set storeLocations, - final HeapLDT heapLDT) { - term.execPreOrder((DefaultVisitor) visited -> { - if (visited.op() == heapLDT.getStore()) { - storeLocations.add(visited.sub(1)); - } - }); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/ExecutedSymbolicExecutionTreeNodesStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/ExecutedSymbolicExecutionTreeNodesStopCondition.java deleted file mode 100644 index 1dba20945b1..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/ExecutedSymbolicExecutionTreeNodesStopCondition.java +++ /dev/null @@ -1,280 +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.symbolic_execution.strategy; - -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.Map; - -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.prover.impl.ApplyStrategy; -import de.uka.ilkd.key.settings.StrategySettings; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.engine.SingleRuleApplicationInfo; -import org.key_project.prover.engine.StopCondition; -import org.key_project.prover.rules.RuleApp; - -import org.jspecify.annotations.NonNull; -import org.jspecify.annotations.Nullable; - -/** - *

- * This {@link StopCondition} stops the auto mode ({@link ApplyStrategy}) if a given number - * ({@link #getMaximalNumberOfSetNodesToExecutePerGoal()}) of maximal executed symbolic execution - * tree nodes is reached in a goal. - *

- *

- * If a {@link Node} in KeY's proof tree is also a node in a symbolic execution tree is computed via - * {@link SymbolicExecutionUtil#isSymbolicExecutionTreeNode}. - *

- *

- * The auto mode is stopped exactly in the open goal {@link Node} which will become the next - * symbolic execution tree node. - *

- * - * @author Martin Hentschel - */ -public class ExecutedSymbolicExecutionTreeNodesStopCondition implements StopCondition { - /** - * The default maximal number of steps to simulate a complete program execution. - */ - public static final int MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_IN_COMPLETE_RUN = 1000; - - /** - * The default maximal number of steps to do exactly one step in each goal. - */ - public static final int MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_FOR_ONE_STEP = 1; - - /** - * The maximal number of allowed symbolic execution tree nodes per goal. The auto mode will stop - * exactly in the open goal proof node which becomes the next symbolic execution tree node. - */ - private int maximalNumberOfSetNodesToExecutePerGoal; - - /** - * Maps a {@link Goal} to the number of executed symbolic execution tree nodes. - */ - private final Map executedNumberOfSetNodesPerGoal = - new LinkedHashMap<>(); - - /** - * Stores for each {@link Node} which is a symbolic execution tree node the computed result of - * {@link StopCondition#isGoalAllowed(org.key_project.prover.proof.ProofGoal, int, long, long, int)} - * to make sure that it is only - * computed once and that the number of executed set statements is not increased multiple times - * for the same {@link Node}. - */ - private final Map goalAllowedResultPerSetNode = - new LinkedHashMap<>(); - - /** - * Constructor to stop after one executed symbolic execution tree node. - */ - public ExecutedSymbolicExecutionTreeNodesStopCondition() { - this(1); - } - - /** - * Constructor to stop after the given number of symbolic execution tree nodes. - * - * @param maximalNumberOfSetNodesToExecutePerGoal The maximal number of allowed symbolic - * execution tree nodes per goal. - */ - public ExecutedSymbolicExecutionTreeNodesStopCondition( - int maximalNumberOfSetNodesToExecutePerGoal) { - this.maximalNumberOfSetNodesToExecutePerGoal = maximalNumberOfSetNodesToExecutePerGoal; - } - - /** - * {@inheritDoc} - */ - @Override - public int getMaximalWork(int maxApplications, long timeout) { - executedNumberOfSetNodesPerGoal.clear(); // Reset number of already detected symbolic - // execution tree nodes for all goals. - goalAllowedResultPerSetNode.clear(); // Remove no longer needed references. - return 0; // Return unknown because there is no relation between applied rules and executed - // symbolic execution tree nodes. - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isGoalAllowed(Goal goal, int maxApplications, long timeout, long startTime, - int countApplied) { - if (goal != null) { - Node node = goal.node(); - // Check if goal is allowed - RuleApp ruleApp = goal.getRuleAppManager().peekNext(); - if (SymbolicExecutionUtil.isSymbolicExecutionTreeNode(node, ruleApp)) { - // Check if the result for the current node was already computed. - Boolean value = goalAllowedResultPerSetNode.get(node); - if (value == null) { - // Get the number of executed set nodes on the current goal - Integer executedNumberOfSetNodes = executedNumberOfSetNodesPerGoal.get(goal); - if (executedNumberOfSetNodes == null) { - executedNumberOfSetNodes = 0; - } - // Check if limit of set nodes of the current goal is exceeded - if (executedNumberOfSetNodes - + 1 > maximalNumberOfSetNodesToExecutePerGoal) { - handleNodeLimitExceeded(node); - return false; // Limit of set nodes of this goal exceeded - } else { - // Increase number of set nodes on this goal and allow rule application - executedNumberOfSetNodes = - executedNumberOfSetNodes.intValue() + 1; - executedNumberOfSetNodesPerGoal.put(goal, executedNumberOfSetNodes); - handleNodeLimitNotExceeded(maxApplications, timeout, goal.proof(), - startTime, - countApplied, goal, node, ruleApp, executedNumberOfSetNodes); - return true; - } - } else { - // Reuse already computed result. - return value; - } - } else { - return true; - } - } else { - return true; // Allowed, because ApplyStrategy will handle the null case - } - } - - /** - * Handles the state that the node limit is exceeded. - * - * @param node The {@link Node} of the current {@link Goal}. - */ - protected void handleNodeLimitExceeded(Node node) { - goalAllowedResultPerSetNode.put(node, Boolean.FALSE); - } - - /** - * Handles the state that the node limit is not exceeded. - * - * @param maxApplications The defined maximal number of rules to apply. Can be different to - * {@link StrategySettings#getMaxSteps()} in side proofs. - * @param timeout The defined timeout in ms or {@code -1} if disabled. Can be different to - * {@link StrategySettings#getTimeout()} in side proofs. - * @param proof The current {@link Proof}. - * @param startTime The timestamp when the apply strategy has started, computed via - * {@link System#nanoTime()} - * @param countApplied The number of already applied rules. - * @param goal The current {@link Goal} on which the next rule will be applied. - * @param node The {@link Node} of the current {@link Goal}. - * @param ruleApp The current {@link RuleApp}. - * @param executedNumberOfSetNodes The executed number of SET nodes. - */ - protected void handleNodeLimitNotExceeded(int maxApplications, long timeout, Proof proof, - long startTime, int countApplied, Goal goal, Node node, - RuleApp ruleApp, - Integer executedNumberOfSetNodes) { - goalAllowedResultPerSetNode.put(node, Boolean.TRUE); - } - - /** - * {@inheritDoc} - */ - @Override - public String getGoalNotAllowedMessage(Goal goal, int maxApplications, long timeout, - long startTime, int countApplied) { - if (maximalNumberOfSetNodesToExecutePerGoal > 1) { - return "Maximal limit of " + maximalNumberOfSetNodesToExecutePerGoal - + " symbolic execution tree nodes reached."; - } else { - return "Maximal limit of one symbolic execution tree node reached."; - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean shouldStop(int maxApplications, long timeout, long startTime, - int countApplied, SingleRuleApplicationInfo singleRuleApplicationInfo) { - // Check if a rule was applied - if (singleRuleApplicationInfo != null) { - // Get the node on which a rule was applied. - Goal goal = singleRuleApplicationInfo.getGoal(); - Node goalNode = goal.node(); - assert goalNode.childrenCount() == 0; // Make sure that this is the current goal node - Node updatedNode = goalNode.parent(); - // Check if multiple branches where created. - if (updatedNode.childrenCount() >= 2) { - // If a number of executed set nodes is available for the goal it must be used for - // all other new created goals. - Integer executedValue = executedNumberOfSetNodesPerGoal.get(goal); - if (executedValue != null) { - // Reuse number of set nodes for new created goals - Iterator childIter = updatedNode.childrenIterator(); - while (childIter.hasNext()) { - Node next = childIter.next(); - Goal nextGoal = next.proof().getOpenGoal(next); - // Check if the current goal is a new one - if (nextGoal != goal) { - // New goal found, use the number of set nodes for it. - executedNumberOfSetNodesPerGoal.put(nextGoal, executedValue); - } - } - } - } - } - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public @NonNull String getStopMessage(int maxApplications, long timeout, long startTime, - int countApplied, @Nullable SingleRuleApplicationInfo singleRuleApplicationInfo) { - return ""; - } - - /** - * Returns the maximal number of executed symbolic execution tree nodes per goal per auto mode - * run. - * - * @return The maximal number of executed symbolic execution tree nodes per goal per auto mode - * run. - */ - public int getMaximalNumberOfSetNodesToExecutePerGoal() { - return maximalNumberOfSetNodesToExecutePerGoal; - } - - /** - * Sets the maximal number of executed symbolic execution tree nodes per goal per auto mode run. - * - * @param maximalNumberOfSetNodesToExecute The maximal number of executed symbolic execution - * tree nodes per per goal auto mode run. - */ - public void setMaximalNumberOfSetNodesToExecutePerGoal(int maximalNumberOfSetNodesToExecute) { - this.maximalNumberOfSetNodesToExecutePerGoal = maximalNumberOfSetNodesToExecute; - } - - /** - * Checks if at least one symbolic execution tree node was executed. - * - * @return {@code true} at least one symbolic execution tree node was executed, {@code false} no - * symbolic execution tree node was executed. - */ - public boolean wasSetNodeExecuted() { - return !executedNumberOfSetNodesPerGoal.isEmpty(); - } - - /** - * Returns the number of executed symbolic execution tree nodes per {@link Goal}. - * - * @return The number of executed symbolic execution tree nodes per {@link Goal}. - */ - public Map getExectuedSetNodesPerGoal() { - return executedNumberOfSetNodesPerGoal; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SimplifyTermStrategy.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SimplifyTermStrategy.java deleted file mode 100644 index 8f9b35a737b..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SimplifyTermStrategy.java +++ /dev/null @@ -1,123 +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.symbolic_execution.strategy; - -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.JavaProfile; -import de.uka.ilkd.key.rule.TacletApp; -import de.uka.ilkd.key.strategy.*; -import de.uka.ilkd.key.strategy.definition.StrategySettingsDefinition; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Name; -import org.key_project.prover.proof.ProofGoal; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.rules.instantiation.AssumesFormulaInstantiation; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.strategy.costbased.MutableState; -import org.key_project.prover.strategy.costbased.NumberRuleAppCost; -import org.key_project.prover.strategy.costbased.RuleAppCost; -import org.key_project.prover.strategy.costbased.TopRuleAppCost; -import org.key_project.prover.strategy.costbased.feature.Feature; - -import org.jspecify.annotations.NonNull; - -/** - * {@link Strategy} used to simplify {@link JTerm}s in side proofs. - * - * @author Martin Hentschel - */ -public class SimplifyTermStrategy extends JavaCardDLStrategy { - /** - * The {@link Name} of the side proof {@link Strategy}. - */ - public static final Name name = new Name("Simplify Term Strategy"); - - /** - * Constructor. - * - * @param proof The proof. - * @param sp The {@link StrategyProperties} to use. - */ - private SimplifyTermStrategy(Proof proof, StrategyProperties sp) { - super(proof, sp); - } - - /** - * {@inheritDoc} - */ - @Override - public @NonNull Name name() { - return name; - } - - /** - * {@inheritDoc} - */ - @Override - protected Feature setupApprovalF() { - Feature superFeature = super.setupApprovalF(); - Feature labelFeature = new Feature() { - @Override - public > RuleAppCost computeCost(RuleApp app, - PosInOccurrence pos, Goal goal, MutableState mState) { - boolean hasLabel = false; - if (pos != null && app instanceof TacletApp) { - JTerm findTerm = (JTerm) pos.subTerm(); - if (!findTerm.containsLabel(SymbolicExecutionUtil.RESULT_LABEL)) { - // Term with result label is not used in find term and thus is not allowed - // to be used in an assumes clause - TacletApp ta = (TacletApp) app; - if (ta.assumesFormulaInstantiations() != null) { - for (AssumesFormulaInstantiation ifi : ta - .assumesFormulaInstantiations()) { - if (((JTerm) ifi.getSequentFormula().formula()) - .containsLabel(SymbolicExecutionUtil.RESULT_LABEL)) { - hasLabel = true; - } - } - } - } - } - return hasLabel ? TopRuleAppCost.INSTANCE : NumberRuleAppCost.create(0); - } - }; - // The label feature ensures that Taclets mapping an assumes to a Term with a result label - // are only applicable if also a Term with the result label is used in the find clause - return add(labelFeature, superFeature); - } - - /** - * The {@link StrategyFactory} to create instances of {@link SimplifyTermStrategy}. - * - * @author Martin Hentschel - */ - public static class Factory implements StrategyFactory { - /** - * {@inheritDoc} - */ - @Override - public Strategy create(Proof proof, StrategyProperties sp) { - return new SimplifyTermStrategy(proof, sp); - } - - /** - * {@inheritDoc} - */ - @Override - public @NonNull Name name() { - return name; - } - - /** - * {@inheritDoc} - */ - @Override - public StrategySettingsDefinition getSettingsDefinition() { - return JavaProfile.getDefault().getSettingsDefinition(); - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/StepOverSymbolicExecutionTreeNodesStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/StepOverSymbolicExecutionTreeNodesStopCondition.java deleted file mode 100644 index 4d0e173095f..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/StepOverSymbolicExecutionTreeNodesStopCondition.java +++ /dev/null @@ -1,36 +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.symbolic_execution.strategy; - -import de.uka.ilkd.key.proof.Goal; - -import org.key_project.prover.engine.StopCondition; - -/** - * This {@link StopCondition} stops the auto mode when a "step over" is completed. This is the case - * when the next symbolic execution tree node was executed on a {@link Goal} which has the same call - * or lower stack size as the symbolic execution tree node of the {@link Goal} on which the auto - * mode was started. - * - * @author Martin Hentschel - */ -public class StepOverSymbolicExecutionTreeNodesStopCondition - extends AbstractCallStackBasedStopCondition { - /** - * {@inheritDoc} - */ - @Override - protected boolean isCallStackSizeReached(int initialCallStackSize, int currentCallStackSize) { - return currentCallStackSize <= initialCallStackSize; - } - - /** - * {@inheritDoc} - */ - @Override - public String getGoalNotAllowedMessage(Goal goal, int maxApplications, long timeout, - long startTime, int countApplied) { - return "Step over completed."; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/StepReturnSymbolicExecutionTreeNodesStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/StepReturnSymbolicExecutionTreeNodesStopCondition.java deleted file mode 100644 index 1b56b5e22e7..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/StepReturnSymbolicExecutionTreeNodesStopCondition.java +++ /dev/null @@ -1,35 +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.symbolic_execution.strategy; - -import de.uka.ilkd.key.proof.Goal; - -import org.key_project.prover.engine.StopCondition; - -/** - * This {@link StopCondition} stops the auto mode when a "step over" is completed. This is the case - * when the next symbolic execution tree node was executed on a {@link Goal} which has a lower stack - * size as the symbolic execution tree node of the {@link Goal} on which the auto mode was started. - * - * @author Martin Hentschel - */ -public class StepReturnSymbolicExecutionTreeNodesStopCondition - extends AbstractCallStackBasedStopCondition { - /** - * {@inheritDoc} - */ - @Override - protected boolean isCallStackSizeReached(int initialCallStackSize, int currentCallStackSize) { - return currentCallStackSize < initialCallStackSize; - } - - /** - * {@inheritDoc} - */ - @Override - public String getGoalNotAllowedMessage(Goal goal, int maxApplications, long timeout, - long startTime, int countApplied) { - return "Step return completed."; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionBreakpointStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionBreakpointStopCondition.java deleted file mode 100644 index 43be18a5487..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionBreakpointStopCondition.java +++ /dev/null @@ -1,128 +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.symbolic_execution.strategy; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.strategy.IBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.IBreakpoint; - -import org.key_project.prover.rules.RuleApp; - -/** - * An {@link IBreakpointStopCondition} which can be used during symbolic execution. - * - * @author Martin Hentschel - */ -public class SymbolicExecutionBreakpointStopCondition extends - ExecutedSymbolicExecutionTreeNodesStopCondition implements IBreakpointStopCondition { - /** - * The used {@link IBreakpoint}s. - */ - private final Set breakpoints = new HashSet<>(); - - /** - * Creates a new {@link SymbolicExecutionBreakpointStopCondition}. - * - * @param breakpoints The {@link IBreakpoint} to use. - */ - public SymbolicExecutionBreakpointStopCondition(IBreakpoint... breakpoints) { - super(Integer.MAX_VALUE); - if (breakpoints != null) { - Collections.addAll(this.breakpoints, breakpoints); - } - } - - /** - * {@inheritDoc} - */ - @Override - public int getMaximalWork(int maxApplications, long timeout) { - setMaximalNumberOfSetNodesToExecutePerGoal(Integer.MAX_VALUE); - return super.getMaximalWork(maxApplications, timeout); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isGoalAllowed(Goal goal, int maxApplications, long timeout, long startTime, - int countApplied) { - for (IBreakpoint breakpoint : breakpoints) { - breakpoint.updateState(goal, maxApplications, timeout, startTime, countApplied); - } - return super.isGoalAllowed(goal, maxApplications, timeout, startTime, countApplied); - } - - /** - * {@inheritDoc} - */ - @Override - protected void handleNodeLimitNotExceeded(int maxApplications, long timeout, Proof proof, - long startTime, int countApplied, Goal goal, Node node, - RuleApp ruleApp, - Integer executedNumberOfSetNodes) { - super.handleNodeLimitNotExceeded(maxApplications, timeout, proof, startTime, countApplied, - goal, node, ruleApp, executedNumberOfSetNodes); - SourceElement activeStatement = NodeInfo.computeActiveStatement(ruleApp); - if (isBreakpointHit(activeStatement, ruleApp, proof, node)) { - setMaximalNumberOfSetNodesToExecutePerGoal(executedNumberOfSetNodes); - } - } - - /** - * Checks if a breakpoint is hit. - * - * @param activeStatement the activeStatement of the node - * @param ruleApp the applied {@link RuleApp} - * @param proof the current proof - * @param node the current node - * @return {@code true} at least one breakpoint is hit, {@code false} all breakpoints are not - * hit. - */ - protected boolean isBreakpointHit(SourceElement activeStatement, - RuleApp ruleApp, Proof proof, - Node node) { - boolean result = false; - Iterator iter = breakpoints.iterator(); - while (!result && iter.hasNext()) { - IBreakpoint next = iter.next(); - result = - next.isEnabled() && next.isBreakpointHit(activeStatement, ruleApp, node); - } - return result; - } - - /** - * {@inheritDoc} - */ - @Override - public void addBreakpoint(IBreakpoint breakpoint) { - breakpoints.add(breakpoint); - } - - /** - * {@inheritDoc} - */ - @Override - public void removeBreakpoint(IBreakpoint breakpoint) { - breakpoints.remove(breakpoint); - } - - /** - * {@inheritDoc} - */ - @Override - public Set getBreakpoints() { - return breakpoints; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionGoalChooser.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionGoalChooser.java deleted file mode 100644 index a6106ebaf7d..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionGoalChooser.java +++ /dev/null @@ -1,176 +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.symbolic_execution.strategy; - -import java.util.LinkedHashSet; -import java.util.Set; - -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.prover.impl.DepthFirstGoalChooser; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.engine.GoalChooser; -import org.key_project.prover.engine.StopCondition; -import org.key_project.prover.rules.RuleApp; -import org.key_project.util.collection.ImmutableList; - -import org.jspecify.annotations.NonNull; -import org.jspecify.annotations.Nullable; - -/** - *

- * This {@link GoalChooser} is a special implementation of the default - * {@link DepthFirstGoalChooser}. The difference is that a rule which creates a new symbolic - * execution tree node on a {@link Goal} is only applied if all other {@link Goal}s will also - * creates new symbolic execution tree nodes. This has the advantage that invalid branches may - * closed before new symbolic execution tree nodes are created. - *

- *

- * The order in which new symbolic execution tree nodes are created is also managed by this - * {@link GoalChooser}. The idea is that on each {@link Goal} a new symbolic execution tree node is - * created before on one {@link Goal} a second one will be created. This has the affect that for - * instance on all branches of a branch statement the next statement is evaluated before the first - * branch executes the second statement. - *

- *

- * A second criteria is the used custom {@link StopCondition} of the current {@link Proof}. - * {@link Goal}s on that the next set node is allowed are preferred to branches on which is not - * allowed. This is required to make sure that for instance a step over or step return result is - * completely performed on all {@link Goal}s before on one {@link Goal} a further set node is - * executed. - *

- * - * @author Martin Hentschel - * @see SymbolicExecutionGoalChooserFactory - */ -public class SymbolicExecutionGoalChooser extends DepthFirstGoalChooser { - /** - * This {@link Set} is used to count on which {@link Goal}s a symbolic execution node was - * executed. Initially it is filled in {@link #getNextGoal()} with all possible {@link Goal}s. - * Every call of {@link #getNextGoal()} will then remove a {@link Goal} from this list. If a - * {@link Goal} is not contained in this list it is skipped in {@link #getNextGoal()} until the - * {@link Set} is empty which indicates that on all {@link Goal}s a symbolic execution tree node - * was created. Then the process starts again. - */ - private final Set goalsToPrefer = new LinkedHashSet<>(); - - /** - * The optional custom stop condition used in the current proof. - */ - private StopCondition stopCondition; - - /** - * {@inheritDoc} - */ - @Override - public @Nullable Goal getNextGoal() { - if (selectedList.size() >= 2) { - Goal goal = null; - // Reinitialize preferred set if required: Only with the goals where the stop condition - // accepts the next rule - if (stopCondition != null && goalsToPrefer.isEmpty()) { - for (Goal goalToPrefer : selectedList) { - if (stopCondition.isGoalAllowed(goalToPrefer, -1, -1L, -1L, -1)) { - goalsToPrefer.add(goalToPrefer); - } - } - } - // Reinitialize preferred set if required: With all goals - if (goalsToPrefer.isEmpty()) { - for (Goal goalToPrefer : selectedList) { - goalsToPrefer.add(goalToPrefer); - } - } - // Select goal - Set goalsWhereStopConditionDoNotAllowNextRule = new LinkedHashSet<>(); - do { - Goal next = super.getNextGoal(); - if (next == null) { - return null; - } - Node node = next.node(); - RuleApp ruleApp = next.getRuleAppManager().peekNext(); - if (!SymbolicExecutionUtil.isSymbolicExecutionTreeNode(node, ruleApp)) { - // Internal proof node, goal from super class can be used - goal = next; - } else { - // Preferred goals should be used first, check if goal from super class is - // preferred - if (goalsToPrefer.remove(next) || goalsToPrefer.isEmpty()) { - // Goal is preferred, so check if next rule is allowed - if (stopCondition == null - || stopCondition.isGoalAllowed(next, -1, -1L, -1L, -1)) { - // Next rule allowed, goal is preferred so return it as result - goal = next; - } else { - // Goal is not preferred so collect internal to avoid endless loops - if (goalsWhereStopConditionDoNotAllowNextRule.add(next)) { - // Update selected list to get a new goal in next loop iteration - Goal head = selectedList.head(); - selectedList = selectedList.tail(); - selectedList = selectedList.append(head); - } else { - // Next rule not allowed, but all other goals also don't allow it, - // so return it - goal = next; - } - } - } - // Check if a goal was found in this loop iteration, if not change order of - // goals in super class - if (goal == null) { - // Update selected list to get a new goal in next loop iteration - Goal head = selectedList.head(); - selectedList = selectedList.tail(); - selectedList = selectedList.append(head); - } - } - } while (goal == null); - return goal; - } else { - // Return the only goal - return super.getNextGoal(); - } - } - - /** - * {@inheritDoc} - */ - @Override - public void init(Proof p_proof, ImmutableList p_goals) { - // Clear preferred set to make sure that it is refilled when the first Goal should be - // selected and no old state is used. - goalsToPrefer.clear(); - // Update stop condition - stopCondition = p_proof != null - ? p_proof.getSettings().getStrategySettings().getCustomApplyStrategyStopCondition() - : null; - // Update available goals in super class - super.init(p_proof, p_goals); - } - - /** - * {@inheritDoc} - */ - @Override - public void removeGoal(Goal goal) { - // Update available goals in super class - super.removeGoal(goal); - // Remove no longer relevant goal from preferred set - goalsToPrefer.remove(goal); - } - - /** - * {@inheritDoc} - */ - @Override - public void updateGoalList(Object node, @NonNull ImmutableList newGoals) { - // Update available goals in super class - super.updateGoalList(node, newGoals); - // Remove no longer relevant goals from preferred set - goalsToPrefer.removeIf(next -> !proof.openGoals().contains(next)); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionGoalChooserFactory.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionGoalChooserFactory.java deleted file mode 100644 index 74fe4789abb..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionGoalChooserFactory.java +++ /dev/null @@ -1,47 +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.symbolic_execution.strategy; - -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Proof; - -import org.key_project.prover.engine.GoalChooser; -import org.key_project.prover.engine.GoalChooserFactory; - -/** - * This {@link GoalChooserFactory} creates a special {@link GoalChooser} for symbolic execution. - * - * @author Martin Hentschel - * @see SymbolicExecutionGoalChooser - */ -public class SymbolicExecutionGoalChooserFactory implements GoalChooserFactory { - /** - * The name of this goal chooser. - */ - public static final String NAME = "Symbolic Execution Goal Chooser"; - - /** - * {@inheritDoc} - */ - @Override - public GoalChooser create() { - return new SymbolicExecutionGoalChooser(); - } - - /** - * {@inheritDoc} - */ - @Override - public GoalChooserFactory copy() { - return new SymbolicExecutionGoalChooserFactory(); - } - - /** - * {@inheritDoc} - */ - @Override - public String name() { - return NAME; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionStrategy.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionStrategy.java deleted file mode 100644 index 515695c1e7a..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionStrategy.java +++ /dev/null @@ -1,348 +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.symbolic_execution.strategy; - -import java.util.ArrayList; - -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.strategy.JavaCardDLStrategy; -import de.uka.ilkd.key.strategy.Strategy; -import de.uka.ilkd.key.strategy.StrategyFactory; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.strategy.definition.IDefaultStrategyPropertiesFactory; -import de.uka.ilkd.key.strategy.definition.OneOfStrategyPropertyDefinition; -import de.uka.ilkd.key.strategy.definition.StrategyPropertyValueDefinition; -import de.uka.ilkd.key.strategy.definition.StrategySettingsDefinition; -import de.uka.ilkd.key.strategy.feature.*; -import de.uka.ilkd.key.strategy.feature.instantiator.OneOfCP; -import de.uka.ilkd.key.strategy.termProjection.FocusProjection; -import de.uka.ilkd.key.symbolic_execution.rule.ModalitySideProofRule; -import de.uka.ilkd.key.symbolic_execution.rule.QuerySideProofRule; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Name; -import org.key_project.prover.proof.ProofGoal; -import org.key_project.prover.proof.rulefilter.SetRuleFilter; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.strategy.costbased.MutableState; -import org.key_project.prover.strategy.costbased.RuleAppCost; -import org.key_project.prover.strategy.costbased.TopRuleAppCost; -import org.key_project.prover.strategy.costbased.feature.BinaryFeature; -import org.key_project.prover.strategy.costbased.feature.ConditionalFeature; -import org.key_project.prover.strategy.costbased.feature.Feature; -import org.key_project.prover.strategy.costbased.feature.ScaleFeature; -import org.key_project.prover.strategy.costbased.termProjection.TermBuffer; - -import org.jspecify.annotations.NonNull; - -/** - * {@link Strategy} to use for symbolic execution. - */ -public class SymbolicExecutionStrategy extends JavaCardDLStrategy { - /** - * The {@link Name} of the symbolic execution {@link Strategy}. - */ - public static final Name name = new Name("Symbolic Execution Strategy"); - - /** - * The default factory. - */ - public static final IDefaultStrategyPropertiesFactory DEFAULT_FACTORY = - () -> getSymbolicExecutionStrategyProperties(true, false, - false, false, false, false); - - /** - * Constructor. - * - * @param proof The proof. - * @param sp The {@link StrategyProperties} to use. - */ - private SymbolicExecutionStrategy(Proof proof, StrategyProperties sp) { - super(proof, sp); - // Update cost dispatcher - RuleSetDispatchFeature costRsd = getCostComputationDispatcher(); - - clearRuleSetBindings(costRsd, "simplify_prog"); - bindRuleSet(costRsd, "simplify_prog", 10000); - - clearRuleSetBindings(costRsd, "simplify_prog_subset"); - bindRuleSet(costRsd, "simplify_prog_subset", 10000); - - Feature splitF = ScaleFeature.createScaled(CountBranchFeature.INSTANCE, -4000); - bindRuleSet(costRsd, "split_if", splitF); // The costs of rules in heuristic "split_if" is - // reduced at runtime by numberOfBranches * -400. - // The result is that rules of "split_if" - // preferred to "split_cond" and run and step into - // has the same behavior - bindRuleSet(costRsd, "instanceof_to_exists", inftyConst()); - - // Update instantiation dispatcher - if (StrategyProperties.SYMBOLIC_EXECUTION_ALIAS_CHECK_IMMEDIATELY - .equals(sp.get(StrategyProperties.SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY))) { - // Make sure that an immediately alias check is performed by doing cuts of objects to - // find out if they can be the same or not - RuleSetDispatchFeature instRsd = getDispatcher(StrategyAspect.Instantiation); - enableInstantiate(); - final TermBuffer buffer = new TermBuffer<>(); - Feature originalCut = instRsd.get(getHeuristic("cut")); - Feature newCut = forEach(buffer, new CutHeapObjectsTermGenerator(), - add(instantiate("cutFormula", buffer), longConst(-10000))); - if (originalCut instanceof OneOfCP) { - clearRuleSetBindings(instRsd, "cut"); - bindRuleSet(instRsd, "cut", oneOf(originalCut, newCut)); - } else { - bindRuleSet(instRsd, "cut", newCut); - } - disableInstantiate(); - } - // TODO: For delayed similar to sequentContainsNoPrograms() - } - - /** - * {@inheritDoc} - */ - @Override - protected @NonNull Feature setupApprovalF() { - Feature result = super.setupApprovalF(); - // Make sure that cuts are only applied if the cut term is not already part of the sequent. - // This check is performed exactly before the rule is applied because the sequent might has - // changed in the time after the schema variable instantiation was instantiated. - final SetRuleFilter depFilter = new SetRuleFilter(); - depFilter.addRuleToSet(getProof().getInitConfig().lookupActiveTaclet(new Name("cut"))); - result = add(result, - ConditionalFeature.createConditional(depFilter, new CutHeapObjectsFeature())); - return result; - } - - /** - * {@inheritDoc} - */ - @Override - protected @NonNull Feature setupGlobalF(@NonNull Feature dispatcher) { - Feature globalF = super.setupGlobalF(dispatcher); - // Make sure that modalities without symbolic execution label are executed first because - // they might forbid rule application on modalities with symbolic execution label (see loop - // body branches) - globalF = add(globalF, ifZero(not(new BinaryFeature() { - @Override - protected > boolean filter(RuleApp app, - PosInOccurrence pos, GOAL goal, MutableState mState) { - return pos != null - && SymbolicExecutionUtil.hasSymbolicExecutionLabel(pos.subTerm()); - } - }), longConst(-3000))); - // Make sure that the modality which executes a loop body is preferred against the - // modalities which executes special loop terminations like return, exceptions or break. - globalF = - add(globalF, - ifZero(add(new Feature() { - @Override - public > RuleAppCost computeCost( - RuleApp app, PosInOccurrence pos, - GOAL goal, MutableState mState) { - return pos != null ? cost(0) : TopRuleAppCost.INSTANCE; - } - }, - applyTF(FocusProjection.INSTANCE, - hasLabel(SymbolicExecutionUtil.LOOP_BODY_LABEL))), - longConst(-2000))); - globalF = add(globalF, querySideProofFeature()); - globalF = add(globalF, modalitySideProofFeature()); - return globalF; - } - - /** - * Computes the cost {@link Feature} for the {@link ModalitySideProofRule}. - * - * @return The cost {@link Feature} for the {@link ModalitySideProofRule}. - */ - protected Feature modalitySideProofFeature() { - SetRuleFilter filter = new SetRuleFilter(); - filter.addRuleToSet(ModalitySideProofRule.INSTANCE); - if (StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_SIDE_PROOF.equals( - strategyProperties.get( - StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY))) { - return ConditionalFeature.createConditional(filter, longConst(-3050)); - } else { - return ConditionalFeature.createConditional(filter, inftyConst()); - } - } - - /** - * Computes the cost {@link Feature} for the {@link QuerySideProofRule}. - * - * @return The cost {@link Feature} for the {@link QuerySideProofRule}. - */ - protected Feature querySideProofFeature() { - SetRuleFilter filter = new SetRuleFilter(); - filter.addRuleToSet(QuerySideProofRule.INSTANCE); - if (StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_SIDE_PROOF.equals( - strategyProperties.get( - StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY))) { - return ConditionalFeature.createConditional(filter, longConst(-3050)); // Rule must be - // preferred to - // rules with - // heuristic - // "query_axiom" - // and rule - // QueryExpand - } else { - return ConditionalFeature.createConditional(filter, inftyConst()); - } - } - - /** - * {@inheritDoc} - */ - @Override - public @NonNull Name name() { - return name; - } - - /** - * Returns the default {@link StrategyProperties} of symbolic execution. - * - * @param quantifierInstantiationWithSplitting Instantiate quantifiers? - * @param methodTreatmentContract Use method contracts or inline method bodies otherwise? - * @param loopTreatmentInvariant Use loop invariants or unrole loops otherwise? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - * @return The default {@link StrategyProperties} for symbolic execution. - */ - public static StrategyProperties getSymbolicExecutionStrategyProperties( - boolean quantifierInstantiationWithSplitting, boolean methodTreatmentContract, - boolean loopTreatmentInvariant, boolean blockTreatmentContract, - boolean nonExecutionBranchHidingSideProofs, boolean aliasChecks) { - StrategyProperties sp = new StrategyProperties(); - StrategyProperties.setDefaultStrategyProperties(sp, quantifierInstantiationWithSplitting, - methodTreatmentContract, loopTreatmentInvariant, blockTreatmentContract, - nonExecutionBranchHidingSideProofs, aliasChecks); - return sp; - } - - /** - * The {@link StrategyFactory} to create instances of {@link SymbolicExecutionStrategy}. - * - * @author Martin Hentschel - */ - public static class Factory implements StrategyFactory { - /** - * Shown string for method treatment "Expand". - */ - public static final String METHOD_TREATMENT_EXPAND = "Inline Methods"; - - /** - * Shown string for method treatment "Contract". - */ - public static final String METHOD_TREATMENT_CONTRACT = "Use Contracts"; - - /** - * Shown string for loop treatment "Expand". - */ - public static final String LOOP_TREATMENT_EXPAND = "Unroll Loops"; - - /** - * Shown string for loop treatment "Invariant". - */ - public static final String LOOP_TREATMENT_INVARIANT = "Use Loop Invariants"; - - /** - * Shown string for block treatment "Expand". - */ - public static final String BLOCK_TREATMENT_EXPAND = "Expand Blocks"; - - /** - * Shown string for block treatment "Invariant". - */ - public static final String BLOCK_TREATMENT_INVARIANT = "Use Contracts"; - - /** - * Shown string for alias check "Never". - */ - public static final String NON_EXECUTION_BRANCH_HIDING_OFF = "Off"; - - /** - * Shown string for alias check "Immediately". - */ - public static final String NON_EXECUTION_BRANCH_HIDING_SIDE_PROOF = "On"; - - /** - * Shown string for alias check "Never". - */ - public static final String ALIAS_CHECK_NEVER = "Never"; - - /** - * Shown string for alias check "Immediately". - */ - public static final String ALIAS_CHECK_IMMEDIATELY = "Immediately"; - - /** - * {@inheritDoc} - */ - @Override - public Strategy<@NonNull Goal> create(Proof proof, StrategyProperties sp) { - return new SymbolicExecutionStrategy(proof, sp); - } - - /** - * {@inheritDoc} - */ - @Override - public @NonNull Name name() { - return name; - } - - /** - * {@inheritDoc} - */ - @Override - public @NonNull StrategySettingsDefinition getSettingsDefinition() { - // Properties - OneOfStrategyPropertyDefinition methodTreatment = new OneOfStrategyPropertyDefinition( - StrategyProperties.METHOD_OPTIONS_KEY, "Method Treatment", - new StrategyPropertyValueDefinition(StrategyProperties.METHOD_EXPAND, - METHOD_TREATMENT_EXPAND, null), - new StrategyPropertyValueDefinition(StrategyProperties.METHOD_CONTRACT, - METHOD_TREATMENT_CONTRACT, null)); - OneOfStrategyPropertyDefinition loopTreatment = new OneOfStrategyPropertyDefinition( - StrategyProperties.LOOP_OPTIONS_KEY, "Loop Treatment", - new StrategyPropertyValueDefinition(StrategyProperties.LOOP_EXPAND, - LOOP_TREATMENT_EXPAND, null), - new StrategyPropertyValueDefinition(StrategyProperties.LOOP_INVARIANT, - LOOP_TREATMENT_INVARIANT, null)); - OneOfStrategyPropertyDefinition blockTreatment = new OneOfStrategyPropertyDefinition( - StrategyProperties.BLOCK_OPTIONS_KEY, "Block Treatment", - new StrategyPropertyValueDefinition(StrategyProperties.BLOCK_EXPAND, - BLOCK_TREATMENT_EXPAND, null), - new StrategyPropertyValueDefinition(StrategyProperties.BLOCK_CONTRACT_INTERNAL, - BLOCK_TREATMENT_INVARIANT, null)); - OneOfStrategyPropertyDefinition branchHiding = new OneOfStrategyPropertyDefinition( - StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY, - "Non Execution Branch Hiding", - new StrategyPropertyValueDefinition( - StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF, - NON_EXECUTION_BRANCH_HIDING_OFF, null), - new StrategyPropertyValueDefinition( - StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_SIDE_PROOF, - NON_EXECUTION_BRANCH_HIDING_SIDE_PROOF, null)); - OneOfStrategyPropertyDefinition aliasChecks = new OneOfStrategyPropertyDefinition( - StrategyProperties.SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY, "Alias Checks", - new StrategyPropertyValueDefinition( - StrategyProperties.SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER, ALIAS_CHECK_NEVER, - null), - new StrategyPropertyValueDefinition( - StrategyProperties.SYMBOLIC_EXECUTION_ALIAS_CHECK_IMMEDIATELY, - ALIAS_CHECK_IMMEDIATELY, null)); - // Model - return new StrategySettingsDefinition(false, null, 1000, "Symbolic Execution Options", - DEFAULT_FACTORY, - new ArrayList<>(), - methodTreatment, loopTreatment, blockTreatment, branchHiding, aliasChecks); - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/AbstractBreakpoint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/AbstractBreakpoint.java deleted file mode 100644 index 8b8406371f7..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/AbstractBreakpoint.java +++ /dev/null @@ -1,67 +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.symbolic_execution.strategy.breakpoint; - -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Proof; - -/** - * Provides the basic implementation of an {@link IBreakpoint}. - * - * @author Martin Hentschel - */ -public abstract class AbstractBreakpoint implements IBreakpoint { - /** - * The proof this stop condition is associated with. - */ - private final Proof proof; - - /** - * The flag if the Breakpoint is enabled. - */ - private boolean enabled; - - /** - * Constructor. - * - * @param proof The {@link Proof} in which this {@link IBreakpoint} is used. - * @param enabled The enabled state. - */ - protected AbstractBreakpoint(Proof proof, boolean enabled) { - this.proof = proof; - this.enabled = enabled; - } - - /** - * {@inheritDoc} - */ - @Override - public void updateState(Goal goal, int maxApplications, long timeout, long startTime, - int countApplied) { - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isEnabled() { - return enabled; - } - - /** - * Sets the new enabled value. - * - * @param enabled the new value - */ - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - /** - * @return the proof - */ - public Proof getProof() { - return proof; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/AbstractConditionalBreakpoint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/AbstractConditionalBreakpoint.java deleted file mode 100644 index 40cd53d2541..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/AbstractConditionalBreakpoint.java +++ /dev/null @@ -1,557 +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.symbolic_execution.strategy.breakpoint; - -import java.util.*; -import java.util.Map.Entry; - -import de.uka.ilkd.key.java.*; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.StatementBlock; -import de.uka.ilkd.key.java.ast.StatementContainer; -import de.uka.ilkd.key.java.ast.abstraction.*; -import de.uka.ilkd.key.java.ast.declaration.*; -import de.uka.ilkd.key.java.ast.reference.IExecutionContext; -import de.uka.ilkd.key.java.visitor.ProgramVariableCollector; -import de.uka.ilkd.key.logic.*; -import de.uka.ilkd.key.logic.op.*; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.OpReplacer; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.speclang.PositionedString; -import de.uka.ilkd.key.speclang.jml.translation.Context; -import de.uka.ilkd.key.speclang.njml.JmlIO; -import de.uka.ilkd.key.speclang.translation.SLTranslationException; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.SyntaxElement; -import org.key_project.prover.engine.impl.ApplyStrategyInfo; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.util.collection.ImmutableList; - -import org.jspecify.annotations.NonNull; - -/** - * Adds the funtionality to breakpoints to evaluate conditions. - * - * @author Martin Hentschel - */ -public abstract class AbstractConditionalBreakpoint extends AbstractHitCountBreakpoint { - /** - * The condition for this Breakpoint (set by user). - */ - private JTerm condition; - - /** - * The flag if the the condition for the associated Breakpoint is enabled - */ - private boolean conditionEnabled; - - /** - * The condition of the associated breakpoint saved as a String - */ - private String conditionString; - - /** - * A list of {@link LocationVariable}s containing all variables that were parsed and have to be - * possibly replaced during runtime. - */ - private ImmutableList varsForCondition; - - /** - * The KeYJavaType of the container of the element associated with the breakpoint. - */ - private final KeYJavaType containerType; - - /** - * A list of variables KeY has to hold to evaluate the condition - */ - private final Set toKeep; - - /** - * A {@link Map} mapping from relevant variables for the condition to their runtime equivalent - * in KeY - */ - private Map variableNamingMap; - - /** - * The list of parameter variables of the method that contains the associated breakpoint - */ - private final Set paramVars; - - /** - * A {@link LocationVariable} representing the instance the class KeY is working on - */ - private LocationVariable selfVar; - - /** - * The {@link IProgramMethod} this Breakpoint lies within - */ - private IProgramMethod pm; - - /** - * Creates a new {@link AbstractConditionalBreakpoint}. Call setCondition immediately after - * calling the constructor! - * - * @param hitCount the number of hits after which the execution should hold at this breakpoint - * @param pm the {@link IProgramMethod} representing the Method which the Breakpoint is located - * at - * @param proof the {@link Proof} that will be executed and should stop - * @param enabled flag if the Breakpoint is enabled - * @param conditionEnabled flag if the condition is enabled - * @param methodStart the line the containing method of this breakpoint starts at - * @param methodEnd the line the containing method of this breakpoint ends at - * @param containerType the type of the element containing the breakpoint - */ - protected AbstractConditionalBreakpoint(int hitCount, IProgramMethod pm, Proof proof, - boolean enabled, boolean conditionEnabled, int methodStart, int methodEnd, - KeYJavaType containerType) { - super(hitCount, proof, enabled); - this.setPm(pm); - paramVars = new HashSet<>(); - setVariableNamingMap(new HashMap<>()); - toKeep = new HashSet<>(); - this.containerType = containerType; - this.conditionEnabled = conditionEnabled; - } - - /** - * {@inheritDoc} - */ - @Override - public void updateState(Goal goal, int maxApplications, long timeout, long startTime, - int countApplied) { - super.updateState(goal, maxApplications, timeout, startTime, countApplied); - if (goal != null) { - Node node = goal.node(); - RuleApp ruleApp = goal.getRuleAppManager().peekNext(); - if (getVarsForCondition() != null && ruleApp != null && node != null) { - refreshVarMaps(ruleApp, node); - } - } - } - - /** - * put values in toKeep and variableNamingMap that can be found in the global variables of the - * node - * - * @param varForCondition - * @param node - * @param inScope - */ - private void putValuesFromGlobalVars(ProgramVariable varForCondition, Node node, - boolean inScope) { - for (IProgramVariable progVar : node.getLocalProgVars()) { - if (inScope && varForCondition.name().equals(progVar.name()) - && (getVariableNamingMap().get(varForCondition) == null - || getVariableNamingMap().get(varForCondition) - .equals(varForCondition))) { - toKeep.add((LocationVariable) progVar); - getVariableNamingMap().put(varForCondition, progVar); - } - } - } - - /** - * Returns a map containing the same entries as the variableNamingMap changes in one map do not - * effect the other map - * - * @return the cloned map - */ - private Map getOldMap() { - Map oldMap = new HashMap<>(); - for (Entry svSubstituteSVSubstituteEntry : getVariableNamingMap() - .entrySet()) { - Entry oldEntry = svSubstituteSVSubstituteEntry; - if (oldEntry.getKey() instanceof SyntaxElement - && oldEntry.getValue() instanceof SyntaxElement) { - oldMap.put((SyntaxElement) oldEntry.getKey(), (SyntaxElement) oldEntry.getValue()); - } - } - return oldMap; - } - - /** - * removes all stored parameters in to Keep when the ruleApp on the current node would induce a - * method return - * - * @param node - * @param ruleApp - * @param inScope - */ - private void freeVariablesAfterReturn(Node node, RuleApp ruleApp, - boolean inScope) { - if ((SymbolicExecutionUtil.isMethodReturnNode(node, ruleApp) - || SymbolicExecutionUtil.isExceptionalMethodReturnNode(node, ruleApp)) && inScope) { - toKeep.clear(); - } - } - - /** - * put relevant values from the current nodes renamings in toKeep and variableNamingMap - * - * @param varForCondition the variable that might be relevant for the condition - * @param node the current - * @param inScope the flag to determine if the current statement is in the scope of the - * breakpoint - * @param oldMap the oldMap variableNamings - */ - private void putValuesFromRenamings(ProgramVariable varForCondition, Node node, boolean inScope, - Map oldMap, - RuleApp ruleApp) { - // look for renamings KeY did - boolean found = false; - // get current renaming tables - ImmutableList renamingTables = node.getRenamingTable(); - if (renamingTables != null && renamingTables.size() > 0) { - // iterate over renaming tables - Iterator itr = renamingTables.iterator(); - while (itr.hasNext() && !found) { - RenamingTable renamingTable = itr.next(); - // iterate over renamings within table - for (Entry value : renamingTable - .getHashMap().entrySet()) { - Entry entry = value; - if (entry.getKey() instanceof LocationVariable - && entry.getValue() instanceof SyntaxElement) { - if ((VariableNamer.getBasename(((LocationVariable) entry.getKey()).name())) - .equals(varForCondition.name()) - && ((LocationVariable) entry.getKey()).name().toString() - .contains("#") - && paramVars.contains(varForCondition)) { - // found relevant renaming for a parameter variable - if (oldMap.get(varForCondition) != entry.getValue()) { - // remove old value from toKeep - toKeep.remove((LocationVariable) oldMap.get(varForCondition)); - } - // add new value - toKeep.add((LocationVariable) entry.getValue()); - getVariableNamingMap().put(varForCondition, - (SyntaxElement) entry.getValue()); - found = true; - break; - } else if (inScope && ((LocationVariable) entry.getKey()).name() - .equals(varForCondition.name())) { - // found relevant renaming for local variable - if (oldMap.get(varForCondition) != entry.getValue()) { - // remove old value from toKeep - toKeep.remove((LocationVariable) oldMap.get(varForCondition)); - } - // add new value - toKeep.add((LocationVariable) entry.getValue()); - getVariableNamingMap().put(varForCondition, - (SyntaxElement) entry.getValue()); - found = true; - break; - } - } - } - } - } - } - - - /** - * Modifies toKeep and variableNamingMap to hold the correct parameters after execution of the - * given ruleApp on the given node - * - * @param ruleApp the applied rule app - * @param node the current node - */ - protected void refreshVarMaps(RuleApp ruleApp, Node node) { - boolean inScope = isInScope(node); - // collect old values - Map oldMap = getOldMap(); - // put values into map which have to be replaced - for (ProgramVariable varForCondition : getVarsForCondition()) { - // put global variables only done when a variable is instantiated by - // KeY for the first time - putValuesFromGlobalVars(varForCondition, node, inScope); - // put renamings into map and tokeep remove no longer need vars from - // tokeep - putValuesFromRenamings(varForCondition, node, isInScopeForCondition(node), oldMap, - ruleApp); - } - freeVariablesAfterReturn(node, ruleApp, inScope); - } - - /** - * Computes the Term that can be evaluated, from the user given condition - * - * @param condition the condition given by the user - * @return the {@link JTerm} that represents the condition - */ - private JTerm computeTermForCondition(String condition) { - if (condition == null) { - return getProof().getServices().getTermBuilder().tt(); - } - // collect all variables needed to parse the condition - setSelfVar(new LocationVariable( - new ProgramElementName(getProof().getServices().getTermBuilder().newName("self")), - containerType, null, false, false)); - ImmutableList varsForCondition = ImmutableList.nil(); - if (getPm() != null) { - // collect parameter variables - for (ParameterDeclaration pd : getPm().getParameters()) { - for (VariableSpecification vs : pd.getVariables()) { - this.paramVars.add((LocationVariable) vs.getProgramVariable()); - varsForCondition = - varsForCondition.append((LocationVariable) vs.getProgramVariable()); - } - } - // Collect local variables - StatementBlock result = getStatementBlock(getPm().getBody()); - ProgramVariableCollector variableCollector = - new ProgramVariableCollector(result, getProof().getServices()); - variableCollector.start(); - Set undeclaredVariables = variableCollector.result(); - for (LocationVariable x : undeclaredVariables) { - varsForCondition = saveAddVariable(x, varsForCondition); - } - } - JavaInfo info = getProof().getServices().getJavaInfo(); - List kjts = info.getAllSupertypes(containerType); - ImmutableList globalVars = ImmutableList.nil(); - for (KeYJavaType kjtloc : kjts) { - if (kjtloc.getJavaType() instanceof TypeDeclaration) { - ImmutableList fields = - info.getAllFields((TypeDeclaration) kjtloc.getJavaType()); - for (Field field : fields) { - if ((kjtloc.equals(containerType) || !field.isPrivate()) - && !((LocationVariable) field.getProgramVariable()).isImplicit()) { - globalVars = - globalVars.append((LocationVariable) field.getProgramVariable()); - } - } - } - } - varsForCondition = varsForCondition.append(globalVars); - this.setVarsForCondition(varsForCondition); - // parse string - PositionedString ps = new PositionedString(condition); - - var context = Context.inMethodWithSelfVar(pm, selfVar); - JmlIO io = new JmlIO(getProof().getServices()).context(context) - .parameters(varsForCondition); - - return io.parseExpression(ps); - } - - /** - * Checks if the condition, that was given by the user, evaluates to true with the current of - * the proof - * - * @param ruleApp the {@link RuleApp} to be executed next - * @param node the current {@link Node} - * @return true if the condition evaluates to true - */ - protected boolean conditionMet(RuleApp ruleApp, Node node) { - ApplyStrategyInfo<@NonNull Proof, Goal> info = null; - try { - // initialize values - PosInOccurrence pio = ruleApp.posInOccurrence(); - JTerm t = (JTerm) pio.subTerm(); - JTerm term = TermBuilder.goBelowUpdates(t); - IExecutionContext ec = - JavaTools.getInnermostExecutionContext(term.javaBlock(), getProof().getServices()); - // put values into map which have to be replaced - if (ec != null) { - getVariableNamingMap().put(getSelfVar(), ec.getRuntimeInstance()); - } - // replace renamings etc. - final TermBuilder tb = getProof().getServices().getTermBuilder(); - OpReplacer replacer = - new OpReplacer(getVariableNamingMap(), tb.tf()); - JTerm termForSideProof = replacer.replace(condition); - // start side proof - JTerm toProof = tb.equals(tb.tt(), termForSideProof); - // New OneStepSimplifier is required because it has an internal state and the default - // instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(getProof(), false); - Sequent sequent = - SymbolicExecutionUtil.createSequentToProveWithNewSuccedent(node, pio, toProof); - info = SymbolicExecutionSideProofUtil.startSideProof(getProof(), sideProofEnv, sequent, - StrategyProperties.METHOD_CONTRACT, StrategyProperties.LOOP_INVARIANT, - StrategyProperties.QUERY_ON, StrategyProperties.SPLITTING_DELAYED); - return info.getProof().closed(); - } catch (ProofInputException e) { - return false; - } finally { - SymbolicExecutionSideProofUtil.disposeOrStore( - "Breakpoint condition computation on node " + node.serialNr() + ".", info); - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isBreakpointHit(SourceElement activeStatement, - RuleApp ruleApp, Node node) { - return (!conditionEnabled || conditionMet(ruleApp, node)) - && super.isBreakpointHit(activeStatement, ruleApp, node); - } - - /** - * For a given {@link StatementContainer} this method computes the {@link StatementBlock} that - * contains all lines before the line the Breakpoint is at, including the line itself. - * - * @param statementContainer the {@link StatementContainer} to build the block from - * @return the {@link StatementBlock} representing the container without the line below the - * Breakpoint - */ - protected abstract StatementBlock getStatementBlock(StatementContainer statementContainer); - - /** - * Checks if the statement of a given {@link Node} is in the scope of this breakpoint. - * - * @param node the {@link Node} to be checked - * @return true if the node represents a statement in the scope of this breakpoint. - */ - protected abstract boolean isInScope(Node node); - - /** - * Checks if the statement of a given {@link Node} is in the scope of this breakpoint. - * - * @param node the {@link Node} to be checked - * @return true if the node represents a statement in the scope of this breakpoint. - */ - protected abstract boolean isInScopeForCondition(Node node); - - private ImmutableList saveAddVariable(LocationVariable x, - ImmutableList varsForCondition) { - boolean contains = false; - for (var paramVar : varsForCondition) { - if (paramVar.toString().equals(x.toString())) { - contains = true; - break; - } - } - if (!contains && !x.isMember()) { - varsForCondition = varsForCondition.append(x); - } - return varsForCondition; - } - - /** - * Sets the new conditionEnabled value. - * - * @param conditionEnabled the new value - */ - public void setConditionEnabled(boolean conditionEnabled) { - this.conditionEnabled = conditionEnabled; - } - - /** - * Returns the condition of the associated Breakpoint. - * - * @return the condition of the associated Breakpoint - */ - public JTerm getCondition() { - return condition; - } - - /** - * Checks if the condition for the associated Breakpoint is enabled. - * - * @return returns true if the condition for the associated Breakpoint is enabled - */ - public boolean isConditionEnabled() { - return conditionEnabled; - } - - /** - * Sets the condition to the Term that is parsed from the given String. - * - * @param condition the String to be parsed - * @throws SLTranslationException if the parsing failed - */ - public void setCondition(String condition) throws SLTranslationException { - this.conditionString = condition; - this.condition = conditionEnabled ? computeTermForCondition(condition) - : getProof().getServices().getTermBuilder().tt(); - } - - /** - * Returns the condition represented as a String. - * - * @return the condition represented as a String - */ - public String getConditionString() { - return conditionString; - } - - /** - * Returns the variables KeY should keep to evaluate the condition. - * - * @return the variables KeY should keep to evaluate the condition - */ - public Set getToKeep() { - return toKeep; - } - - /** - * @return the variableNamingMap - */ - public Map getVariableNamingMap() { - return variableNamingMap; - } - - /** - * @param variableNamingMap the variableNamingMap to set - */ - public void setVariableNamingMap(Map variableNamingMap) { - this.variableNamingMap = variableNamingMap; - } - - /** - * @return the selfVar - */ - public LocationVariable getSelfVar() { - return selfVar; - } - - /** - * @param selfVar the selfVar to set - */ - public void setSelfVar(LocationVariable selfVar) { - this.selfVar = selfVar; - } - - /** - * @return the varsForCondition - */ - public ImmutableList getVarsForCondition() { - return varsForCondition; - } - - /** - * @param varsForCondition the varsForCondition to set - */ - public void setVarsForCondition(ImmutableList varsForCondition) { - this.varsForCondition = varsForCondition; - } - - /** - * @return the pm - */ - public IProgramMethod getPm() { - return pm; - } - - /** - * @param pm the pm to set - */ - public void setPm(IProgramMethod pm) { - this.pm = pm; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/AbstractHitCountBreakpoint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/AbstractHitCountBreakpoint.java deleted file mode 100644 index 8b63128be32..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/AbstractHitCountBreakpoint.java +++ /dev/null @@ -1,104 +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.symbolic_execution.strategy.breakpoint; - -import java.util.HashMap; -import java.util.Map; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; - -import org.key_project.prover.rules.RuleApp; - -/** - * Adds the hit count functionality to an {@link AbstractBreakpoint}. - * - * @author Martin Hentschel - */ -public abstract class AbstractHitCountBreakpoint extends AbstractBreakpoint { - /** - * The HitCount of the Breakpoint (set by user). - */ - private int hitCount; - - /** - * Counter for how often the Breakpoint was hit. - */ - private int hitted = 0; - - /** - * Map to save the nodes that already have been reached, so nodes are not counted twice for the - * hitcount - */ - private final Map hittedNodes = new HashMap<>(); - - /** - * Creates a new {@link AbstractHitCountBreakpoint}. - * - * @param hitCount the number of hits after which the execution should hold at this breakpoint - * @param proof the {@link Proof} that will be executed and should stop - * @param enabled flag if the Breakpoint is enabled - */ - protected AbstractHitCountBreakpoint(int hitCount, Proof proof, boolean enabled) { - super(proof, enabled); - this.hitCount = hitCount; - } - - /** - * Checks if the hitcount is exceeded for the given {@link LineBreakpoint}. If the Hitcount - * is not exceeded the hitted counter is incremented, otherwise its set to 0. - * - * @return true if the Hitcount is exceeded or the {@link LineBreakpoint} has no Hitcount. - */ - protected boolean hitcountExceeded(Node node) { - if (!(hitCount == -1)) { - if (!hittedNodes.containsKey(node.serialNr())) { - if (hitCount == hitted + 1) { - hitted = 0; - hittedNodes.put(node.serialNr(), Boolean.TRUE); - return true; - } else { - hittedNodes.put(node.serialNr(), Boolean.FALSE); - hitted++; - } - } else { - return hittedNodes.get(node.serialNr()); - } - } else { - return true; - } - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isBreakpointHit(SourceElement activeStatement, RuleApp ruleApp, Node node) { - return hitcountExceeded(node); - } - - /** - * Returns the hitCount of the associated Breakpoint. - * - * @return the hitCount of the associated Breakpoint - */ - public int getHitCount() { - return hitCount; - } - - /** - * Set the hitCount to the new value - * - * @param hitCount the new value - */ - public void setHitCount(int hitCount) { - if (this.hitCount != hitCount) { - this.hitCount = hitCount; - this.hitted = 0; - hittedNodes.clear(); - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/ExceptionBreakpoint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/ExceptionBreakpoint.java deleted file mode 100644 index 71fcaffab34..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/ExceptionBreakpoint.java +++ /dev/null @@ -1,172 +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.symbolic_execution.strategy.breakpoint; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import de.uka.ilkd.key.java.JavaInfo; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.statement.Throw; -import de.uka.ilkd.key.logic.op.LocationVariable; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.rules.RuleApp; - -/** - * This{@link ExceptionBreakpoint} represents an exception breakpoint and is responsible to tell the - * debugger to stop execution when the respective breakpoint is hit. - * - * @author Marco Drebing - */ -public class ExceptionBreakpoint extends AbstractHitCountBreakpoint { - /** - * The exception to watch for - */ - private final String exceptionName; - - /** - * a list of nodes of the Symbolic Execution Tree whose children represent exceptions - */ - private final Set exceptionParentNodes; - - /** - * a flag whether to watch for an uncaught exception - */ - private boolean caught; - - /** - * a flag whether to suspend on subclasses of the exception aswell - */ - private boolean suspendOnSubclasses; - - /** - * a flag to tell whether to stop at uncaught exceptions or not - */ - private boolean uncaught; - - /** - * Creates a new {@link AbstractHitCountBreakpoint}. - * - * @param proof the {@link Proof} that will be executed and should stop - * @param exceptionName the name of the exception to watch for - * @param caught flag to tell if caught exceptions lead to a stop - * @param uncaught flag to tell if uncaught exceptions lead to a stop - * @param suspendOnSubclasses flag to tell if the execution should suspend on subclasses of the - * exception aswell - * @param enabled flag if the Breakpoint is enabled - * @param hitCount the number of hits after which the execution should hold at this breakpoint - */ - public ExceptionBreakpoint(Proof proof, String exceptionName, boolean caught, boolean uncaught, - boolean suspendOnSubclasses, boolean enabled, int hitCount) { - super(hitCount, proof, enabled); - this.exceptionName = exceptionName; - exceptionParentNodes = new HashSet<>(); - this.caught = caught; - this.uncaught = uncaught; - this.suspendOnSubclasses = suspendOnSubclasses; - } - - /** - * Checks if the given node is a parent of the other given node. - * - * @param node The {@link Node} to start search in. - * @param parent The {@link Node} that is thought to be the parent. - * @return true if the parent node is one of the nodes parents - */ - public boolean isParentNode(Node node, Node parent) { - if (node != null) { - Node parentIter = node.parent(); - boolean result = false; - while (parentIter != null && !result) { - if (parentIter.equals(parent)) { - result = true; - } else { - parentIter = parentIter.parent(); - } - } - return result; - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isBreakpointHit(SourceElement activeStatement, RuleApp ruleApp, Node node) { - Node SETParent = SymbolicExecutionUtil.findParentSetNode(node); - if (activeStatement instanceof Throw throwStatement && isEnabled()) { - for (int i = 0; i < throwStatement.getChildCount(); i++) { - SourceElement childElement = throwStatement.getChildAt(i); - if (childElement instanceof LocationVariable locVar) { - if (locVar.getKeYJavaType().getSort().toString().equals(exceptionName) - && !exceptionParentNodes.contains(SETParent)) { - exceptionParentNodes.add(SETParent); - return true; - } else if (suspendOnSubclasses) { - JavaInfo info = node.proof().getServices().getJavaInfo(); - KeYJavaType kjt = locVar.getKeYJavaType(); - List kjts = info.getAllSupertypes(kjt); - for (KeYJavaType kjtloc : kjts) { - if (kjtloc.getSort().toString().equals(exceptionName) - && !exceptionParentNodes.contains(SETParent)) { - exceptionParentNodes.add(SETParent); - return true; - } - } - } - } - } - } - return false; - } - - /** - * @return the isCaught - */ - public boolean isCaught() { - return caught; - } - - /** - * @param isCaught the isCaught to set - */ - public void setCaught(boolean isCaught) { - this.caught = isCaught; - } - - /** - * @return the isUncaught - */ - public boolean isUncaught() { - return uncaught; - } - - /** - * @param isUncaught the isUncaught to set - */ - public void setUncaught(boolean isUncaught) { - this.uncaught = isUncaught; - } - - /** - * @return the suspendOnSubclasses - */ - public boolean isSuspendOnSubclasses() { - return suspendOnSubclasses; - } - - /** - * @param suspendOnSubclasses the suspendOnSubclasses to set - */ - public void setSuspendOnSubclasses(boolean suspendOnSubclasses) { - this.suspendOnSubclasses = suspendOnSubclasses; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/FieldWatchpoint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/FieldWatchpoint.java deleted file mode 100644 index b7578ad3b8d..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/FieldWatchpoint.java +++ /dev/null @@ -1,135 +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.symbolic_execution.strategy.breakpoint; - -import de.uka.ilkd.key.java.ast.*; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.expression.Assignment; -import de.uka.ilkd.key.java.ast.reference.FieldReference; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.ProgramVariable; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; - -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; - -/** - * This{@link FieldWatchpoint} represents a Java watchpoint and is responsible to tell the debugger - * to stop execution when the respective variable is accessed or modified. - * - * @author Marco Drebing - */ -public class FieldWatchpoint extends AbstractHitCountBreakpoint { - private boolean isAccess; - - private boolean isModification; - - private final String fullFieldName; - - /** - * Creates a new {@link FieldWatchpoint}. - * - * @param enabled flag if the Breakpoint is enabled - * @param hitCount the number of hits after which the execution should hold at this breakpoint - * @param fieldName the field to watch - * @param isAcces flag to watch for accesses - * @param isModification flag to watch for modifications - * @param containerKJT the type of the element containing the breakpoint - * @param proof the {@link Proof} that will be executed and should stop - */ - public FieldWatchpoint(boolean enabled, int hitCount, String fieldName, boolean isAcces, - boolean isModification, KeYJavaType containerKJT, Proof proof) { - super(hitCount, proof, enabled); - this.isAccess = isAcces; - this.isModification = isModification; - this.fullFieldName = containerKJT.getSort().toString() + "::" + fieldName; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isBreakpointHit(SourceElement activeStatement, RuleApp ruleApp, Node node) { - if (activeStatement instanceof Assignment assignment) { - SourceElement firstElement = assignment.getChildAt(0); - if (firstElement instanceof FieldReference) { - PosInOccurrence pio = ruleApp.posInOccurrence(); - JTerm t = (JTerm) pio.subTerm(); - if (((FieldReference) firstElement).getProgramVariable().name().toString() - .equals(fullFieldName) && isModification && hitcountExceeded(node)) { - return super.isBreakpointHit(activeStatement, ruleApp, node); - } - } - if (checkChildrenOfSourceElement(assignment) && hitcountExceeded(node)) { - return super.isBreakpointHit(activeStatement, ruleApp, node); - } - } else if (activeStatement != null) { - if (checkChildrenOfSourceElement(activeStatement) && hitcountExceeded(node)) { - return super.isBreakpointHit(activeStatement, ruleApp, node); - } - } - return false; - } - - private boolean checkChildrenOfSourceElement(SourceElement sourceElement) { - boolean found = false; - if (sourceElement instanceof Assignment assignment) { - for (int i = 1; i < assignment.getChildCount(); i++) { - SourceElement childElement = assignment.getChildAt(i); - if (childElement instanceof FieldReference field && field - .getProgramVariable().name().toString().equals(fullFieldName)) { - ProgramVariable progVar = field.getProgramVariable(); - if (fullFieldName.equals(progVar.toString())) { - return isAccess; - } - } else if (childElement instanceof NonTerminalProgramElement) { - found = found || checkChildrenOfSourceElement(childElement); - } - } - } else if (sourceElement instanceof NonTerminalProgramElement programElement) { - for (int i = 0; i < programElement.getChildCount(); i++) { - SourceElement childElement = programElement.getChildAt(i); - if (childElement instanceof FieldReference field && field - .getProgramVariable().name().toString().equals(fullFieldName)) { - ProgramVariable progVar = field.getProgramVariable(); - if (fullFieldName.equals(progVar.toString())) { - return isAccess; - } - } else if (childElement instanceof NonTerminalProgramElement) { - found = found || checkChildrenOfSourceElement(childElement); - } - } - } - return found; - } - - /** - * @return the isAccess - */ - public boolean isAccess() { - return isAccess; - } - - /** - * @param isAccess the isAccess to set - */ - public void setAccess(boolean isAccess) { - this.isAccess = isAccess; - } - - /** - * @return the isModification - */ - public boolean isModification() { - return isModification; - } - - /** - * @param isModification the isModification to set - */ - public void setModification(boolean isModification) { - this.isModification = isModification; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/IBreakpoint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/IBreakpoint.java deleted file mode 100644 index 11d38460d45..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/IBreakpoint.java +++ /dev/null @@ -1,56 +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.symbolic_execution.strategy.breakpoint; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.settings.StrategySettings; - -import org.key_project.prover.engine.StopCondition; -import org.key_project.prover.proof.ProofGoal; -import org.key_project.prover.rules.RuleApp; - -/** - * Defines the basic functionality of a breakpoint. - * - * @author Martin Hentschel - */ -public interface IBreakpoint { - /** - * Checks if the Breakpoint is enabled. - * - * @return true if Breakpoint is enabled - */ - boolean isEnabled(); - - /** - * This method is called from - * {@link StopCondition#isGoalAllowed(ProofGoal, int, long, long, int)} and can be used to - * update the state of the {@link IBreakpoint}. - * - * @param goal The current {@link Goal} on which the next rule will be applied. - * @param maxApplications The defined maximal number of rules to apply. Can be different to - * {@link StrategySettings#getMaxSteps()} in side proofs. - * @param timeout The defined timeout in ms or {@code -1} if disabled. Can be different to - * {@link StrategySettings#getTimeout()} in side proofs. - * @param startTime The timestamp when the apply strategy has started, computed via - * {@link System#currentTimeMillis()} - * @param countApplied The number of already applied rules. - */ - void updateState(Goal goal, int maxApplications, long timeout, long startTime, - int countApplied); - - /** - * Determines if the breakpoint represented by this BreakpointStopConition is triggered. - * Override this method in order to suspend execution when a breakpoint is hit. - * - * @param activeStatement the activeStatement of the node - * @param ruleApp the applied {@link RuleApp} - * @param node the current node - * @return true if execution should hold - */ - boolean isBreakpointHit(SourceElement activeStatement, - RuleApp ruleApp, Node node); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/KeYWatchpoint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/KeYWatchpoint.java deleted file mode 100644 index befb2f967ad..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/KeYWatchpoint.java +++ /dev/null @@ -1,143 +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.symbolic_execution.strategy.breakpoint; - -import de.uka.ilkd.key.java.JavaTools; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.StatementBlock; -import de.uka.ilkd.key.java.ast.StatementContainer; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.reference.IExecutionContext; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.TermBuilder; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.OpReplacer; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.speclang.translation.SLTranslationException; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.engine.impl.ApplyStrategyInfo; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.sequent.PosInOccurrence; -import org.key_project.prover.sequent.Sequent; -import org.key_project.util.parsing.Position; - -import org.jspecify.annotations.NonNull; - - -/** - * This{@link KeYWatchpoint} represents a KeY watchpoint and is responsible to tell the debugger to - * stop execution when the respective watchpoint evaluates its condition to true. - * - * @author Marco Drebing - */ -public class KeYWatchpoint extends AbstractConditionalBreakpoint { - /** - * a flag to tell whether the condition should evaluate to true or just be satisfiable - */ - private boolean suspendOnTrue; - - /** - * Creates a new {@link AbstractConditionalBreakpoint}. Call setCondition immediately after - * calling the constructor! - * - * @param hitCount the number of hits after which the execution should hold at this breakpoint - * @param proof the {@link Proof} that will be executed and should stop - * @param condition the condition as given by the user - * @param enabled flag if the Breakpoint is enabled - * @param conditionEnabled flag if the condition is enabled - * @param containerType the type of the element containing the breakpoint - * @param suspendOnTrue the flag if the condition needs to evaluate to true or just be - * satisfiable - * @throws SLTranslationException if the condition could not be parsed to a valid Term - */ - public KeYWatchpoint(int hitCount, Proof proof, String condition, boolean enabled, - boolean conditionEnabled, KeYJavaType containerType, boolean suspendOnTrue) - throws SLTranslationException { - super(hitCount, null, proof, enabled, conditionEnabled, -1, -1, containerType); - setSuspendOnTrue(suspendOnTrue); - this.setCondition(condition); - } - - @Override - protected StatementBlock getStatementBlock(StatementContainer statementContainer) { - return (StatementBlock) statementContainer; - } - - @Override - protected boolean isInScope(Node node) { - return true; - } - - @Override - protected boolean isInScopeForCondition(Node node) { - return true; - } - - @Override - protected boolean conditionMet(RuleApp ruleApp, - Node node) { - if (suspendOnTrue) { - return super.conditionMet(ruleApp, node); - } else { - ApplyStrategyInfo<@NonNull Proof, Goal> info = null; - try { - final TermBuilder tb = getProof().getServices().getTermBuilder(); - JTerm negatedCondition = tb.not(getCondition()); - // initialize values - PosInOccurrence pio = ruleApp.posInOccurrence(); - JTerm term = TermBuilder.goBelowUpdates((JTerm) pio.subTerm()); - IExecutionContext ec = - JavaTools.getInnermostExecutionContext(term.javaBlock(), - getProof().getServices()); - // put values into map which have to be replaced - if (ec != null) { - getVariableNamingMap().put(getSelfVar(), ec.getRuntimeInstance()); - } - // replace renamings etc. - OpReplacer replacer = new OpReplacer(getVariableNamingMap(), tb.tf()); - JTerm termForSideProof = replacer.replace(negatedCondition); - // start side proof - JTerm toProof = tb.equals(tb.tt(), termForSideProof); - // New OneStepSimplifier is required because it has an internal state and the - // default instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(getProof(), false); - Sequent sequent = - SymbolicExecutionUtil.createSequentToProveWithNewSuccedent(node, pio, toProof); - info = - SymbolicExecutionSideProofUtil.startSideProof(getProof(), sideProofEnv, sequent, - StrategyProperties.METHOD_CONTRACT, StrategyProperties.LOOP_INVARIANT, - StrategyProperties.QUERY_ON, StrategyProperties.SPLITTING_DELAYED); - return !info.getProof().closed(); - } catch (ProofInputException e) { - return false; - } finally { - SymbolicExecutionSideProofUtil.disposeOrStore( - "KeY Watchpoint evaluation on node " + node.serialNr() + ".", info); - } - } - } - - public boolean isSuspendOnTrue() { - return suspendOnTrue; - } - - public void setSuspendOnTrue(boolean suspendOnTrue) { - this.suspendOnTrue = suspendOnTrue; - } - - @Override - public boolean isBreakpointHit(SourceElement activeStatement, RuleApp ruleApp, Node node) { - if (activeStatement != null && activeStatement.getStartPosition() != Position.UNDEFINED) { - return super.isBreakpointHit(activeStatement, ruleApp, node); - } - return false; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/LineBreakpoint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/LineBreakpoint.java deleted file mode 100644 index 926eb692c02..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/LineBreakpoint.java +++ /dev/null @@ -1,201 +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.symbolic_execution.strategy.breakpoint; - -import java.nio.file.Paths; - -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.StatementBlock; -import de.uka.ilkd.key.java.ast.StatementContainer; -import de.uka.ilkd.key.java.ast.declaration.LocalVariableDeclaration; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.rule.LoopInvariantBuiltInRuleApp; -import de.uka.ilkd.key.speclang.translation.SLTranslationException; - -import org.key_project.prover.rules.RuleApp; -import org.key_project.util.ExtList; -import org.key_project.util.parsing.Position; - -public class LineBreakpoint extends AbstractConditionalBreakpoint { - /** - * The path of the class this {@link LineBreakpoint} is associated with. - */ - private String classPath; - - /** - * The line of the Breakpoint in the respective class. - */ - private final int lineNumber; - - /** - * The start of the method containing the associated Breakpoint - */ - protected final int methodStart; - - /** - * The end of the method containing the associated Breakpoint - */ - protected final int methodEnd; - - /** - * Creates a new {@link LineBreakpoint}. - * - * @param classPath the path of the class the associated Breakpoint lies within - * @param lineNumber the line where the associated Breakpoint is located in the class - * @param hitCount the number of hits after which the execution should hold at this breakpoint - * @param pm the {@link IProgramMethod} representing the Method which the Breakpoint is located - * at - * @param proof the {@link Proof} that will be executed and should stop - * @param condition the condition as given by the user - * @param enabled flag if the Breakpoint is enabled - * @param conditionEnabled flag if the condition is enabled - * @param methodStart the line the containing method of this breakpoint starts at - * @param methodEnd the line the containing method of this breakpoint ends at - * @throws SLTranslationException if the condition could not be parsed to a valid Term - */ - public LineBreakpoint(String classPath, int lineNumber, int hitCount, IProgramMethod pm, - Proof proof, String condition, boolean enabled, boolean conditionEnabled, - int methodStart, int methodEnd) throws SLTranslationException { - super(hitCount, pm, proof, enabled, conditionEnabled, methodStart, methodEnd, - pm.getContainerType()); - this.classPath = classPath; - this.methodEnd = methodEnd; - this.methodStart = methodStart; - this.lineNumber = lineNumber; - this.setCondition(condition); - } - - - - /** - * For a given {@link StatementContainer} this method computes the {@link StatementBlock} that - * contains all lines before the line the Breakpoint is at, including the line itself. - * - * @param statementContainer the {@link StatementContainer} to build the block from - * @return the {@link StatementBlock} representing the container without the line below the - * Breakpoint - */ - @Override - protected StatementBlock getStatementBlock(StatementContainer statementContainer) { - // list of all statements - ExtList nextResult = new ExtList(); - for (int i = 0; i < statementContainer.getStatementCount(); i++) { - nextResult.add(statementContainer.getStatementAt(i)); - } - // find last interesting statement - for (int i = 0; i < nextResult.size(); i++) { - if (!(((SourceElement) nextResult.get(i)).getEndPosition().line() <= lineNumber)) { - if (nextResult.get(i) instanceof StatementContainer) { - // go into inner scope - nextResult.set(i, getStatementBlock((StatementContainer) nextResult.get(i))); - } else { - // cut below last interesting statement - for (int j = nextResult.size() - 1; j >= i; j--) { - nextResult.remove(statementContainer.getChildAt(j)); - } - } - } - } - return new StatementBlock(nextResult); - } - - /** - * Checks if the execution should stop in the given line for the given class. - * - * @param line The current line of code, that the auto mode is evaluating - * @param path The path of the Class, that contains the currently evaluated code - * @return true if a {@link LineBreakpoint} is in the given line and the condition evaluates - * to true and the Hitcount is exceeded, false otherwise - */ - protected boolean shouldStopInLine(int line, String path) { - return lineNumber == line && getClassPath().equals(path); - } - - @Override - public boolean isBreakpointHit(SourceElement activeStatement, RuleApp ruleApp, Node node) { - if (ruleApp instanceof LoopInvariantBuiltInRuleApp) { - activeStatement = ((LoopInvariantBuiltInRuleApp) ruleApp).getLoopStatement(); - } - return isInLine(activeStatement) - && super.isBreakpointHit(activeStatement, ruleApp, node); - } - - private boolean isInLine(SourceElement activeStatement) { - if (activeStatement != null && activeStatement.getStartPosition() != Position.UNDEFINED) { - final String path = - Paths.get(activeStatement.getPositionInfo().getParentClassURI()).toString(); - int startLine = activeStatement.getStartPosition().line(); - int endLine = activeStatement.getEndPosition().line(); - boolean isInLine = endLine > startLine + 1 ? shouldStopInLine(startLine, path) - : shouldStopInLine(endLine, path); - return isInLine; - } - return false; - } - - /** - * Returns the line number of the associated Breakpoint. - * - * @return the line number of the associated Breakpoint - */ - public int getLineNumber() { - return lineNumber; - } - - @Override - protected boolean isInScope(Node node) { - Node checkNode = node; - while (checkNode != null) { - SourceElement activeStatement = - NodeInfo.computeActiveStatement(checkNode.getAppliedRuleApp()); - if (activeStatement != null - && activeStatement.getStartPosition() != Position.UNDEFINED) { - if (activeStatement.getStartPosition().line() >= methodStart - && activeStatement.getEndPosition().line() <= methodEnd) { - return true; - } - break; - } - checkNode = checkNode.parent(); - } - return false; - } - - @Override - protected boolean isInScopeForCondition(Node node) { - Node checkNode = node; - while (checkNode != null) { - SourceElement activeStatement = - NodeInfo.computeActiveStatement(checkNode.getAppliedRuleApp()); - if (activeStatement != null - && activeStatement.getStartPosition() != Position.UNDEFINED) { - if (activeStatement.getStartPosition().line() >= methodStart - && activeStatement.getEndPosition().line() <= methodEnd - && activeStatement instanceof LocalVariableDeclaration) { - return true; - } - break; - } - checkNode = checkNode.parent(); - } - return false; - } - - /** - * @return the classPath - */ - public String getClassPath() { - return classPath; - } - - /** - * @param classPath the classPath to set - */ - public void setClassPath(String classPath) { - this.classPath = classPath; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/MethodBreakpoint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/MethodBreakpoint.java deleted file mode 100644 index 13a17490e46..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/MethodBreakpoint.java +++ /dev/null @@ -1,220 +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.symbolic_execution.strategy.breakpoint; - -import java.util.Objects; - -import de.uka.ilkd.key.java.*; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.StatementBlock; -import de.uka.ilkd.key.java.ast.StatementContainer; -import de.uka.ilkd.key.java.ast.declaration.LocalVariableDeclaration; -import de.uka.ilkd.key.java.ast.statement.MethodBodyStatement; -import de.uka.ilkd.key.java.ast.statement.MethodFrame; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.TermBuilder; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.rule.ContractRuleApp; -import de.uka.ilkd.key.speclang.Contract; -import de.uka.ilkd.key.speclang.FunctionalOperationContract; -import de.uka.ilkd.key.speclang.translation.SLTranslationException; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.rules.RuleApp; -import org.key_project.util.parsing.Position; - -public class MethodBreakpoint extends AbstractConditionalBreakpoint { - /** - * flag to tell whether to stop on method entry - */ - private boolean isEntry; - - /** - * flag to tell whether to stop on method exit - */ - private boolean isExit; - - /** - * The start of the method containing the associated Breakpoint - */ - protected final int methodStart; - - /** - * The end of the method containing the associated Breakpoint - */ - protected final int methodEnd; - - /** - * The path of the class this {@link LineBreakpoint} is associated with. - */ - private String classPath; - - /** - * Creates a new {@link LineBreakpoint}. - * - * @param classPath the path of the class the associated Breakpoint lies within - * @param lineNumber the line where the associated Breakpoint is located in the class - * @param hitCount the number of hits after which the execution should hold at this breakpoint - * @param pm the {@link IProgramMethod} representing the Method which the Breakpoint is located - * at - * @param proof the {@link Proof} that will be executed and should stop - * @param condition the condition as given by the user - * @param enabled flag if the Breakpoint is enabled - * @param conditionEnabled flag if the condition is enabled - * @param methodStart the line the containing method of this breakpoint starts at - * @param methodEnd the line the containing method of this breakpoint ends at - * @param isEntry flag to tell whether to stop on method entry - * @param isExit flag to tell whether to stop on method exit - * @throws SLTranslationException if the condition could not be parsed to a valid Term - */ - public MethodBreakpoint(String classPath, int lineNumber, int hitCount, IProgramMethod pm, - Proof proof, String condition, boolean enabled, boolean conditionEnabled, - int methodStart, int methodEnd, boolean isEntry, boolean isExit) - throws SLTranslationException { - super(hitCount, pm, proof, enabled, conditionEnabled, methodStart, methodEnd, - pm.getContainerType()); - this.isEntry = isEntry; - this.isExit = isExit; - this.setClassPath(classPath); - this.methodEnd = methodEnd; - this.methodStart = methodStart; - this.setCondition(condition); - } - - @Override - public boolean isBreakpointHit(SourceElement activeStatement, - RuleApp ruleApp, Node node) { - return !node.proof().isDisposed() - && ((isEntry && isMethodCallNode(node, ruleApp)) - || (isExit && isMethodReturnNode(node, ruleApp))) - && (!isConditionEnabled() || conditionMet(ruleApp, node)) && isEnabled() - && hitcountExceeded(node); - } - - /** - * @param node to check - * @param ruleApp the applied rule app - * @return true if the node represents a method call - */ - private boolean isMethodCallNode(Node node, RuleApp ruleApp) { - SourceElement statement = NodeInfo.computeActiveStatement(ruleApp); - IProgramMethod currentPm = null; - if (statement instanceof MethodBodyStatement mbs) { - currentPm = mbs.getProgramMethod(getProof().getServices()); - } - if (currentPm != null && currentPm.equals(getPm()) - && SymbolicExecutionUtil.isMethodCallNode(node, ruleApp, statement)) { - return true; - } else if (ruleApp instanceof ContractRuleApp methodRuleApp) { - Contract contract = methodRuleApp.getInstantiation(); - if (contract instanceof FunctionalOperationContract methodContract) { - return methodContract.getTarget().equals(getPm()); - } - } - return false; - } - - /** - * @param node to check - * @param ruleApp the applied rule app - * @return true if the node represents a method return - */ - private boolean isMethodReturnNode(Node node, RuleApp ruleApp) { - if ((SymbolicExecutionUtil.isMethodReturnNode(node, ruleApp) - || SymbolicExecutionUtil.isExceptionalMethodReturnNode(node, ruleApp)) - && isCorrectMethodReturn(node, ruleApp)) { - return true; - } else if (ruleApp instanceof ContractRuleApp methodRuleApp) { - Contract contract = methodRuleApp.getInstantiation(); - if (contract instanceof FunctionalOperationContract methodContract) { - return methodContract.getTarget().equals(getPm()); - } - } - return false; - } - - private boolean isCorrectMethodReturn(Node node, RuleApp ruleApp) { - final JTerm term = TermBuilder.goBelowUpdates((JTerm) ruleApp.posInOccurrence().subTerm()); - MethodFrame mf = - JavaTools.getInnermostMethodFrame(term.javaBlock(), node.proof().getServices()); - return Objects.equals(getPm(), mf.getProgramMethod()); - } - - @Override - protected StatementBlock getStatementBlock(StatementContainer statementContainer) { - return (StatementBlock) statementContainer; - } - - public boolean isEntry() { - return isEntry; - } - - public void setEntry(boolean isEntry) { - this.isEntry = isEntry; - } - - public boolean isExit() { - return isExit; - } - - public void setExit(boolean isExit) { - this.isExit = isExit; - } - - @Override - protected boolean isInScope(Node node) { - Node checkNode = node; - while (checkNode != null) { - SourceElement activeStatement = - NodeInfo.computeActiveStatement(checkNode.getAppliedRuleApp()); - if (activeStatement != null - && activeStatement.getStartPosition() != Position.UNDEFINED) { - if (activeStatement.getStartPosition().line() >= methodStart - && activeStatement.getEndPosition().line() <= methodEnd) { - return true; - } - break; - } - checkNode = checkNode.parent(); - } - return false; - } - - @Override - protected boolean isInScopeForCondition(Node node) { - Node checkNode = node; - while (checkNode != null) { - SourceElement activeStatement = - NodeInfo.computeActiveStatement(checkNode.getAppliedRuleApp()); - if (activeStatement != null - && activeStatement.getStartPosition() != Position.UNDEFINED) { - if (activeStatement.getStartPosition().line() >= methodStart - && activeStatement.getEndPosition().line() <= methodEnd - && activeStatement instanceof LocalVariableDeclaration) { - return true; - } - break; - } - checkNode = checkNode.parent(); - } - return false; - } - - /** - * @return the classPath - */ - public String getClassPath() { - return classPath; - } - - /** - * @param classPath the classPath to set - */ - public void setClassPath(String classPath) { - this.classPath = classPath; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/SymbolicExecutionExceptionBreakpoint.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/SymbolicExecutionExceptionBreakpoint.java deleted file mode 100644 index 8ae09587779..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/SymbolicExecutionExceptionBreakpoint.java +++ /dev/null @@ -1,215 +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.symbolic_execution.strategy.breakpoint; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import de.uka.ilkd.key.java.JavaInfo; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.statement.Throw; -import de.uka.ilkd.key.logic.op.LocationVariable; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.prover.rules.RuleApp; - -/** - * This{@link SymbolicExecutionExceptionBreakpoint} represents an exception breakpoint and is - * responsible to tell the debugger to stop execution when the respective breakpoint is hit. - * - * @author Marco Drebing - */ -public class SymbolicExecutionExceptionBreakpoint extends AbstractHitCountBreakpoint { - /** - * The exception to watch for - */ - private final String exceptionName; - - /** - * a Set of Nodes that represent exceptions - */ - private final Set exceptionNodes; - - /** - * a list of nodes of the Symbolic Execution Tree whose children represent exceptions - */ - private final Set exceptionParentNodes; - - /** - * a flag whether to watch for an uncaught exception - */ - private boolean caught; - - /** - * a flag whether to suspend on subclasses of the exception aswell - */ - private boolean suspendOnSubclasses; - - /** - * a flag to tell whether to stop at uncaught exceptions or not - */ - private boolean uncaught; - - /** - * Creates a new {@link AbstractHitCountBreakpoint}. - * - * @param proof the {@link Proof} that will be executed and should stop - * @param exceptionName the name of the exception to watch for - * @param caught flag to tell if caught exceptions lead to a stop - * @param uncaught flag to tell if uncaught exceptions lead to a stop - * @param suspendOnSubclasses flag to tell if the execution should suspend on subclasses of the - * exception aswell - * @param enabled flag if the Breakpoint is enabled - * @param hitCount the number of hits after which the execution should hold at this breakpoint - */ - public SymbolicExecutionExceptionBreakpoint(Proof proof, String exceptionName, boolean caught, - boolean uncaught, boolean suspendOnSubclasses, boolean enabled, int hitCount) { - super(hitCount, proof, enabled); - this.exceptionName = exceptionName; - exceptionNodes = new HashSet<>(); - exceptionParentNodes = new HashSet<>(); - this.caught = caught; - this.uncaught = uncaught; - this.suspendOnSubclasses = suspendOnSubclasses; - } - - /** - * {@inheritDoc} - */ - @Override - public void updateState(Goal goal, int maxApplications, long timeout, long startTime, - int countApplied) { - if (goal != null) { - Node node = goal.node(); - // Check if goal is allowed - RuleApp ruleApp = goal.getRuleAppManager().peekNext(); - SourceElement activeStatement = NodeInfo.computeActiveStatement(ruleApp); - Node SETParent = SymbolicExecutionUtil.findParentSetNode(node); - if (activeStatement instanceof Throw throwStatement && isEnabled()) { - for (int i = 0; i < throwStatement.getChildCount(); i++) { - SourceElement childElement = throwStatement.getChildAt(i); - if (childElement instanceof LocationVariable locVar) { - if (locVar.getKeYJavaType().getSort().toString().equals(exceptionName) - && !exceptionParentNodes.contains(SETParent)) { - exceptionNodes.add(node); - exceptionParentNodes.add(SETParent); - } else if (suspendOnSubclasses) { - JavaInfo info = goal.proof().getJavaInfo(); - KeYJavaType kjt = locVar.getKeYJavaType(); - List kjts = info.getAllSupertypes(kjt); - for (KeYJavaType kjtloc : kjts) { - if (kjtloc.getSort().toString().equals(exceptionName) - && !exceptionParentNodes.contains(SETParent)) { - exceptionNodes.add(node); - exceptionParentNodes.add(SETParent); - } - } - } - } - } - } - } - } - - /** - * Checks if the given node is a parent of the other given node. - * - * @param node The {@link Node} to start search in. - * @param parent The {@link Node} that is thought to be the parent. - * @return true if the parent node is one of the nodes parents - */ - public boolean isParentNode(Node node, Node parent) { - if (node != null) { - Node parentIter = node.parent(); - boolean result = false; - while (parentIter != null && !result) { - if (parentIter.equals(parent)) { - result = true; - } else { - parentIter = parentIter.parent(); - } - } - return result; - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isBreakpointHit(SourceElement activeStatement, RuleApp ruleApp, Node node) { - Node parent = null; - for (Node parents : exceptionNodes) { - if (isParentNode(node, parents)) { - parent = parents; - } - } - if (parent != null && SymbolicExecutionUtil.isSymbolicExecutionTreeNode(node, ruleApp) - && !exceptionParentNodes.isEmpty()) { - if (SymbolicExecutionUtil.isTerminationNode(node, ruleApp) && uncaught) { - if (hitcountExceeded(node)) { - exceptionNodes.remove(parent); - return true; - } - } else if (!SymbolicExecutionUtil.isTerminationNode(node, ruleApp) && caught) { - if (hitcountExceeded(node)) { - exceptionNodes.remove(parent); - return true; - } - } - exceptionNodes.remove(parent); - } - return false; - } - - /** - * @return the isCaught - */ - public boolean isCaught() { - return caught; - } - - /** - * @param isCaught the isCaught to set - */ - public void setCaught(boolean isCaught) { - this.caught = isCaught; - } - - /** - * @return the isUncaught - */ - public boolean isUncaught() { - return uncaught; - } - - /** - * @param isUncaught the isUncaught to set - */ - public void setUncaught(boolean isUncaught) { - this.uncaught = isUncaught; - } - - /** - * @return the suspendOnSubclasses - */ - public boolean isSuspendOnSubclasses() { - return suspendOnSubclasses; - } - - /** - * @param suspendOnSubclasses the suspendOnSubclasses to set - */ - public void setSuspendOnSubclasses(boolean suspendOnSubclasses) { - this.suspendOnSubclasses = suspendOnSubclasses; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/DefaultEntry.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/DefaultEntry.java deleted file mode 100644 index 4824f61d591..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/DefaultEntry.java +++ /dev/null @@ -1,35 +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.symbolic_execution.util; - -import java.util.Map.Entry; - -public class DefaultEntry implements Entry { - private final K key; - - private V value; - - public DefaultEntry(K key, V value) { - super(); - this.key = key; - this.value = value; - } - - @Override - public K getKey() { - return key; - } - - @Override - public V getValue() { - return value; - } - - @Override - public V setValue(V value) { - V oldValue = this.value; - this.value = value; - return oldValue; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/EqualsHashCodeResetter.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/EqualsHashCodeResetter.java deleted file mode 100644 index 2cf2b632cd3..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/EqualsHashCodeResetter.java +++ /dev/null @@ -1,71 +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.symbolic_execution.util; - -import java.util.Collection; -import java.util.Map; - -/** - *

- * Instances of this class are used to reset overwritten {@link Object#equals(Object)} and - * {@link Object#hashCode()} methods of the wrapped child element to the default Java implementation - * with referenced based equality. - *

- *

- * A possible use case of this class is for instance the usage in {@link Collection} like - * {@link Map}s. Imagine the following scenario: A {@code Map} maps {@code Customer} - * instances to something. Each customer has a unique ID and {@link Object#equals(Object)} and - * {@link Object#hashCode()} is overwritten to compare instances by their unique ID. If now a clone - * of a {@code Customer} instance exists the {@link Map} will return the value object for the - * original {@code Customer} instance. The {@link Map} can not separate between original and clone. - * If instead a {@code Map, ...>} is used original and clone are - * different because the default Java implementation with referenced based equality is used. - *

- * - * @param wrappedElement The wrapped elements on that {@link #equals(Object)} and - * {@link #hashCode()} is reset to - * default Java implementation. - * @author Martin Hentschel - */ -public record EqualsHashCodeResetter(T wrappedElement) { - /** - * Constructor - * - * @param wrappedElement the wrapped elements on that {@link #equals(Object)} and - * {@link #hashCode()} is reset to default Java implementation. - */ - public EqualsHashCodeResetter { - } - - /** - * Overwritten to restore default Java implementation with reference based equality. - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof EqualsHashCodeResetter) { - return wrappedElement() == ((EqualsHashCodeResetter) obj).wrappedElement(); - } else { - return false; - } - } - - /** - * Overwritten to restore default Java implementation with reference based equality. - */ - @Override - public int hashCode() { - return System.identityHashCode(wrappedElement()); - } - - /** - * Returns the wrapped elements on that {@link #equals(Object)} and {@link #hashCode()} is reset - * to default Java implementation. - * - * @return The wrapped element. - */ - @Override - public T wrappedElement() { - return wrappedElement; - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SideProofStore.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SideProofStore.java deleted file mode 100644 index 5e068334a5c..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SideProofStore.java +++ /dev/null @@ -1,358 +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.symbolic_execution.util; - -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; -import java.util.Collection; -import java.util.LinkedList; -import java.util.List; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.control.KeYEnvironment; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.symbolic_execution.util.event.ISideProofStoreListener; -import de.uka.ilkd.key.symbolic_execution.util.event.SideProofStoreEvent; -import de.uka.ilkd.key.util.ProofUserManager; - -import org.key_project.util.java.CollectionUtil; - -/** - *

- * The only instance of this class {@link #DEFAULT_INSTANCE} is used to manage performed side - * proofs. - *

- *

- * Side proofs are added via {@link #addProof(String, Proof)} when they are no - * longer needed. If the {@link SideProofStore} is enabled ({@link #isEnabled()}) the side - * {@link Proof} is not disposed; instead it is added via {@link #addProof(String, Proof)} and - * available for a later access until it is removed via {@link #removeEntries(Collection)}. - *

- * - * @author Martin Hentschel - */ -public final class SideProofStore { - /** - * Property {@link #isEnabled()}. - */ - public static final String PROP_ENABLED = "enabled"; - - /** - * The default and only instance of this class. - */ - public static final SideProofStore DEFAULT_INSTANCE = new SideProofStore(); - - /** - * All contained {@link Entry}s. - */ - private final List entries = new LinkedList<>(); - - /** - * All available {@link ISideProofStoreListener}. - */ - private final List listener = - new LinkedList<>(); - - /** - * The enabled state. - */ - private boolean enabled = false; - - /** - * The {@link PropertyChangeSupport}. - */ - private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); - - /** - * Forbid other instances. - */ - private SideProofStore() { - } - - /** - * Checks if the {@link SideProofStore} is enabled or not. - * - * @return {@code true} enabled, {@code false} disabled. - */ - public boolean isEnabled() { - return enabled; - } - - /** - * Defines the enabled state. - * - * @param enabled {@code true} enabled, {@code false} disabled. - */ - public void setEnabled(boolean enabled) { - boolean oldValue = isEnabled(); - this.enabled = enabled; - pcs.firePropertyChange(PROP_ENABLED, oldValue, isEnabled()); - } - - /** - * Adds a new {@link Proof}. - * - * @param description The description. - * @param proof The {@link Proof} to add. - */ - public void addProof(String description, Proof proof) { - synchronized (entries) { - if (!containsEntry(proof)) { - Entry entry = new Entry(description, proof); - ProofUserManager.getInstance().addUser(entry.getProof(), entry.getEnvironment(), - this); - entries.add(entry); - fireEntriesAdded(new SideProofStoreEvent(this, new Entry[] { entry })); - } - } - } - - /** - * Removes the given {@link Entry}s. - * - * @param entries The {@link Entry}s to remove. - */ - public void removeEntries(Collection entries) { - synchronized (entries) { - if (this.entries.removeAll(entries)) { - for (Entry entry : entries) { - ProofUserManager.getInstance().removeUserAndDispose(entry.getProof(), this); - } - fireEntriesRemoved( - new SideProofStoreEvent(this, entries.toArray(new Entry[0]))); - } - } - } - - /** - * Removes all {@link Entry}s. - */ - public void clearProofs() { - removeEntries(new LinkedList<>(entries)); - } - - /** - * Checks if an {@link Entry} for the given {@link Proof} exist. - * - * @param proof The {@link Proof} to check. - * @return {@code true} {@link Entry} for {@link Proof} exist, {@code false} otherwise. - */ - public boolean containsEntry(Proof proof) { - return getEntry(proof) != null; - } - - /** - * Returns the {@link Entry} for the given {@link Proof}. - * - * @param proof The {@link Proof} for which the {@link Entry} is requested. - * @return The {@link Entry} with the given {@link Proof} or {@code null} if not available. - */ - public Entry getEntry(final Proof proof) { - return CollectionUtil.search(entries, - element -> element != null && element.getProof() == proof); - } - - /** - * Checks if the given {@link Entry} is contained. - * - * @param entry The {@link Entry} to check. - * @return {@code true} {@link Entry} is contained, {@code false} {@link Entry} is not - * contained. - */ - public boolean containsEntry(Entry entry) { - return entries.contains(entry); - } - - /** - * Returns the number of contained {@link Entry}s. - * - * @return The number of contained {@link Entry}s. - */ - public int countEntries() { - return entries.size(); - } - - /** - * Returns the {@link Entry} at the given index. - * - * @param index The index. - * @return The {@link Entry} at the given index. - */ - public Entry getEntryAt(int index) { - return index >= 0 && index < entries.size() ? entries.get(index) : null; - } - - /** - * Returns all available {@link Entry}s. - * - * @return All available {@link Entry}s. - */ - public Entry[] getEntries() { - return entries.toArray(new Entry[0]); - } - - /** - * Registers the {@link ISideProofStoreListener}. - * - * @param l The {@link ISideProofStoreListener} to register. - */ - public void addProofStoreListener(ISideProofStoreListener l) { - if (l != null) { - listener.add(l); - } - } - - /** - * Unregisters the {@link ISideProofStoreListener}. - * - * @param l The {@link ISideProofStoreListener} to unregister. - */ - public void removeProofStoreListener(ISideProofStoreListener l) { - if (l != null) { - listener.remove(l); - } - } - - /** - * Returns all registered {@link ISideProofStoreListener}. - * - * @return All registered {@link ISideProofStoreListener}. - */ - public ISideProofStoreListener[] getProofStoreListener() { - return listener.toArray(new ISideProofStoreListener[0]); - } - - /** - * Fires the event {@link ISideProofStoreListener#entriesAdded(SideProofStoreEvent)}. - * - * @param e The event. - */ - private void fireEntriesAdded(SideProofStoreEvent e) { - ISideProofStoreListener[] listener = getProofStoreListener(); - for (ISideProofStoreListener l : listener) { - l.entriesAdded(e); - } - } - - /** - * Fires the event {@link ISideProofStoreListener#entriesRemoved(SideProofStoreEvent)}. - * - * @param e The event. - */ - private void fireEntriesRemoved(SideProofStoreEvent e) { - ISideProofStoreListener[] listener = getProofStoreListener(); - for (ISideProofStoreListener l : listener) { - l.entriesRemoved(e); - } - } - - /** - * Adds the given listener. - * - * @param listener The listener to add. - */ - public void addPropertyChangeListener(PropertyChangeListener listener) { - pcs.addPropertyChangeListener(listener); - } - - /** - * Adds the given listener for the given property only. - * - * @param propertyName The property to observe. - * @param listener The listener to add. - */ - public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { - pcs.addPropertyChangeListener(propertyName, listener); - } - - /** - * Removes the given listener. - * - * @param listener The listener to remove. - */ - public void removePropertyChangeListener(PropertyChangeListener listener) { - pcs.removePropertyChangeListener(listener); - } - - /** - * Removes the given listener from the given property. - * - * @param propertyName The property to no longer observe. - * @param listener The listener to remove. - */ - public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { - pcs.removePropertyChangeListener(propertyName, listener); - } - - /** - * An {@link Entry} of a {@link SideProofStore}. - * - * @author Martin Hentschel - */ - public static class Entry { - /** - * The description. - */ - private final String description; - - /** - * The {@link Proof}. - */ - private final Proof proof; - - /** - * The {@link KeYEnvironment}. - */ - private final KeYEnvironment environment; - - /** - * Constructor. - * - * @param description The description. - * @param proof The {@link Proof}. - */ - public Entry(String description, Proof proof) { - this.description = description; - this.proof = proof; - DefaultUserInterfaceControl ui = new DefaultUserInterfaceControl(); - this.environment = new KeYEnvironment<>(ui, - proof.getInitConfig(), proof, null, null); - } - - /** - * Returns the description. - * - * @return The description. - */ - public String getDescription() { - return description; - } - - /** - * Returns the {@link Proof}. - * - * @return The {@link Proof}. - */ - public Proof getProof() { - return proof; - } - - /** - * Returns the {@link KeYEnvironment}. - * - * @return The {@link KeYEnvironment}. - */ - public KeYEnvironment getEnvironment() { - return environment; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return description; - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SymbolicExecutionEnvironment.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SymbolicExecutionEnvironment.java deleted file mode 100644 index 3111f1628df..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SymbolicExecutionEnvironment.java +++ /dev/null @@ -1,146 +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.symbolic_execution.util; - -import de.uka.ilkd.key.control.KeYEnvironment; -import de.uka.ilkd.key.control.UserInterfaceControl; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.settings.ProofSettings; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.strategy.ExecutedSymbolicExecutionTreeNodesStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionGoalChooser; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionStrategy; - -/** - * Instances of this class are used to collect and access all relevant information for symbolic - * execution tree extraction of {@link Proof}s via an {@link SymbolicExecutionTreeBuilder}. - * - * @author Martin Hentschel - */ -public class SymbolicExecutionEnvironment - extends KeYEnvironment { - /** - * The {@link SymbolicExecutionTreeBuilder} for execution tree extraction. - */ - private final SymbolicExecutionTreeBuilder builder; - - /** - * Constructor. - * - * @param environment The parent {@link KeYEnvironment}. - * @param builder The {@link SymbolicExecutionTreeBuilder} for execution tree extraction. - */ - public SymbolicExecutionEnvironment(KeYEnvironment environment, - SymbolicExecutionTreeBuilder builder) { - this(environment.getUi(), environment.getInitConfig(), builder); - } - - /** - * Constructor. - * - * @param ui The {@link UserInterfaceControl} in which the {@link Proof} is loaded. - * @param initConfig The loaded project. - * @param builder The {@link SymbolicExecutionTreeBuilder} for execution tree extraction. - */ - public SymbolicExecutionEnvironment(U ui, InitConfig initConfig, - SymbolicExecutionTreeBuilder builder) { - super(ui, initConfig); - this.builder = builder; - } - - /** - * Returns the {@link SymbolicExecutionTreeBuilder} for execution tree extraction. - * - * @return The {@link SymbolicExecutionTreeBuilder} for execution tree extraction. - */ - public SymbolicExecutionTreeBuilder getBuilder() { - return builder; - } - - /** - * Returns the {@link Proof} of {@link #getBuilder()}. - * - * @return The {@link Proof} of {@link #getBuilder()}. - */ - public Proof getProof() { - return getBuilder().getProof(); - } - - /** - * Configures the given {@link Proof} to use the symbolic execution strategy by reusing the - * default {@link StrategyProperties}. - * - * @param proof The {@link Proof} to configure. - * @param maximalNumberOfNodesPerBranch The maximal number of nodes per branch. - */ - public static void configureProofForSymbolicExecution(Proof proof, - int maximalNumberOfNodesPerBranch) { - StrategyProperties sp = - ProofSettings.DEFAULT_SETTINGS.getStrategySettings().getActiveStrategyProperties(); - boolean methodTreatmentContract = StrategyProperties.METHOD_CONTRACT - .equals(sp.get(StrategyProperties.METHOD_OPTIONS_KEY)); - boolean loopTreatmentInvariant = - StrategyProperties.LOOP_INVARIANT.equals(sp.get(StrategyProperties.LOOP_OPTIONS_KEY)); - boolean blockTreatmentContract = StrategyProperties.BLOCK_CONTRACT_INTERNAL - .equals(sp.get(StrategyProperties.BLOCK_OPTIONS_KEY)); - boolean aliasChecks = StrategyProperties.SYMBOLIC_EXECUTION_ALIAS_CHECK_IMMEDIATELY - .equals(sp.get(StrategyProperties.SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY)); - boolean nonExecutionBranchHidingSideProofs = - StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_SIDE_PROOF.equals( - sp.get( - StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY)); - configureProofForSymbolicExecution(proof, maximalNumberOfNodesPerBranch, - methodTreatmentContract, loopTreatmentInvariant, blockTreatmentContract, - nonExecutionBranchHidingSideProofs, aliasChecks); - } - - /** - * Configures the given {@link Proof} to use the symbolic execution strategy. - * - * @param proof The {@link Proof} to configure. - * @param maximalNumberOfNodesPerBranch The maximal number of nodes per branch. - * @param methodTreatmentContract {@code true} use operation contracts, {@code false} expand - * methods. - * @param loopTreatmentInvariant {@code true} use invariants, {@code false} expand loops. - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - */ - public static void configureProofForSymbolicExecution(Proof proof, - int maximalNumberOfNodesPerBranch, boolean methodTreatmentContract, - boolean loopTreatmentInvariant, boolean blockTreatmentContract, - boolean nonExecutionBranchHidingSideProofs, boolean aliasChecks) { - if (proof != null) { - StrategyProperties strategyProperties = - SymbolicExecutionStrategy.getSymbolicExecutionStrategyProperties(true, - methodTreatmentContract, loopTreatmentInvariant, blockTreatmentContract, - nonExecutionBranchHidingSideProofs, aliasChecks); - proof.setActiveStrategy( - proof.getActiveStrategyFactory().create(proof, strategyProperties)); - proof.getSettings().getStrategySettings() - .setCustomApplyStrategyGoalChooser(new SymbolicExecutionGoalChooser()); - proof.getSettings().getStrategySettings().setCustomApplyStrategyStopCondition( - new ExecutedSymbolicExecutionTreeNodesStopCondition(maximalNumberOfNodesPerBranch)); - SymbolicExecutionUtil.updateStrategySettings(proof, strategyProperties); - } - } - - /** - * {@inheritDoc} - */ - @Override - public void dispose() { - Proof proof = getProof(); - if (builder != null) { - builder.dispose(); - } - if (proof != null && !proof.isDisposed() && proof != getLoadedProof()) { - proof.dispose(); - } - super.dispose(); - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SymbolicExecutionSideProofUtil.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SymbolicExecutionSideProofUtil.java deleted file mode 100644 index e0a4134c77d..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SymbolicExecutionSideProofUtil.java +++ /dev/null @@ -1,861 +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.symbolic_execution.util; - -import java.util.*; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.ldt.HeapLDT; -import de.uka.ilkd.key.logic.*; -import de.uka.ilkd.key.logic.label.TermLabel; -import de.uka.ilkd.key.logic.label.TermLabelManager.TermLabelConfiguration; -import de.uka.ilkd.key.logic.op.*; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.calculus.JavaDLSequentKit; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.JavaProfile; -import de.uka.ilkd.key.proof.init.Profile; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.mgt.AxiomJustification; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.proof.mgt.RuleJustification; -import de.uka.ilkd.key.proof.mgt.RuleJustificationInfo; -import de.uka.ilkd.key.rule.BuiltInRule; -import de.uka.ilkd.key.rule.OneStepSimplifier; -import de.uka.ilkd.key.rule.Taclet; -import de.uka.ilkd.key.settings.ProofSettings; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.profile.SimplifyTermProfile; -import de.uka.ilkd.key.symbolic_execution.profile.SymbolicExecutionJavaProfile; -import de.uka.ilkd.key.symbolic_execution.rule.ResultsAndCondition; -import de.uka.ilkd.key.util.ProofStarter; -import de.uka.ilkd.key.util.SideProofUtil; - -import org.key_project.logic.Choice; -import org.key_project.logic.Name; -import org.key_project.logic.Namespace; -import org.key_project.logic.Term; -import org.key_project.logic.op.Function; -import org.key_project.logic.op.Operator; -import org.key_project.prover.engine.impl.ApplyStrategyInfo; -import org.key_project.prover.sequent.Sequent; -import org.key_project.prover.sequent.SequentFormula; -import org.key_project.util.collection.ImmutableArray; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.ImmutableSet; -import org.key_project.util.collection.Pair; -import org.key_project.util.java.CollectionUtil; - -import org.jspecify.annotations.NonNull; - -/** - * Provides utility methods for side proofs. - * - * @author Martin Hentschel - */ -public final class SymbolicExecutionSideProofUtil { - /** - * Forbid instances. - */ - private SymbolicExecutionSideProofUtil() { - } - - /** - * Computes a general {@link Sequent} to prove in a side proof which contains all - * {@link SequentFormula} of the original {@link Sequent} except the given current - * {@link SequentFormula} and those which contains modalities and queries. - * - * @param goalSequent The original {@link Sequent} of the current {@link Goal}. - * @param currentSF The {@link SequentFormula} to ignore. - * @return The general initial {@link Sequent}. - */ - public static Sequent computeGeneralSequentToProve(Sequent goalSequent, - SequentFormula currentSF) { - Sequent sequentToProve = JavaDLSequentKit.getInstance().getEmptySequent(); - for (SequentFormula sf : goalSequent.antecedent()) { - if (sf != currentSF) { - if (!containsModalityOrQuery(sf)) { - sequentToProve = sequentToProve.addFormula(sf, true, false).sequent(); - } - } - } - for (SequentFormula sf : goalSequent.succedent()) { - if (sf != currentSF) { - if (!containsModalityOrQuery(sf)) { - sequentToProve = - sequentToProve.addFormula(sf, false, false).sequent(); - } - } - } - return sequentToProve; - } - - /** - *

- * Starts the side proof and extracts the result {@link JTerm}. - *

- *

- * New used names are automatically added to the {@link Namespace} of the {@link Services}. - *

- * - * @param services The {@link Services} to use. - * @param proof The {@link Proof} from on which the side proof si performed. - * @param sideProofEnvironment The given {@link ProofEnvironment} of the side proof. - * @param sequentToProve The {@link Sequent} to prove in a side proof. - * @param label The {@link TermLabel} which is used to compute the result. - * @param description The side proof description. - * @param splittingOption The splitting options to use. - * @param addNamesToServices {@code true} defines that used names in result and conditions are - * added to the namespace of the given {@link Services}, {@code false} means that names - * are not added. - * @return The found result {@link JTerm} and the conditions. - * @throws ProofInputException Occurred Exception. - */ - public static List> computeResults(Services services, Proof proof, - ProofEnvironment sideProofEnvironment, Sequent sequentToProve, TermLabel label, - String description, String methodTreatment, String loopTreatment, String queryTreatment, - String splittingOption, boolean addNamesToServices) throws ProofInputException { - // Execute side proof - ApplyStrategyInfo info = - startSideProof(proof, sideProofEnvironment, sequentToProve, - methodTreatment, loopTreatment, queryTreatment, splittingOption); - try { - // Extract results and conditions from side proof - List> conditionsAndResultsMap = new LinkedList<>(); - for (Goal resultGoal : info.getProof().openGoals()) { - if (SymbolicExecutionUtil.hasApplicableRules(resultGoal)) { - throw new IllegalStateException("Not all applicable rules are applied."); - } - Sequent sequent = resultGoal.sequent(); - List results = new LinkedList<>(); - for (SequentFormula sf : sequent.antecedent()) { - final JTerm result = (JTerm) sf.formula(); - if (result.containsLabel(label)) { - results.add(services.getTermBuilder().not(result)); - } - } - for (SequentFormula sf : sequent.succedent()) { - final JTerm result = (JTerm) sf.formula(); - if (result.containsLabel(label)) { - results.add(result); - } - } - final JTerm result; - if (results.isEmpty()) { - result = services.getTermBuilder().tt(); - } else { - result = services.getTermBuilder().or(results); - } - conditionsAndResultsMap.add(new Pair<>(result, resultGoal.node())); - } - return conditionsAndResultsMap; - } finally { - disposeOrStore(description, info); - } - } - - /** - *

- * Starts the side proof and extracts the result {@link JTerm} and conditions. - *

- *

- * New used names are automatically added to the {@link Namespace} of the {@link Services}. - *

- * - * @param services The {@link Services} to use. - * @param proof The {@link Proof} from on which the side proof si performed. - * @param sideProofEnvironment The given {@link ProofEnvironment} of the side proof. - * @param sequentToProve The {@link Sequent} to prove in a side proof. - * @param operator The {@link Operator} which is used to compute the result. - * @param description The side proof description. - * @param splittingOption The splitting options to use. - * @param addNamesToServices {@code true} defines that used names in result and conditions are - * added to the namespace of the given {@link Services}, {@code false} means that names - * are not added. - * @return The found result {@link JTerm} and the conditions. - * @throws ProofInputException Occurred Exception. - */ - public static List computeResultsAndConditions( - Services services, - Proof proof, ProofEnvironment sideProofEnvironment, Sequent sequentToProve, - Operator operator, String description, String methodTreatment, String loopTreatment, - String queryTreatment, String splittingOption, boolean addNamesToServices) - throws ProofInputException { - // Execute side proof - ApplyStrategyInfo info = - startSideProof(proof, sideProofEnvironment, sequentToProve, - methodTreatment, loopTreatment, queryTreatment, splittingOption); - try { - // Extract relevant things - Set relevantThingsInSequentToProve = - extractRelevantThings(info.getProof().getServices(), sequentToProve); - // Extract results and conditions from side proof - List conditionsAndResultsMap = new LinkedList<>(); - for (Goal resultGoal : info.getProof().openGoals()) { - if (SymbolicExecutionUtil.hasApplicableRules(resultGoal)) { - throw new IllegalStateException("Not all applicable rules are applied."); - } - Sequent sequent = resultGoal.sequent(); - boolean newPredicateIsSequentFormula = isOperatorASequentFormula(sequent, operator); - Set resultConditions = new LinkedHashSet<>(); - JTerm result = null; - for (SequentFormula sf : sequent.antecedent()) { - final JTerm formula = (JTerm) sf.formula(); - if (newPredicateIsSequentFormula) { - if (JavaDLOperatorUtil.opEquals(formula.op(), operator)) { - throw new IllegalStateException( - "Result predicate found in antecedent."); - } else { - JTerm constructedResult = - constructResultIfContained(services, sf, operator); - if (constructedResult != null) { - throw new IllegalStateException( - "Result predicate found in antecedent."); - } - } - } - if (!isIrrelevantCondition(services, sequentToProve, - relevantThingsInSequentToProve, sf)) { - if (resultConditions.add(formula) && addNamesToServices) { - addNewNamesToNamespace(services, formula); - } - } - } - for (SequentFormula sf : sequent.succedent()) { - final JTerm formula = (JTerm) sf.formula(); - if (newPredicateIsSequentFormula) { - if (JavaDLOperatorUtil.opEquals(formula.op(), operator)) { - if (result != null) { - throw new IllegalStateException( - "Result predicate found multiple times in succedent."); - } - result = formula.sub(0); - } - } else { - JTerm constructedResult = - constructResultIfContained(services, sf, operator); - if (constructedResult != null) { - if (result != null) { - throw new IllegalStateException( - "Result predicate found multiple times in succedent."); - } - result = constructedResult; - } - } - if (result == null) { - if (!isIrrelevantCondition(services, sequentToProve, - relevantThingsInSequentToProve, sf)) { - if (resultConditions.add(services.getTermBuilder().not(formula)) - && addNamesToServices) { - addNewNamesToNamespace(services, formula); - } - } - } - } - if (result == null) { - result = services.getTermBuilder().ff(); - } - conditionsAndResultsMap - .add(new ResultsAndCondition(result, resultConditions, resultGoal.node())); - } - return conditionsAndResultsMap; - } finally { - disposeOrStore(description, info); - } - } - - private static JTerm constructResultIfContained(Services services, - SequentFormula sf, - Operator operator) { - return constructResultIfContained(services, (JTerm) sf.formula(), operator); - } - - private static JTerm constructResultIfContained(Services services, JTerm term, - Operator operator) { - if (JavaDLOperatorUtil.opEquals(term.op(), operator)) { - return term.sub(0); - } else { - JTerm result = null; - int i = 0; - while (result == null && i < term.arity()) { - result = constructResultIfContained(services, term.sub(i), operator); - i++; - } - if (result != null) { - List newSubs = new LinkedList<>(); - for (int j = 0; j < term.arity(); j++) { - if (j == i - 1) { - newSubs.add(result); - } else { - newSubs.add(term.sub(j)); - } - } - result = services.getTermFactory().createTerm(term.op(), - new ImmutableArray<>(newSubs), term.boundVars(), - term.getLabels()); - } - return result; - } - } - - private static boolean isOperatorASequentFormula(Sequent sequent, final Operator operator) { - return CollectionUtil.search(sequent, - element -> JavaDLOperatorUtil.opEquals(element.formula().op(), - operator)) != null; - } - - /** - * Makes sure that all used {@link Name}s in the given {@link JTerm} are registered in the - * {@link Namespace}s of the given {@link Services}. - * - * @param services The {@link Services} to use. - * @param term The {@link JTerm} to check its {@link Name}s. - */ - public static void addNewNamesToNamespace(Services services, JTerm term) { - final Namespace functions = services.getNamespaces().functions(); - final Namespace progVars = services.getNamespaces().programVariables(); - // LogicVariables are always local bound - term.execPreOrder((DefaultVisitor) visited -> { - if (visited.op() instanceof Function function) { - functions.add(function); - } else if (visited.op() instanceof IProgramVariable progVar) { - progVars.add(progVar); - } - }); - } - - /** - * Checks if the given {@link SequentFormula} contains a modality or query. - * - * @param sf The {@link SequentFormula} to check. - * @return {@code true} contains at least one modality or query, {@code false} contains no - * modalities and no queries. - */ - public static boolean containsModalityOrQuery( - SequentFormula sf) { - return containsModalityOrQuery(sf.formula()); - } - - /** - * Checks if the given {@link JTerm} contains a modality or query. - * - * @param term The {@link JTerm} to check. - * @return {@code true} contains at least one modality or query, {@code false} contains no - * modalities and no queries. - */ - public static boolean containsModalityOrQuery(Term term) { - ContainsModalityOrQueryVisitor visitor = new ContainsModalityOrQueryVisitor(); - term.execPostOrder(visitor); - return visitor.isContainsModalityOrQuery(); - } - - /** - * Utility method used by {@link #containsModalityOrQuery(Term)} - * - * @author Martin Hentschel - */ - protected static class ContainsModalityOrQueryVisitor implements DefaultVisitor { - /** - * The result. - */ - boolean containsModalityOrQuery = false; - - /** - * {@inheritDoc} - */ - @Override - public void visit(Term visited) { - if (visited.op() instanceof JModality) { - containsModalityOrQuery = true; - } else if (visited.op() instanceof IProgramMethod) { - containsModalityOrQuery = true; - } - } - - /** - * Returns the result. - * - * @return {@code true} contains at least one modality or query, {@code false} contains no - * modalities and no queries. - */ - public boolean isContainsModalityOrQuery() { - return containsModalityOrQuery; - } - } - - /** - * Extracts all {@link Operator}s from the given {@link Sequent} which represents relevant - * things. - * - * @param services The {@link Services} to use. - * @param sequentToProve The {@link Sequent} to extract relevant things from. - * @return The found relevant things. - */ - public static Set extractRelevantThings( - final Services services, - Sequent sequentToProve) { - final Set result = new HashSet<>(); - for (SequentFormula sf : sequentToProve) { - sf.formula().execPreOrder((DefaultVisitor) visited -> { - if (isRelevantThing(services, visited)) { - result.add(visited.op()); - } - }); - } - return result; - } - - /** - * Checks if the given {@link JTerm} describes a relevant thing. Relevant things are: - *
    - *
  • IProgramVariable
  • - *
  • Functions of type Heap
  • - *
  • Functions of a Java type
  • - *
- * - * @param services The {@link Services} to use. - * @param term The {@link JTerm} to check. - * @return {@code true} is relevant thing, {@code false} is not relevant. - */ - private static boolean isRelevantThing(Services services, Term term) { - if (term.op() instanceof IProgramVariable) { - return true; - } else if (term.op() instanceof Function) { - HeapLDT heapLDT = services.getTypeConverter().getHeapLDT(); - if (SymbolicExecutionUtil.isHeap(term.op(), heapLDT)) { - return true; - } else { - KeYJavaType kjt = services.getJavaInfo().getKeYJavaType(term.sort()); - return kjt != null; - } - } else { - return false; - } - } - - /** - * Checks if the given {@link SequentFormula} is a relevant condition. - * - * @param services The {@link Services} to use. - * @param initialSequent The initial {@link Sequent} of the side proof. - * @param relevantThingsInSequentToProve The relevant things found in the initial - * {@link Sequent}. - * @param sf The {@link SequentFormula} to check. - * @return {@code true} {@link SequentFormula} is relevant condition, {@code false} - * {@link SequentFormula} is not a relevant condition. - */ - public static boolean isIrrelevantCondition(Services services, Sequent initialSequent, - Set relevantThingsInSequentToProve, - SequentFormula sf) { - return initialSequent.antecedent().contains(sf) || initialSequent.succedent().contains(sf) - || containsModalityOrQuery(sf) // isInOrOfAntecedent(initialSequent, sf) || - || containsIrrelevantThings(services, sf, relevantThingsInSequentToProve); - } - - // public static boolean isInOrOfAntecedent(Sequent initialSequent, SequentFormula sf) { - // Term term = sf.formula(); - // boolean result = false; - // Iterator iter = initialSequent.antecedent().iterator(); - // while (!result && iter.hasNext()) { - // SequentFormula next = iter.next(); - // if (isInOr(next.formula(), term)) { - // result = true; - // } - // } - // return result; - // } - // - // public static boolean isInOr(Term term, Term toCheck) { - // if (term.op() == Junctor.OR) { - // boolean result = false; - // Iterator iter = term.subs().iterator(); - // while (!result && iter.hasNext()) { - // result = isInOr(iter.next(), toCheck); - // } - // return result; - // } - // else { - // return term == toCheck; - // } - // } - - /** - * Checks if the given {@link SequentFormula} contains irrelevant things (things which are not - * contained in the relevantThingsToProve and are no Java types) - * - * @param services The {@link Services} to use. - * @param sf The {@link SequentFormula} to check. - * @param relevantThings The relevant things. - * @return {@code true} The {@link SequentFormula} contains irrelevant things, {@code false} the - * {@link SequentFormula} contains no irrelevant things. - */ - public static boolean containsIrrelevantThings(Services services, - SequentFormula sf, - Set relevantThings) { - ContainsIrrelevantThingsVisitor visitor = - new ContainsIrrelevantThingsVisitor(services, relevantThings); - sf.formula().execPostOrder(visitor); - return visitor.isContainsIrrelevantThings(); - } - - /** - * Utility class used by - * {@link #containsIrrelevantThings(Services, SequentFormula, Set)}. - * - * @author Martin Hentschel - */ - protected static class ContainsIrrelevantThingsVisitor implements DefaultVisitor { - /** - * The {@link Services} to use. - */ - private final Services services; - - /** - * The relevant things. - */ - private final Set relevantThings; - - /** - * The result. - */ - boolean containsIrrelevantThings = false; - - /** - * Constructor. - * - * @param services The {@link Services} to use. - * @param relevantThings The relevant things. - */ - public ContainsIrrelevantThingsVisitor(Services services, - Set relevantThings) { - this.services = services; - this.relevantThings = relevantThings; - } - - /** - * {@inheritDoc} - */ - @Override - public void visit(Term visited) { - if (isRelevantThing(services, visited)) { - if (!SymbolicExecutionUtil.isSelect(services, visited) - && !SymbolicExecutionUtil.isBoolean(services, visited.op()) - && !SymbolicExecutionUtil.isNumber(visited.op())) { - if (!relevantThings.contains(visited.op())) { - containsIrrelevantThings = true; - } - } - } - } - - /** - * Returns the result. - * - * @return The {@link SequentFormula} contains irrelevant things, {@code false} the - * {@link SequentFormula} contains no irrelevant things. - */ - public boolean isContainsIrrelevantThings() { - return containsIrrelevantThings; - } - } - - /** - * Starts a site proof for the given {@link Sequent}. - * - * @param proof The parent {@link Proof} of the site proof to do. - * @param sideProofEnvironment The given {@link ProofEnvironment} of the side proof. - * @param sequentToProve The {@link Sequent} to prove. - * @return The proof result represented as {@link ApplyStrategyInfo} instance. - * @throws ProofInputException Occurred Exception - */ - public static ApplyStrategyInfo<@NonNull Proof, Goal> startSideProof(Proof proof, - ProofEnvironment sideProofEnvironment, Sequent sequentToProve) - throws ProofInputException { - return startSideProof(proof, sideProofEnvironment, sequentToProve, - StrategyProperties.METHOD_NONE, StrategyProperties.LOOP_NONE, - StrategyProperties.QUERY_OFF, StrategyProperties.SPLITTING_OFF); - } - - /** - * Starts a site proof for the given {@link Sequent}. - * - * @param proof The parent {@link Proof} of the site proof to do. - * @param sideProofEnvironment The given {@link ProofEnvironment} of the side proof. - * @param sequentToProve The {@link Sequent} to prove. - * @return The proof result represented as {@link ApplyStrategyInfo} instance. - * @throws ProofInputException Occurred Exception - */ - public static ApplyStrategyInfo<@NonNull Proof, Goal> startSideProof(Proof proof, - ProofEnvironment sideProofEnvironment, Sequent sequentToProve, String methodTreatment, - String loopTreatment, String queryTreatment, String splittingOption) - throws ProofInputException { - ProofStarter starter = createSideProof(sideProofEnvironment, sequentToProve, null); - return startSideProof(proof, starter, methodTreatment, loopTreatment, queryTreatment, - splittingOption); - } - - /** - * Creates a new {@link ProofStarter} which contains a new site proof of the given - * {@link Proof}. - * - * @param sideProofEnvironment The given {@link ProofEnvironment} of the side proof. - * @param sequentToProve The {@link Sequent} to proof in a new site proof. - * @param proofName An optional name for the newly created {@link Proof}. - * @return The created {@link ProofStarter} with the site proof. - * @throws ProofInputException Occurred Exception. - */ - public static ProofStarter createSideProof(ProofEnvironment sideProofEnvironment, - Sequent sequentToProve, String proofName) throws ProofInputException { - return SideProofUtil.createSideProof(sideProofEnvironment, sequentToProve, proofName); - } - - /** - * Starts a site proof. - * - * @param proof The original {@link Proof}. - * @param starter The {@link ProofStarter} with the site proof. - * @param splittingOption The splitting option to use. - * @return The site proof result. - */ - public static ApplyStrategyInfo startSideProof(Proof proof, ProofStarter starter, - String methodTreatment, String loopTreatment, String queryTreatment, - String splittingOption) { - assert starter != null; - starter.setMaxRuleApplications(10000); - StrategyProperties sp = proof != null && !proof.isDisposed() - ? proof.getSettings().getStrategySettings().getActiveStrategyProperties() - : // Is a clone that can be modified - new StrategyProperties(); - StrategyProperties.setDefaultStrategyProperties(sp, false, true, true, false, false, false); - sp.setProperty(StrategyProperties.METHOD_OPTIONS_KEY, methodTreatment); - sp.setProperty(StrategyProperties.LOOP_OPTIONS_KEY, loopTreatment); - sp.setProperty(StrategyProperties.QUERY_OPTIONS_KEY, queryTreatment); - sp.setProperty(StrategyProperties.SPLITTING_OPTIONS_KEY, splittingOption); - sp.setProperty(StrategyProperties.QUANTIFIERS_OPTIONS_KEY, - StrategyProperties.QUANTIFIERS_NON_SPLITTING); - starter.setStrategyProperties(sp); - // Execute proof in the current thread - return (ApplyStrategyInfo) starter.start(); - } - - /** - * Extracts the value for the formula with the given {@link Operator} from the given - * {@link Goal}. - * - * @param goal The {@link Goal} to search the {@link Operator} in. - * @param operator The {@link Operator} for the formula which should be extracted. - * @return The value of the formula with the given {@link Operator}. - */ - public static JTerm extractOperatorValue(Goal goal, final Operator operator) { - assert goal != null; - return extractOperatorValue(goal.node(), operator); - } - - /** - * Extracts the value for the formula with the given {@link Operator} from the given - * {@link Node}. - * - * @param node The {@link Node} to search the {@link Operator} in. - * @param operator The {@link Operator} for the formula which should be extracted. - * @return The value of the formula with the given {@link Operator}. - */ - public static JTerm extractOperatorValue(Node node, final Operator operator) { - JTerm operatorTerm = extractOperatorTerm(node, operator); - return operatorTerm != null ? operatorTerm.sub(0) : null; - } - - /** - * Extracts the operator term for the formula with the given {@link Operator} from the site - * proof result ({@link ApplyStrategyInfo}). - * - * @param info The site proof result. - * @param operator The {@link Operator} for the formula which should be extracted. - * @return The operator term of the formula with the given {@link Operator}. - * @throws ProofInputException Occurred Exception. - */ - public static JTerm extractOperatorTerm(ApplyStrategyInfo info, Operator operator) - throws ProofInputException { - // Make sure that valid parameters are given - assert info != null; - if (info.getProof().openGoals().size() != 1) { - throw new ProofInputException( - "Assumption that return value extraction has one goal does not hold because " - + info.getProof().openGoals().size() + " goals are available."); - } - // Get node of open goal - return extractOperatorTerm(info.getProof().openGoals().head(), operator); - } - - /** - * Extracts the operator term for the formula with the given {@link Operator} from the given - * {@link Goal}. - * - * @param goal The {@link Goal} to search the {@link Operator} in. - * @param operator The {@link Operator} for the formula which should be extracted. - * @return The operator term of the formula with the given {@link Operator}. - */ - public static JTerm extractOperatorTerm(Goal goal, final Operator operator) { - assert goal != null; - return extractOperatorTerm(goal.node(), operator); - } - - /** - * Extracts the operator term for the formula with the given {@link Operator} from the given - * {@link Node}. - * - * @param node The {@link Node} to search the {@link Operator} in. - * @param operator The {@link Operator} for the formula which should be extracted. - * @return The operator term of the formula with the given {@link Operator}. - */ - public static JTerm extractOperatorTerm(Node node, final Operator operator) { - assert node != null; - // Search formula with the given operator in sequent (or in some cases below the updates) - SequentFormula sf = - CollectionUtil.search(node.sequent(), element -> { - JTerm term = (JTerm) element.formula(); - term = TermBuilder.goBelowUpdates(term); - return Objects.equals(term.op(), operator); - }); - if (sf != null) { - JTerm term = (JTerm) sf.formula(); - term = TermBuilder.goBelowUpdates(term); - return term; - } else { - return null; - } - } - - /** - * Creates a copy of the {@link ProofEnvironment} of the given {@link Proof} which has his own - * {@link OneStepSimplifier} instance. Such copies are required for instance during parallel - * usage of site proofs because {@link OneStepSimplifier} has an internal state. - * - * @param source The {@link Proof} to copy its {@link ProofEnvironment}. - * @return The created {@link ProofEnvironment} which is a copy of the environment of the given - * {@link Proof} but with its own {@link OneStepSimplifier} instance. - */ - public static ProofEnvironment cloneProofEnvironmentWithOwnOneStepSimplifier(final Proof source, - final boolean useSimplifyTermProfile) { - assert source != null; - assert !source.isDisposed(); - return cloneProofEnvironmentWithOwnOneStepSimplifier(source.getInitConfig(), - useSimplifyTermProfile); - } - - /** - * Creates a copy of the {@link ProofEnvironment} of the given {@link Proof} which has his own - * {@link OneStepSimplifier} instance. Such copies are required for instance during parallel - * usage of site proofs because {@link OneStepSimplifier} has an internal state. - * - * @param sourceInitConfig The {@link InitConfig} to copy its {@link ProofEnvironment}. - * @return The created {@link ProofEnvironment} which is a copy of the environment of the given - * {@link Proof} but with its own {@link OneStepSimplifier} instance. - */ - @SuppressWarnings("unchecked") - public static ProofEnvironment cloneProofEnvironmentWithOwnOneStepSimplifier( - final InitConfig sourceInitConfig, final boolean useSimplifyTermProfile) { - // Get required source instances - final RuleJustificationInfo sourceJustiInfo = sourceInitConfig.getJustifInfo(); - // Create new profile which has separate OneStepSimplifier instance - JavaProfile profile; - if (useSimplifyTermProfile) { - profile = new SimplifyTermProfile() { - @Override - protected ImmutableList computeTermLabelConfiguration() { - Profile sourceProfile = sourceInitConfig.getProfile(); - if (sourceProfile instanceof SymbolicExecutionJavaProfile) { - ImmutableList result = - super.computeTermLabelConfiguration(); - // Make sure that the term labels of symbolic execution are also supported - // by the new environment. - result = result.prepend(SymbolicExecutionJavaProfile - .getSymbolicExecutionTermLabelConfigurations( - SymbolicExecutionJavaProfile - .isTruthValueEvaluationEnabled(sourceInitConfig))); - return result; - } else { - return super.computeTermLabelConfiguration(); - } - } - }; - } else { - profile = new JavaProfile() { - @Override - protected ImmutableList computeTermLabelConfiguration() { - Profile sourceProfile = sourceInitConfig.getProfile(); - if (sourceProfile instanceof SymbolicExecutionJavaProfile) { - ImmutableList result = - super.computeTermLabelConfiguration(); - // Make sure that the term labels of symbolic execution are also supported - // by the new environment. - result = result.prepend(SymbolicExecutionJavaProfile - .getSymbolicExecutionTermLabelConfigurations( - SymbolicExecutionJavaProfile - .isTruthValueEvaluationEnabled(sourceInitConfig))); - return result; - } else { - return super.computeTermLabelConfiguration(); - } - } - }; - } - // Create new InitConfig - final InitConfig initConfig = - new InitConfig(sourceInitConfig.getServices().copy(profile, false)); - // Set modified taclet options in which runtime exceptions are banned. - Choice runtimeExceptionTreatment = new Choice("ban", "runtimeExceptions"); - ImmutableSet choices = SideProofUtil - .activateChoice(sourceInitConfig.getActivatedChoices(), runtimeExceptionTreatment); - initConfig.setActivatedChoices(choices); - // Initialize InitConfig with settings from the original InitConfig. - final ProofSettings clonedSettings = sourceInitConfig.getSettings() != null - ? new ProofSettings(sourceInitConfig.getSettings()) - : null; - initConfig.setSettings(clonedSettings); - initConfig.setTaclet2Builder( - new HashMap<>(sourceInitConfig.getTaclet2Builder())); - initConfig.setTaclets(sourceInitConfig.getTaclets()); - // Create new ProofEnvironment and initialize it with values from initial one. - ProofEnvironment env = new ProofEnvironment(initConfig); - for (Taclet taclet : initConfig.activatedTaclets()) { - initConfig.getJustifInfo().addJustification(taclet, - sourceJustiInfo.getJustification(taclet)); - } - for (BuiltInRule rule : initConfig.builtInRules()) { - RuleJustification origJusti = sourceJustiInfo.getJustification(rule); - if (origJusti == null) { - assert rule instanceof OneStepSimplifier; - origJusti = AxiomJustification.INSTANCE; - } - initConfig.getJustifInfo().addJustification(rule, origJusti); - } - return env; - } - - /** - *

- * Stores or disposes the {@link Proof} of the {@link ApplyStrategyInfo} in - * {@link SideProofStore#DEFAULT_INSTANCE}. - *

- *

- * This method should be called whenever a side proof is no longer needed and should be disposed - * or stored for debugging purposes. - *

- * - * @param description The description. - * @param info The {@link ApplyStrategyInfo} to store or dispose its {@link Proof}. - */ - public static void disposeOrStore(String description, ApplyStrategyInfo info) { - if (info != null) { - if (SideProofStore.DEFAULT_INSTANCE.isEnabled()) { - SideProofStore.DEFAULT_INSTANCE.addProof(description, info.getProof()); - } else { - info.getProof().dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SymbolicExecutionUtil.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SymbolicExecutionUtil.java deleted file mode 100644 index e6af41e1a9d..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SymbolicExecutionUtil.java +++ /dev/null @@ -1,4401 +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.symbolic_execution.util; - -import java.util.*; - -import de.uka.ilkd.key.java.*; -import de.uka.ilkd.key.java.ast.*; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.declaration.FieldDeclaration; -import de.uka.ilkd.key.java.ast.declaration.FieldSpecification; -import de.uka.ilkd.key.java.ast.declaration.TypeDeclaration; -import de.uka.ilkd.key.java.ast.expression.Assignment; -import de.uka.ilkd.key.java.ast.expression.Expression; -import de.uka.ilkd.key.java.ast.reference.ExecutionContext; -import de.uka.ilkd.key.java.ast.reference.IExecutionContext; -import de.uka.ilkd.key.java.ast.reference.ReferencePrefix; -import de.uka.ilkd.key.java.ast.reference.TypeReference; -import de.uka.ilkd.key.java.ast.statement.*; -import de.uka.ilkd.key.java.visitor.ContainsStatementVisitor; -import de.uka.ilkd.key.ldt.BooleanLDT; -import de.uka.ilkd.key.ldt.HeapLDT; -import de.uka.ilkd.key.ldt.IntegerLDT; -import de.uka.ilkd.key.ldt.JavaDLTheory; -import de.uka.ilkd.key.logic.*; -import de.uka.ilkd.key.logic.label.*; -import de.uka.ilkd.key.logic.op.*; -import de.uka.ilkd.key.logic.sort.NullSort; -import de.uka.ilkd.key.pp.LogicPrinter; -import de.uka.ilkd.key.pp.NotationInfo; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.calculus.JavaDLSequentKit; -import de.uka.ilkd.key.proof.init.AbstractOperationPO; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProofSaver; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.rule.*; -import de.uka.ilkd.key.rule.merge.CloseAfterMerge; -import de.uka.ilkd.key.rule.merge.CloseAfterMergeRuleBuiltInRuleApp; -import de.uka.ilkd.key.rule.merge.MergeRuleBuiltInRuleApp; -import de.uka.ilkd.key.settings.ProofIndependentSettings; -import de.uka.ilkd.key.settings.ProofSettings; -import de.uka.ilkd.key.settings.StrategySettings; -import de.uka.ilkd.key.speclang.Contract; -import de.uka.ilkd.key.speclang.OperationContract; -import de.uka.ilkd.key.strategy.ModularJavaDLStrategyFactory; -import de.uka.ilkd.key.strategy.Strategy; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.ExecutionVariableExtractor; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionElement; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionStrategy; -import de.uka.ilkd.key.util.KeYTypeUtil; -import de.uka.ilkd.key.util.MiscTools; - -import org.key_project.logic.Name; -import org.key_project.logic.PosInTerm; -import org.key_project.logic.Term; -import org.key_project.logic.op.Function; -import org.key_project.logic.op.Modality; -import org.key_project.logic.op.Operator; -import org.key_project.logic.op.SortedOperator; -import org.key_project.logic.sort.Sort; -import org.key_project.prover.engine.impl.ApplyStrategyInfo; -import org.key_project.prover.rules.RuleApp; -import org.key_project.prover.rules.tacletbuilder.TacletGoalTemplate; -import org.key_project.prover.sequent.*; -import org.key_project.util.collection.ImmutableArray; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.Pair; -import org.key_project.util.java.CollectionUtil; -import org.key_project.util.parsing.Position; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static de.uka.ilkd.key.logic.equality.IrrelevantTermLabelsProperty.IRRELEVANT_TERM_LABELS_PROPERTY; -import static de.uka.ilkd.key.logic.equality.RenamingTermProperty.RENAMING_TERM_PROPERTY; - -/** - * Provides utility methods for symbolic execution with KeY. - * - * @author Martin Hentschel - */ -public final class SymbolicExecutionUtil { - private static final Logger LOGGER = LoggerFactory.getLogger(SymbolicExecutionUtil.class); - - - /** - * Key for the choice option "runtimeExceptions". - */ - public static final String CHOICE_SETTING_RUNTIME_EXCEPTIONS = "runtimeExceptions"; - - /** - * Value in choice option "runtimeExceptions" to ban exceptions. - */ - public static final String CHOICE_SETTING_RUNTIME_EXCEPTIONS_VALUE_BAN = - "runtimeExceptions:ban"; - - /** - * Value in choice option "runtimeExceptions" to allow exceptions. - */ - public static final String CHOICE_SETTING_RUNTIME_EXCEPTIONS_VALUE_ALLOW = - "runtimeExceptions:allow"; - - /** - * Name of {@link #RESULT_LABEL}. - */ - public static final Name RESULT_LABEL_NAME = new Name("RES"); - - /** - * Label attached to a {@link JTerm} to evaluate in a side proof. - */ - public static final TermLabel RESULT_LABEL = new ParameterlessTermLabel(RESULT_LABEL_NAME); - - /** - * Name of {@link #LOOP_BODY_LABEL}. - */ - public static final Name LOOP_BODY_LABEL_NAME = new Name("LoopBody"); - - /** - * Label attached to the modality which executes a loop body in branch "Body Preserves - * Invariant" of applied "Loop Invariant" rules. - */ - public static final TermLabel LOOP_BODY_LABEL = - new ParameterlessTermLabel(LOOP_BODY_LABEL_NAME); - - /** - * Name of {@link #LOOP_INVARIANT_NORMAL_BEHAVIOR_LABEL}. - */ - public static final Name LOOP_INVARIANT_NORMAL_BEHAVIOR_LABEL_NAME = - new Name("LoopInvariantNormalBehavior"); - - /** - * Label attached to the implication when a loop body execution terminated normally without any - * exceptions, returns or breaks in branch "Body Preserves Invariant" of applied "Loop - * Invariant" rules to show the loop invariant. - */ - public static final TermLabel LOOP_INVARIANT_NORMAL_BEHAVIOR_LABEL = - new ParameterlessTermLabel(LOOP_INVARIANT_NORMAL_BEHAVIOR_LABEL_NAME); - - /** - * Forbid instances. - */ - private SymbolicExecutionUtil() { - } - - /** - * Simplifies the given {@link JTerm} in a side proof. - * - * @param initConfig The {@link InitConfig} to use. - * @param term The {@link JTerm} to simplify. - * @return The simplified {@link JTerm}. - * @throws ProofInputException Occurred Exception. - */ - public static JTerm simplify(InitConfig initConfig, JTerm term) throws ProofInputException { - return simplify(initConfig, null, term); - } - - /** - * Simplifies the given {@link JTerm} in a side proof. - * - * @param parentProof The parent {@link Proof}. - * @param term The {@link JTerm} to simplify. - * @return The simplified {@link JTerm}. - * @throws ProofInputException Occurred Exception. - */ - public static JTerm simplify(Proof parentProof, JTerm term) throws ProofInputException { - assert !parentProof.isDisposed(); - return simplify(parentProof.getInitConfig(), parentProof, term); - } - - /** - * Simplifies the given {@link JTerm} in a side proof. - * - * @param initConfig The {@link InitConfig} to use. - * @param parentProof The parent {@link Proof} which provides the {@link StrategySettings}. - * @param term The {@link JTerm} to simplify. - * @return The simplified {@link JTerm}. - * @throws ProofInputException Occurred Exception. - */ - public static JTerm simplify(InitConfig initConfig, Proof parentProof, JTerm term) - throws ProofInputException { - final Services services = initConfig.getServices(); - // New OneStepSimplifier is required because it has an internal state and the default - // instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(initConfig, true); - // Create Sequent to prove - Sequent sequentToProve = - JavaDLSequentKit.getInstance().getEmptySequent() - .addFormula(new SequentFormula(term), false, true) - .sequent(); - // Return created Sequent and the used predicate to identify the value interested in. - ApplyStrategyInfo info = - SymbolicExecutionSideProofUtil.startSideProof(parentProof, - sideProofEnv, sequentToProve); - try { - // The simplified formula is the conjunction of all open goals - ImmutableList openGoals = info.getProof().openEnabledGoals(); - final TermBuilder tb = services.getTermBuilder(); - if (openGoals.isEmpty()) { - return tb.tt(); - } else { - ImmutableList goalImplications = ImmutableList.nil(); - for (Goal goal : openGoals) { - JTerm goalImplication = - sequentToImplication(goal.sequent(), goal.proof().getServices()); - goalImplication = tb.not(goalImplication); - goalImplications = goalImplications.append(goalImplication); - } - return tb.not(tb.or(goalImplications)); - } - } finally { - SymbolicExecutionSideProofUtil.disposeOrStore( - "Simplification of " + ProofSaver.printAnything(term, services), info); - } - } - - /** - * Converts the given {@link Sequent} into an implication. - * - * @param sequent The {@link Sequent} to convert. - * @param services The {@link Services} to use. - * @return The created implication. - */ - public static JTerm sequentToImplication(Sequent sequent, Services services) { - if (sequent != null) { - ImmutableList antecedents = listSemisequentTerms(sequent.antecedent()); - ImmutableList succedents = listSemisequentTerms(sequent.succedent()); - // Construct branch condition from created antecedent and succedent terms as new - // implication - JTerm left = services.getTermBuilder().and(antecedents); - JTerm right = services.getTermBuilder().or(succedents); - return services.getTermBuilder().imp(left, right); - } else { - return services.getTermBuilder().tt(); - } - } - - /** - * Lists the {@link JTerm}s contained in the given {@link Semisequent}. - * - * @param semisequent The {@link Semisequent} to list terms of. - * @return The list with all contained {@link JTerm}s. - */ - public static ImmutableList listSemisequentTerms(Semisequent semisequent) { - ImmutableList terms = ImmutableList.nil(); - if (semisequent != null) { - for (SequentFormula sf : semisequent) { - terms = terms.append((JTerm) sf.formula()); - } - } - return terms; - } - - /** - * Improves the {@link JTerm} to increase its readability. The following changes will be - * performed: - *
    - *
  • {@code a < 1 + b} => {@code a <= b}
  • - *
  • {@code a < b + 1} => {@code a <= b}
  • - * - *
  • {@code a >= 1 + b} => {@code a > b}
  • - *
  • {@code a >= b + 1} => {@code a > b}
  • - * - *
  • {@code a <= -1 + b} => {@code a < b}
  • - *
  • {@code a <= b + -1} => {@code a < b}
  • - *
  • {@code a <= b - 1} => {@code a < b}
  • - * - *
  • {@code a > -1 + b} => {@code a >= b}
  • - *
  • {@code a > b + -1} => {@code a >= b}
  • - *
  • {@code a > b - 1} => {@code a >= b}
  • - * - *
  • {@code a >= 1 + b} => {@code a > b}
  • - *
  • {@code a >= b + 1} => {@code a > b}
  • - *
  • {@code !a >= b} => {@code a < b}
  • - *
  • {@code !a > b} => {@code a <= b}
  • - *
  • {@code !a <= b} => {@code a > b}
  • - *
  • {@code !a < b} => {@code a >= b}
  • - *
- * - * @param term The {@link JTerm} to improve. - * @param services The {@link Services} to use. - * @return The improved {@link JTerm} or the {@link JTerm} itself if no improvements are - * possible. - */ - public static JTerm improveReadability(JTerm term, Services services) { - if (term != null && services != null) { - IntegerLDT integerLDT = services.getTypeConverter().getIntegerLDT(); - term = improveReadabilityRecursive(term, services, integerLDT); - } - return term; - } - - /** - * Helper method of {@link #improveReadability(JTerm, Services)}. - * - * @param term The {@link JTerm} to improve. - * @param services The {@link Services} to use. - * @param integerLDT The {@link IntegerLDT} to use. - * @return The improved {@link JTerm} or the {@link JTerm} itself if no improvements are - * possible. - */ - private static JTerm improveReadabilityRecursive(JTerm term, Services services, - IntegerLDT integerLDT) { - // Improve children - boolean subChanged = false; - List newSubs = new LinkedList<>(); - for (JTerm sub : term.subs()) { - JTerm newSub = improveReadabilityRecursive(sub, services, integerLDT); - if (newSub != sub) { - newSubs.add(newSub); - subChanged = true; - } else { - newSubs.add(sub); - } - } - if (subChanged) { - term = - services.getTermFactory().createTerm(term.op(), new ImmutableArray<>(newSubs), - term.boundVars(), term.getLabels()); - } - // Improve readability: a < 1 + b, a < b + 1 - final TermBuilder tb = services.getTermBuilder(); - if (term.op() == integerLDT.getLessThan()) { - JTerm subOne = term.sub(1); - if (subOne.op() == integerLDT.getAdd()) { - if (isOne(subOne.sub(0), integerLDT)) { - term = tb.leq(term.sub(0), subOne.sub(1)); - } else if (isOne(subOne.sub(1), integerLDT)) { - term = tb.leq(term.sub(0), subOne.sub(0)); - } - } - } - // Improve readability: a >= 1 + b, a >= b + 1 - else if (term.op() == integerLDT.getGreaterOrEquals()) { - JTerm subOne = term.sub(1); - if (subOne.op() == integerLDT.getAdd()) { - if (isOne(subOne.sub(0), integerLDT)) { - term = tb.gt(term.sub(0), subOne.sub(1)); - } else if (isOne(subOne.sub(1), integerLDT)) { - term = tb.gt(term.sub(0), subOne.sub(0)); - } - } - } - // Improve readability: a <= -1 + b, a <= 1 + -b, a <= 1 - b - else if (term.op() == integerLDT.getLessOrEquals()) { - JTerm subOne = term.sub(1); - if (subOne.op() == integerLDT.getAdd()) { - if (isMinusOne(subOne.sub(0), integerLDT)) { - term = tb.lt(term.sub(0), subOne.sub(1)); - } else if (isMinusOne(subOne.sub(1), integerLDT)) { - term = tb.lt(term.sub(0), subOne.sub(0)); - } - } else if (subOne.op() == integerLDT.getSub()) { - if (isOne(subOne.sub(1), integerLDT)) { - term = tb.lt(term.sub(0), subOne.sub(0)); - } - } - } - // Improve readability: a > -1 + b, a > 1 + -b, a > 1 - b - else if (term.op() == integerLDT.getGreaterThan()) { - JTerm subOne = term.sub(1); - if (subOne.op() == integerLDT.getAdd()) { - if (isMinusOne(subOne.sub(0), integerLDT)) { - term = tb.geq(term.sub(0), subOne.sub(1)); - } else if (isMinusOne(subOne.sub(1), integerLDT)) { - term = tb.geq(term.sub(0), subOne.sub(0)); - } - } else if (subOne.op() == integerLDT.getSub()) { - if (isOne(subOne.sub(1), integerLDT)) { - term = tb.geq(term.sub(0), subOne.sub(0)); - } - } - } - // Improve readability: !a >= b, !a > b, !a <= b, !a < b - else if (term.op() == Junctor.NOT) { - JTerm sub = term.sub(0); - if (sub.op() == integerLDT.getLessOrEquals()) { - term = tb.gt(sub.sub(0), sub.sub(1)); - } else if (sub.op() == integerLDT.getLessThan()) { - term = tb.geq(sub.sub(0), sub.sub(1)); - } else if (sub.op() == integerLDT.getGreaterOrEquals()) { - term = tb.lt(sub.sub(0), sub.sub(1)); - } else if (sub.op() == integerLDT.getGreaterThan()) { - term = tb.leq(sub.sub(0), sub.sub(1)); - } - } - return term; - } - - /** - * Checks if the given term represent the number one - * - * @param subOne the term to be checked - * @param integerLDT the LDT for integers - * @return true if the term represents the one - */ - private static boolean isOne(JTerm subOne, IntegerLDT integerLDT) { - return subOne.equalsModProperty(integerLDT.one(), IRRELEVANT_TERM_LABELS_PROPERTY); - } - - /** - * Checks if the given {@link JTerm} represents the integer constant {@code -1}. - * - * @param term The {@link JTerm} to check. - * @param integerLDT The {@link IntegerLDT} to use. - * @return {@code true} {@link JTerm} represents {@code -1}, {@code false} {@link JTerm} is - * something else. - */ - private static boolean isMinusOne(JTerm term, IntegerLDT integerLDT) { - if (term.op() == integerLDT.getNumberSymbol()) { - term = term.sub(0); - if (term.op() == integerLDT.getNegativeNumberSign()) { - term = term.sub(0); - if (term.op() == integerLDT.getNumberLiteralFor(1)) { - term = term.sub(0); - return term.op() == integerLDT.getNumberTerminator(); - } - } - } - return false; - } - - /** - * Creates a {@link Sequent} which can be used in site proofs to extract the return value of the - * given {@link IProgramVariable} from the sequent of the given {@link Node}. - * - * @param services The {@link Services} to use. - * @param contextObjectType The type of the current object (this reference). - * @param contextMethod The current method. - * @param contextObject The current object (this reference). - * @param methodReturnNode The method return {@link Node} which provides the sequent to extract - * updates and return expression from. - * @param methodCallEmptyNode The method call empty {@link Node} which provides the sequent to - * start site proof in. - * @param variable The {@link IProgramVariable} of the value which is interested. - * @return The created {@link SiteProofVariableValueInput} with the created sequent and the - * predicate which will contain the value. - */ - public static SiteProofVariableValueInput createExtractReturnVariableValueSequent( - Services services, TypeReference contextObjectType, IProgramMethod contextMethod, - ReferencePrefix contextObject, Node methodReturnNode, Node methodCallEmptyNode, - IProgramVariable variable) { - // Create execution context in that the method was called. - IExecutionContext context = - new ExecutionContext(contextObjectType, contextMethod, contextObject); - // Create sequent - return createExtractReturnVariableValueSequent(services, context, methodReturnNode, - methodCallEmptyNode, variable); - } - - /** - * Creates a {@link Sequent} which can be used in site proofs to extract the return value of the - * given {@link IProgramVariable} from the sequent of the given {@link Node}. - * - * @param services The {@link Services} to use. - * @param context The {@link IExecutionContext} that defines the current object (this - * reference). - * @param methodReturnNode The method return {@link Node} which provides the sequent to extract - * updates and return expression from. - * @param methodCallEmptyNode The method call empty {@link Node} which provides the sequent to - * start site proof in. - * @param variable The {@link IProgramVariable} of the value which is interested. - * @return The created {@link SiteProofVariableValueInput} with the created sequent and the - * predicate which will contain the value. - */ - public static SiteProofVariableValueInput createExtractReturnVariableValueSequent( - Services services, IExecutionContext context, Node methodReturnNode, - Node methodCallEmptyNode, IProgramVariable variable) { - // Make sure that correct parameters are given - assert context != null; - assert methodReturnNode != null; - assert methodCallEmptyNode != null; - assert variable instanceof ProgramVariable; - // Create method frame which will be executed in site proof - Statement originalReturnStatement = - (Statement) methodReturnNode.getNodeInfo().getActiveStatement(); - MethodFrame newMethodFrame = - new MethodFrame(variable, context, new StatementBlock(originalReturnStatement)); - JavaBlock newJavaBlock = JavaBlock.createJavaBlock(new StatementBlock(newMethodFrame)); - // Create predicate which will be used in formulas to store the value interested in. - Function newPredicate = - new JFunction(new Name(services.getTermBuilder().newName("ResultPredicate")), - JavaDLTheory.FORMULA, variable.sort()); - // Create formula which contains the value interested in. - JTerm newTerm = services.getTermBuilder().func(newPredicate, - services.getTermBuilder().var((ProgramVariable) variable)); - // Combine method frame with value formula in a modality. - JTerm modalityTerm = services.getTermBuilder().dia(newJavaBlock, newTerm); - // Get the updates from the return node which includes the value interested in. - JTerm originalModifiedFormula = - (JTerm) methodReturnNode.getAppliedRuleApp().posInOccurrence().sequentFormula() - .formula(); - ImmutableList originalUpdates = - TermBuilder.goBelowUpdates2(originalModifiedFormula).first; - // Create Sequent to prove with new succedent. - Sequent sequentToProve = createSequentToProveWithNewSuccedent(methodCallEmptyNode, null, - modalityTerm, originalUpdates, false); - // Return created sequent and the used predicate to identify the value interested in. - return new SiteProofVariableValueInput(sequentToProve, newPredicate); - } - - /** - * Creates a {@link Sequent} which can be used in site proofs to extract the value of the given - * {@link IProgramVariable} from the sequent of the given {@link Node}. - * - * @param services The {@link Services} to use. - * @param node The original {@link Node} which provides the sequent to extract from. - * @param pio The {@link PosInOccurrence} of the SE modality. - * @param additionalConditions Optional additional conditions. - * @param variable The {@link IProgramVariable} of the value which is interested. - * @return The created {@link SiteProofVariableValueInput} with the created sequent and the - * predicate which will contain the value. - */ - public static SiteProofVariableValueInput createExtractVariableValueSequent(Services services, - Node node, PosInOccurrence pio, JTerm additionalConditions, - IProgramVariable variable) { - // Make sure that correct parameters are given - assert node != null; - assert variable instanceof ProgramVariable; - // Create predicate which will be used in formulas to store the value interested in. - Function newPredicate = - new JFunction(new Name(services.getTermBuilder().newName("ResultPredicate")), - JavaDLTheory.FORMULA, variable.sort()); - // Create formula which contains the value interested in. - JTerm newTerm = services.getTermBuilder().func(newPredicate, - services.getTermBuilder().var((ProgramVariable) variable)); - // Create Sequent to prove with new succedent. - Sequent sequentToProve = - createSequentToProveWithNewSuccedent(node, pio, additionalConditions, newTerm, false); - // Return created sequent and the used predicate to identify the value interested in. - return new SiteProofVariableValueInput(sequentToProve, newPredicate); - } - - /** - * Creates a {@link Sequent} which can be used in site proofs to extract the value of the given - * {@link IProgramVariable} from the sequent of the given {@link Node}. - * - * @param sideProofServices The {@link Services} of the side proof to use. - * @param node The original {@link Node} which provides the sequent to extract from. - * @param pio The {@link PosInOccurrence} of the modality or its updates. - * @param additionalConditions Additional conditions to add to the antecedent. - * @param term The new succedent term. - * @param keepUpdates {@code true} keep updates, {@code false} throw updates away. - * @return The created {@link SiteProofVariableValueInput} with the created sequent and the - * predicate which will contain the value. - */ - public static SiteProofVariableValueInput createExtractTermSequent(Services sideProofServices, - Node node, PosInOccurrence pio, JTerm additionalConditions, - JTerm term, - boolean keepUpdates) { - // Make sure that correct parameters are given - assert node != null; - assert term != null; - // Create predicate which will be used in formulas to store the value interested in. - Function newPredicate = - new JFunction( - new Name(sideProofServices.getTermBuilder().newName("ResultPredicate")), - JavaDLTheory.FORMULA, term.sort()); - // Create formula which contains the value interested in. - JTerm newTerm = sideProofServices.getTermBuilder().func(newPredicate, term); - // Create Sequent to prove with new succedent. - Sequent sequentToProve = keepUpdates - ? createSequentToProveWithNewSuccedent(node, pio, additionalConditions, newTerm, - false) - : createSequentToProveWithNewSuccedent(node, pio, additionalConditions, newTerm, - null, false); - // Return created sequent and the used predicate to identify the value interested in. - return new SiteProofVariableValueInput(sequentToProve, newPredicate); - } - - /** - * Helper class which represents the return value of - * {@link SymbolicExecutionUtil#createExtractReturnVariableValueSequent(Services, TypeReference, IProgramMethod, ReferencePrefix, Node, Node, IProgramVariable)} - * and - * {@link SymbolicExecutionUtil#createExtractVariableValueSequent(Services, Node, PosInOccurrence, JTerm, IProgramVariable)}. - * - * @author Martin Hentschel - */ - public static class SiteProofVariableValueInput { - /** - * The sequent to prove. - */ - private final Sequent sequentToProve; - - /** - * The {@link Operator} which is the predicate that contains the value interested in. - */ - private final Operator operator; - - /** - * Constructor. - * - * @param sequentToProve he sequent to prove. - * @param operator The {@link Operator} which is the predicate that contains the value - * interested in. - */ - public SiteProofVariableValueInput(Sequent sequentToProve, Operator operator) { - super(); - this.sequentToProve = sequentToProve; - this.operator = operator; - } - - /** - * Returns the sequent to prove. - * - * @return The sequent to prove. - */ - public Sequent getSequentToProve() { - return sequentToProve; - } - - /** - * Returns the {@link Operator} which is the predicate that contains the value interested - * in. - * - * @return The {@link Operator} which is the predicate that contains the value interested - * in. - */ - public Operator getOperator() { - return operator; - } - } - - /** - * Checks if the given {@link JTerm} represents a heap update, in particular a store or create - * operation on a heap. - * - * @param services The {@link Services} to use. - * @param term The {@link JTerm} to check. - * @return {@code true} is heap update, {@code false} is something else. - */ - public static boolean isHeapUpdate(Services services, Term term) { - boolean heapUpdate = false; - if (term != null) { - final var subs = term.subs(); - if (subs.size() == 1) { - final var sub = subs.get(0); - if (sub.op() == services.getTypeConverter().getHeapLDT().getStore() - || sub.op() == services.getTypeConverter().getHeapLDT().getCreate()) { - heapUpdate = true; - } - } - } - return heapUpdate; - } - - /** - * Checks if it is right now possible to compute the variables of the given - * {@link IExecutionNode} via {@link IExecutionNode#getVariables()}. - * - * @param node The {@link IExecutionNode} to check. - * @param services The {@link Services} to use. - * @return {@code true} right now it is possible to compute variables, {@code false} it is not - * possible to compute variables. - * @throws ProofInputException Occurred Exception. - */ - public static boolean canComputeVariables(IExecutionNode node, Services services) - throws ProofInputException { - return node != null && !node.isDisposed() - && !services.getTermBuilder().ff().equals(node.getPathCondition()); - } - - /** - * Creates for the given {@link IExecutionNode} the contained {@link IExecutionConstraint}s. - * - * @param node The {@link IExecutionNode} to create constraints for. - * @return The created {@link IExecutionConstraint}s. - */ - public static IExecutionConstraint[] createExecutionConstraints(IExecutionNode node) { - if (node != null && !node.isDisposed()) { - TermBuilder tb = node.getServices().getTermBuilder(); - List constraints = new LinkedList<>(); - Node proofNode = node.getProofNode(); - Sequent sequent = proofNode.sequent(); - for (SequentFormula sf : sequent.antecedent()) { - final JTerm formula = (JTerm) sf.formula(); - if (!containsSymbolicExecutionLabel(formula)) { - constraints.add(new ExecutionConstraint(node.getSettings(), proofNode, - node.getModalityPIO(), formula)); - } - } - for (SequentFormula sf : sequent.succedent()) { - final JTerm formula = (JTerm) sf.formula(); - if (!containsSymbolicExecutionLabel(formula)) { - constraints.add(new ExecutionConstraint(node.getSettings(), proofNode, - node.getModalityPIO(), tb.not(formula))); - } - } - return constraints.toArray(new IExecutionConstraint[0]); - } else { - return new IExecutionConstraint[0]; - } - } - - /** - * Checks if the {@link JTerm} or one of its sub terms contains a symbolic execution label. - * - * @param term The {@link JTerm} to check. - * @return {@code true} SE label is somewhere contained, {@code false} SE label is not contained - * at all. - */ - public static boolean containsSymbolicExecutionLabel(JTerm term) { - boolean hasModality = false; - term = TermBuilder.goBelowUpdates(term); - if (term.op() instanceof JModality) { - hasModality = hasSymbolicExecutionLabel(term); - } - if (!hasModality) { - int i = 0; - while (!hasModality && i < term.arity()) { - hasModality = containsSymbolicExecutionLabel(term.sub(i)); - i++; - } - } - return hasModality; - } - - /** - * Creates for the given {@link IExecutionNode} the contained root {@link IExecutionVariable}s. - * - * @param node The {@link IExecutionNode} to create variables for. - * @return The created {@link IExecutionVariable}s. - * @throws ProofInputException - */ - public static IExecutionVariable[] createExecutionVariables(IExecutionNode node) - throws ProofInputException { - return createExecutionVariables(node, null); - } - - /** - * Creates for the given {@link IExecutionNode} the contained root {@link IExecutionVariable}s. - * - * @param node The {@link IExecutionNode} to create variables for. - * @param condition A {@link JTerm} specifying some additional constraints to consider. - * @return The created {@link IExecutionVariable}s. - * @throws ProofInputException - */ - public static IExecutionVariable[] createExecutionVariables(IExecutionNode node, - JTerm condition) throws ProofInputException { - if (node != null) { - return createExecutionVariables(node, node.getProofNode(), node.getModalityPIO(), - condition); - } else { - return new IExecutionVariable[0]; - } - } - - /** - * Creates for the given {@link IExecutionNode} the contained root {@link IExecutionVariable}s. - * - * @param node The {@link IExecutionNode} to create variables for. - * @param proofNode The proof {@link Node} to work with. - * @param modalityPIO The {@link PosInOccurrence} of the modality of interest. - * @param condition A {@link JTerm} specifying some additional constraints to consider. - * @return The created {@link IExecutionVariable}s. - * @throws ProofInputException - */ - public static IExecutionVariable[] createExecutionVariables(IExecutionNode node, - Node proofNode, PosInOccurrence modalityPIO, - JTerm condition) - throws ProofInputException { - if (node.getSettings().variablesAreOnlyComputedFromUpdates()) { - ExecutionVariableExtractor extractor = new ExecutionVariableExtractor(proofNode, - modalityPIO, node, condition, node.getSettings().simplifyConditions()); - return extractor.analyse(); - } else { - return createAllExecutionVariables(node, proofNode, modalityPIO, condition); - } - } - - /** - * Creates for the given {@link IExecutionNode} the contained root {@link IExecutionVariable}s. - * - * @param node The {@link IExecutionNode} to create variables for. - * @param proofNode The proof {@link Node} to work with. - * @param modalityPIO The {@link PosInOccurrence} of the modality of interest. - * @param condition A {@link JTerm} specifying some additional constraints to consider. - * @return The created {@link IExecutionVariable}s. - */ - public static IExecutionVariable[] createAllExecutionVariables(IExecutionNode node, - Node proofNode, PosInOccurrence modalityPIO, - JTerm condition) { - if (proofNode != null) { - List variables = new LinkedList<>(); - // Add self variable - IProgramVariable selfVar = findSelfTerm(proofNode, modalityPIO); - if (selfVar != null) { - variables.add(selfVar); - } - // Add method parameters - Node callNode = findMethodCallNode(proofNode, modalityPIO); - if (callNode != null - && callNode.getNodeInfo() - .getActiveStatement() instanceof MethodBodyStatement mbs) { - for (Expression e : mbs.getArguments()) { - if (e instanceof IProgramVariable) { - variables.add((IProgramVariable) e); - } - } - } - // Collect variables from updates - List variablesFromUpdates = - collectAllElementaryUpdateTerms(proofNode); - for (IProgramVariable variable : variablesFromUpdates) { - if (!variables.contains(variable)) { - variables.add(variable); - } - } - IExecutionVariable[] result = new IExecutionVariable[variables.size()]; - int i = 0; - for (IProgramVariable var : variables) { - result[i] = new ExecutionVariable(node, proofNode, modalityPIO, var, condition); - i++; - } - return result; - } else { - return new IExecutionVariable[0]; - } - } - - /** - * Collects all {@link IProgramVariable} used in {@link ElementaryUpdate}s. - * - * @param node The {@link Node} to search in. - * @return The found {@link IProgramVariable} which are used in {@link ElementaryUpdate}s. - */ - public static List collectAllElementaryUpdateTerms(Node node) { - if (node != null) { - Services services = node.proof().getServices(); - List result = new LinkedList<>(); - for (SequentFormula sf : node.sequent().antecedent()) { - internalCollectAllElementaryUpdateTerms(services, result, sf.formula()); - } - for (SequentFormula sf : node.sequent().succedent()) { - internalCollectAllElementaryUpdateTerms(services, result, sf.formula()); - } - return result; - } else { - return Collections.emptyList(); - } - } - - /** - * Utility method of {@link #collectAllElementaryUpdateTerms(Node)} which collects all - * {@link IProgramVariable}s of {@link ElementaryUpdate}s and static field manipulations. - * - * @param services The {@link Services} to use. - * @param result The result {@link List} to fill. - * @param term The current term to analyze. - */ - private static void internalCollectAllElementaryUpdateTerms(Services services, - List result, Term term) { - if (term != null) { - if (term.op() instanceof ElementaryUpdate) { - if (isHeapUpdate(services, term)) { - // Extract static variables from heap - Set staticAttributes = new LinkedHashSet<>(); - internalCollectStaticProgramVariablesOnHeap(services, staticAttributes, term); - result.addAll(staticAttributes); - } else { - // Local variable - ElementaryUpdate eu = (ElementaryUpdate) term.op(); - if (eu.lhs() instanceof IProgramVariable) { - result.add((IProgramVariable) eu.lhs()); - } - } - } else { - for (var sub : term.subs()) { - internalCollectAllElementaryUpdateTerms(services, result, sub); - } - } - } - } - - /** - * Utility method of - * {@link #internalCollectAllElementaryUpdateTerms(Services, List, Term)} - * which collects static field manipulations on the given heap update. - * - * @param services The {@link Services} to use. - * @param result The result {@link List} to fill. - * @param term The current term to analyze. - */ - private static void internalCollectStaticProgramVariablesOnHeap(Services services, - Set result, Term term) { - final HeapLDT heapLDT = services.getTypeConverter().getHeapLDT(); - try { - if (term.op() == heapLDT.getStore()) { - final var subs = term.subs(); - if (term.arity() == 4) { - var innerMostSelect = findInnerMostSelect(subs.get(1), services); - var locationTerm = - innerMostSelect != null ? innerMostSelect.sub(2) : subs.get(2); - ProgramVariable attribute = getProgramVariable(services, heapLDT, locationTerm); - if (attribute != null && attribute.isStatic()) { - result.add(attribute); - } - } - } - } catch (Exception e) { - // Can go wrong, nothing to do - } - for (var sub : term.subs()) { - internalCollectStaticProgramVariablesOnHeap(services, result, sub); - } - } - - private static Term findInnerMostSelect(Term term, - Services services) { - if (isSelect(services, term)) { - while (isSelect(services, term.sub(1))) { - term = term.sub(1); - } - return term; - } else { - return null; - } - } - - /** - * Returns the {@link ProgramVariable} defined by the given {@link JTerm}. - * - * @param services The {@link Services} to use. - * @param heapLDT The {@link HeapLDT} to use. - * @param locationTerm The {@link JTerm} to extract {@link ProgramVariable} from. - * @return The {@link JTerm}s {@link ProgramVariable} or {@code null} if not available. - */ - public static ProgramVariable getProgramVariable(Services services, HeapLDT heapLDT, - Term locationTerm) { - ProgramVariable result = null; - if (locationTerm.op() instanceof Function function) { - // Make sure that the function is not an array - if (heapLDT.getArr() != function) { - String typeName = HeapLDT.getClassName(function); - KeYJavaType type = services.getJavaInfo().getKeYJavaType(typeName); - if (type != null) { - String fieldName = HeapLDT.getPrettyFieldName(function); - result = services.getJavaInfo().getAttribute(fieldName, type); - } - } - } - return result; - } - - /** - * Returns the array index defined by the given {@link JTerm}. - * - * @param services The {@link Services} to use. - * @param heapLDT The {@link HeapLDT} to use. - * @param arrayIndexTerm The {@link JTerm} to extract the array index from. - * @return The array index or {@code null} if the term defines no array index. - */ - public static JTerm getArrayIndex(Services services, HeapLDT heapLDT, JTerm arrayIndexTerm) { - // Make sure that the term is an array index - if (arrayIndexTerm.op() == heapLDT.getArr() && arrayIndexTerm.arity() == 1) { - return arrayIndexTerm.sub(0); - } else { - return null; - } - } - - /** - * Searches the {@link IProgramVariable} of the current {@code this}/{@code self} reference. - * - * @param node The {@link Node} to search in. - * @param pio The {@link PosInOccurrence} describing the location of the modality of interest. - * @return The found {@link IProgramVariable} with the current {@code this}/{@code self} - * reference or {@code null} if no one is available. - */ - public static IProgramVariable findSelfTerm(Node node, - PosInOccurrence pio) { - if (pio != null) { - JTerm term = (JTerm) pio.subTerm(); - term = TermBuilder.goBelowUpdates(term); - JavaBlock jb = term.javaBlock(); - Services services = node.proof().getServices(); - IExecutionContext context = JavaTools.getInnermostExecutionContext(jb, services); - if (context instanceof ExecutionContext) { - ReferencePrefix prefix = context.getRuntimeInstance(); - return prefix instanceof IProgramVariable ? (IProgramVariable) prefix : null; - } else { - return null; - } - } else { - return null; - } - } - - /** - * Checks if the given node should be represented as method call. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @param statement The statement ({@link SourceElement}). - * @return {@code true} represent node as method call, {@code false} represent node as something - * else. - */ - public static boolean isMethodCallNode(Node node, RuleApp ruleApp, - SourceElement statement) { - return isMethodCallNode(node, ruleApp, statement, false); - } - - /** - * Checks if the given node should be represented as method call. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @param statement The statement ({@link SourceElement}). - * @param allowImpliciteMethods {@code true} implicit methods are included, {@code false} - * implicit methods are outfiltered. - * @return {@code true} represent node as method call, {@code false} represent node as something - * else. - */ - public static boolean isMethodCallNode(Node node, RuleApp ruleApp, - SourceElement statement, - boolean allowImpliciteMethods) { - if (ruleApp != null) { // Do not handle open goal nodes without applied rule - if (statement instanceof MethodBodyStatement) { - if (allowImpliciteMethods) { - return true; - } else { - MethodBodyStatement mbs = (MethodBodyStatement) statement; - IProgramMethod pm = mbs.getProgramMethod(node.proof().getServices()); - return isNotImplicit(node.proof().getServices(), pm); - } - } else { - return false; - } - } else { - return false; - } - } - - /** - * Checks if the given {@link IProgramMethod} is not implicit. - * - * @param services The {@link Services} to use. - * @param pm The {@link IProgramMethod} to check. - * @return {@code true} is not implicit, {@code false} is implicit - */ - public static boolean isNotImplicit(Services services, IProgramMethod pm) { - if (pm != null) { - if (KeYTypeUtil.isImplicitConstructor(pm)) { - IProgramMethod explicitConstructor = - KeYTypeUtil.findExplicitConstructor(services, pm); - return explicitConstructor != null - && !KeYTypeUtil.isLibraryClass(explicitConstructor.getContainerType()); - } else { - return !pm.isImplicit() && // Do not include implicit methods, but always - // constructors - !KeYTypeUtil.isLibraryClass(pm.getContainerType()); - } - } else { - return true; - } - } - - /** - * Checks if the given node should be represented as branch statement. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @param statement The statement ({@link SourceElement}). - * @param posInfo The {@link PositionInfo}. - * @return {@code true} represent node as branch statement, {@code false} represent node as - * something else. - */ - public static boolean isBranchStatement(Node node, RuleApp ruleApp, - SourceElement statement, - PositionInfo posInfo) { - return isStatementNode(node, ruleApp, statement, posInfo) - && (statement instanceof BranchStatement); - } - - /** - * Checks if the given node should be represented as loop statement. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @param statement The statement ({@link SourceElement}). - * @param posInfo The {@link PositionInfo}. - * @return {@code true} represent node as loop statement, {@code false} represent node as - * something else. - */ - public static boolean isLoopStatement(Node node, RuleApp ruleApp, - SourceElement statement, - PositionInfo posInfo) { - return isStatementNode(node, ruleApp, statement, posInfo) - && (statement instanceof LoopStatement); - } - - /** - * Checks if the given node should be represented as statement. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @param statement The statement ({@link SourceElement}). - * @param posInfo The {@link PositionInfo}. - * @return {@code true} represent node as statement, {@code false} represent node as something - * else. - */ - public static boolean isStatementNode(Node node, RuleApp ruleApp, - SourceElement statement, - PositionInfo posInfo) { - // filter out: open goal node which has no applied rule, statements where source code is - // missing, empty statements, empty blocks - return ruleApp != null && posInfo != null && posInfo.getEndPosition() != Position.UNDEFINED - && posInfo.getEndPosition().line() >= 0 && !(statement instanceof EmptyStatement) - && !(statement instanceof StatementBlock && ((StatementBlock) statement).isEmpty()); - } - - /** - * Checks if the given node should be represented as termination. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @return {@code true} represent node as termination, {@code false} represent node as something - * else. - */ - public static boolean isTerminationNode(Node node, - RuleApp ruleApp) { - return "emptyModality".equals(MiscTools.getRuleDisplayName(ruleApp)); - } - - /** - * Checks if the given node should be represented as operation contract. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @return {@code true} represent node as operation contract, {@code false} represent node as - * something else. - */ - public static boolean isOperationContract(Node node, - RuleApp ruleApp) { - if (ruleApp instanceof AbstractContractRuleApp) { - Contract contract = ((AbstractContractRuleApp) ruleApp).getInstantiation(); - if (contract instanceof OperationContract) { - IProgramMethod target = ((OperationContract) contract).getTarget(); - return isNotImplicit(node.proof().getServices(), target); - } else { - return false; - } - } else { - return false; - } - } - - /** - * Checks if the given node should be represented as block/loop contract. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @return {@code true} represent node as block contract, {@code false} represent node as - * something else. - */ - public static boolean isBlockSpecificationElement(Node node, - RuleApp ruleApp) { - return ruleApp instanceof AbstractAuxiliaryContractBuiltInRuleApp; - } - - /** - * Checks if the given node should be represented as loop invariant. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @return {@code true} represent node as use loop invariant, {@code false} represent node as - * something else. - */ - public static boolean isLoopInvariant(Node node, RuleApp ruleApp) { - return "Loop Invariant".equals(MiscTools.getRuleDisplayName(ruleApp)); - } - - /** - * Checks if the given node should be represented as method return. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @return {@code true} represent node as method return, {@code false} represent node as - * something else. - */ - public static boolean isMethodReturnNode(Node node, - RuleApp ruleApp) { - String displayName = MiscTools.getRuleDisplayName(ruleApp); - String ruleName = MiscTools.getRuleName(ruleApp); - return "methodCallEmpty".equals(displayName) || "methodCallEmptyReturn".equals(ruleName) - || "methodCallReturnIgnoreResult".equals(ruleName); - } - - /** - * Checks if the given node should be represented as exceptional method return. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @return {@code true} represent node as exceptional method return, {@code false} represent - * node as something else. - */ - public static boolean isExceptionalMethodReturnNode(Node node, - RuleApp ruleApp) { - String ruleName = MiscTools.getRuleName(ruleApp); - return "methodCallParamThrow".equals(ruleName) || "methodCallThrow".equals(ruleName); - } - - /** - * Checks if the given {@link Node} has a loop condition. - * - * @param node The {@link Node} to check. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @param statement The actual statement ({@link SourceElement}). - * @return {@code true} has loop condition, {@code false} has no loop condition. - */ - public static boolean hasLoopCondition(Node node, RuleApp ruleApp, - SourceElement statement) { - // Do not handle open goal nodes without applied rule. - // For each loops have no loop condition. - return ruleApp != null && statement instanceof LoopStatement - && !(statement instanceof EnhancedFor); - } - - /** - * Checks if the {@link JTerm} on which the {@link RuleApp} was applied contains a - * {@link SymbolicExecutionTermLabel}. - * - * @param ruleApp The {@link RuleApp} to check. - * @return {@code true} contains a {@link SymbolicExecutionTermLabel}, {@code false} does not - * contain a {@link SymbolicExecutionTermLabel} or the given {@link RuleApp} is - * {@code null}. - */ - public static boolean hasLoopBodyLabel(RuleApp ruleApp) { - if (ruleApp != null && ruleApp.posInOccurrence() != null) { - JTerm term = (JTerm) ruleApp.posInOccurrence().subTerm(); - if (term != null) { - term = TermBuilder.goBelowUpdates(term); - return term.containsLabel(LOOP_BODY_LABEL); - } else { - return false; - } - } else { - return false; - } - } - - /** - * Checks if the {@link JTerm} on which the {@link RuleApp} was applied contains a - * {@link SymbolicExecutionTermLabel}. - * - * @param ruleApp The {@link RuleApp} to check. - * @return {@code true} contains a {@link SymbolicExecutionTermLabel}, {@code false} does not - * contain a {@link SymbolicExecutionTermLabel} or the given {@link RuleApp} is - * {@code null}. - */ - public static boolean hasLoopBodyTerminationLabel( - RuleApp ruleApp) { - if (ruleApp != null && ruleApp.posInOccurrence() != null) { - JTerm term = (JTerm) ruleApp.posInOccurrence().subTerm(); - return term.containsLabel(LOOP_INVARIANT_NORMAL_BEHAVIOR_LABEL); - } else { - return false; - } - } - - /** - * Checks if the {@link JTerm} on which the {@link RuleApp} was applied contains a - * {@link SymbolicExecutionTermLabel}. - * - * @param ruleApp The {@link RuleApp} to check. - * @return {@code true} contains a {@link SymbolicExecutionTermLabel}, {@code false} does not - * contain a {@link SymbolicExecutionTermLabel} or the given {@link RuleApp} is - * {@code null}. - */ - public static boolean hasSymbolicExecutionLabel(RuleApp ruleApp) { - return getSymbolicExecutionLabel(ruleApp) != null; - } - - /** - * Returns the contained {@link SymbolicExecutionTermLabel} if available. - * - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @return The first found {@link SymbolicExecutionTermLabel} or {@code null} if no - * {@link SymbolicExecutionTermLabel} is provided. - */ - public static SymbolicExecutionTermLabel getSymbolicExecutionLabel( - RuleApp ruleApp) { - if (ruleApp != null && ruleApp.posInOccurrence() != null) { - return getSymbolicExecutionLabel((JTerm) ruleApp.posInOccurrence().subTerm()); - } else { - return null; - } - } - - /** - * Checks if the given {@link JTerm} contains a {@link SymbolicExecutionTermLabel}. - * - * @param term The {@link JTerm} to check. - * @return {@code true} contains a {@link SymbolicExecutionTermLabel}, {@code false} does not - * contain a {@link SymbolicExecutionTermLabel} or the given {@link JTerm} is - * {@code null}. - */ - public static boolean hasSymbolicExecutionLabel(Term term) { - return getSymbolicExecutionLabel(term) != null; - } - - /** - * Returns the contained {@link SymbolicExecutionTermLabel} if available. - * - * @param term The {@link JTerm} to search in. - * @return The first found {@link SymbolicExecutionTermLabel} or {@code null} if no - * {@link SymbolicExecutionTermLabel} is provided. - */ - public static SymbolicExecutionTermLabel getSymbolicExecutionLabel( - Term term) { - if (term instanceof JTerm jTerm) { - jTerm = TermBuilder.goBelowUpdates(jTerm); - return (SymbolicExecutionTermLabel) CollectionUtil.search(jTerm.getLabels(), - element -> element instanceof SymbolicExecutionTermLabel); - } else { - return null; - } - } - - /** - * Searches the modality {@link PosInOccurrence} with the maximal - * {@link SymbolicExecutionTermLabel} ID {@link SymbolicExecutionTermLabel#id()} in the given - * {@link Sequent}. - * - * @param sequent The {@link Sequent} to search in. - * @return The modality {@link PosInOccurrence} with the maximal ID if available or {@code null} - * otherwise. - */ - public static PosInOccurrence findModalityWithMaxSymbolicExecutionLabelId( - Sequent sequent) { - if (sequent != null) { - PosInOccurrence nextAntecedent = - findModalityWithMaxSymbolicExecutionLabelId(sequent.antecedent(), true); - PosInOccurrence nextSuccedent = - findModalityWithMaxSymbolicExecutionLabelId(sequent.succedent(), false); - if (nextAntecedent != null) { - if (nextSuccedent != null) { - SymbolicExecutionTermLabel antecedentLabel = - getSymbolicExecutionLabel((JTerm) nextAntecedent.subTerm()); - SymbolicExecutionTermLabel succedentLabel = - getSymbolicExecutionLabel((JTerm) nextSuccedent.subTerm()); - return antecedentLabel.id() > succedentLabel.id() ? nextAntecedent - : nextSuccedent; - } else { - return nextAntecedent; - } - } else { - return nextSuccedent; - } - } else { - return null; - } - } - - /** - * Searches the modality {@link JTerm} with the maximal {@link SymbolicExecutionTermLabel} ID - * {@link SymbolicExecutionTermLabel#id()} in the given {@link Semisequent}. - * - * @param semisequent The {@link Semisequent} to search in. - * @param inAntec {@code true} antecedent, {@code false} succedent. - * @return The modality {@link JTerm} with the maximal ID if available or {@code null} - * otherwise. - */ - public static PosInOccurrence findModalityWithMaxSymbolicExecutionLabelId( - Semisequent semisequent, boolean inAntec) { - if (semisequent != null) { - int maxId = Integer.MIN_VALUE; - PosInOccurrence maxPio = null; - for (SequentFormula sf : semisequent) { - PosInTerm current = findModalityWithMaxSymbolicExecutionLabelId(sf.formula()); - if (current != null) { - PosInOccurrence pio = - new PosInOccurrence(sf, current, inAntec); - SymbolicExecutionTermLabel label = - getSymbolicExecutionLabel((JTerm) pio.subTerm()); - if (maxPio == null || label.id() > maxId) { - maxPio = pio; - maxId = label.id(); - } - } - } - return maxPio; - } else { - return null; - } - } - - /** - * Searches the modality {@link PosInTerm} with the maximal {@link SymbolicExecutionTermLabel} - * ID {@link SymbolicExecutionTermLabel#id()} in the given {@link JTerm}. - * - * @param term The {@link JTerm} to search in. - * @return The modality {@link PosInTerm} with the maximal ID if available or {@code null} - * otherwise. - */ - public static PosInTerm findModalityWithMaxSymbolicExecutionLabelId( - Term term) { - if (term != null) { - FindModalityWithSymbolicExecutionLabelId visitor = - new FindModalityWithSymbolicExecutionLabelId(true); - term.execPreOrder(visitor); - return visitor.getPosInTerm(); - } else { - return null; - } - } - - /** - * Searches the modality {@link PosInOccurrence} with the minimal - * {@link SymbolicExecutionTermLabel} ID {@link SymbolicExecutionTermLabel#id()} in the given - * {@link Sequent}. - * - * @param sequent The {@link Sequent} to search in. - * @return The modality {@link PosInOccurrence} with the maximal ID if available or {@code null} - * otherwise. - */ - public static PosInOccurrence findModalityWithMinSymbolicExecutionLabelId( - Sequent sequent) { - if (sequent != null) { - PosInOccurrence nextAntecedent = - findModalityWithMinSymbolicExecutionLabelId(sequent.antecedent(), true); - PosInOccurrence nextSuccedent = - findModalityWithMinSymbolicExecutionLabelId(sequent.succedent(), false); - if (nextAntecedent != null) { - if (nextSuccedent != null) { - SymbolicExecutionTermLabel antecedentLabel = - getSymbolicExecutionLabel((JTerm) nextAntecedent.subTerm()); - SymbolicExecutionTermLabel succedentLabel = - getSymbolicExecutionLabel((JTerm) nextSuccedent.subTerm()); - return antecedentLabel.id() < succedentLabel.id() ? nextAntecedent - : nextSuccedent; - } else { - return nextAntecedent; - } - } else { - return nextSuccedent; - } - } else { - return null; - } - } - - /** - * Searches the modality {@link PosInOccurrence} with the minimal - * {@link SymbolicExecutionTermLabel} ID {@link SymbolicExecutionTermLabel#id()} in the given - * {@link Semisequent}. - * - * @param semisequent The {@link Semisequent} to search in. - * @param inAntec {@code true} antecedent, {@code false} succedent. - * @return The modality {@link PosInOccurrence} with the minimal ID if available or {@code null} - * otherwise. - */ - public static PosInOccurrence findModalityWithMinSymbolicExecutionLabelId( - Semisequent semisequent, boolean inAntec) { - if (semisequent != null) { - int maxId = Integer.MIN_VALUE; - PosInOccurrence minPio = null; - for (SequentFormula sf : semisequent) { - PosInTerm current = - findModalityWithMinSymbolicExecutionLabelId((JTerm) sf.formula()); - if (current != null) { - PosInOccurrence pio = - new PosInOccurrence(sf, current, inAntec); - SymbolicExecutionTermLabel label = - getSymbolicExecutionLabel((JTerm) pio.subTerm()); - if (minPio == null || label.id() < maxId) { - minPio = pio; - maxId = label.id(); - } - } - } - return minPio; - } else { - return null; - } - } - - /** - * Searches the modality {@link PosInTerm} with the minimal {@link SymbolicExecutionTermLabel} - * ID {@link SymbolicExecutionTermLabel#id()} in the given {@link JTerm}. - * - * @param term The {@link JTerm} to search in. - * @return The modality {@link PosInTerm} with the maximal ID if available or {@code null} - * otherwise. - */ - public static PosInTerm findModalityWithMinSymbolicExecutionLabelId(JTerm term) { - if (term != null) { - FindModalityWithSymbolicExecutionLabelId visitor = - new FindModalityWithSymbolicExecutionLabelId(false); - term.execPreOrder(visitor); - return visitor.getPosInTerm(); - } else { - return null; - } - } - - /** - * Utility class used to find the maximal modality Term used by - * {@link SymbolicExecutionUtil#findModalityWithMaxSymbolicExecutionLabelId(Term)}. - * - * @author Martin Hentschel - */ - private static final class FindModalityWithSymbolicExecutionLabelId - implements DefaultVisitor { - /** - * The modality {@link PosInTerm} with the maximal ID. - */ - private PosInTerm posInTerm; - - /** - * The maximal ID. - */ - private int maxId; - - /** - * {@code true} search maximal ID, {@code false} search minimal ID. - */ - private final boolean maximum; - - /** - * The current {@link PosInTerm}. - */ - private PosInTerm currentPosInTerm = null; - - private final Deque indexStack = new LinkedList<>(); - - /** - * Constructor. - * - * @param maximum {@code true} search maximal ID, {@code false} search minimal ID. - */ - public FindModalityWithSymbolicExecutionLabelId(boolean maximum) { - this.maximum = maximum; - } - - /** - * {@inheritDoc} - */ - @Override - public void visit(Term visited) { - SymbolicExecutionTermLabel label = getSymbolicExecutionLabel(visited); - if (label != null) { - if (posInTerm == null - || (maximum ? label.id() > maxId : label.id() < maxId)) { - posInTerm = currentPosInTerm; - maxId = label.id(); - } - } - } - - /** - * {@inheritDoc} - */ - @Override - public void subtreeEntered(Term subtreeRoot) { - if (currentPosInTerm == null) { - currentPosInTerm = PosInTerm.getTopLevel(); - } else { - int index = indexStack.getFirst(); - currentPosInTerm = currentPosInTerm.down(index); - } - indexStack.addFirst(0); - } - - /** - * {@inheritDoc} - */ - @Override - public void subtreeLeft(Term subtreeRoot) { - currentPosInTerm = currentPosInTerm.up(); - indexStack.removeFirst(); - if (!indexStack.isEmpty()) { - Integer nextIndex = indexStack.removeFirst(); - indexStack.addFirst(nextIndex + 1); - } - } - - /** - * Returns the modality {@link PosInTerm} with the maximal ID. - * - * @return The modality {@link PosInTerm} with the maximal ID. - */ - public PosInTerm getPosInTerm() { - return posInTerm; - } - } - - /** - * Checks if the given {@link Node} in KeY's proof tree represents also a {@link Node} in a - * symbolic execution tree. - * - * @param node The {@link Node} of KeY's proof tree to check. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @return {@code true} is also symbolic execution tree node, {@code false} is no node in a - * symbolic execution tree. - */ - public static boolean isSymbolicExecutionTreeNode(Node node, - RuleApp ruleApp) { - if (node != null && !isRuleAppToIgnore(ruleApp) && hasSymbolicExecutionLabel(ruleApp)) { - SourceElement statement = NodeInfo.computeActiveStatement(ruleApp); - PositionInfo posInfo = statement != null ? statement.getPositionInfo() : null; - if (isMethodReturnNode(node, ruleApp)) { - return !isInImplicitMethod(node, ruleApp); - } else if (isExceptionalMethodReturnNode(node, ruleApp)) { - return !isInImplicitMethod(node, ruleApp); - } else if (isLoopStatement(node, ruleApp, statement, posInfo)) { - // This check is redundant to the loop iteration check, but is faster - return true; - } else if (isBranchStatement(node, ruleApp, statement, posInfo) - || isMethodCallNode(node, ruleApp, statement) - || isStatementNode(node, ruleApp, statement, posInfo) - || isTerminationNode(node, ruleApp)) { - return true; - } else if (hasLoopCondition(node, ruleApp, statement)) { - return ((LoopStatement) statement).getGuardExpression() - .getPositionInfo() != PositionInfo.UNDEFINED - && !isDoWhileLoopCondition(node, statement) - && !isForLoopCondition(node, statement); - } else if (isOperationContract(node, ruleApp)) { - return true; - } else if (isLoopInvariant(node, ruleApp)) { - return true; - } else - return isBlockSpecificationElement(node, ruleApp); - } else - return isLoopBodyTermination(node, ruleApp); - } - - /** - * Checks if the given {@link RuleApp} should be ignored or checked for possible symbolic - * execution tree node representation. - * - * @param ruleApp The {@link RuleApp} to check. - * @return {@code true} ignore {@link RuleApp}, {@code false} check if the {@link RuleApp} - * represents a symbolic execution tree node. - */ - public static boolean isRuleAppToIgnore(RuleApp ruleApp) { - return "unusedLabel".equals(MiscTools.getRuleDisplayName(ruleApp)) - || "elim_double_block".equals(MiscTools.getRuleDisplayName(ruleApp)); - } - - /** - * Checks if the currently executed code is in an implicit method - * ({@link IProgramMethod#isImplicit()} is {@code true}). - * - * @param node The {@link Node} of KeY's proof tree to check. - * @param ruleApp The {@link RuleApp} may used or not used in the rule. - * @return {@code true} is in implicit method, {@code false} is not in implicit method. - */ - public static boolean isInImplicitMethod(Node node, - RuleApp ruleApp) { - JTerm term = (JTerm) ruleApp.posInOccurrence().subTerm(); - term = TermBuilder.goBelowUpdates(term); - JavaBlock block = term.javaBlock(); - IExecutionContext context = - JavaTools.getInnermostExecutionContext(block, node.proof().getServices()); - return context != null && context.getMethodContext() != null - && context.getMethodContext().isImplicit(); - } - - /** - * Compute the stack size of the given {@link JTerm} described by the given {@link RuleApp}. - * - * @param ruleApp The {@link RuleApp} which defines the {@link JTerm} to compute its stack size. - * @return The stack size. - */ - public static int computeStackSize(RuleApp ruleApp) { - int result = 0; - if (ruleApp != null) { - PosInOccurrence posInOc = ruleApp.posInOccurrence(); - if (posInOc != null) { - JTerm subTerm = (JTerm) posInOc.subTerm(); - if (subTerm != null) { - JTerm modality = TermBuilder.goBelowUpdates(subTerm); - if (modality != null) { - JavaBlock block = modality.javaBlock(); - if (block != null) { - JavaProgramElement element = block.program(); - if (element instanceof StatementBlock) { - StatementBlock b = (StatementBlock) block.program(); - ImmutableArray prefix = b.getPrefixElements(); - result = CollectionUtil.count(prefix, - element1 -> element1 instanceof MethodFrame); - } - } - } - } - } - } - return result; - } - - /** - * Checks if the given {@link SourceElement} is a do while loop. - * - * @param node The {@link Node} to check. - * @param statement The actual statement ({@link SourceElement}). - * @return {@code true} is do while loop, {@code false} is something else. - */ - public static boolean isDoWhileLoopCondition(Node node, SourceElement statement) { - return statement instanceof Do; - } - - /** - * Checks if the given {@link SourceElement} is a for loop. - * - * @param node The {@link Node} to check. - * @param statement The actual statement ({@link SourceElement}). - * @return {@code true} is for loop, {@code false} is something else. - */ - public static boolean isForLoopCondition(Node node, SourceElement statement) { - return statement instanceof For; - } - - /** - * Collects all {@link Goal}s in the subtree of the given {@link IExecutionElement}. - * - * @param executionElement The {@link IExecutionElement} to collect {@link Goal}s in. - * @return The found {@link Goal}s. - */ - public static ImmutableList collectGoalsInSubtree(IExecutionElement executionElement) { - if (executionElement != null) { - return collectGoalsInSubtree(executionElement.getProofNode()); - } else { - return ImmutableList.nil(); - } - } - - /** - * Collects all {@link Goal}s in the subtree of the given {@link Node}. - * - * @param node The {@link Node} to collect {@link Goal}s in. - * @return The found {@link Goal}s. - */ - public static ImmutableList collectGoalsInSubtree(Node node) { - Proof proof = node.proof(); - return proof.getSubtreeEnabledGoals(node); - } - - /** - * Searches for the given {@link Node} the parent node which also represents a symbolic - * execution tree node (checked via - * {@link #isSymbolicExecutionTreeNode(Node, RuleApp)}). - * - * @param node The {@link Node} to start search in. - * @param pio The {@link PosInOccurrence} of the modality. - * @return The parent {@link Node} of the given {@link Node} which is also a set node or - * {@code null} if no parent node was found. - */ - public static Node findMethodCallNode(Node node, - PosInOccurrence pio) { - if (node != null && pio != null) { - // Get current program method - JTerm term = TermBuilder.goBelowUpdates((JTerm) pio.subTerm()); - Services services = node.proof().getServices(); - MethodFrame mf = JavaTools.getInnermostMethodFrame(term.javaBlock(), services); - if (mf != null) { - // Find call node - Node parent = node.parent(); - Node result = null; - while (parent != null && result == null) { - SourceElement activeStatement = parent.getNodeInfo().getActiveStatement(); - if (activeStatement instanceof MethodBodyStatement - && ((MethodBodyStatement) activeStatement) - .getProgramMethod(services) == mf.getProgramMethod()) { - result = parent; - } else { - parent = parent.parent(); - } - } - return result; - } else { - return null; - } - } else { - return null; - } - } - - /** - * Searches for the given {@link Node} the parent node which also represents a symbolic - * execution tree node (checked via - * {@link #isSymbolicExecutionTreeNode(Node, RuleApp)}). - * - * @param node The {@link Node} to start search in. - * @return The parent {@link Node} of the given {@link Node} which is also a set node or - * {@code null} if no parent node was found. - */ - public static Node findParentSetNode(Node node) { - if (node != null) { - Node parent = node.parent(); - Node result = null; - while (parent != null && result == null) { - if (isSymbolicExecutionTreeNode(parent, parent.getAppliedRuleApp())) { - result = parent; - } else { - parent = parent.parent(); - } - } - return result; - } else { - return null; - } - } - - /** - * Computes the branch condition of the given {@link Node}. - * - * @param node The {@link Node} to compute its branch condition. - * @param simplify {@code true} simplify condition in a side proof, {@code false} do not - * simplify condition. - * @param improveReadability {@code true} improve readability, {@code false} do not improve - * readability. - * @return The computed branch condition. - * @throws ProofInputException Occurred Exception. - */ - public static JTerm computeBranchCondition(Node node, boolean simplify, - boolean improveReadability) throws ProofInputException { - // Get applied taclet on parent proof node - Node parent = node.parent(); - if (parent.getAppliedRuleApp() instanceof TacletApp) { - return computeTacletAppBranchCondition(parent, node, simplify, improveReadability); - } else if (parent.getAppliedRuleApp() instanceof ContractRuleApp) { - return computeContractRuleAppBranchCondition(parent, node, simplify, - improveReadability); - } else if (parent.getAppliedRuleApp() instanceof LoopInvariantBuiltInRuleApp) { - return computeLoopInvariantBuiltInRuleAppBranchCondition(parent, node, simplify, - improveReadability); - } else if (parent.getAppliedRuleApp() instanceof AbstractBlockContractBuiltInRuleApp) { - return computeBlockContractBuiltInRuleAppBranchCondition(parent, node, simplify, - improveReadability); - } else { - throw new ProofInputException("Unsupported RuleApp in branch computation \"" - + parent.getAppliedRuleApp() + "\"."); - } - } - - /** - *

- * Computes the branch condition of the given {@link Node} which was constructed by a - * {@link ContractRuleApp}. - *

- *

- * The branch conditions are: - *

    - *
  • Post: caller != null & exc_0 = null & (pre1 | .. | preN)
  • - *
  • ExcPost: caller != null & exc_0 != null & (excPre1 | ... | excPreM)
  • - *
  • Pre: caller != null & !(pre1 | ... | preN | excPre1 | ... | excPreM) because the branch - * is only open if all conditions are false
  • - *
  • NPE: caller = null
  • - *
- *

- *

- * Idea: - *

    - *
  • Last semisequent in antecedent contains contract
  • - *
  • Contract is defined as {@code exc_0 = null} and - * {@code pre -> post}/{@code excPre -> !exc_0 = null & signals} terms
  • - *
  • Find {@code exc_0 = null} Term
  • - *
  • List all implications
  • - *
  • Filter implications for post/exceptional post branch based on the negation of - * {@code exc_0 = null}
  • - *
  • Return disjunction of all filtered implication conditions or return true if no - * implications were found
  • - *
- *

- * - * @param parent The parent {@link Node} of the given one. - * @param node The {@link Node} to compute its branch condition. - * @param simplify {@code true} simplify condition in a side proof, {@code false} do not - * simplify condition. - * @param improveReadability {@code true} improve readability, {@code false} do not improve - * readability. - * @return The computed branch condition. - * @throws ProofInputException Occurred Exception. - */ - private static JTerm computeContractRuleAppBranchCondition(Node parent, Node node, - boolean simplify, boolean improveReadability) throws ProofInputException { - final Services services = node.proof().getServices(); - // Make sure that a computation is possible - if (!(parent.getAppliedRuleApp() instanceof ContractRuleApp)) { - throw new ProofInputException( - "Only ContractRuleApp is allowed in branch computation but rule \"" - + parent.getAppliedRuleApp() + "\" was found."); - } - int childIndex = CollectionUtil.indexOf(parent.childrenIterator(), node); - if (childIndex >= 3) { - throw new ProofInputException( - "Branch condition of null pointer check is not supported."); - } else if (childIndex == 2) { - // Assumption: Original formula in parent is replaced - PosInOccurrence pio = - parent.getAppliedRuleApp().posInOccurrence(); - JTerm workingTerm = posInOccurrenceInOtherNode(parent, pio, node); - if (workingTerm == null) { - throw new ProofInputException("Term not find in precondition branch, implementation" - + " of UseOperationContractRule might have changed!"); - } - workingTerm = TermBuilder.goBelowUpdates(workingTerm); - if (workingTerm.op() != Junctor.AND) { - throw new ProofInputException("And operation expected, implementation of " - + "UseOperationContractRule might have changed!"); - } - JTerm preconditions = workingTerm.sub(0); - return services.getTermBuilder().not(preconditions); - } else { - // Assumption: Pre -> Post & ExcPre -> Signals terms are added to last semisequent in - // antecedent. - // Find Term to extract implications from. - ContractPostOrExcPostExceptionVariableResult search = - searchContractPostOrExcPostExceptionVariable(node, node.proof().getServices()); - - List normalConditions = new LinkedList<>(); - List exceptinalConditions = new LinkedList<>(); - collectContractPreconditions(services, search, normalConditions, exceptinalConditions); - List relevantConditions = childIndex == 1 ? // Exceptional case - exceptinalConditions : normalConditions; - JTerm result; - if (relevantConditions.isEmpty()) { - result = services.getTermBuilder().tt(); - } else { - result = services.getTermBuilder().or(relevantConditions); - } - // Add exception equality - JTerm excEquality = search.getExceptionEquality(); - if (childIndex == 1) { // exception branch - excEquality = services.getTermBuilder().not(excEquality); - } - result = services.getTermBuilder().and(excEquality, result); - // Add caller not null to condition - if (parent.childrenCount() == 4) { - JTerm callerNotNullTerm = posInOccurrenceInOtherNode(parent, - parent.getAppliedRuleApp().posInOccurrence(), parent.child(3)); - callerNotNullTerm = TermBuilder.goBelowUpdates(callerNotNullTerm); - if (callerNotNullTerm.op() != Junctor.NOT) { - throw new ProofInputException("Not operation expected, implementation of " - + "UseOperationContractRule might have changed!"); - } - if (callerNotNullTerm.sub(0).op() != Equality.EQUALS) { - throw new ProofInputException("Equals operation expected, implementation of " - + "UseOperationContractRule might have changed!"); - } - if (!(callerNotNullTerm.sub(0).sub(0).op() instanceof ProgramVariable)) { - throw new ProofInputException("ProgramVariable expected, implementation of " - + "UseOperationContractRule might have changed!"); - } - if (!isNullSort(callerNotNullTerm.sub(0).sub(1).sort(), - parent.proof().getServices())) { - throw new ProofInputException("Null expected, implementation of " - + "UseOperationContractRule might have changed!"); - } - result = services.getTermBuilder().and(callerNotNullTerm, result); - } - // Create formula which contains the value interested in. - JTerm condition; - if (simplify) { - // New OneStepSimplifier is required because it has an internal state and the - // default instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(parent.proof(), true); - Sequent newSequent = - createSequentToProveWithNewSuccedent(parent, null, result, true); - condition = evaluateInSideProof(services, parent.proof(), sideProofEnv, newSequent, - RESULT_LABEL, "Operation contract branch condition computation on node " - + parent.serialNr() + " for branch " + node.serialNr() + ".", - StrategyProperties.SPLITTING_OFF); - } else { - // Add updates (in the simplify branch the updates are added during side proof - // construction) - condition = services.getTermBuilder() - .applyParallel(search.getUpdatesAndTerm().first, result); - } - if (improveReadability) { - condition = improveReadability(condition, services); - } - return condition; - } - } - - /** - * Collects the preconditions of an applied operation contract. - * - * @param services The {@link Services} to use. - * @param search The {@link ContractPostOrExcPostExceptionVariableResult}. - * @param normalConditions The {@link List} with the normal case conditions to fill. - * @param exceptinalConditions The {@link List} with the exceptional case conditions to fill. - * @throws ProofInputException Occurred Exception. - */ - private static void collectContractPreconditions(Services services, - ContractPostOrExcPostExceptionVariableResult search, List normalConditions, - List exceptinalConditions) throws ProofInputException { - // Treat general conditions - if (search.getWorkingTerm().op() != Junctor.AND) { - throw new ProofInputException("And operation expected, implementation of " - + "UseOperationContractRule might have changed!"); - } - JTerm specificationCasesTerm = search.getWorkingTerm().sub(1); - JTerm excDefinition = search.getExceptionDefinition(); - JTerm normalExcDefinition; - JTerm exceptionalExcDefinition; - if (excDefinition.op() == Junctor.NOT) { - exceptionalExcDefinition = excDefinition; - normalExcDefinition = search.getExceptionEquality(); - } else { - normalExcDefinition = excDefinition; - exceptionalExcDefinition = services.getTermBuilder().not(excDefinition); - } - collectSpecifcationCasesPreconditions(normalExcDefinition, exceptionalExcDefinition, - specificationCasesTerm, normalConditions, exceptinalConditions); - } - - /** - * Collects recursively the preconditions of specification cases. - * - * @param normalExcDefinition The normal exception equality. - * @param exceptionalExcDefinition The exceptional equality. - * @param term The current {@link JTerm}. - * @param normalConditions The {@link List} with the normal case conditions to fill. - * @param exceptinalConditions The {@link List} with the exceptional case conditions to fill. - * @throws ProofInputException Occurred Exception. - */ - private static void collectSpecifcationCasesPreconditions(JTerm normalExcDefinition, - JTerm exceptionalExcDefinition, JTerm term, List normalConditions, - List exceptinalConditions) throws ProofInputException { - if (term.op() == Junctor.AND) { - JTerm lastChild = term.sub(term.arity() - 1); - if (lastChild.equalsModProperty(normalExcDefinition, IRRELEVANT_TERM_LABELS_PROPERTY) - || lastChild.equalsModProperty(exceptionalExcDefinition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - // Nothing to do, condition is just true - } else { - JTerm firstChild = term.sub(0); - if (firstChild - .equalsModProperty(normalExcDefinition, IRRELEVANT_TERM_LABELS_PROPERTY) - || firstChild.equalsModProperty(exceptionalExcDefinition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - // Nothing to do, condition is just true - } else { - for (int i = 0; i < term.arity(); i++) { - collectSpecifcationCasesPreconditions(normalExcDefinition, - exceptionalExcDefinition, term.sub(i), normalConditions, - exceptinalConditions); - } - } - } - } else if (term.op() == Junctor.IMP) { - JTerm leftTerm = term.sub(0); - if (leftTerm.equalsModProperty(normalExcDefinition, IRRELEVANT_TERM_LABELS_PROPERTY) - || leftTerm.equalsModProperty(exceptionalExcDefinition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - // Nothing to do, condition is just true - } else { - JTerm rightTerm = term.sub(1); - // Deal with heavy weight specification cases - if (rightTerm.op() == Junctor.AND && rightTerm.sub(0).op() == Junctor.IMP - && rightTerm.sub(0).sub(0) - .equalsModProperty(normalExcDefinition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - normalConditions.add(leftTerm); - } else if (rightTerm.op() == Junctor.AND && rightTerm.sub(1).op() == Junctor.IMP - && rightTerm.sub(1).sub(0) - .equalsModProperty(exceptionalExcDefinition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - exceptinalConditions.add(leftTerm); - } - // Deal with light weight specification cases - else if (rightTerm.op() == Junctor.IMP - && rightTerm.sub(0).equalsModProperty(normalExcDefinition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - normalConditions.add(leftTerm); - } else if (rightTerm.op() == Junctor.IMP && rightTerm.sub(0) - .equalsModProperty(exceptionalExcDefinition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - exceptinalConditions.add(leftTerm); - } else { - JTerm excCondition = rightTerm; - // Check if right child is exception definition - if (excCondition.op() == Junctor.AND) { - excCondition = excCondition.sub(excCondition.arity() - 1); - } - if (excCondition.equalsModProperty(normalExcDefinition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - normalConditions.add(leftTerm); - } else if (excCondition - .equalsModProperty(exceptionalExcDefinition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - exceptinalConditions.add(leftTerm); - } else { - // Check if left child is exception definition - if (rightTerm.op() == Junctor.AND) { - excCondition = rightTerm.sub(0); - if (excCondition.equalsModProperty(normalExcDefinition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - normalConditions.add(leftTerm); - } else if (excCondition - .equalsModProperty(exceptionalExcDefinition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - exceptinalConditions.add(leftTerm); - } else { - throw new ProofInputException("Exeptional condition expected, " - + "implementation of UseOperationContractRule might have " - + "changed!"); - } - } else { - throw new ProofInputException("Exeptional condition expected, " - + "implementation of UseOperationContractRule might have changed!"); - } - } - } - } - } - } - - /** - * Searches the used exception variable in the post or exceptional post branch of an applied - * {@link ContractRuleApp} on the parent of the given {@link Node}. - * - * @param node The {@link Node} which is the post or exceptional post branch of an applied - * {@link ContractRuleApp}. - * @param services The {@link Services} to use. - * @return The result. - * @throws ProofInputException Occurred exception if something is not as expected. - */ - public static ContractPostOrExcPostExceptionVariableResult searchContractPostOrExcPostExceptionVariable( - Node node, Services services) throws ProofInputException { - Semisequent antecedent = node.sequent().antecedent(); - SequentFormula sf = antecedent.get(antecedent.size() - 1); - JTerm workingTerm = (JTerm) sf.formula(); - Pair, JTerm> updatesAndTerm = TermBuilder.goBelowUpdates2(workingTerm); - workingTerm = updatesAndTerm.second; - if (workingTerm.op() != Junctor.AND) { - throw new ProofInputException("And operation expected, implementation of " - + "UseOperationContractRule might have changed!"); - } - workingTerm = workingTerm.sub(1); // First part is heap equality, use second part which is - // the combination of all normal and exceptional - // preconditon postcondition implications - workingTerm = TermBuilder.goBelowUpdates(workingTerm); - // Find Term exc_n = null which is added (maybe negated) to all exceptional preconditions - JTerm exceptionDefinition = searchExceptionDefinition(workingTerm, services); - if (exceptionDefinition == null) { - throw new ProofInputException("Exception definition not found, implementation of " - + "UseOperationContractRule might have changed!"); - } - // Make sure that exception equality was found - JTerm exceptionEquality = - exceptionDefinition.op() == Junctor.NOT ? exceptionDefinition.sub(0) - : exceptionDefinition; - return new ContractPostOrExcPostExceptionVariableResult(workingTerm, updatesAndTerm, - exceptionDefinition, exceptionEquality); - } - - /** - * Searches the exception definition. - * - * @param term The {@link JTerm} to start search in. - * @param services the {@link Services} to use. - * @return The found exception definition or {@code null} if not available. - */ - private static JTerm searchExceptionDefinition(JTerm term, Services services) { - if (term.op() == Equality.EQUALS && term.sub(0).op() instanceof LocationVariable - && term.sub(0).toString().startsWith("exc_") - && isNullSort(term.sub(1).sort(), services) - && services.getJavaInfo().isSubtype( - services.getJavaInfo().getKeYJavaType(term.sub(0).sort()), - services.getJavaInfo().getKeYJavaType("java.lang.Throwable"))) { - return term; - } else { - JTerm result = null; - int i = term.arity() - 1; - while (result == null && i >= 0) { - result = searchExceptionDefinition(term.sub(i), services); - i--; - } - return result; - } - } - - /** - * The result of - * {@link SymbolicExecutionUtil#searchContractPostOrExcPostExceptionVariable(Node, Services)}. - * - * @author Martin Hentschel - */ - public static class ContractPostOrExcPostExceptionVariableResult { - /** - * The working {@link JTerm}. - */ - private final JTerm workingTerm; - - /** - * The updates. - */ - private final Pair, JTerm> updatesAndTerm; - - /** - * The exception definition. - */ - private final JTerm exceptionDefinition; - - /** - * The equality which contains the equality. - */ - private final JTerm exceptionEquality; - - /** - * Constructor. - * - * @param workingTerm The working {@link JTerm}. - * @param updatesAndTerm The updates. - * @param exceptionDefinition The exception definition. - * @param exceptionEquality The equality which contains the equality. - */ - public ContractPostOrExcPostExceptionVariableResult(JTerm workingTerm, - Pair, JTerm> updatesAndTerm, JTerm exceptionDefinition, - JTerm exceptionEquality) { - this.workingTerm = workingTerm; - this.updatesAndTerm = updatesAndTerm; - this.exceptionDefinition = exceptionDefinition; - this.exceptionEquality = exceptionEquality; - } - - /** - * Returns the working {@link JTerm}. - * - * @return The working {@link JTerm}. - */ - public JTerm getWorkingTerm() { - return workingTerm; - } - - /** - * Returns the updates. - * - * @return The updates. - */ - public Pair, JTerm> getUpdatesAndTerm() { - return updatesAndTerm; - } - - /** - * Returns the exception definition. - * - * @return The exception definition. - */ - public JTerm getExceptionDefinition() { - return exceptionDefinition; - } - - /** - * Returns the equality which contains the equality. - * - * @return The equality which contains the equality. - */ - public JTerm getExceptionEquality() { - return exceptionEquality; - } - } - - /** - *

- * Computes the branch condition of the given {@link Node} which was constructed by a - * {@link LoopInvariantBuiltInRuleApp}. - *

- *

- * The branch conditions are: - *

    - *
  • Preserves Branch: Invariant + LoopCondition
  • - *
  • Use Branch: Invariant + !LoopCondition
  • - *
- *

- * - * @param parent The parent {@link Node} of the given one. - * @param node The {@link Node} to compute its branch condition. - * @param simplify {@code true} simplify condition in a side proof, {@code false} do not - * simplify condition. - * @param improveReadability {@code true} improve readability, {@code false} do not improve - * readability. - * @return The computed branch condition. - * @throws ProofInputException Occurred Exception. - */ - private static JTerm computeLoopInvariantBuiltInRuleAppBranchCondition(Node parent, Node node, - boolean simplify, boolean improveReadability) throws ProofInputException { - // Make sure that a computation is possible - if (!(parent.getAppliedRuleApp() instanceof LoopInvariantBuiltInRuleApp)) { - throw new ProofInputException( - "Only LoopInvariantBuiltInRuleApp is allowed in branch computation but rule \"" - + parent.getAppliedRuleApp() + "\" was found."); - } - // Make sure that branch is supported - int childIndex = CollectionUtil.indexOf(parent.childrenIterator(), node); - if (childIndex == 1 || childIndex == 2) { // Body Preserves Invariant or Use Case - LoopInvariantBuiltInRuleApp app = - (LoopInvariantBuiltInRuleApp) parent.getAppliedRuleApp(); - // Compute invariant (last antecedent formula of the use branch) - Services services = parent.proof().getServices(); - Node useNode = parent.child(2); - Semisequent antecedent = useNode.sequent().antecedent(); - JTerm invTerm = (JTerm) antecedent.get(antecedent.size() - 1).formula(); - // Extract loop condition from child - JTerm loopConditionModalityTerm = - posInOccurrenceInOtherNode(parent, app.posInOccurrence(), node); - Pair, JTerm> pair = - TermBuilder.goBelowUpdates2(loopConditionModalityTerm); - loopConditionModalityTerm = pair.second; - if (childIndex == 1) { // Body Preserves Invariant - if (loopConditionModalityTerm.op() != Junctor.IMP) { - throw new ProofInputException( - "Implementation of WhileInvariantRule has changed."); - } - loopConditionModalityTerm = loopConditionModalityTerm.sub(0); - } else { // Use Case - if (!(loopConditionModalityTerm.op() instanceof Modality mod)) { - throw new ProofInputException( - "Expected Box modality but is " + loopConditionModalityTerm); - } else if (mod.kind() != JModality.JavaModalityKind.BOX) { - throw new ProofInputException( - "Implementation of WhileInvariantRule has changed."); - } - JTerm sub = loopConditionModalityTerm.sub(0); - if (sub.op() != Junctor.IMP) { - throw new ProofInputException( - "Implementation of WhileInvariantRule has changed."); - } - loopConditionModalityTerm = services.getTermBuilder() - .box(loopConditionModalityTerm.javaBlock(), sub.sub(0)); - } - if (!(loopConditionModalityTerm.op() instanceof Modality mod) || - mod.kind() != JModality.JavaModalityKind.BOX - || loopConditionModalityTerm.sub(0).op() != Equality.EQUALS - || !(loopConditionModalityTerm.sub(0).sub(0).op() instanceof LocationVariable) - || loopConditionModalityTerm.sub(0).sub(1) - .op() != (childIndex == 1 ? services.getTermBuilder().TRUE().op() - : services.getTermBuilder().FALSE().op())) { - throw new ProofInputException("Implementation of WhileInvariantRule has changed."); - } - // Create formula which contains the value interested in. - invTerm = TermBuilder.goBelowUpdates(invTerm); - JTerm loopCondAndInv = - services.getTermBuilder().and(loopConditionModalityTerm.sub(0), invTerm); - JTerm newTerm = loopCondAndInv; - JTerm modalityTerm = childIndex == 1 - ? services.getTermBuilder().box(loopConditionModalityTerm.javaBlock(), newTerm) - : services.getTermBuilder().dia(loopConditionModalityTerm.javaBlock(), newTerm); - JTerm condition; - if (simplify) { - // New OneStepSimplifier is required because it has an internal state and the - // default instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(parent.proof(), true); - Sequent newSequent = createSequentToProveWithNewSuccedent(parent, null, - modalityTerm, pair.first, true); - condition = evaluateInSideProof(services, parent.proof(), sideProofEnv, newSequent, - RESULT_LABEL, "Loop invariant branch condition computation on node " - + parent.serialNr() + " for branch " + node.serialNr() + ".", - StrategyProperties.SPLITTING_OFF); - } else { - condition = services.getTermBuilder().applySequential(pair.first, modalityTerm); - } - if (improveReadability) { - condition = improveReadability(condition, services); - } - return condition; - } else { - throw new ProofInputException( - "Branch condition of initially valid check is not supported."); - } - } - - /** - *

- * Computes the branch condition of the given {@link Node} which was constructed by an - * {@link AbstractBlockContractBuiltInRuleApp}. - *

- *

- * The branch conditions are: - *

    - *
  • Validity: true
  • - *
  • Usage: Postcondition (added antecedent top level formula)
  • - *
- *

- * - * @param parent The parent {@link Node} of the given one. - * @param node The {@link Node} to compute its branch condition. - * @param simplify {@code true} simplify condition in a side proof, {@code false} do not - * simplify condition. - * @param improveReadability {@code true} improve readability, {@code false} do not improve - * readability. - * @return The computed branch condition. - * @throws ProofInputException Occurred Exception. - */ - private static JTerm computeBlockContractBuiltInRuleAppBranchCondition(Node parent, Node node, - boolean simplify, boolean improveReadability) throws ProofInputException { - // Make sure that a computation is possible - if (!(parent.getAppliedRuleApp() instanceof AbstractBlockContractBuiltInRuleApp)) { - throw new ProofInputException("Only AbstractBlockContractBuiltInRuleApp is allowed in " - + "branch computation but rule \"" + parent.getAppliedRuleApp() + "\" was found."); - } - - RuleApp app = parent.getAppliedRuleApp(); - - // Make sure that branch is supported - int childIndex = CollectionUtil.indexOf(parent.childrenIterator(), node); - if (app instanceof BlockContractInternalBuiltInRuleApp && childIndex == 0) { - // Validity branch - return parent.proof().getServices().getTermBuilder().tt(); - } else if ((app instanceof BlockContractInternalBuiltInRuleApp && childIndex == 2) - || (app instanceof BlockContractExternalBuiltInRuleApp && childIndex == 1)) { - // Usage branch - // Compute invariant (last antecedent formula of the use branch) - Services services = parent.proof().getServices(); - Semisequent antecedent = node.sequent().antecedent(); - JTerm condition = (JTerm) antecedent.get(antecedent.size() - 1).formula(); - if (simplify) { - // New OneStepSimplifier is required because it has an internal state and the - // default instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(parent.proof(), true); - Sequent newSequent = createSequentToProveWithNewSuccedent(parent, (JTerm) null, - condition, null, true); - condition = evaluateInSideProof(services, parent.proof(), sideProofEnv, newSequent, - RESULT_LABEL, "Block contract branch condition computation on node " - + parent.serialNr() + " for branch " + node.serialNr() + ".", - StrategyProperties.SPLITTING_OFF); - } - if (improveReadability) { - condition = improveReadability(condition, services); - } - return condition; - } else { - throw new ProofInputException( - "Branch condition of precondition check is not supported."); - } - } - - /** - * Returns the {@link JTerm} described by the given {@link PosInOccurrence} of the original - * {@link Node} in the {@link Node} to apply on. - * - * @param original The original {@link Node} on which the given {@link PosInOccurrence} works. - * @param pio The given {@link PosInOccurrence}. - * @param toApplyOn The new {@link Node} to apply the {@link PosInOccurrence} on. - * @return The {@link JTerm} in the other {@link Node} described by the {@link PosInOccurrence} - * or {@code null} if not available. - */ - public static JTerm posInOccurrenceInOtherNode(Node original, - PosInOccurrence pio, - Node toApplyOn) { - PosInOccurrence appliedPIO = - posInOccurrenceToOtherSequent(original, pio, toApplyOn); - if (appliedPIO != null) { - return (JTerm) appliedPIO.subTerm(); - } else { - return null; - } - } - - /** - * Returns the {@link JTerm} described by the given {@link PosInOccurrence} of the original - * {@link Sequent} in the {@link Sequent} to apply on. - * - * @param original The original {@link Sequent} on which the given {@link PosInOccurrence} - * works. - * @param pio The given {@link PosInOccurrence}. - * @param toApplyOn The new {@link Sequent} to apply the {@link PosInOccurrence} on. - * @return The {@link JTerm} in the other {@link Sequent} described by the - * {@link PosInOccurrence} or {@code null} if not available. - */ - public static JTerm posInOccurrenceInOtherNode(Sequent original, - PosInOccurrence pio, - Sequent toApplyOn) { - PosInOccurrence appliedPIO = - posInOccurrenceToOtherSequent(original, pio, toApplyOn); - if (appliedPIO != null) { - return (JTerm) appliedPIO.subTerm(); - } else { - return null; - } - } - - /** - * Returns the {@link PosInOccurrence} described by the given {@link PosInOccurrence} of the - * original {@link Node} in the {@link Node} to apply too. - * - * @param original The original {@link Node} on which the given {@link PosInOccurrence} works. - * @param pio The given {@link PosInOccurrence}. - * @param toApplyTo The new {@link Node} to apply the {@link PosInOccurrence} to. - * @return The {@link PosInOccurrence} in the other {@link Node} described by the - * {@link PosInOccurrence} or {@code null} if not available. - */ - public static PosInOccurrence posInOccurrenceToOtherSequent( - Node original, PosInOccurrence pio, - Node toApplyTo) { - if (original != null && toApplyTo != null) { - return posInOccurrenceToOtherSequent(original.sequent(), pio, toApplyTo.sequent()); - } else { - return null; - } - } - - /** - * Returns the {@link PosInOccurrence} described by the given {@link PosInOccurrence} of the - * original {@link Sequent} in the {@link Sequent} to apply too. - * - * @param original The original {@link Sequent} on which the given {@link PosInOccurrence} - * works. - * @param pio The given {@link PosInOccurrence}. - * @param toApplyTo The new {@link Sequent} to apply the {@link PosInOccurrence} to. - * @return The {@link PosInOccurrence} in the other {@link Sequent} described by the - * {@link PosInOccurrence} or {@code null} if not available. - */ - public static PosInOccurrence posInOccurrenceToOtherSequent( - Sequent original, - PosInOccurrence pio, Sequent toApplyTo) { - if (original != null && pio != null && toApplyTo != null) { - // Search index of formula in original sequent - SequentFormula originalSF = pio.sequentFormula(); - boolean antecendet = pio.isInAntec(); - int index; - if (antecendet) { - index = original.antecedent().indexOf(originalSF); - } else { - index = original.succedent().indexOf(originalSF); - } - if (index >= 0) { - final SequentFormula toApplyToSF = - (antecendet ? toApplyTo.antecedent() : toApplyTo.succedent()).get(index); - return new PosInOccurrence(toApplyToSF, pio.posInTerm(), antecendet); - } else { - return null; - } - } else { - return null; - } - } - - /** - * Computes the branch condition of the given {@link Node} which was constructed by a - * {@link TacletApp}. - * - * @param parent The parent {@link Node} of the given one. - * @param node The {@link Node} to compute its branch condition. - * @param simplify {@code true} simplify condition in a side proof, {@code false} do not - * simplify condition. - * @param improveReadability {@code true} improve readability, {@code false} do not improve - * readability. - * @return The computed branch condition. - * @throws ProofInputException Occurred Exception. - */ - private static JTerm computeTacletAppBranchCondition(Node parent, Node node, boolean simplify, - boolean improveReadability) throws ProofInputException { - if (!(parent.getAppliedRuleApp() instanceof TacletApp app)) { - throw new ProofInputException( - "Only TacletApp is allowed in branch computation but rule \"" - + parent.getAppliedRuleApp() + "\" was found."); - } - Services services = node.proof().getServices(); - // List new sequent formulas in the child node. - ImmutableList newAntecedents = - listNewSemisequentTerms(parent.sequent().antecedent(), node.sequent().antecedent()); - ImmutableList newSuccedents = - listNewSemisequentTerms(parent.sequent().succedent(), node.sequent().succedent()); - // Find goal template which has created the represented proof node - int childIndex = CollectionUtil.indexOf(parent.childrenIterator(), node); - TacletGoalTemplate goalTemplate; - if (app.taclet().goalTemplates().size() + 1 == parent.childrenCount()) { - if (childIndex == 0) { - goalTemplate = null; - } else { - goalTemplate = app.taclet().goalTemplates() - .get(app.taclet().goalTemplates().size() - childIndex); - } - } else { - goalTemplate = app.taclet().goalTemplates() - .get(app.taclet().goalTemplates().size() - 1 - childIndex); - } - // Instantiate replace object if required - if (goalTemplate != null) { - if (goalTemplate.replaceWithExpressionAsObject() instanceof Sequent) { - // Remove replace part of symbolic execution rules - if (NodeInfo.isSymbolicExecution(app.taclet())) { - Sequent sequent = (Sequent) goalTemplate.replaceWithExpressionAsObject(); - for (SequentFormula sf : sequent.antecedent()) { - JTerm replaceTerm = instantiateTerm(node, sf.formula(), app, services); - replaceTerm = services.getTermBuilder().applyUpdatePairsSequential( - app.instantiations().getUpdateContext(), replaceTerm); - JTerm originalTerm = findReplacement(node.sequent().antecedent(), - app.posInOccurrence(), replaceTerm); - assert originalTerm != null; - newAntecedents = newAntecedents.removeFirst(originalTerm); - } - for (SequentFormula sf : sequent.succedent()) { - JTerm replaceTerm = instantiateTerm(node, sf.formula(), app, services); - replaceTerm = services.getTermBuilder().applyUpdatePairsSequential( - app.instantiations().getUpdateContext(), replaceTerm); - JTerm originalTerm = findReplacement(node.sequent().succedent(), - app.posInOccurrence(), replaceTerm); - assert originalTerm != null; - newSuccedents = newSuccedents.removeFirst(originalTerm); - } - } - } else if (goalTemplate.replaceWithExpressionAsObject() instanceof JTerm replaceTerm) { - replaceTerm = instantiateTerm(node, replaceTerm, app, services); - JTerm originalTerm = - findReplacement(app.posInOccurrence().isInAntec() ? node.sequent().antecedent() - : node.sequent().succedent(), - app.posInOccurrence(), replaceTerm); - assert originalTerm != null; - if (app.posInOccurrence().isInAntec()) { - newAntecedents = newAntecedents.removeFirst(originalTerm); - } else { - newSuccedents = newSuccedents.removeFirst(originalTerm); - } - if (!NodeInfo.isSymbolicExecution(app.taclet())) { - // Make sure that an PosTacletApp was applied - if (!(app instanceof PosTacletApp)) { - throw new ProofInputException("Only PosTacletApp are allowed with a replace" - + " term in branch computation but rule \"" + app + "\" was found."); - } - // Create new lists - ImmutableList tempAntecedents = ImmutableList.nil(); - ImmutableList tempSuccedents = ImmutableList.nil(); - // Apply updates on antecedents and add result to new antecedents list - for (JTerm a : newAntecedents) { - tempAntecedents = tempAntecedents - .append(services.getTermBuilder().applyUpdatePairsSequential( - app.instantiations().getUpdateContext(), a)); - } - // Apply updates on succedents and add result to new succedents list - for (JTerm suc : newSuccedents) { - tempSuccedents = tempSuccedents - .append(services.getTermBuilder().applyUpdatePairsSequential( - app.instantiations().getUpdateContext(), suc)); - } - // Add additional equivalenz term to antecedent with the replace object which - // must be equal to the find term - replaceTerm = followPosInOccurrence(app.posInOccurrence(), originalTerm); - replaceTerm = services.getTermBuilder().equals(replaceTerm, - (JTerm) app.posInOccurrence().subTerm()); - replaceTerm = services.getTermBuilder().applyUpdatePairsSequential( - app.instantiations().getUpdateContext(), replaceTerm); - if (!tempAntecedents.contains(replaceTerm)) { - tempAntecedents = tempAntecedents.append(replaceTerm); - } - // Replace old with new lists - newAntecedents = tempAntecedents; - newSuccedents = tempSuccedents; - } - } else if (goalTemplate.replaceWithExpressionAsObject() != null) { - throw new ProofInputException("Expected replacement as Sequent or Term during " - + "branch condition computation but is \"" - + goalTemplate.replaceWithExpressionAsObject() + "\"."); - } - } - // Compute branch condition - JTerm newLeft = services.getTermBuilder().and(newAntecedents); - JTerm newRight = services.getTermBuilder().or(newSuccedents); - JTerm newLeftAndRight = - services.getTermBuilder().and(newLeft, services.getTermBuilder().not(newRight)); - // Simplify condition if required - JTerm condition; - if (simplify) { - // Create formula which contains the value interested in. - // New OneStepSimplifier is required because it has an internal state and the default - // instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(parent.proof(), true); - Sequent newSequent = createSequentToProveWithNewSuccedent(parent, null, null, - newLeftAndRight, true); - condition = evaluateInSideProof(services, parent.proof(), sideProofEnv, newSequent, - RESULT_LABEL, "Taclet branch condition computation on node " + parent.serialNr() - + " for branch " + node.serialNr() + ".", - StrategyProperties.SPLITTING_OFF); - } else { - condition = newLeftAndRight; - } - if (improveReadability) { - condition = improveReadability(condition, services); - } - return condition; - } - - /** - * Lists the {@link JTerm}s of all new {@link SequentFormula} in the child {@link Semisequent}. - * - * @param parent The parent {@link Semisequent}. - * @param child The child {@link Semisequent}. - * @return An {@link ImmutableList} with all new {@link JTerm}s. - */ - private static ImmutableList listNewSemisequentTerms(Semisequent parent, - Semisequent child) { - Set parentSFs = new HashSet<>(); - for (final SequentFormula sf : parent) { - parentSFs.add(sf); - } - ImmutableList result = ImmutableList.nil(); - for (final SequentFormula sf : child) { - if (!parentSFs.contains(sf)) { - result = result.append((JTerm) sf.formula()); - } - } - return result; - } - - /** - * Searches the by {@link Rule} application instantiated replace {@link JTerm} which is equal - * modulo labels to the given replace {@link JTerm}. - * - * @param semisequent The available candidates created by {@link Rule} application. - * @param posInOccurrence The {@link PosInOccurrence} on which the rule was applied. - * @param replaceTerm The {@link JTerm} to find. - * @return The found {@link JTerm} or {@code null} if not available. - */ - private static JTerm findReplacement(Semisequent semisequent, - final PosInOccurrence posInOccurrence, - final JTerm replaceTerm) { - SequentFormula sf = CollectionUtil.search(semisequent, - element -> checkReplaceTerm(element.formula(), posInOccurrence, replaceTerm)); - return sf != null ? (JTerm) sf.formula() : null; - } - - /** - * Checks if the given replace {@link JTerm} is equal module labels to the {@link JTerm} to - * check. - * - * @param toCheck The {@link JTerm} to check. - * @param posInOccurrence The {@link PosInOccurrence} of the {@link Rule} application. - * @param replaceTerm The {@link JTerm} to compare with. - * @return {@code true} equal modulo labels, {@code false} not equal at all. - */ - private static boolean checkReplaceTerm(Term toCheck, - PosInOccurrence posInOccurrence, - Term replaceTerm) { - var termAtPio = followPosInOccurrence(posInOccurrence, toCheck); - if (termAtPio != null) { - return RENAMING_TERM_PROPERTY.equalsModThisProperty(termAtPio, replaceTerm); - } else { - return false; - } - } - - /** - * Returns the sub {@link JTerm} at the given {@link PosInOccurrence} but on the given - * {@link JTerm} instead of the one contained in the {@link PosInOccurrence}. - * - * @param posInOccurrence The {@link PosInOccurrence} which defines the sub term position. - * @param term The {@link JTerm} to work with. - * @return The found sub {@link JTerm} or {@code null} if the {@link PosInOccurrence} is not - * compatible. - */ - public static T followPosInOccurrence( - PosInOccurrence posInOccurrence, T term) { - boolean matches = true; - org.key_project.logic.IntIterator iter = posInOccurrence.posInTerm().iterator(); - while (matches && iter.hasNext()) { - int index = iter.next(); - if (index < term.arity()) { - term = (T) term.sub(index); - } else { - matches = false; - } - } - return matches ? term : null; - } - - /** - * Instantiates the given {@link JTerm} of the applied {@link TacletApp}. - * - * @param node The current {@link Node}. - * @param term The {@link JTerm} to instantiate. - * @param tacletApp The {@link TacletApp} to consider. - * @param services The {@link Services} to use. - * @return The instantiated {@link JTerm} or {@code null} if no {@link JTerm} was given. - */ - public static JTerm instantiateTerm(Node node, Term term, - TacletApp tacletApp, - Services services) { - if (term != null) { - SyntacticalReplaceVisitor visitor = new SyntacticalReplaceVisitor(new TermLabelState(), - null, tacletApp.posInOccurrence(), services, tacletApp.taclet(), tacletApp, true); - term.execPostOrder(visitor); - return visitor.getTerm(); - } else { - return null; - } - } - - /** - * Starts the side proof and evaluates the {@link Sequent} to prove into a single {@link JTerm}. - * - * @param services The {@link Services} to use. - * @param proof The {@link Proof} from on which the side proof si performed. - * @param sequentToProve The {@link Sequent} to prove in a side proof. - * @param label The {@link TermLabel} which is used to compute the result. - * @param description The side proof description. - * @param splittingOption The splitting options to use. - * @return The result {@link JTerm}. - * @throws ProofInputException Occurred Exception. - */ - private static JTerm evaluateInSideProof(Services services, Proof proof, - ProofEnvironment sideProofEnvironment, Sequent sequentToProve, TermLabel label, - String description, String splittingOption) throws ProofInputException { - List> resultValuesAndConditions = - SymbolicExecutionSideProofUtil.computeResults(services, proof, sideProofEnvironment, - sequentToProve, label, description, StrategyProperties.METHOD_NONE, // Stop at - // methods to - // avoid endless - // executions - // and scenarios - // in which a - // precondition - // or null - // pointer check - // can't be - // shown - StrategyProperties.LOOP_NONE, // Stop at loops to avoid endless executions and - // scenarios in which the invariant can't be shown to - // be initially valid or preserved. - StrategyProperties.QUERY_OFF, // Stop at queries to to avoid endless executions and - // scenarios in which a precondition or null pointer - // check can't be shown - splittingOption, false); - ImmutableList goalCondtions = ImmutableList.nil(); - for (Pair pair : resultValuesAndConditions) { - JTerm goalCondition = pair.first; - goalCondition = replaceSkolemConstants(pair.second.sequent(), - goalCondition, services); - goalCondition = removeLabelRecursive(services.getTermFactory(), goalCondition, label); - goalCondtions = goalCondtions.append(goalCondition); - } - return services.getTermBuilder().and(goalCondtions); - } - - /** - * Returns the default choice value. Attention: This method returns {@code null} if it - * is called before a proof is instantiated the first time. It can be checked via - * {@link #isChoiceSettingInitialised()}. - * - * @param key The choice key. - * @return The choice value. - */ - public static String getChoiceSetting(String key) { - Map settings = - ProofSettings.DEFAULT_SETTINGS.getChoiceSettings().getDefaultChoices(); - return settings.get(key); - } - - /** - * Sets the default choice value. Attention: Settings should not be changed before the - * first proof is instantiated in KeY. Otherwise the default settings are not loaded. If default - * settings are defined can be checked via {@link #isChoiceSettingInitialised()}. - * - * @param key The choice key to modify. - * @param value The new choice value to set. - */ - public static void setChoiceSetting(String key, String value) { - var settings = - ProofSettings.DEFAULT_SETTINGS.getChoiceSettings().getDefaultChoices(); - var clone = new LinkedHashMap<>(settings); - clone.put(key, value); - ProofSettings.DEFAULT_SETTINGS.getChoiceSettings().setDefaultChoices(clone); - } - - /** - * Checks if the given {@link JTerm} is null in the {@link Sequent} of the given {@link Node}. - * - * @param node The {@link Node} which provides the original {@link Sequent} - * @param additionalAntecedent An additional antecedent. - * @param newSuccedent The {@link JTerm} to check. - * @return {@code true} {@link JTerm} was evaluated to null, {@code false} {@link JTerm} was not - * evaluated to null. - * @throws ProofInputException Occurred Exception - */ - public static boolean isNull(Node node, JTerm additionalAntecedent, JTerm newSuccedent) - throws ProofInputException { - return checkNull(node, additionalAntecedent, newSuccedent, true); - } - - /** - * Checks if the given {@link JTerm} is not null in the {@link Sequent} of the given - * {@link Node}. - * - * @param node The {@link Node} which provides the original {@link Sequent} - * @param additionalAntecedent An additional antecedent. - * @param newSuccedent The {@link JTerm} to check. - * @return {@code true} {@link JTerm} was evaluated to not null, {@code false} {@link JTerm} was - * not evaluated to not null. - * @throws ProofInputException Occurred Exception - */ - public static boolean isNotNull(Node node, JTerm additionalAntecedent, JTerm newSuccedent) - throws ProofInputException { - return checkNull(node, additionalAntecedent, newSuccedent, false); - } - - /** - * Checks if the given {@link JTerm} is null or not in the {@link Sequent} of the given - * {@link Node}. - * - * @param node The {@link Node} which provides the original {@link Sequent} - * @param additionalAntecedent An additional antecedent. - * @param newSuccedent The {@link JTerm} to check. - * @param nullExpected {@code true} expect that {@link JTerm} is null, {@code false} expect that - * term is not null. - * @return {@code true} term is null value matches the expected nullExpected value, - * {@code false} otherwise. - * @throws ProofInputException Occurred Exception - */ - private static boolean checkNull(Node node, JTerm additionalAntecedent, JTerm newSuccedent, - boolean nullExpected) throws ProofInputException { - // Make sure that correct parameters are given - assert node != null; - assert newSuccedent != null; - // Create Sequent to prove - // New OneStepSimplifier is required because it has an internal state and the default - // instance can't be used parallel. - final ProofEnvironment sideProofEnv = SymbolicExecutionSideProofUtil - .cloneProofEnvironmentWithOwnOneStepSimplifier(node.proof(), true); - final TermBuilder tb = sideProofEnv.getServicesForEnvironment().getTermBuilder(); - JTerm isNull = tb.equals(newSuccedent, tb.NULL()); - JTerm isNotNull = tb.not(isNull); - Sequent sequentToProve = createSequentToProveWithNewSuccedent(node, additionalAntecedent, - nullExpected ? isNull : isNotNull, false); - // Execute proof in the current thread - ApplyStrategyInfo info = - SymbolicExecutionSideProofUtil.startSideProof(node.proof(), - sideProofEnv, sequentToProve, StrategyProperties.METHOD_CONTRACT, - StrategyProperties.LOOP_INVARIANT, StrategyProperties.QUERY_ON, - StrategyProperties.SPLITTING_NORMAL); - try { - return !info.getProof().openEnabledGoals().isEmpty(); - } finally { - SymbolicExecutionSideProofUtil - .disposeOrStore("Null check on node " + node.serialNr() + ".", info); - } - } - - /** - * Creates a new {@link Sequent} which is a modification from the {@link Sequent} of the given - * {@link Node} which contains the same information but a different succedent. - * - * @param node The {@link Node} which provides the original {@link Sequent}. - * @param newSuccedent The new succedent. - * @return The created {@link Sequent}. - */ - public static Sequent createSequentToProveWithNewSuccedent(Node node, - PosInOccurrence pio, - JTerm newSuccedent) { - return createSequentToProveWithNewSuccedent(node, pio, null, newSuccedent, false); - } - - /** - * Creates a new {@link Sequent} which is a modification from the {@link Sequent} of the given - * {@link Node} which contains the same information but a different succedent. - * - * @param node The {@link Node} which provides the original {@link Sequent}. - * @param additionalAntecedent An optional additional antecedents. - * @param newSuccedent The new succedent. - * @return The created {@link Sequent}. - */ - public static Sequent createSequentToProveWithNewSuccedent(Node node, - JTerm additionalAntecedent, - JTerm newSuccedent, boolean addResultLabel) { - return createSequentToProveWithNewSuccedent(node, - node.getAppliedRuleApp() != null ? node.getAppliedRuleApp().posInOccurrence() : null, - additionalAntecedent, newSuccedent, addResultLabel); - } - - /** - * Creates a new {@link Sequent} which is a modification from the {@link Sequent} of the given - * {@link Node} which contains the same information but a different succedent. - * - * @param node The {@link Node} which provides the original {@link Sequent}. - * @param additionalAntecedent An optional additional antecedents. - * @param newSuccedent The new succedent. - * @return The created {@link Sequent}. - */ - public static Sequent createSequentToProveWithNewSuccedent(Node node, - PosInOccurrence pio, - JTerm additionalAntecedent, JTerm newSuccedent, boolean addResultLabel) { - if (pio != null) { - // Get the updates from the return node which includes the value interested in. - ImmutableList originalUpdates; - if (node.proof().root() == node) { - originalUpdates = computeRootElementaryUpdates(node); - } else { - JTerm originalModifiedFormula = (JTerm) pio.sequentFormula().formula(); - originalUpdates = TermBuilder.goBelowUpdates2(originalModifiedFormula).first; - } - // Create new sequent - return createSequentToProveWithNewSuccedent(node, pio, additionalAntecedent, - newSuccedent, originalUpdates, addResultLabel); - } else { - return createSequentToProveWithNewSuccedent(node, pio, additionalAntecedent, - newSuccedent, null, addResultLabel); - } - } - - /** - * Computes the initial {@link ElementaryUpdate}s on the given root {@link Node}. - * - * @param root The root {@link Node} of the {@link Proof}. - * @return The found initial {@link ElementaryUpdate}s. - */ - public static ImmutableList computeRootElementaryUpdates(Node root) { - ImmutableList result = ImmutableList.nil(); - Sequent sequent = root.sequent(); - for (SequentFormula sf : sequent.succedent()) { - JTerm term = (JTerm) sf.formula(); - if (Junctor.IMP.equals(term.op())) { - result = result.prepend(collectElementaryUpdates(term.sub(1))); - } - } - return result; - } - - /** - * Collects the {@link ElementaryUpdate}s in the given {@link JTerm}. - * - * @param term The {@link JTerm} to collect its updates. - * @return The found {@link ElementaryUpdate}s. - */ - public static ImmutableList collectElementaryUpdates(JTerm term) { - if (term.op() instanceof UpdateApplication) { - JTerm updateTerm = UpdateApplication.getUpdate(term); - return collectElementaryUpdates(updateTerm); - } else if (term.op() == UpdateJunctor.PARALLEL_UPDATE) { - ImmutableList result = ImmutableList.nil(); - for (int i = 0; i < term.arity(); i++) { - result = result.prepend(collectElementaryUpdates(term.sub(i))); - } - return result; - } else if (term.op() instanceof ElementaryUpdate) { - return ImmutableList.nil().prepend(term); - } else { - return ImmutableList.nil(); - } - } - - /** - * Creates a new {@link Sequent} which is a modification from the {@link Sequent} of the given - * {@link Node} which contains the same information but a different succedent. - * - * @param node The {@link Node} which provides the original {@link Sequent}. - * @param additionalAntecedent An optional additional antecedents. - * @param newSuccedent The new succedent. - * @param updates The updates to use. - * @return The created {@link Sequent}. - */ - public static Sequent createSequentToProveWithNewSuccedent(Node node, - JTerm additionalAntecedent, - JTerm newSuccedent, ImmutableList updates, boolean addResultLabel) { - return createSequentToProveWithNewSuccedent(node, - node.getAppliedRuleApp().posInOccurrence(), additionalAntecedent, newSuccedent, updates, - addResultLabel); - } - - /** - * Creates a new {@link Sequent} which is a modification from the {@link Sequent} of the given - * {@link Node} which contains the same information but a different succedent. - * - * @param node The {@link Node} which provides the original {@link Sequent}. - * @param additionalAntecedent An optional additional antecedents. - * @param newSuccedent The new succedent. - * @param updates The updates to use. - * @return The created {@link Sequent}. - */ - public static Sequent createSequentToProveWithNewSuccedent(Node node, - PosInOccurrence pio, - JTerm additionalAntecedent, JTerm newSuccedent, ImmutableList updates, - boolean addResultLabel) { - final TermBuilder tb = node.proof().getServices().getTermBuilder(); - // Combine method frame, formula with value predicate and the updates which provides the - // values - JTerm newSuccedentToProve; - if (updates != null) { - if (newSuccedent != null) { - newSuccedentToProve = tb.applySequential(updates, newSuccedent); - } else { - newSuccedentToProve = newSuccedent; - } - } else { - newSuccedentToProve = newSuccedent; - } - // Create new sequent with the original antecedent and the formulas in the succedent which - // were not modified by the applied rule - Sequent originalSequentWithoutMethodFrame = - SymbolicExecutionSideProofUtil.computeGeneralSequentToProve(node.sequent(), - pio != null ? pio.sequentFormula() : null); - Set skolemTerms = newSuccedentToProve != null - ? collectSkolemConstants(originalSequentWithoutMethodFrame, newSuccedentToProve) - : collectSkolemConstants(originalSequentWithoutMethodFrame, tb.parallel(updates)); - originalSequentWithoutMethodFrame = - removeAllUnusedSkolemEqualities(originalSequentWithoutMethodFrame, skolemTerms); - if (addResultLabel) { - TermFactory factory = node.proof().getServices().getTermFactory(); - Set skolemInNewTerm = collectSkolemConstantsNonRecursive(newSuccedentToProve); - originalSequentWithoutMethodFrame = - labelSkolemConstants(originalSequentWithoutMethodFrame, skolemInNewTerm, factory); - newSuccedentToProve = - addLabelRecursiveToNonSkolem(factory, newSuccedentToProve, RESULT_LABEL); - } - Sequent sequentToProve = newSuccedentToProve != null - ? originalSequentWithoutMethodFrame - .addFormula(new SequentFormula(newSuccedentToProve), false, true).sequent() - : originalSequentWithoutMethodFrame; - if (additionalAntecedent != null) { - sequentToProve = sequentToProve - .addFormula(new SequentFormula(additionalAntecedent), true, false).sequent(); - } - return sequentToProve; - } - - /** - * Labels all specified skolem equalities with the {@link SymbolicExecutionUtil#RESULT_LABEL}. - * - * @param sequent The {@link Sequent} to modify. - * @param constantsToLabel The skolem constants to label. - * @param factory The {@link TermFactory} to use. - * @return The modified {@link Sequent}. - */ - private static Sequent labelSkolemConstants( - Sequent sequent, Set constantsToLabel, - TermFactory factory) { - for (SequentFormula sf : sequent.antecedent()) { - int skolemEquality = checkSkolemEquality(sf); - if (skolemEquality == -1) { - JTerm equality = (JTerm) sf.formula(); - if (constantsToLabel.contains(equality.sub(0))) { - JTerm definition = - addLabelRecursiveToNonSkolem(factory, equality.sub(1), RESULT_LABEL); - JTerm skolem = - addLabelRecursiveToNonSkolem(factory, equality.sub(0), RESULT_LABEL); - List newSubs = new LinkedList<>(); - newSubs.add(definition); - newSubs.add(skolem); - JTerm newEquality = - factory.createTerm(equality.op(), new ImmutableArray<>(newSubs), - equality.boundVars(), equality.getLabels()); - sequent = sequent.changeFormula(new SequentFormula(newEquality), - new PosInOccurrence(sf, PosInTerm.getTopLevel(), true)).sequent(); - } - } else if (skolemEquality == 1) { - JTerm equality = (JTerm) sf.formula(); - if (constantsToLabel.contains(equality.sub(1))) { - JTerm definition = - addLabelRecursiveToNonSkolem(factory, equality.sub(0), RESULT_LABEL); - JTerm skolem = - addLabelRecursiveToNonSkolem(factory, equality.sub(1), RESULT_LABEL); - List newSubs = new LinkedList<>(); - newSubs.add(definition); - newSubs.add(skolem); - JTerm newEquality = - factory.createTerm(equality.op(), new ImmutableArray<>(newSubs), - equality.boundVars(), equality.getLabels()); - sequent = sequent.changeFormula(new SequentFormula(newEquality), - new PosInOccurrence(sf, PosInTerm.getTopLevel(), true)).sequent(); - } - } - } - return sequent; - } - - /** - * Adds the given {@link TermLabel} to the given {@link JTerm} and to all of its children. - * - * @param tf The {@link TermFactory} to use. - * @param term The {@link JTerm} to add label to. - * @param label The {@link TermLabel} to add. - * @return A new {@link JTerm} with the given {@link TermLabel}. - */ - private static JTerm addLabelRecursiveToNonSkolem(TermFactory tf, JTerm term, TermLabel label) { - List newSubs = new LinkedList<>(); - for (JTerm oldSub : term.subs()) { - newSubs.add(addLabelRecursiveToNonSkolem(tf, oldSub, label)); - } - if (checkSkolemEquality(term) != 0 || isSkolemConstant(term)) { - // Do not label skolem equality and skolem terms - return tf.createTerm(term.op(), new ImmutableArray<>(newSubs), term.boundVars(), - term.getLabels()); - } else { - /// Label term which is not a skolem equality and not a skolem term - List newLabels = new LinkedList<>(); - for (TermLabel oldLabel : term.getLabels()) { - newLabels.add(oldLabel); - } - newLabels.add(label); - return tf.createTerm(term.op(), new ImmutableArray<>(newSubs), term.boundVars(), - new ImmutableArray<>(newLabels)); - } - } - - /** - * Removes the given {@link TermLabel} from the given {@link JTerm} and from all of its - * children. - * - * @param tf The {@link TermFactory} to use. - * @param term The {@link JTerm} to remove label from. - * @param label The {@link TermLabel} to remove. - * @return A new {@link JTerm} without the given {@link TermLabel}. - */ - public static JTerm removeLabelRecursive(TermFactory tf, JTerm term, TermLabel label) { - // Update children - List newSubs = new LinkedList<>(); - ImmutableArray oldSubs = term.subs(); - for (JTerm oldSub : oldSubs) { - newSubs.add(removeLabelRecursive(tf, oldSub, label)); - } - // Update label - List newLabels = new LinkedList<>(); - ImmutableArray oldLabels = term.getLabels(); - for (TermLabel oldLabel : oldLabels) { - if (oldLabel != label) { - newLabels.add(oldLabel); - } - } - return tf.createTerm(term.op(), new ImmutableArray<>(newSubs), term.boundVars(), - new ImmutableArray<>(newLabels)); - } - - /** - * Collects all contained skolem {@link JTerm}s which fulfill {@link #isSkolemConstant(JTerm)} - * as - * well as the skolem constants used in the find once recursive. - * - * @param sequent The {@link Sequent} which provides the skolem equalities. - * @param term The {@link JTerm} to start collection in. - * @return The found skolem {@link JTerm}s. - */ - private static Set collectSkolemConstants(Sequent sequent, JTerm term) { - if (term != null) { - // Collect skolem constants in term - Set result = collectSkolemConstantsNonRecursive(term); - // Collect all skolem constants used in skolem constants - List toCheck = new LinkedList<>(result); - while (!toCheck.isEmpty()) { - JTerm skolemConstant = toCheck.remove(0); - List replacements = findSkolemReplacements(sequent, skolemConstant, null); - for (JTerm replacement : replacements) { - Set checkResult = collectSkolemConstantsNonRecursive(replacement); - for (JTerm checkConstant : checkResult) { - if (result.add(checkConstant)) { - toCheck.add(checkConstant); - } - } - } - } - return result; - } else { - return new HashSet<>(); - } - } - - /** - * Collects all contained skolem {@link JTerm}s which fulfill {@link #isSkolemConstant(JTerm)}. - * - * @param term The {@link JTerm} to collect in. - * @return The found skolem {@link JTerm}s. - */ - private static Set collectSkolemConstantsNonRecursive(JTerm term) { - final Set result = new HashSet<>(); - term.execPreOrder((DefaultVisitor) visited -> { - final JTerm visitedTerm = (JTerm) visited; - if (isSkolemConstant(visitedTerm)) { - result.add(visitedTerm); - } - }); - return result; - } - - /** - * Checks if the given {@link JTerm} is a skolem {@link JTerm} meaning that it has the - * {@link ParameterlessTermLabel#SELECT_SKOLEM_LABEL}. - * - * @param term The {@link JTerm} to check. - * @return {@code true} is skolem {@link JTerm}, {@code false} is not a skolem {@link JTerm}. - */ - public static boolean isSkolemConstant(JTerm term) { - return term.containsLabel(ParameterlessTermLabel.SELECT_SKOLEM_LABEL); - } - - /** - * Removes all {@link SequentFormula}s with a skolem equality from the given {@link Sequent} if - * the skolem {@link JTerm} is not contained in the given {@link Collection}. - * - * @param sequent The {@link Sequent} to modify. - * @param skolemConstants The allowed skolem {@link JTerm}s. - * @return The modified {@link Sequent} in which all not listed skolem {@link JTerm} equalites - * are removed. - */ - private static Sequent removeAllUnusedSkolemEqualities(Sequent sequent, - Collection skolemConstants) { - Sequent result = sequent; - for (SequentFormula sf : sequent.antecedent()) { - result = removeAllUnusedSkolemEqualities(result, sf, true, skolemConstants); - } - for (SequentFormula sf : sequent.succedent()) { - result = removeAllUnusedSkolemEqualities(result, sf, false, skolemConstants); - } - return result; - } - - /** - * Helper method of {@link #removeAllUnusedSkolemEqualities(Sequent, Collection)} which removes - * the given {@link SequentFormula} if required. - * - * @param sequent The {@link Sequent} to modify. - * @param sf The {@link SequentFormula} to remove if its skolem {@link JTerm} is not listed. - * @param antecedent {@code true} antecedent, {@code false} succedent. - * @param skolemConstants The allowed skolem {@link JTerm}s. - * @return The modified {@link Sequent} in which the {@link SequentFormula} might be removed. - */ - private static Sequent removeAllUnusedSkolemEqualities(Sequent sequent, - SequentFormula sf, - boolean antecedent, Collection skolemConstants) { - JTerm term = (JTerm) sf.formula(); - boolean remove = false; - if (term.op() == Equality.EQUALS) { - if (isSkolemConstant(term.sub(0))) { - remove = !skolemConstants.contains(term.sub(0)); - } - if (!remove && isSkolemConstant(term.sub(1))) { - remove = !skolemConstants.contains(term.sub(1)); - } - } - if (remove) { - return sequent - .removeFormula(new PosInOccurrence(sf, PosInTerm.getTopLevel(), antecedent)) - .sequent(); - } else { - return sequent; - } - } - - /** - * Checks if the given {@link SequentFormula} is a skolem equality. - * - * @param sf The {@link SequentFormula} to check. - * @return {@code -1} left side of skolem equality, {@code 0} no skolem equality, {@code 1} - * right side of skolem equality. - */ - public static int checkSkolemEquality(SequentFormula sf) { - return checkSkolemEquality((JTerm) sf.formula()); - } - - /** - * Checks if the given {@link JTerm} is a skolem equality. - * - * @param term The {@link JTerm} to check. - * @return {@code -1} left side of skolem equality, {@code 0} no skolem equality, {@code 1} - * right side of skolem equality. - */ - public static int checkSkolemEquality(JTerm term) { - if (term.op() == Equality.EQUALS) { - if (isSkolemConstant(term.sub(0))) { - return -1; - } - if (isSkolemConstant(term.sub(1))) { - return 1; - } - } - return 0; - } - - /** - * Replaces all skolem constants in the given {@link JTerm}. - * - * @param sequent The {@link Sequent} which provides the skolem equalities. - * @param term The {@link JTerm} to replace its skolem constants. - * @param services The {@link Services} to use. - * @return The skolem constant free {@link JTerm}. - */ - public static JTerm replaceSkolemConstants(Sequent sequent, JTerm term, Services services) { - int skolemCheck = checkSkolemEquality(term); - if (skolemCheck == -1) { - TermBuilder tb = services.getTermBuilder(); - List replacements = findSkolemReplacements(sequent, term.sub(0), term); - if (!replacements.isEmpty()) { - JTerm other = term.sub(1); - List newTerms = new LinkedList<>(); - for (JTerm replacement : replacements) { - newTerms.add(tb.equals(replacement, other)); - } - term = tb.and(newTerms); - return replaceSkolemConstants(sequent, term, services); - } else { - // If no other term is available the quality is just true. - return services.getTermBuilder().tt(); - } - } else if (skolemCheck == 1) { - TermBuilder tb = services.getTermBuilder(); - List replacements = findSkolemReplacements(sequent, term.sub(1), term); - if (!replacements.isEmpty()) { - JTerm other = term.sub(0); - List newTerms = new LinkedList<>(); - for (JTerm replacement : replacements) { - newTerms.add(tb.equals(other, replacement)); - } - term = tb.and(newTerms); - return replaceSkolemConstants(sequent, term, services); - } else { - // If no other term is available the quality is just true. - return services.getTermBuilder().tt(); - } - } else { - if (isSkolemConstant(term)) { - // Skolem term - List replacements = findSkolemReplacements(sequent, term, null); - // Any of the replacements can be used, for simplicity use the first one. - // Alternatively may the one with the lowest depth or with the least symbols might - // be used. - return !replacements.isEmpty() ? replacements.get(0) : term; - } else { - // No skolem term - List newChildren = new LinkedList<>(); - boolean changed = false; - for (int i = 0; i < term.arity(); i++) { - JTerm oldChild = term.sub(i); - JTerm newChild = replaceSkolemConstants(sequent, oldChild, services); - if (newChild != oldChild) { - changed = true; - } - newChildren.add(newChild); - } - if (changed) { - if (term.op() == Junctor.NOT) { - // Create new NOT term using build in simplification of TermBuilder. - assert newChildren.size() == 1; - assert term.boundVars().isEmpty(); - assert term.javaBlock() == JavaBlock.EMPTY_JAVABLOCK; - JTerm result = services.getTermBuilder().not(newChildren.get(0)); - if (term.hasLabels()) { - result = services.getTermBuilder().label(result, term.getLabels()); - } - return result; - } else if (term.op() == Junctor.OR) { - // Create new OR term using build in simplification of TermBuilder. - assert term.boundVars().isEmpty(); - assert term.javaBlock() == JavaBlock.EMPTY_JAVABLOCK; - JTerm result = services.getTermBuilder().or(newChildren); - if (term.hasLabels()) { - result = services.getTermBuilder().label(result, term.getLabels()); - } - return result; - } else if (term.op() == Junctor.AND) { - // Create new AND term using build in simplification of TermBuilder. - assert term.boundVars().isEmpty(); - assert term.javaBlock() == JavaBlock.EMPTY_JAVABLOCK; - JTerm result = services.getTermBuilder().and(newChildren); - if (term.hasLabels()) { - result = services.getTermBuilder().label(result, term.getLabels()); - } - return result; - } else if (term.op() == Junctor.IMP) { - // Create new IMP term using build in simplification of TermBuilder. - assert newChildren.size() == 2; - assert term.boundVars().isEmpty(); - assert term.javaBlock() == JavaBlock.EMPTY_JAVABLOCK; - return services.getTermBuilder().imp(newChildren.get(0), newChildren.get(1), - term.getLabels()); - } else { - // Create new term in general. - return services.getTermFactory().createTerm(term.op(), - new ImmutableArray<>(newChildren), term.boundVars(), - term.getLabels()); - } - } else { - return term; - } - } - } - } - - /** - * Utility method of {@link #replaceSkolemConstants(Sequent, JTerm, Services)} to find all - * equality parts of the given skolem constant. - * - * @param sequent The {@link Sequent} which provides the skolem equalities. - * @param skolemConstant The skolem constant to solve. - * @param skolemEquality The optional skolem equality to ignore. - * @return The equality parts of the given skolem equality. - */ - private static List findSkolemReplacements(Sequent sequent, JTerm skolemConstant, - JTerm skolemEquality) { - List result = new LinkedList<>(); - for (SequentFormula sf : sequent) { - JTerm term = (JTerm) sf.formula(); - if (term != skolemEquality) { - int skolemCheck = checkSkolemEquality(term); - if (skolemCheck == -1) { - if (term.sub(0).equalsModProperty(skolemConstant, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - result.add(term.sub(1)); - } - } else if (skolemCheck == 1) { - if (term.sub(1).equalsModProperty(skolemConstant, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - result.add(term.sub(0)); - } - } - } - } - return result; - } - - /** - * Checks if the given {@link Sort} represents a {@code null} value in the given - * {@link Services}. - * - * @param sort The {@link Sort} to check. - * @param services The {@link Services} to use. - * @return {@code true} is Null-Sort, {@code false} is something else. - */ - public static boolean isNullSort(Sort sort, Services services) { - return sort instanceof NullSort; - } - - /** - * Checks if the given {@link IProgramVariable} is static or not. - * - * @return {@code true} is static, {@code false} is not static or is array cell. - */ - public static boolean isStaticVariable(IProgramVariable programVariable) { - return programVariable instanceof ProgramVariable - && ((ProgramVariable) programVariable).isStatic(); - } - - /** - * Collects all {@link IProgramVariable}s of the given {@link FieldDeclaration}. - * - * @param fd The given {@link FieldDeclaration}. - * @return The found {@link IProgramVariable}s for the given {@link FieldDeclaration}. - */ - public static Set getProgramVariables(FieldDeclaration fd) { - Set result = new LinkedHashSet<>(); - if (fd != null) { - ImmutableArray specifications = fd.getFieldSpecifications(); - for (FieldSpecification spec : specifications) { - result.add(spec.getProgramVariable()); - } - } - return result; - } - - /** - * Computes the path condition of the given {@link Node}. - * - * @param node The {@link Node} to compute its path condition. - * @param simplify {@code true} simplify each branch condition in a side proof, {@code false} do - * not simplify branch conditions. - * @param improveReadability {@code true} improve readability, {@code false} do not improve - * readability. - * @return The computed path condition. - * @throws ProofInputException Occurred Exception. - */ - public static JTerm computePathCondition(Node node, boolean simplify, - boolean improveReadability) - throws ProofInputException { - return computePathCondition(null, node, simplify, improveReadability); - } - - /** - * Computes the path condition between the given {@link Node}s. - * - * @param parentNode The {@link Node} to stop path condition computation at. - * @param childNode The {@link Node} to compute its path condition back to the parent. - * @param simplify {@code true} simplify each branch condition in a side proof, {@code false} do - * not simplify branch conditions. - * @param improveReadability {@code true} improve readability, {@code false} do not improve - * readability. - * @return The computed path condition. - * @throws ProofInputException Occurred Exception. - */ - public static JTerm computePathCondition(Node parentNode, Node childNode, boolean simplify, - boolean improveReadability) throws ProofInputException { - if (childNode != null) { - final Services services = childNode.proof().getServices(); - JTerm pathCondition = services.getTermBuilder().tt(); - while (childNode != null && childNode != parentNode) { - Node parent = childNode.parent(); - if (parent != null && parent.childrenCount() >= 2) { - JTerm branchCondition = - computeBranchCondition(childNode, simplify, improveReadability); - pathCondition = services.getTermBuilder().and(branchCondition, pathCondition); - } - childNode = parent; - } - if (services.getTermBuilder().ff().equalsModProperty(pathCondition, - IRRELEVANT_TERM_LABELS_PROPERTY)) { - throw new ProofInputException( - "Path condition computation failed because the result is false."); - } - return pathCondition; - } else { - return null; - } - } - - /** - * Checks if the {@link Sort} of the given {@link JTerm} is a reference type. - * - * @param services The {@link Services} to use. - * @param term The {@link JTerm} to check. - * @return {@code true} is reference sort, {@code false} is no reference sort. - */ - public static boolean hasReferenceSort(Services services, JTerm term) { - if (services != null && term != null) { - return hasReferenceSort(services, term.sort()); - } else { - return false; - } - } - - /** - * Checks if the {@link Sort} of the given {@link IProgramVariable} is a reference type. - * - * @param services The {@link Services} to use. - * @param var The {@link IProgramVariable} to check. - * @return {@code true} is reference sort, {@code false} is no reference sort. - */ - public static boolean hasReferenceSort(Services services, IProgramVariable var) { - if (services != null && var != null) { - return hasReferenceSort(services, var.sort()); - } else { - return false; - } - } - - /** - * Checks if the {@link Sort} is a reference type. - * - * @param services The {@link Services} to use. - * @param sort The {@link Sort} to check. - * @return {@code true} is reference sort, {@code false} is no reference sort. - */ - public static boolean hasReferenceSort(Services services, Sort sort) { - boolean referenceSort = false; - if (services != null && sort != null) { - KeYJavaType kjt = services.getJavaInfo().getKeYJavaType(sort); - if (kjt != null) { - TypeConverter typeConverter = services.getTypeConverter(); - referenceSort = typeConverter.isReferenceType(kjt) && // Check if the value is a - // reference type - (!(kjt.getJavaType() instanceof TypeDeclaration) || // check if the value is - // a library class which - // should be ignored - !((TypeDeclaration) kjt.getJavaType()).isLibraryClass()); - } - } - return referenceSort; - } - - /** - * Returns the human readable name of the given {@link IProgramVariable}. - * - * @param pv The {@link IProgramVariable} to get its name. - * @return The human readable name of the given {@link IProgramVariable}. - */ - public static String getDisplayString(IProgramVariable pv) { - if (pv != null) { - if (pv.name() instanceof ProgramElementName name) { - if (isStaticVariable(pv)) { - return name.toString(); - } else { - return name.getProgramName(); - } - } else { - return pv.name().toString(); - } - } else { - return null; - } - } - - /** - * Returns the root of the given {@link IExecutionNode}. - * - * @param executionNode The {@link IExecutionNode} to get the root of its symbolic execution - * tree. - * @return The root of the given {@link IExecutionNode}. - */ - public static IExecutionNode getRoot(IExecutionNode executionNode) { - if (executionNode != null) { - while (executionNode.getParent() != null) { - executionNode = executionNode.getParent(); - } - return executionNode; - } else { - return null; - } - } - - /** - * Extracts the exception variable which is used to check if the executed program in proof - * terminates normally. - * - * @param proof The {@link Proof} to extract variable from. - * @return The extract variable. - */ - public static IProgramVariable extractExceptionVariable(Proof proof) { - Node root = proof.root(); - PosInOccurrence modalityTermPIO = - findModalityWithMinSymbolicExecutionLabelId(root.sequent()); - JTerm modalityTerm = modalityTermPIO != null ? (JTerm) modalityTermPIO.subTerm() : null; - if (modalityTerm != null) { - modalityTerm = TermBuilder.goBelowUpdates(modalityTerm); - JavaProgramElement updateContent = modalityTerm.javaBlock().program(); - if (updateContent instanceof StatementBlock) { // try catch inclusive - ImmutableArray updateContentBody = - ((StatementBlock) updateContent).getBody(); - Try tryStatement = null; - Iterator iter = updateContentBody.iterator(); - while (tryStatement == null && iter.hasNext()) { - Statement next = iter.next(); - if (next instanceof Try) { - tryStatement = (Try) next; - } - } - if (tryStatement != null) { - if (tryStatement.getBranchCount() == 1 - && tryStatement.getBranchList() - .get(0) instanceof Catch catchStatement) { - if (catchStatement.getBody() instanceof StatementBlock) { - StatementBlock catchBlock = catchStatement.getBody(); - if (catchBlock.getBody().size() == 1 - && catchBlock.getBody() - .get(0) instanceof Assignment assignment) { - if (assignment.getFirstElement() instanceof IProgramVariable var) { - return var; - } - } - } - } - } - } - } - throw new IllegalStateException("Can't extract exception variable from proof."); - } - - /** - * Configures the proof to use the given settings. - * - * @param proof The {@link Proof} to configure. - * @param useOperationContracts {@code true} use operation contracts, {@code false} expand - * methods. - * @param useLoopInvariants {@code true} use loop invariants, {@code false} expand loops. - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecksImmediately {@code true} immediately alias checks, {@code false} alias - * checks - * never. - */ - public static void updateStrategySettings(Proof proof, boolean useOperationContracts, - boolean useLoopInvariants, boolean nonExecutionBranchHidingSideProofs, - boolean aliasChecksImmediately) { - if (proof != null && !proof.isDisposed()) { - String methodTreatmentValue = useOperationContracts ? StrategyProperties.METHOD_CONTRACT - : StrategyProperties.METHOD_EXPAND; - String loopTreatmentValue = useLoopInvariants ? StrategyProperties.LOOP_INVARIANT - : StrategyProperties.LOOP_EXPAND; - String nonExecutionBranchHidingValue = nonExecutionBranchHidingSideProofs - ? StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_SIDE_PROOF - : StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF; - String aliasChecksValue = aliasChecksImmediately - ? StrategyProperties.SYMBOLIC_EXECUTION_ALIAS_CHECK_IMMEDIATELY - : StrategyProperties.SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER; - StrategyProperties sp = - proof.getSettings().getStrategySettings().getActiveStrategyProperties(); - sp.setProperty(StrategyProperties.METHOD_OPTIONS_KEY, methodTreatmentValue); - sp.setProperty(StrategyProperties.LOOP_OPTIONS_KEY, loopTreatmentValue); - sp.setProperty( - StrategyProperties.SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY, - nonExecutionBranchHidingValue); - sp.setProperty(StrategyProperties.SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY, - aliasChecksValue); - updateStrategySettings(proof, sp); - } - } - - /** - * Configures the proof to use the given {@link StrategyProperties}. - * - * @param proof The {@link Proof} to configure. - * @param sp The {@link StrategyProperties} to set. - */ - public static void updateStrategySettings(Proof proof, StrategyProperties sp) { - if (proof != null && !proof.isDisposed()) { - assert sp != null; - ProofSettings.DEFAULT_SETTINGS.getStrategySettings().setActiveStrategyProperties(sp); - proof.getSettings().getStrategySettings().setActiveStrategyProperties(sp); - } - } - - /** - * Checks if the choice settings are initialized. - * - * @return {@code true} settings are initialized, {@code false} settings are not initialized. - */ - public static boolean isChoiceSettingInitialised() { - return ProofSettings.isChoiceSettingInitialised(); - } - - /** - * Checks if the given node should be represented as loop body termination. - * - * @param node The current {@link Node} in the proof tree of KeY. - * @param ruleApp The {@link RuleApp} may or may not be used in the rule. - * @return {@code true} represent node as loop body termination, {@code false} represent node as - * something else. - */ - public static boolean isLoopBodyTermination(final Node node, - RuleApp ruleApp) { - boolean result = false; - if (ruleApp instanceof OneStepSimplifierRuleApp simplifierApp) { - // Check applied rules in protocol - if (simplifierApp.getProtocol() != null) { - RuleApp terminationApp = - CollectionUtil.search(simplifierApp.getProtocol(), - element -> isLoopBodyTermination(node, element)); - result = terminationApp != null; - } - } else if (hasLoopBodyTerminationLabel(ruleApp)) { - if ("impRight".equals(MiscTools.getRuleDisplayName(ruleApp))) { - result = true; // Implication removed (not done if left part is false) - } else { - var term = ruleApp.posInOccurrence().subTerm(); - if (term.op() == Junctor.IMP && term.sub(0).op() == Junctor.TRUE) { - result = true; // Left part is true - } - } - } - return result; - } - - /** - * Checks if the given {@link Operator} is a heap. - * - * @param op The {@link Operator} to check. - * @param heapLDT The {@link HeapLDT} which provides the available heaps. - * @return {@code true} {@link Operator} is heap, {@code false} {@link Operator} is something - * else. - */ - public static boolean isHeap(Operator op, HeapLDT heapLDT) { - if (op instanceof final SortedOperator sortedOperator) { - final Sort opSort = sortedOperator.sort(); - return CollectionUtil.search(heapLDT.getAllHeaps(), - element -> opSort == element.sort()) != null; - } else { - return false; - } - } - - /** - * Checks if the given {@link Operator} is the base heap. - * - * @param op The {@link Operator} to check. - * @param heapLDT The {@link HeapLDT} which provides the available heaps. - * @return {@code true} {@link Operator} is the base heap, {@code false} {@link Operator} is - * something else. - */ - public static boolean isBaseHeap(Operator op, HeapLDT heapLDT) { - return op == heapLDT.getHeapForName(HeapLDT.BASE_HEAP_NAME); - } - - /** - * Checks if the given {@link JTerm} is a select on a heap. - * - * @param services The {@link Services} to use. - * @param term The {@link JTerm} to check. - * @return {@code true} is select, {@code false} is something else. - */ - public static boolean isSelect(Services services, Term term) { - if (!isNullSort(term.sort(), services)) { - Function select = - services.getTypeConverter().getHeapLDT().getSelect(term.sort(), services); - return select == term.op(); - } else { - return false; - } - } - - /** - * Checks if the given {@link Operator} is a number. - * - * @param op The {@link Operator} to check. - * @return {@code true} is number, {@code false} is something else. - */ - public static boolean isNumber(Operator op) { - if (op instanceof Function) { - String[] numbers = - { "#", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "Z", "neglit" }; - Arrays.sort(numbers); - int index = Arrays.binarySearch(numbers, op.name().toString()); - return index >= 0; - } else { - return false; - } - } - - /** - * Checks if the given {@link Operator} is a boolean. - * - * @param op The {@link Operator} to check. - * @return {@code true} is boolean, {@code false} is something else. - */ - public static boolean isBoolean(Services services, Operator op) { - BooleanLDT booleanLDT = services.getTypeConverter().getBooleanLDT(); - return booleanLDT.getFalseConst() == op || booleanLDT.getTrueConst() == op; - } - - /** - * Returns the default taclet options for symbolic execution. - * - * @return The default taclet options for symbolic execution. - */ - public static HashMap getDefaultTacletOptions() { - return MiscTools.getDefaultTacletOptions(); - } - - /** - *

- * Converts the given {@link JTerm} into a {@link String} - *

- *

- * The functionality is similar to {@link ProofSaver#printTerm(JTerm, Services, boolean)} but - * allows to set custom settings. - *

- * - * @param term The {@link JTerm} to convert. - * @param services The {@link Services} to use. - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @return The {@link String} representation of the given {@link JTerm}. - */ - public static String formatTerm(JTerm term, Services services, boolean useUnicode, - boolean usePrettyPrinting) { - if ((useUnicode || usePrettyPrinting) && services != null) { - NotationInfo ni = new NotationInfo(); - LogicPrinter logicPrinter = LogicPrinter.purePrinter(ni, services); - logicPrinter.getNotationInfo().refresh(services, usePrettyPrinting, useUnicode, false); - logicPrinter.printTerm(term); - return logicPrinter.result(); - } else { - return term != null ? TermLabelManager.removeIrrelevantLabels(term, services).toString() - : null; - } - } - - /** - * Checks if pretty printing is enabled or not. - * - * @return {@code true} pretty printing is enabled, {@code false} pretty printing is disabled. - */ - public static boolean isUsePrettyPrinting() { - return ProofIndependentSettings.isUsePrettyPrinting(); - } - - /** - * Defines if pretty printing is enabled or not. - * - * @param usePrettyPrinting {@code true} pretty printing is enabled, {@code false} pretty - * printing is disabled. - */ - public static void setUsePrettyPrinting(boolean usePrettyPrinting) { - ProofIndependentSettings.setUsePrettyPrinting(usePrettyPrinting); - } - - /** - * Checks if the {@link Goal} has applicable rules. - * - * @param goal The {@link Goal} to check. - * @return {@code true} has applicable rules, {@code false} no rules are applicable. - */ - public static boolean hasApplicableRules(Goal goal) { - return Goal.hasApplicableRules(goal); - } - - /** - * Computes the call stack size and the second statement similar to - * {@link NodeInfo#computeActiveStatement(SourceElement)}. - * - * @param ruleApp The {@link RuleApp}. - * @return The computed call stack size and the second statement if available. - */ - public static Pair computeSecondStatement( - RuleApp ruleApp) { - if (ruleApp != null) { - // Find inner most block - SourceElement firstStatement = NodeInfo.computeFirstStatement(ruleApp); - Deque blocks = new LinkedList<>(); - int methodFrameCount = 0; - if (firstStatement != null) { - if (firstStatement instanceof StatementBlock) { - blocks.addFirst((StatementBlock) firstStatement); - } - SourceElement lastStatement = null; - while (firstStatement instanceof ProgramPrefix && lastStatement != firstStatement) { - lastStatement = firstStatement; - firstStatement = firstStatement.getFirstElementIncludingBlocks(); - if (lastStatement instanceof MethodFrame) { - blocks.clear(); // Only block of inner most method frames are of interest. - methodFrameCount++; - } - if (firstStatement instanceof StatementBlock) { - blocks.addFirst((StatementBlock) firstStatement); - } - } - } - // Compute second statement - StatementBlock block = null; - while (!blocks.isEmpty() && (block == null || block.getChildCount() < 2)) { - block = blocks.removeFirst(); - } - if (block != null && block.getChildCount() >= 2) { - return new Pair<>(methodFrameCount, block.getChildAt(1)); - } else { - return new Pair<>(methodFrameCount, null); - } - } else { - return null; - } - } - - /** - * Compares the given {@link SourceElement}s including their {@link PositionInfo}s. - * - * @param first The first {@link SourceElement}. - * @param second The second {@link SourceElement}. - * @return {@code true} both are equal and at the same {@link PositionInfo}, {@code false} - * otherwise. - */ - public static boolean equalsWithPosition(SourceElement first, SourceElement second) { - if (first != null && second != null) { - if (first instanceof While) { - if (second instanceof While) { - // Special treatment for while because its position info is lost during prove, - // but maintained in its guard. - return first.equals(second) && equalsWithPosition(((While) first).getGuard(), - ((While) second).getGuard()); - } else { - return false; - } - } else { - // Compare all source elements including ints position info - return first.equals(second) - && Objects.equals(first.getPositionInfo(), second.getPositionInfo()); - } - } else { - return first == null && second == null; - } - } - - /** - * Checks if the given {@link ProgramElement} contains the given {@link SourceElement}. - * - * @param toSearchIn The {@link ProgramElement} to search in. - * @param toSearch The {@link SourceElement} to search. - * @param services The {@link Services} to use. - * @return {@code true} contained, {@code false} not contained. - */ - public static boolean containsStatement(ProgramElement toSearchIn, SourceElement toSearch, - Services services) { - if (toSearchIn != null) { - ContainsStatementVisitor visitor = - new ContainsStatementVisitor(toSearchIn, toSearch, services); - visitor.start(); - return visitor.isContained(); - } else { - return false; - } - } - - /** - * Creates recursive a term which can be used to determine the value of - * {@link IExecutionVariable#getProgramVariable()}. - * - * @param variable the variable whose value shall be determined - * @return The created term. - */ - public static JTerm createSelectTerm(IExecutionVariable variable) { - final Services services = variable.getServices(); - if (isStaticVariable(variable.getProgramVariable())) { - // Static field access - Function function = services.getTypeConverter().getHeapLDT().getFieldSymbolForPV( - (LocationVariable) variable.getProgramVariable(), services); - return services.getTermBuilder().staticDot(variable.getProgramVariable().sort(), - function); - } else { - if (variable.getParentValue() == null) { - // Direct access to a variable, so return it as term - return services.getTermBuilder() - .var((ProgramVariable) variable.getProgramVariable()); - } else { - JTerm parentTerm = variable.getParentValue().getVariable().createSelectTerm(); - if (variable.getProgramVariable() != null) { - if (services.getJavaInfo().getArrayLength() == variable.getProgramVariable()) { - // Special handling for length attribute of arrays - Function function = - services.getTypeConverter().getHeapLDT().getLength(); - return services.getTermBuilder().func(function, parentTerm); - } else { - // Field access on the parent variable - Function function = - services.getTypeConverter().getHeapLDT().getFieldSymbolForPV( - (LocationVariable) variable.getProgramVariable(), services); - return services.getTermBuilder().dot(variable.getProgramVariable().sort(), - parentTerm, function); - } - } else { - // Special handling for array indices. - return services.getTermBuilder().dotArr(parentTerm, variable.getArrayIndex()); - } - } - } - } - - /** - * Creates the {@link NotationInfo} for the given {@link IExecutionElement}. - * - * @param element The {@link IExecutionElement} to create its {@link NotationInfo}. - * @return The created {@link NotationInfo}. - */ - public static NotationInfo createNotationInfo(IExecutionElement element) { - Proof proof = element != null ? element.getProof() : null; - return createNotationInfo(proof); - } - - /** - * Creates the {@link NotationInfo} for the given {@link Node}. - * - * @param node The {@link Node} to create its {@link NotationInfo}. - * @return The created {@link NotationInfo}. - */ - public static NotationInfo createNotationInfo(Node node) { - Proof proof = node != null ? node.proof() : null; - return createNotationInfo(proof); - } - - /** - * Creates the {@link NotationInfo} for the given {@link Proof}. - * - * @param proof The {@link Proof} to create its {@link NotationInfo}. - * @return The created {@link NotationInfo}. - */ - public static NotationInfo createNotationInfo(Proof proof) { - NotationInfo notationInfo = new NotationInfo(); - if (proof != null && !proof.isDisposed()) { - notationInfo.setAbbrevMap(proof.abbreviations()); - } - return notationInfo; - } - - /** - * Checks if this branch would be closed without the uninterpreted predicate and thus be treated - * as valid/closed in a regular proof. - * - * @return {@code true} verified/closed, {@code false} not verified/still open - */ - public static boolean lazyComputeIsMainBranchVerified(Node node) { - if (!node.proof().isDisposed()) { - // Find uninterpreted predicate - JTerm predicate = AbstractOperationPO.getUninterpretedPredicate(node.proof()); - // Check if node can be treated as verified/closed - if (predicate != null) { - boolean verified = true; - Iterator leafsIter = node.leavesIterator(); - while (verified && leafsIter.hasNext()) { - Node leaf = leafsIter.next(); - if (!leaf.isClosed()) { - final JTerm toSearch = predicate; - SequentFormula topLevelPredicate = - CollectionUtil - .search(leaf.sequent().succedent(), - element -> JavaDLOperatorUtil.opEquals(toSearch.op(), - element.formula().op())); - if (topLevelPredicate == null) { - verified = false; - } - } - } - return verified; - } else { - return node.isClosed(); - } - } else { - return false; - } - } - - /** - * Checks if this branch would be closed without the uninterpreted predicate and thus be treated - * as valid/closed in a regular proof. - * - * @return {@code true} verified/closed, {@code false} not verified/still open - */ - public static boolean lazyComputeIsAdditionalBranchVerified(Node node) { - if (!node.proof().isDisposed()) { - // Find uninterpreted predicate - Set additinalPredicates = - AbstractOperationPO.getAdditionalUninterpretedPredicates(node.proof()); - // Check if node can be treated as verified/closed - if (additinalPredicates != null && !additinalPredicates.isEmpty()) { - boolean verified = true; - Iterator leafsIter = node.leavesIterator(); - while (verified && leafsIter.hasNext()) { - Node leaf = leafsIter.next(); - if (!leaf.isClosed()) { - final Set additinalOperatos = new HashSet<>(); - for (JTerm term : additinalPredicates) { - additinalOperatos.add(term.op()); - } - SequentFormula topLevelPredicate = - CollectionUtil.search(leaf.sequent().succedent(), - element -> additinalOperatos.contains(element.formula().op())); - if (topLevelPredicate == null) { - verified = false; - } - } - } - return verified; - } else { - return node.isClosed(); - } - } else { - return false; - } - } - - /** - * Checks if is an exceptional termination. - * - * @param node the node which is used for computation. - * @param exceptionVariable the exception variable which is used to check if the executed - * program in proof terminates normally. - * @return {@code true} exceptional termination, {@code false} normal termination. - */ - public static boolean lazyComputeIsExceptionalTermination(Node node, - IProgramVariable exceptionVariable) { - Sort result = lazyComputeExceptionSort(node, exceptionVariable); - return result != null && !(result instanceof NullSort); - } - - /** - * Computes the exception {@link Sort} lazily when - * {@link de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionTermination#getExceptionSort()} - * is called the - * first time. - * - * @param node the node which is user for computation. - * @param exceptionVariable the exception variable which is used to check if the executed - * program in proof terminates normally. - * @return The exception {@link Sort}. - */ - public static Sort lazyComputeExceptionSort(Node node, IProgramVariable exceptionVariable) { - Sort result = null; - if (exceptionVariable != null) { - // Search final value of the exceptional variable which is used to check if the verified - // program terminates normally - ImmutableArray value = null; - for (SequentFormula f : node.sequent().succedent()) { - Pair, JTerm> updates = - TermBuilder.goBelowUpdates2((JTerm) f.formula()); - Iterator iter = updates.first.iterator(); - while (value == null && iter.hasNext()) { - value = extractValueFromUpdate(iter.next(), exceptionVariable); - } - } - // An exceptional termination is found if the exceptional variable is not null - if (value != null && value.size() == 1) { - result = value.get(0).sort(); - } - } - return result; - } - - /** - * Utility method to extract the value of the {@link IProgramVariable} from the given update - * term. - * - * @param term The given update term. - * @param variable The {@link IProgramVariable} for that the value is needed. - * @return The found value or {@code null} if it is not defined in the given update term. - */ - private static ImmutableArray extractValueFromUpdate( - JTerm term, - IProgramVariable variable) { - ImmutableArray result = null; - if (term.op() instanceof ElementaryUpdate update) { - if (Objects.equals(variable, update.lhs())) { - result = term.subs(); - } - } else if (term.op() instanceof UpdateJunctor) { - Iterator iter = term.subs().iterator(); - while (result == null && iter.hasNext()) { - result = extractValueFromUpdate(iter.next(), variable); - } - } - return result; - } - - /** - * Initializes the {@link Proof} of the given {@link SymbolicExecutionTreeBuilder} so that the - * correct {@link Strategy} is used. - * - * @param builder The {@link SymbolicExecutionTreeBuilder} to initialize. - */ - public static void initializeStrategy(SymbolicExecutionTreeBuilder builder) { - Proof proof = builder.getProof(); - StrategyProperties strategyProperties = - proof.getSettings().getStrategySettings().getActiveStrategyProperties(); - if (builder.isUninterpretedPredicateUsed()) { - proof.setActiveStrategy( - new SymbolicExecutionStrategy.Factory().create(proof, strategyProperties)); - } else { - proof.setActiveStrategy( - new ModularJavaDLStrategyFactory().create(proof, strategyProperties)); - } - } - - /** - * Checks if the modality at the applied rule represents the validity branch of an applied block - * contract. - * - * @param appliedRuleApp The {@link RuleApp} to check. - * @return {@code true} validitiy branch, {@code false} otherwise. - */ - public static boolean isBlockContractValidityBranch( - RuleApp appliedRuleApp) { - return appliedRuleApp != null - && isBlockContractValidityBranch(appliedRuleApp.posInOccurrence()); - } - - /** - * Checks if the modality at the given {@link PosInOccurrence} represents the validity branch of - * an applied block contract. - * - * @param pio The {@link PosInOccurrence} to check. - * @return validitiy branch, {@code false} otherwise. - */ - public static boolean isBlockContractValidityBranch( - PosInOccurrence pio) { - if (pio != null) { - JTerm applicationTerm = TermBuilder.goBelowUpdates((JTerm) pio.subTerm()); - return applicationTerm.getLabel(BlockContractValidityTermLabel.NAME) != null; - } else { - return false; - } - } - - /** - * Checks if the {@link MergeRuleBuiltInRuleApp} is applied. - * - * @param ruleApp The {@link RuleApp} to check. - * @return {@code true} is {@link MergeRuleBuiltInRuleApp}, {@code false} otherwise. - */ - public static boolean isJoin(RuleApp ruleApp) { - return ruleApp instanceof MergeRuleBuiltInRuleApp - && !((MergeRuleBuiltInRuleApp) ruleApp).getMergePartners().isEmpty(); - } - - /** - * Checks if the {@link CloseAfterMergeRuleBuiltInRuleApp} is applied. - * - * @param ruleApp The {@link RuleApp} to check. - * @return {@code true} is {@link CloseAfterMergeRuleBuiltInRuleApp}, {@code false} otherwise. - */ - public static boolean isCloseAfterJoin(RuleApp ruleApp) { - return ruleApp instanceof CloseAfterMergeRuleBuiltInRuleApp; - } - - /** - * Checks if the weakening goal is enabled or not. - * - * @param proof The {@link Proof} to check. - * @return {@code true} enabled, {@code false} disabled. - */ - public static boolean isWeakeningGoalEnabled(Proof proof) { - if (proof != null && !proof.isDisposed()) { - String value = proof.getSettings().getChoiceSettings().getDefaultChoices() - .get(CloseAfterMerge.MERGE_GENERATE_IS_WEAKENING_GOAL_CFG); - return CloseAfterMerge.MERGE_GENERATE_IS_WEAKENING_GOAL_CFG_ON.equals(value); - } else { - return false; - } - } - -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/event/ISideProofStoreListener.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/event/ISideProofStoreListener.java deleted file mode 100644 index e49771dfb22..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/event/ISideProofStoreListener.java +++ /dev/null @@ -1,30 +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.symbolic_execution.util.event; - -import java.util.EventListener; - -import de.uka.ilkd.key.symbolic_execution.util.SideProofStore; -import de.uka.ilkd.key.symbolic_execution.util.SideProofStore.Entry; - -/** - * Observes changes on a {@link SideProofStore}. - * - * @author Martin Hentschel - */ -public interface ISideProofStoreListener extends EventListener { - /** - * When new {@link Entry}s are added. - * - * @param e The {@link SideProofStoreEvent}. - */ - void entriesAdded(SideProofStoreEvent e); - - /** - * When existing {@link Entry}s were removed. - * - * @param e The {@link SideProofStoreEvent}. - */ - void entriesRemoved(SideProofStoreEvent e); -} diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/event/SideProofStoreEvent.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/event/SideProofStoreEvent.java deleted file mode 100644 index d235c5f6fa7..00000000000 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/event/SideProofStoreEvent.java +++ /dev/null @@ -1,54 +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.symbolic_execution.util.event; - -import java.util.EventObject; - -import de.uka.ilkd.key.symbolic_execution.util.SideProofStore; -import de.uka.ilkd.key.symbolic_execution.util.SideProofStore.Entry; - -/** - * An event thrown by a {@link SideProofStore} and observed via an {@link ISideProofStoreListener}. - * - * @author Martin Hentschel - */ -public class SideProofStoreEvent extends EventObject { - /** - * Generated UID. - */ - private static final long serialVersionUID = 8046460017292232070L; - - /** - * The added or removed {@link Entry}s. - */ - private final Entry[] entries; - - /** - * Constructor. - * - * @param source The source. - * @param entries The added or removed {@link Entry}s. - */ - public SideProofStoreEvent(SideProofStore source, Entry[] entries) { - super(source); - this.entries = entries; - } - - /** - * Returns the added or removed {@link Entry}s. - * - * @return The added or removed {@link Entry}s. - */ - public Entry[] getEntries() { - return entries; - } - - /** - * {@inheritDoc} - */ - @Override - public SideProofStore getSource() { - return (SideProofStore) super.getSource(); - } -} diff --git a/key.core.symbolic_execution/src/main/resources/META-INF/services/de.uka.ilkd.key.proof.init.DefaultProfileResolver b/key.core.symbolic_execution/src/main/resources/META-INF/services/de.uka.ilkd.key.proof.init.DefaultProfileResolver deleted file mode 100644 index c124229b12d..00000000000 --- a/key.core.symbolic_execution/src/main/resources/META-INF/services/de.uka.ilkd.key.proof.init.DefaultProfileResolver +++ /dev/null @@ -1 +0,0 @@ -de.uka.ilkd.key.symbolic_execution.profile.SymbolicExecutionJavaProfileDefaultProfileResolver \ No newline at end of file diff --git a/key.core.symbolic_execution/src/main/resources/META-INF/services/de.uka.ilkd.key.proof.init.POExtension b/key.core.symbolic_execution/src/main/resources/META-INF/services/de.uka.ilkd.key.proof.init.POExtension deleted file mode 100644 index 1a920fad6fa..00000000000 --- a/key.core.symbolic_execution/src/main/resources/META-INF/services/de.uka.ilkd.key.proof.init.POExtension +++ /dev/null @@ -1,5 +0,0 @@ -# -# Available POExtensions -# - -de.uka.ilkd.key.symbolic_execution.po.TruthValuePOExtension \ No newline at end of file diff --git a/key.core.symbolic_execution/src/main/resources/META-INF/services/de.uka.ilkd.key.proof.init.loader.ProofObligationLoader b/key.core.symbolic_execution/src/main/resources/META-INF/services/de.uka.ilkd.key.proof.init.loader.ProofObligationLoader deleted file mode 100644 index 3abacee7b1f..00000000000 --- a/key.core.symbolic_execution/src/main/resources/META-INF/services/de.uka.ilkd.key.proof.init.loader.ProofObligationLoader +++ /dev/null @@ -1,2 +0,0 @@ -de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPOLoader -de.uka.ilkd.key.symbolic_execution.po.ProgramMethodSubsetPOLoader \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/AbstractSymbolicExecutionTestCase.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/AbstractSymbolicExecutionTestCase.java deleted file mode 100644 index 8926ef9f1f9..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/AbstractSymbolicExecutionTestCase.java +++ /dev/null @@ -1,2370 +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.symbolic_execution.testcase; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.*; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.control.KeYEnvironment; -import de.uka.ilkd.key.java.*; -import de.uka.ilkd.key.java.Services.ITermProgramVariableCollectorFactory; -import de.uka.ilkd.key.java.ast.JavaProgramElement; -import de.uka.ilkd.key.java.ast.Statement; -import de.uka.ilkd.key.java.ast.StatementBlock; -import de.uka.ilkd.key.java.ast.statement.Try; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.Goal; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.TermProgramVariableCollectorKeepUpdatesForBreakpointconditions; -import de.uka.ilkd.key.proof.init.FunctionalOperationContractPO; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.init.ProofOblInput; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.proof.io.ProofSaver; -import de.uka.ilkd.key.settings.ChoiceSettings; -import de.uka.ilkd.key.settings.ProofSettings; -import de.uka.ilkd.key.speclang.Contract; -import de.uka.ilkd.key.speclang.FunctionalOperationContract; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodePreorderIterator; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeReader; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeWriter; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder.SymbolicExecutionCompletions; -import de.uka.ilkd.key.symbolic_execution.model.*; -import de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO; -import de.uka.ilkd.key.symbolic_execution.po.ProgramMethodSubsetPO; -import de.uka.ilkd.key.symbolic_execution.profile.SymbolicExecutionJavaProfile; -import de.uka.ilkd.key.symbolic_execution.strategy.*; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; -import de.uka.ilkd.key.util.HelperClassForTests; -import de.uka.ilkd.key.util.KeYConstants; - -import org.key_project.logic.Choice; -import org.key_project.prover.sequent.Sequent; -import org.key_project.util.collection.DefaultImmutableSet; -import org.key_project.util.collection.ImmutableArray; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.ImmutableSet; -import org.key_project.util.helper.FindResources; -import org.key_project.util.java.CollectionUtil; -import org.key_project.util.java.StringUtil; -import org.key_project.util.parsing.Position; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xml.sax.SAXException; - -import static org.junit.jupiter.api.Assertions.*; - -/** - * Provides the basic functionality of TestCases which tests the symbolic execution features. - * - * @author Martin Hentschel - */ -public abstract class AbstractSymbolicExecutionTestCase { - private static final Logger LOGGER = - LoggerFactory.getLogger(AbstractSymbolicExecutionTestCase.class); - - /** - *

- * If this constant is {@code true} a temporary directory is created with new oracle files. The - * developer has then to copy the new required files into the plug-in so that they are used - * during next test execution. - *

- *

- * Attention: It is strongly required that new test scenarios are verified with the SED - * application. If everything is fine a new test method can be added to this class and the first - * test execution can be used to generate the required oracle file. Existing oracle files should - * only be replaced if the functionality of the Symbolic Execution Debugger has changed so that - * they are outdated. - *

- */ - public static final boolean CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY = - Boolean.getBoolean("UPDATE_TEST_ORACLE"); - - - static { - LOGGER.warn("UPDATE_TEST_ORACLE is set to {}", CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY); - } - - /** - * If the fast mode is enabled the stepwise creation of models is disabled. - */ - public static final boolean FAST_MODE = true; - - /** - * Number of executed SET nodes to execute all in one. - */ - public static final int ALL_IN_ONE_RUN = - ExecutedSymbolicExecutionTreeNodesStopCondition.MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_IN_COMPLETE_RUN; - - /** - * Number of executed SET nodes for only one SET node per auto mode run. - */ - public static final int SINGLE_SET_NODE_RUN = - ExecutedSymbolicExecutionTreeNodesStopCondition.MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_FOR_ONE_STEP; - - /** - * Default stop conditions of executed SET nodes. - */ - public static final int[] DEFAULT_MAXIMAL_SET_NODES_PER_RUN; - - /** - * The used temporary oracle directory. - */ - protected static final File tempNewOracleDirectory; - - /** - * The directory which contains the KeY repository. - */ - public static final Path testCaseDirectory = FindResources.getTestCasesDirectory(); - - static { - assertNotNull(testCaseDirectory, "Could not find test case directory"); - } - - /* - * Creates the temporary oracle directory if required. - */ - static { - // Define fast mode - if (FAST_MODE) { - DEFAULT_MAXIMAL_SET_NODES_PER_RUN = new int[] { ALL_IN_ONE_RUN }; - } else { - DEFAULT_MAXIMAL_SET_NODES_PER_RUN = new int[] { ALL_IN_ONE_RUN, SINGLE_SET_NODE_RUN }; - } - // Create temporary director for oracle files if required. - File directory = null; - try { - if (CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY) { - directory = File.createTempFile("SYMBOLIC_EXECUTION", "ORACLE_DIRECTORY"); - if (System.getProperty("ORACLE_DIRECTORY") != null - && !System.getProperty("ORACLE_DIRECTORY").isBlank()) { - directory = new File(System.getProperty("ORACLE_DIRECTORY")); - } - LOGGER.warn("Create oracle files in {}", directory); - directory.delete(); - directory.mkdirs(); - } - } catch (IOException e) { - } - tempNewOracleDirectory = directory; - } - - /** - * Creates a new oracle file. - * - * @param node The node to save as oracle file. - * @param oraclePathInBaseDirFile The path in example directory. - * @param saveConstraints Save constraints? - * @param saveVariables Save variables? - * @param saveCallStack Save call stack? - * @param saveReturnValues Save method return values? - * @throws IOException Occurred Exception - * @throws ProofInputException Occurred Exception - */ - protected static void createOracleFile(IExecutionNode node, String oraclePathInBaseDirFile, - boolean saveConstraints, boolean saveVariables, boolean saveCallStack, - boolean saveReturnValues) throws IOException, ProofInputException { - if (tempNewOracleDirectory != null && tempNewOracleDirectory.isDirectory()) { - // Create sub folder structure - File oracleFile = new File(tempNewOracleDirectory, oraclePathInBaseDirFile); - oracleFile.getParentFile().mkdirs(); - // Create oracle file - ExecutionNodeWriter writer = new ExecutionNodeWriter(); - writer.write(node, ExecutionNodeWriter.DEFAULT_ENCODING, oracleFile, saveVariables, - saveCallStack, saveReturnValues, saveConstraints); - // Print message to the user. - printOracleDirectory(); - } - } - - /** - * Prints {@link #tempNewOracleDirectory} to the user via {@link System#out}. - */ - protected static void printOracleDirectory() { - if (tempNewOracleDirectory != null) { - final String HEADER_LINE = "Oracle Directory is:"; - final String PREFIX = "### "; - final String SUFFIX = " ###"; - String path = tempNewOracleDirectory.toString(); - int length = Math.max(path.length(), HEADER_LINE.length()); - String borderLines = StringUtil.repeat("#", PREFIX.length() + length + SUFFIX.length()); - LOGGER.info(borderLines); - LOGGER.info(PREFIX + HEADER_LINE + StringUtil.repeat(" ", length - HEADER_LINE.length()) - + SUFFIX); - LOGGER.info(PREFIX + path + StringUtil.repeat(" ", length - path.length()) + SUFFIX); - LOGGER.info(borderLines); - } - } - - /** - * Makes sure that the given nodes and their subtrees contains the same content. - * - * @param expected The expected {@link IExecutionNode}. - * @param current The current {@link IExecutionNode}. - * @param compareVariables Compare variables? - * @param compareCallStack Compare call stack? - * @param compareChildOrder Is the order of children relevant? - * @param compareReturnValues Compare return values? - * @param compareConstraints Compare constraints? - * @throws ProofInputException Occurred Exception. - */ - public static void assertExecutionNodes(IExecutionNode expected, IExecutionNode current, - boolean compareVariables, boolean compareCallStack, boolean compareChildOrder, - boolean compareReturnValues, boolean compareConstraints) throws ProofInputException { - if (compareChildOrder) { - // Order of children must be the same. - ExecutionNodePreorderIterator expectedExecutionTreeNodeIterator = - new ExecutionNodePreorderIterator(expected); - ExecutionNodePreorderIterator actualExecutionTreeNodeIterator = - new ExecutionNodePreorderIterator(current); - while (expectedExecutionTreeNodeIterator.hasNext() - && actualExecutionTreeNodeIterator.hasNext()) { - IExecutionNode expectedNext = expectedExecutionTreeNodeIterator.next(); - IExecutionNode currentNext = actualExecutionTreeNodeIterator.next(); - assertExecutionNode(expectedNext, currentNext, true, compareVariables, - compareCallStack, compareReturnValues, compareConstraints); - } - assertFalse(expectedExecutionTreeNodeIterator.hasNext()); - assertFalse(actualExecutionTreeNodeIterator.hasNext()); - } else { - // Order of children is not relevant. - ExecutionNodePreorderIterator expectedExecutionTreeNodeIterator = - new ExecutionNodePreorderIterator(expected); - Set> currentVisitedNodes = new LinkedHashSet<>(); - while (expectedExecutionTreeNodeIterator.hasNext()) { - IExecutionNode expectedNext = expectedExecutionTreeNodeIterator.next(); - IExecutionNode currentNext = searchExecutionNode(current, expectedNext); - if (!currentVisitedNodes.add(currentNext)) { - fail("Node " + currentNext + " visited twice."); - } - assertExecutionNode(expectedNext, currentNext, true, compareVariables, - compareCallStack, compareReturnValues, compareConstraints); - } - // Make sure that each current node was visited - ExecutionNodePreorderIterator actualExecutionTreeNodeIterator = - new ExecutionNodePreorderIterator(current); - while (actualExecutionTreeNodeIterator.hasNext()) { - IExecutionNode currentNext = actualExecutionTreeNodeIterator.next(); - if (!currentVisitedNodes.remove(currentNext)) { - fail("Node " + currentNext + " is not in expected model."); - } - } - assertTrue(currentVisitedNodes.isEmpty()); - } - } - - /** - * Searches the direct or indirect child in subtree of the node to search in. - * - * @param toSearchIn The node to search in. - * @param childToSearch The node to search. - * @return The found node. - * @throws ProofInputException Occurred Exception. - */ - protected static IExecutionNode searchExecutionNode(IExecutionNode toSearchIn, - IExecutionNode childToSearch) throws ProofInputException { - // Make sure that parameters are valid - assertNotNull(toSearchIn); - assertNotNull(childToSearch); - // Collect parents - Deque> parents = new LinkedList<>(); - IExecutionNode parent = childToSearch; - while (parent != null) { - parents.addFirst(parent); - parent = parent.getParent(); - } - // Search children in parent order - boolean afterFirst = false; - for (IExecutionNode currentParent : parents) { - if (afterFirst) { - toSearchIn = searchDirectChildNode(toSearchIn, currentParent); - } else { - afterFirst = true; - } - } - assertNotNull(toSearchIn, "Direct or indirect Child " + childToSearch - + " is not contained in " + toSearchIn + "."); - return toSearchIn; - } - - /** - * Searches the direct child. Nodes are equal if the name and the element type is equal. - * - * @param parentToSearchIn The parent to search in its children. - * @param directChildToSearch The child to search. - * @return The found child. - * @throws ProofInputException Occurred Exception. - */ - protected static IExecutionNode searchDirectChildNode(IExecutionNode parentToSearchIn, - IExecutionNode directChildToSearch) throws ProofInputException { - // Make sure that parameters are valid - assertNotNull(parentToSearchIn); - assertNotNull(directChildToSearch); - // Search child - IExecutionNode result = null; - int i = 0; - IExecutionNode[] children = parentToSearchIn.getChildren(); - while (result == null && i < children.length) { - if (children[i] instanceof IExecutionBranchCondition - && directChildToSearch instanceof IExecutionBranchCondition) { - if (StringUtil - .equalIgnoreWhiteSpace(children[i].getName(), directChildToSearch.getName()) - && StringUtil.equalIgnoreWhiteSpace( - ((IExecutionBranchCondition) children[i]).getAdditionalBranchLabel(), - ((IExecutionBranchCondition) directChildToSearch) - .getAdditionalBranchLabel()) - && children[i].getElementType() - .equals(directChildToSearch.getElementType())) { - result = children[i]; - } - } else { - if (StringUtil - .equalIgnoreWhiteSpace(children[i].getName(), directChildToSearch.getName()) - && children[i].getElementType() - .equals(directChildToSearch.getElementType())) { - result = children[i]; - } - } - i++; - } - assertNotNull(result, - "Child " + directChildToSearch + " is not contained in " + parentToSearchIn + "."); - return result; - } - - /** - * Makes sure that the given nodes contains the same content. Children are not compared. - * - * @param expected The expected {@link IExecutionNode}. - * @param current The current {@link IExecutionNode}. - * @param compareParent Compare also the parent node? - * @param compareVariables Compare variables? - * @param compareCallStack Compare call stack? - * @param compareReturnValues Compare return values? - * @param compareConstraints Compare constraints? - * @throws ProofInputException Occurred Exception. - */ - protected static void assertExecutionNode(IExecutionNode expected, IExecutionNode current, - boolean compareParent, boolean compareVariables, boolean compareCallStack, - boolean compareReturnValues, boolean compareConstraints) throws ProofInputException { - // Compare nodes - assertNotNull(expected); - assertNotNull(current); - assertTrue(StringUtil.equalIgnoreWhiteSpace(expected.getName(), current.getName()), - "Expected \"" + expected.getName() + "\" but is \"" + current.getName() + "\"."); - assertEquals(expected.isPathConditionChanged(), current.isPathConditionChanged()); - if (!StringUtil.equalIgnoreWhiteSpace(expected.getFormatedPathCondition(), - current.getFormatedPathCondition())) { - assertEquals(expected.getFormatedPathCondition(), current.getFormatedPathCondition()); - } - if (compareParent) { - if (expected instanceof IExecutionBlockStartNode) { - assertInstanceOf(IExecutionBlockStartNode.class, current); - assertEquals(((IExecutionBlockStartNode) expected).isBlockOpened(), - ((IExecutionBlockStartNode) current).isBlockOpened()); - assertBlockCompletions((IExecutionBlockStartNode) expected, - (IExecutionBlockStartNode) current); - } - assertCompletedBlocks(expected, current); - assertOutgoingLinks(expected, current); - assertIncomingLinks(expected, current); - } - if (expected instanceof IExecutionBaseMethodReturn) { - assertInstanceOf(IExecutionBaseMethodReturn.class, current); - assertCallStateVariables((IExecutionBaseMethodReturn) expected, - (IExecutionBaseMethodReturn) current, compareVariables, compareConstraints); - } - if (expected instanceof IExecutionBranchCondition) { - assertInstanceOf(IExecutionBranchCondition.class, current, - "Expected IExecutionBranchCondition but is " + current.getClass() + "."); - assertTrue( - StringUtil.equalIgnoreWhiteSpace( - ((IExecutionBranchCondition) expected).getFormatedBranchCondition(), - ((IExecutionBranchCondition) current).getFormatedBranchCondition()), - "Expected \"" + ((IExecutionBranchCondition) expected).getFormatedBranchCondition() - + "\" but is \"" - + ((IExecutionBranchCondition) current).getFormatedBranchCondition() + "\"."); - assertEquals(((IExecutionBranchCondition) expected).isMergedBranchCondition(), - ((IExecutionBranchCondition) current).isMergedBranchCondition()); - assertEquals(((IExecutionBranchCondition) expected).isBranchConditionComputed(), - ((IExecutionBranchCondition) current).isBranchConditionComputed()); - assertTrue( - StringUtil.equalIgnoreWhiteSpace( - ((IExecutionBranchCondition) expected).getAdditionalBranchLabel(), - ((IExecutionBranchCondition) current).getAdditionalBranchLabel()), - "Expected \"" + ((IExecutionBranchCondition) expected).getAdditionalBranchLabel() - + "\" but is \"" - + ((IExecutionBranchCondition) current).getAdditionalBranchLabel() + "\"."); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else if (expected instanceof IExecutionStart) { - assertInstanceOf(IExecutionStart.class, current, "Expected IExecutionStartNode but is " - + current.getClass() + "."); - assertTerminations((IExecutionStart) expected, (IExecutionStart) current); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else if (expected instanceof IExecutionTermination) { - assertInstanceOf(IExecutionTermination.class, current, - "Expected IExecutionTermination but is " - + current.getClass() + "."); - assertEquals(((IExecutionTermination) expected).getTerminationKind(), - ((IExecutionTermination) current).getTerminationKind()); - assertEquals(((IExecutionTermination) expected).isBranchVerified(), - ((IExecutionTermination) current).isBranchVerified()); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else if (expected instanceof IExecutionBranchStatement) { - assertInstanceOf(IExecutionBranchStatement.class, current, - "Expected IExecutionBranchStatement but is " - + current.getClass() + "."); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else if (expected instanceof IExecutionLoopCondition) { - assertInstanceOf(IExecutionLoopCondition.class, current, - "Expected IExecutionLoopCondition but is " - + current.getClass() + "."); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else if (expected instanceof IExecutionLoopStatement) { - assertInstanceOf(IExecutionLoopStatement.class, current, - "Expected IExecutionLoopStatement but is " - + current.getClass() + "."); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else if (expected instanceof IExecutionMethodCall) { - assertInstanceOf(IExecutionMethodCall.class, current, - "Expected IExecutionMethodCall but is " - + current.getClass() + "."); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - assertMethodReturns((IExecutionMethodCall) expected, (IExecutionMethodCall) current); - } else if (expected instanceof IExecutionMethodReturn) { - assertInstanceOf(IExecutionMethodReturn.class, current, - "Expected IExecutionMethodReturn but is " - + current.getClass() + "."); - assertTrue( - StringUtil.equalIgnoreWhiteSpace(((IExecutionMethodReturn) expected).getSignature(), - ((IExecutionMethodReturn) current).getSignature()), - ((IExecutionMethodReturn) expected).getSignature() + " does not match " - + ((IExecutionMethodReturn) current).getSignature()); - if (compareReturnValues) { - assertTrue( - StringUtil.equalIgnoreWhiteSpace( - ((IExecutionMethodReturn) expected).getNameIncludingReturnValue(), - ((IExecutionMethodReturn) current).getNameIncludingReturnValue()), - ((IExecutionMethodReturn) expected).getNameIncludingReturnValue() - + " does not match " - + ((IExecutionMethodReturn) current).getNameIncludingReturnValue()); - assertTrue( - StringUtil.equalIgnoreWhiteSpace( - ((IExecutionMethodReturn) expected).getSignatureIncludingReturnValue(), - ((IExecutionMethodReturn) current).getSignatureIncludingReturnValue()), - ((IExecutionMethodReturn) expected).getSignatureIncludingReturnValue() - + " does not match " - + ((IExecutionMethodReturn) current).getSignatureIncludingReturnValue()); - assertEquals(((IExecutionMethodReturn) expected).isReturnValuesComputed(), - ((IExecutionMethodReturn) current).isReturnValuesComputed()); - } - assertTrue( - StringUtil.equalIgnoreWhiteSpace( - ((IExecutionMethodReturn) expected).getFormattedMethodReturnCondition(), - ((IExecutionMethodReturn) current).getFormattedMethodReturnCondition()), - ((IExecutionMethodReturn) expected).getFormattedMethodReturnCondition() - + " does not match " - + ((IExecutionMethodReturn) current).getFormattedMethodReturnCondition()); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - if (compareReturnValues) { - assertReturnValues(((IExecutionMethodReturn) expected).getReturnValues(), - ((IExecutionMethodReturn) current).getReturnValues()); - } - } else if (expected instanceof IExecutionExceptionalMethodReturn) { - assertInstanceOf(IExecutionExceptionalMethodReturn.class, current, - "Expected IExecutionExceptionalMethodReturn but is " - + current.getClass() + "."); - assertTrue( - StringUtil.equalIgnoreWhiteSpace( - ((IExecutionExceptionalMethodReturn) expected).getSignature(), - ((IExecutionExceptionalMethodReturn) current).getSignature()), - ((IExecutionExceptionalMethodReturn) expected).getSignature() + " does not match " - + ((IExecutionExceptionalMethodReturn) current).getSignature()); - assertTrue(StringUtil.equalIgnoreWhiteSpace( - ((IExecutionExceptionalMethodReturn) expected).getFormattedMethodReturnCondition(), - ((IExecutionExceptionalMethodReturn) current).getFormattedMethodReturnCondition()), - ((IExecutionExceptionalMethodReturn) expected).getFormattedMethodReturnCondition() - + " does not match " + ((IExecutionExceptionalMethodReturn) current) - .getFormattedMethodReturnCondition()); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else if (expected instanceof IExecutionStatement) { - assertInstanceOf(IExecutionStatement.class, current, - "Expected IExecutionStatement but is " - + current.getClass() + "."); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else if (expected instanceof IExecutionOperationContract) { - assertInstanceOf(IExecutionOperationContract.class, current, - "Expected IExecutionOperationContract but is " - + current.getClass() + "."); - assertEquals(((IExecutionOperationContract) expected).isPreconditionComplied(), - ((IExecutionOperationContract) current).isPreconditionComplied()); - assertEquals(((IExecutionOperationContract) expected).hasNotNullCheck(), - ((IExecutionOperationContract) current).hasNotNullCheck()); - assertEquals(((IExecutionOperationContract) expected).isNotNullCheckComplied(), - ((IExecutionOperationContract) current).isNotNullCheckComplied()); - assertEquals(((IExecutionOperationContract) expected).getFormatedResultTerm(), - ((IExecutionOperationContract) current).getFormatedResultTerm()); - assertEquals(((IExecutionOperationContract) expected).getFormatedExceptionTerm(), - ((IExecutionOperationContract) current).getFormatedExceptionTerm()); - assertEquals(((IExecutionOperationContract) expected).getFormatedSelfTerm(), - ((IExecutionOperationContract) current).getFormatedSelfTerm()); - assertEquals(((IExecutionOperationContract) expected).getFormatedContractParams(), - ((IExecutionOperationContract) current).getFormatedContractParams()); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else if (expected instanceof IExecutionLoopInvariant) { - assertInstanceOf(IExecutionLoopInvariant.class, current, - "Expected IExecutionLoopInvariant but is " - + current.getClass() + "."); - assertEquals(((IExecutionLoopInvariant) expected).isInitiallyValid(), - ((IExecutionLoopInvariant) current).isInitiallyValid()); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else if (expected instanceof IExecutionAuxiliaryContract) { - assertInstanceOf(IExecutionAuxiliaryContract.class, current, - "Expected IExecutionBlockContract but is " - + current.getClass() + "."); - assertEquals(((IExecutionAuxiliaryContract) expected).isPreconditionComplied(), - ((IExecutionAuxiliaryContract) current).isPreconditionComplied()); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else if (expected instanceof IExecutionJoin) { - assertInstanceOf(IExecutionJoin.class, current, "Expected IExecutionJoin but is " - + current.getClass() + "."); - assertEquals(((IExecutionJoin) expected).isWeakeningVerified(), - ((IExecutionJoin) current).isWeakeningVerified()); - assertVariables(expected, current, compareVariables, compareConstraints); - assertConstraints(expected, current, compareConstraints); - } else { - fail("Unknown execution node \"" + expected + "\"."); - } - // Optionally compare call stack - if (compareCallStack) { - IExecutionNode[] expectedStack = expected.getCallStack(); - IExecutionNode[] currentStack = current.getCallStack(); - if (expectedStack != null) { - assertNotNull(currentStack, - "Call stack of \"" + current + "\" should not be null."); - assertEquals(expectedStack.length, currentStack.length, "Node: " + expected); - for (int i = 0; i < expectedStack.length; i++) { - assertExecutionNode(expectedStack[i], currentStack[i], false, false, false, - false, false); - } - } else { - assertTrue(currentStack == null || currentStack.length == 0, - "Call stack of \"" + current + "\" is \"" + Arrays.toString(currentStack) - + "\" but should be null or empty."); - } - } - // Optionally compare parent - if (compareParent) { - assertExecutionNode(expected, current, false, compareVariables, compareCallStack, - compareReturnValues, compareConstraints); - } - } - - /** - * Compares the outgoing links. - * - * @param expected The expected {@link IExecutionNode}. - * @param current The current {@link IExecutionNode}. - * @throws ProofInputException Occurred Exception. - */ - protected static void assertOutgoingLinks(IExecutionNode expected, IExecutionNode current) - throws ProofInputException { - ImmutableList expectedEntries = expected.getOutgoingLinks(); - ImmutableList currentEntries = current.getOutgoingLinks(); - if (expectedEntries != null) { - assertNotNull(currentEntries, - "Outgoing links of \"" + current + "\" should not be null."); - assertEquals(expectedEntries.size(), currentEntries.size(), - "Outgoing links: " + expected); - Iterator expectedExecutionTreeNodeIterator = expectedEntries.iterator(); - Iterator actualExecutionTreeNodeIterator = currentEntries.iterator(); - while (expectedExecutionTreeNodeIterator.hasNext() - && actualExecutionTreeNodeIterator.hasNext()) { - IExecutionLink expectedNext = expectedExecutionTreeNodeIterator.next(); - IExecutionLink currentNext = actualExecutionTreeNodeIterator.next(); - assertExecutionNode(expectedNext.getSource(), currentNext.getSource(), false, false, - false, false, false); - assertExecutionNode(expectedNext.getTarget(), currentNext.getTarget(), false, false, - false, false, false); - } - assertFalse(expectedExecutionTreeNodeIterator.hasNext()); - assertFalse(actualExecutionTreeNodeIterator.hasNext()); - } else { - assertTrue(currentEntries == null || currentEntries.isEmpty(), "Outgoing links of \"" - + current + "\" is \"" + currentEntries + "\" but should be null or empty."); - } - } - - /** - * Compares the incoming links. - * - * @param expected The expected {@link IExecutionNode}. - * @param current The current {@link IExecutionNode}. - * @throws ProofInputException Occurred Exception. - */ - protected static void assertIncomingLinks(IExecutionNode expected, IExecutionNode current) - throws ProofInputException { - ImmutableList expectedEntries = expected.getIncomingLinks(); - ImmutableList currentEntries = current.getIncomingLinks(); - if (expectedEntries != null) { - assertNotNull(currentEntries, - "Incoming links of \"" + current + "\" should not be null."); - assertEquals(expectedEntries.size(), currentEntries.size(), - "Incoming links: " + expected); - Iterator expectedExecutionTreeNodeIterator = expectedEntries.iterator(); - Iterator actualExecutionTreeNodeIterator = currentEntries.iterator(); - while (expectedExecutionTreeNodeIterator.hasNext() - && actualExecutionTreeNodeIterator.hasNext()) { - IExecutionLink expectedNext = expectedExecutionTreeNodeIterator.next(); - IExecutionLink currentNext = actualExecutionTreeNodeIterator.next(); - assertExecutionNode(expectedNext.getSource(), currentNext.getSource(), false, false, - false, false, false); - assertExecutionNode(expectedNext.getTarget(), currentNext.getTarget(), false, false, - false, false, false); - } - assertFalse(expectedExecutionTreeNodeIterator.hasNext()); - assertFalse(actualExecutionTreeNodeIterator.hasNext()); - } else { - assertTrue(currentEntries == null || currentEntries.isEmpty(), "Incoming links of \"" - + current + "\" is \"" + currentEntries + "\" but should be null or empty."); - } - } - - /** - * Compares the completed blocks. - * - * @param expected The expected {@link IExecutionNode}. - * @param current The current {@link IExecutionNode}. - * @throws ProofInputException Occurred Exception. - */ - protected static void assertCompletedBlocks(IExecutionNode expected, - IExecutionNode current) throws ProofInputException { - ImmutableList> expectedEntries = expected.getCompletedBlocks(); - ImmutableList> currentEntries = current.getCompletedBlocks(); - if (expectedEntries != null) { - assertNotNull(currentEntries, - "Completed blocks of \"" + current + "\" should not be null."); - assertEquals(expectedEntries.size(), currentEntries.size(), "Node: " + expected); - Iterator> expectedExecutionTreeNodeIterator = - expectedEntries.iterator(); - Iterator> actualExecutionTreeNodeIterator = - currentEntries.iterator(); - while (expectedExecutionTreeNodeIterator.hasNext() - && actualExecutionTreeNodeIterator.hasNext()) { - IExecutionBlockStartNode expectedNext = expectedExecutionTreeNodeIterator.next(); - IExecutionBlockStartNode currentNext = actualExecutionTreeNodeIterator.next(); - assertExecutionNode(expectedNext, currentNext, false, false, - false, false, false); - String expectedCondition = - expected.getFormatedBlockCompletionCondition(expectedNext); - String currentCondition = current.getFormatedBlockCompletionCondition(currentNext); - if (!StringUtil.equalIgnoreWhiteSpace(expectedCondition, currentCondition)) { - assertEquals(expectedCondition, currentCondition); - } - } - assertFalse(expectedExecutionTreeNodeIterator.hasNext()); - assertFalse(actualExecutionTreeNodeIterator.hasNext()); - } else { - assertTrue(currentEntries == null || currentEntries.isEmpty(), - "Completed block entries of \"" + current + "\" is \"" + currentEntries - + "\" but should be null or empty."); - } - } - - /** - * Compares the block completions. - * - * @param expected The expected {@link IExecutionBlockStartNode}. - * @param current The current {@link IExecutionBlockStartNode}. - * @throws ProofInputException Occurred Exception. - */ - protected static void assertBlockCompletions(IExecutionBlockStartNode expected, - IExecutionBlockStartNode current) throws ProofInputException { - ImmutableList> expectedEntries = expected.getBlockCompletions(); - ImmutableList> currentEntries = current.getBlockCompletions(); - if (expectedEntries != null) { - assertNotNull(currentEntries, - "Block completions of \"" + current + "\" should not be null."); - assertEquals(expectedEntries.size(), currentEntries.size(), "Node: " + expected); - Iterator> expectedExecutionTreeNodeIterator = - expectedEntries.iterator(); - Iterator> actualExecutionTreeNodeIterator = currentEntries.iterator(); - while (expectedExecutionTreeNodeIterator.hasNext() - && actualExecutionTreeNodeIterator.hasNext()) { - assertExecutionNode(expectedExecutionTreeNodeIterator.next(), - actualExecutionTreeNodeIterator.next(), - false, false, false, - false, false); - } - assertFalse(expectedExecutionTreeNodeIterator.hasNext()); - assertFalse(actualExecutionTreeNodeIterator.hasNext()); - } else { - assertTrue(currentEntries == null || currentEntries.isEmpty(), - "Block completion entries of \"" + current + "\" is \"" + currentEntries - + "\" but should be null or empty."); - } - } - - /** - * Compares the method returns. - * - * @param expected The expected {@link IExecutionMethodCall}. - * @param current The current {@link IExecutionMethodCall}. - * @throws ProofInputException Occurred Exception. - */ - protected static void assertMethodReturns(IExecutionMethodCall expected, - IExecutionMethodCall current) throws ProofInputException { - ImmutableList> expectedEntries = expected.getMethodReturns(); - ImmutableList> currentEntries = current.getMethodReturns(); - if (expectedEntries != null) { - assertNotNull(currentEntries, - "Method return of \"" + current + "\" should not be null."); - assertEquals(expectedEntries.size(), currentEntries.size(), "Node: " + expected); - Iterator> expectedExecutionTreeNodeIterator = - expectedEntries.iterator(); - Iterator> actualExecutionTreeNodeIterator = - currentEntries.iterator(); - while (expectedExecutionTreeNodeIterator.hasNext() - && actualExecutionTreeNodeIterator.hasNext()) { - assertExecutionNode(expectedExecutionTreeNodeIterator.next(), - actualExecutionTreeNodeIterator.next(), - false, false, false, - false, false); - } - assertFalse(expectedExecutionTreeNodeIterator.hasNext()); - assertFalse(actualExecutionTreeNodeIterator.hasNext()); - } else { - assertTrue(currentEntries == null || currentEntries.isEmpty(), - "Method return entries of \"" + current + "\" is \"" + currentEntries - + "\" but should be null or empty."); - } - } - - /** - * Compares the terminations. - * - * @param expected The expected {@link IExecutionStart}. - * @param current The current {@link IExecutionStart}. - * @throws ProofInputException Occurred Exception. - */ - protected static void assertTerminations(IExecutionStart expected, IExecutionStart current) - throws ProofInputException { - ImmutableList expectedEntries = expected.getTerminations(); - ImmutableList currentEntries = current.getTerminations(); - if (expectedEntries != null) { - assertNotNull(currentEntries, "Termination of \"" + current + "\" should not be null."); - assertEquals(expectedEntries.size(), currentEntries.size(), "Node: " + expected); - Iterator expectedExecutionTreeNodeIterator = - expectedEntries.iterator(); - Iterator actualExecutionTreeNodeIterator = - currentEntries.iterator(); - while (expectedExecutionTreeNodeIterator.hasNext() - && actualExecutionTreeNodeIterator.hasNext()) { - assertExecutionNode(expectedExecutionTreeNodeIterator.next(), - actualExecutionTreeNodeIterator.next(), - false, false, false, - false, false); - } - assertFalse(expectedExecutionTreeNodeIterator.hasNext()); - assertFalse(actualExecutionTreeNodeIterator.hasNext()); - } else { - assertTrue(currentEntries == null || currentEntries.isEmpty(), - "Termination entries of \"" + current + "\" is \"" + currentEntries - + "\" but should be null or empty."); - } - } - - /** - * Makes sure that the given nodes contains the same {@link IExecutionMethodReturnValue}s. - * - * @param expected The expected {@link IExecutionMethodReturnValue}s. - * @param current The current {@link IExecutionMethodReturnValue}s. - * @throws ProofInputException Occurred Exception. - */ - protected static void assertReturnValues(IExecutionMethodReturnValue[] expected, - IExecutionMethodReturnValue[] current) throws ProofInputException { - assertNotNull(expected); - assertNotNull(current); - assertEquals(expected.length, current.length); - for (int i = 0; i < expected.length; i++) { - assertReturnValue(expected[i], current[i]); - } - } - - /** - * Makes sure that the given {@link IExecutionMethodReturnValue}s are the same. - * - * @param expected The expected {@link IExecutionMethodReturnValue}. - * @param current The current {@link IExecutionMethodReturnValue}. - * @throws ProofInputException Occurred Exception. - */ - protected static void assertReturnValue(IExecutionMethodReturnValue expected, - IExecutionMethodReturnValue current) throws ProofInputException { - assertNotNull(expected); - assertNotNull(current); - assertTrue(StringUtil.equalIgnoreWhiteSpace(expected.getName(), current.getName()), - expected.getName() + " does not match " + current.getName()); - assertTrue( - StringUtil.equalIgnoreWhiteSpace(expected.getReturnValueString(), - current.getReturnValueString()), - expected.getReturnValueString() + " does not match " + current.getReturnValueString()); - assertEquals(expected.hasCondition(), current.hasCondition()); - assertTrue( - StringUtil.equalIgnoreWhiteSpace(expected.getConditionString(), - current.getConditionString()), - expected.getConditionString() + " does not match " + current.getConditionString()); - } - - /** - * Makes sure that the given nodes contains the same {@link IExecutionNode}s. - * - * @param expected The expected node. - * @param current The current node. - * @param compareConstraints Compare constraints? - * @throws ProofInputException Occurred Exception. - */ - protected static void assertConstraints(IExecutionNode expected, IExecutionNode current, - boolean compareConstraints) throws ProofInputException { - if (compareConstraints) { - assertNotNull(expected); - assertNotNull(current); - IExecutionConstraint[] expectedVariables = expected.getConstraints(); - IExecutionConstraint[] currentVariables = current.getConstraints(); - assertConstraints(expectedVariables, currentVariables); - } - } - - /** - * Makes sure that the given constraints are the same. - * - * @param expected The expected constraints. - * @param current The current constraints. - * @throws ProofInputException Occurred Exception. - */ - protected static void assertConstraints(IExecutionConstraint[] expected, - IExecutionConstraint[] current) throws ProofInputException { - assertEquals(expected.length, current.length); - // Compare ignore order - List availableCurrentVariables = - new ArrayList<>(Arrays.asList(current)); - for (final IExecutionConstraint expectedVariable : expected) { - // Find current variable with same name - IExecutionConstraint currentVariable = CollectionUtil.searchAndRemove( - availableCurrentVariables, element -> { - try { - return StringUtil.equalIgnoreWhiteSpace(expectedVariable.getName(), - element.getName()); - } catch (ProofInputException e) { - throw new RuntimeException(e); - } - }); - assertNotNull(currentVariable); - // Compare variables - assertConstraint(expectedVariable, currentVariable); - } - assertTrue(availableCurrentVariables.isEmpty()); - } - - /** - * Makes sure that the given constraints are the same. - * - * @param expected The expected constraint. - * @param current The current constraint. - * @throws ProofInputException Occurred Exception. - */ - protected static void assertConstraint(IExecutionConstraint expected, - IExecutionConstraint current) throws ProofInputException { - if (expected != null) { - assertNotNull(current); - if (!StringUtil.equalIgnoreWhiteSpace(expected.getName(), current.getName())) { - assertEquals(expected.getName(), current.getName()); - } - } else { - assertNull(current); - } - } - - /** - * Makes sure that the given nodes contains the same {@link IExecutionVariable}s of the call - * state. - * - * @param expected The expected node. - * @param current The current node. - * @param compareVariables Compare variables? - * @param compareConstraints Compare constraints? - * @throws ProofInputException Occurred Exception. - */ - protected static void assertCallStateVariables(IExecutionBaseMethodReturn expected, - IExecutionBaseMethodReturn current, boolean compareVariables, - boolean compareConstraints) throws ProofInputException { - if (compareVariables) { - assertNotNull(expected); - assertNotNull(current); - IExecutionVariable[] expectedVariables = expected.getCallStateVariables(); - IExecutionVariable[] currentVariables = current.getCallStateVariables(); - assertVariables(expectedVariables, currentVariables, true, true, compareConstraints); - } - } - - /** - * Makes sure that the given nodes contains the same {@link IExecutionVariable}s. - * - * @param expected The expected node. - * @param current The current node. - * @param compareVariables Compare variables? - * @param compareConstraints Compare constraints? - * @throws ProofInputException Occurred Exception. - */ - protected static void assertVariables(IExecutionNode expected, IExecutionNode current, - boolean compareVariables, boolean compareConstraints) throws ProofInputException { - if (compareVariables) { - assertNotNull(expected); - assertNotNull(current); - IExecutionVariable[] expectedVariables = expected.getVariables(); - IExecutionVariable[] currentVariables = current.getVariables(); - assertVariables(expectedVariables, currentVariables, true, true, compareConstraints); - } - } - - /** - * Makes sure that the given variables are the same. - * - * @param expected The expected variables. - * @param current The current variables. - * @param compareParent Compare parent? - * @param compareChildren Compare children? - * @param compareConstraints Compare constraints? - * @throws ProofInputException Occurred Exception. - */ - protected static void assertVariables(IExecutionVariable[] expected, - IExecutionVariable[] current, boolean compareParent, boolean compareChildren, - boolean compareConstraints) throws ProofInputException { - assertEquals(expected.length, current.length); - // Compare ignore order - List availableCurrentVariables = - new ArrayList<>(Arrays.asList(current)); - for (final IExecutionVariable expectedVariable : expected) { - // Find current variable with same name - IExecutionVariable currentVariable = CollectionUtil - .searchAndRemove(availableCurrentVariables, element -> { - try { - return StringUtil.equalIgnoreWhiteSpace(expectedVariable.getName(), - element.getName()); - } catch (ProofInputException e) { - throw new RuntimeException(e); - } - }); - assertNotNull(currentVariable); - // Compare variables - assertVariable(expectedVariable, currentVariable, compareParent, compareChildren, - compareConstraints); - } - assertTrue(availableCurrentVariables.isEmpty()); - } - - /** - * Makes sure that the given variables are the same. - * - * @param expected The expected variable. - * @param current The current variable. - * @param compareParent Compare parent? - * @param compareChildren Compare children? - * @param compareConstraints Compare constraints? - * @throws ProofInputException Occurred Exception. - */ - protected static void assertVariable(IExecutionVariable expected, IExecutionVariable current, - boolean compareParent, boolean compareChildren, boolean compareConstraints) - throws ProofInputException { - if (expected != null) { - assertNotNull(current); - // Compare variable - assertEquals(expected.isArrayIndex(), current.isArrayIndex()); - assertEquals(expected.getArrayIndexString(), current.getArrayIndexString()); - assertEquals(expected.getName(), current.getName()); - // Compare parent - if (compareParent) { - assertValue(expected.getParentValue(), current.getParentValue(), false, false, - false); - } - // Compare children - if (compareChildren) { - IExecutionValue[] expectedValues = expected.getValues(); - IExecutionValue[] currentValues = current.getValues(); - assertValues(expectedValues, currentValues, true, true, compareConstraints); - } - } else { - assertNull(current); - } - } - - /** - * Makes sure that the given values are the same. - * - * @param expected The expected values. - * @param current The current values. - * @param compareParent Compare parent? - * @param compareChildren Compare children? - * @param compareConstraints Compare constraints? - * @throws ProofInputException Occurred Exception. - */ - protected static void assertValues(IExecutionValue[] expected, IExecutionValue[] current, - boolean compareParent, boolean compareChildren, boolean compareConstraints) - throws ProofInputException { - assertEquals(expected.length, current.length); - // Compare ignore order - List availableCurrentVariables = new ArrayList<>(Arrays.asList(current)); - for (final IExecutionValue expectedVariable : expected) { - // Find current variable with same name - IExecutionValue currentVariable = CollectionUtil - .searchAndRemove(availableCurrentVariables, element -> { - try { - return StringUtil.equalIgnoreWhiteSpace(expectedVariable.getName(), - element.getName()) - && StringUtil.equalIgnoreWhiteSpace( - expectedVariable.getConditionString(), - element.getConditionString()); - } catch (ProofInputException e) { - throw new RuntimeException(e); - } - }); - assertNotNull(currentVariable); - // Compare variables - assertValue(expectedVariable, currentVariable, compareParent, compareChildren, - compareConstraints); - } - assertTrue(availableCurrentVariables.isEmpty()); - } - - /** - * Makes sure that the given values are the same. - * - * @param expected The expected variable. - * @param current The current variable. - * @param compareParent Compare parent? - * @param compareChildren Compare children? - * @param compareConstraints Compare constraints? - * @throws ProofInputException Occurred Exception. - */ - protected static void assertValue(IExecutionValue expected, IExecutionValue current, - boolean compareParent, boolean compareChildren, boolean compareConstraints) - throws ProofInputException { - if (expected != null) { - assertNotNull(current); - // Compare variable - assertTrue(StringUtil.equalIgnoreWhiteSpace(expected.getName(), current.getName()), - expected.getName() + " does not match " + current.getName()); - assertEquals(expected.getTypeString(), current.getTypeString()); - assertTrue( - StringUtil.equalIgnoreWhiteSpace(expected.getValueString(), - current.getValueString()), - expected.getValueString() + " does not match " + current.getValueString()); - assertEquals(expected.isValueAnObject(), current.isValueAnObject()); - assertEquals(expected.isValueUnknown(), current.isValueUnknown()); - assertTrue( - StringUtil.equalIgnoreWhiteSpace(expected.getConditionString(), - current.getConditionString()), - expected.getConditionString() + " does not match " + current.getConditionString()); - // Compare parent - if (compareParent) { - assertVariable(expected.getVariable(), current.getVariable(), false, false, - compareConstraints); - } - // Compare children - if (compareChildren) { - IExecutionVariable[] expectedChildVariables = expected.getChildVariables(); - IExecutionVariable[] currentChildVariables = current.getChildVariables(); - assertVariables(expectedChildVariables, currentChildVariables, compareParent, - compareChildren, compareConstraints); - } - // Compare constraints - if (compareConstraints) { - IExecutionConstraint[] expectedConstraints = expected.getConstraints(); - IExecutionConstraint[] currentConstraints = current.getConstraints(); - assertConstraints(expectedConstraints, currentConstraints); - } - } else { - assertNull(current); - } - } - - /** - * Executes a "step return" global on all goals on the given - * {@link SymbolicExecutionTreeBuilder}. - * - * @param ui The {@link DefaultUserInterfaceControl} to use. - * @param builder The {@link SymbolicExecutionGoalChooser} to do step on. - * @param oraclePathInBaseDirFile The oracle path. - * @param oracleIndex The index of the current step. - * @param oracleFileExtension The oracle file extension - * @param baseDir The base directory for oracles. - * @throws IOException Occurred Exception - * @throws ProofInputException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - */ - protected static void stepReturn(DefaultUserInterfaceControl ui, - SymbolicExecutionTreeBuilder builder, String oraclePathInBaseDirFile, int oracleIndex, - String oracleFileExtension, Path baseDir) - throws IOException, ProofInputException, ParserConfigurationException, SAXException { - // Set stop condition to stop after a number of detected symbolic execution tree nodes - // instead of applied rules - Proof proof = builder.getProof(); - CompoundStopCondition stopCondition = new CompoundStopCondition(); - stopCondition.addChildren(new ExecutedSymbolicExecutionTreeNodesStopCondition( - ExecutedSymbolicExecutionTreeNodesStopCondition.MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_IN_COMPLETE_RUN)); - stopCondition.addChildren(new StepReturnSymbolicExecutionTreeNodesStopCondition()); - proof.getSettings().getStrategySettings() - .setCustomApplyStrategyStopCondition(stopCondition); - // Run proof - ui.getProofControl().startAndWaitForAutoMode(proof); - // Update symbolic execution tree - builder.analyse(); - // Test result - assertSetTreeAfterStep(builder, oraclePathInBaseDirFile, oracleIndex, oracleFileExtension, - baseDir); - } - - - /** - * Executes a "step return" global on all goals on the given - * {@link SymbolicExecutionTreeBuilder}. - * - * @param ui The {@link DefaultUserInterfaceControl} to use. - * @param builder The {@link SymbolicExecutionGoalChooser} to do step on. - * @param oraclePathInBaseDirFile The oracle path. - * @param oracleIndex The index of the current step. - * @param oracleFileExtension The oracle file extension - * @param baseDir The base directory for oracles. - * @throws IOException Occurred Exception - * @throws ProofInputException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - */ - protected static void stepReturnWithBreakpoints(DefaultUserInterfaceControl ui, - SymbolicExecutionTreeBuilder builder, String oraclePathInBaseDirFile, int oracleIndex, - String oracleFileExtension, Path baseDir, CompoundStopCondition lineBreakpoints) - throws IOException, ProofInputException, ParserConfigurationException, SAXException { - // Set stop condition to stop after a number of detected symbolic execution tree nodes - // instead of applied rules - Proof proof = builder.getProof(); - CompoundStopCondition stopCondition = new CompoundStopCondition(); - stopCondition.addChildren(new ExecutedSymbolicExecutionTreeNodesStopCondition( - ExecutedSymbolicExecutionTreeNodesStopCondition.MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_IN_COMPLETE_RUN)); - stopCondition.addChildren(new StepReturnSymbolicExecutionTreeNodesStopCondition()); - stopCondition.addChildren(lineBreakpoints); - proof.getSettings().getStrategySettings() - .setCustomApplyStrategyStopCondition(stopCondition); - // Run proof - ui.getProofControl().startAndWaitForAutoMode(proof); - // Update symbolic execution tree - builder.analyse(); - // Test result - assertSetTreeAfterStep(builder, oraclePathInBaseDirFile, oracleIndex, oracleFileExtension, - baseDir); - } - - /** - * Executes a "step over" global on all goals on the given - * {@link SymbolicExecutionTreeBuilder}. - * - * @param ui The {@link DefaultUserInterfaceControl} to use. - * @param builder The {@link SymbolicExecutionGoalChooser} to do step on. - * @param oraclePathInBaseDirFile The oracle path. - * @param oracleIndex The index of the current step. - * @param oracleFileExtension The oracle file extension - * @param baseDir The base directory for oracles. - * @throws IOException Occurred Exception - * @throws ProofInputException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - */ - protected static void stepOver(DefaultUserInterfaceControl ui, - SymbolicExecutionTreeBuilder builder, String oraclePathInBaseDirFile, int oracleIndex, - String oracleFileExtension, Path baseDir) - throws IOException, ProofInputException, ParserConfigurationException, SAXException { - // Set stop condition to stop after a number of detected symbolic execution tree nodes - // instead of applied rules - Proof proof = builder.getProof(); - CompoundStopCondition stopCondition = new CompoundStopCondition(); - stopCondition.addChildren(new ExecutedSymbolicExecutionTreeNodesStopCondition( - ExecutedSymbolicExecutionTreeNodesStopCondition.MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_IN_COMPLETE_RUN)); - stopCondition.addChildren(new StepOverSymbolicExecutionTreeNodesStopCondition()); - proof.getSettings().getStrategySettings() - .setCustomApplyStrategyStopCondition(stopCondition); - // Run proof - ui.getProofControl().startAndWaitForAutoMode(proof); - // Update symbolic execution tree - builder.analyse(); - // Test result - assertSetTreeAfterStep(builder, oraclePathInBaseDirFile, oracleIndex, oracleFileExtension, - baseDir); - } - - /** - * Executes a "step into" global on all goals on the given - * {@link SymbolicExecutionTreeBuilder}. - * - * @param ui The {@link DefaultUserInterfaceControl} to use. - * @param builder The {@link SymbolicExecutionGoalChooser} to do step on. - * @param oraclePathInBaseDirFile The oracle path. - * @param oracleIndex The index of the current step. - * @param oracleFileExtension The oracle file extension - * @param baseDir The base directory for oracles. - * @return The found {@link SymbolicExecutionCompletions}. - * @throws IOException Occurred Exception - * @throws ProofInputException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - */ - protected static SymbolicExecutionCompletions stepInto(DefaultUserInterfaceControl ui, - SymbolicExecutionTreeBuilder builder, String oraclePathInBaseDirFile, int oracleIndex, - String oracleFileExtension, Path baseDir) - throws IOException, ProofInputException, ParserConfigurationException, SAXException { - // Set stop condition to stop after a number of detected symbolic execution tree nodes - // instead of applied rules - Proof proof = builder.getProof(); - ExecutedSymbolicExecutionTreeNodesStopCondition stopCondition = - new ExecutedSymbolicExecutionTreeNodesStopCondition( - ExecutedSymbolicExecutionTreeNodesStopCondition.MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_FOR_ONE_STEP); - proof.getSettings().getStrategySettings() - .setCustomApplyStrategyStopCondition(stopCondition); - // Run proof - ui.getProofControl().startAndWaitForAutoMode(proof); - // Update symbolic execution tree - SymbolicExecutionCompletions completions = builder.analyse(); - // Test result - assertSetTreeAfterStep(builder, oraclePathInBaseDirFile, oracleIndex, oracleFileExtension, - baseDir); - return completions; - } - - /** - * Executes a "step into" global on all goals on the given - * {@link SymbolicExecutionTreeBuilder}. - * - * @param ui The {@link DefaultUserInterfaceControl} to use. - * @param builder The {@link SymbolicExecutionGoalChooser} to do step on. - * @param oraclePathInBaseDirFile The oracle path. - * @param baseDir The base directory for oracles. - * @throws IOException Occurred Exception - * @throws ProofInputException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - */ - protected static void resume(DefaultUserInterfaceControl ui, - SymbolicExecutionTreeBuilder builder, String oraclePathInBaseDirFile, Path baseDir) - throws IOException, ProofInputException, ParserConfigurationException, SAXException { - // Set stop condition to stop after a number of detected symbolic execution tree nodes - // instead of applied rules - Proof proof = builder.getProof(); - ExecutedSymbolicExecutionTreeNodesStopCondition stopCondition = - new ExecutedSymbolicExecutionTreeNodesStopCondition( - ExecutedSymbolicExecutionTreeNodesStopCondition.MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_IN_COMPLETE_RUN); - proof.getSettings().getStrategySettings() - .setCustomApplyStrategyStopCondition(stopCondition); - // Run proof - ui.getProofControl().startAndWaitForAutoMode(proof); - // Update symbolic execution tree - builder.analyse(); - // Test result - assertSetTreeAfterStep(builder, oraclePathInBaseDirFile, baseDir); - } - - /** - * Makes sure that after a step the correct set tree is created. - * - * @param builder The {@link SymbolicExecutionTreeBuilder} to test. - * @param oraclePathInBaseDirFile The oracle path. - * @param baseDir The base directory for oracles. - * @throws IOException Occurred Exception - * @throws ProofInputException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - */ - protected static void assertSetTreeAfterStep(SymbolicExecutionTreeBuilder builder, - String oraclePathInBaseDirFile, Path baseDir) - throws IOException, ProofInputException, ParserConfigurationException, SAXException { - if (CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY) { - createOracleFile(builder.getStartNode(), oraclePathInBaseDirFile, false, false, false, - false); - } else { - // Read oracle file - var oracleFile = baseDir.resolve(oraclePathInBaseDirFile); - ExecutionNodeReader reader = new ExecutionNodeReader(); - IExecutionNode oracleRoot = reader.read(oracleFile.toFile()); - assertNotNull(oracleRoot); - // Make sure that the created symbolic execution tree matches the expected one. - assertExecutionNodes(oracleRoot, builder.getStartNode(), false, false, false, false, - false); - } - } - - /** - * Makes sure that after a step the correct set tree is created. - * - * @param builder The {@link SymbolicExecutionTreeBuilder} to test. - * @param oraclePathInBaseDirFile The oracle path. - * @param oracleIndex The index of the current step. - * @param oracleFileExtension The oracle file extension - * @param baseDir The base directory for oracles. - * @throws IOException Occurred Exception - * @throws ProofInputException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - */ - protected static void assertSetTreeAfterStep(SymbolicExecutionTreeBuilder builder, - String oraclePathInBaseDirFile, int oracleIndex, String oracleFileExtension, - Path baseDir) - throws IOException, ProofInputException, ParserConfigurationException, SAXException { - assertSetTreeAfterStep(builder, - oraclePathInBaseDirFile + "_" + oracleIndex + oracleFileExtension, baseDir); - } - - /** - * Searches a {@link IProgramMethod} in the given {@link Services}. - * - * @param services The {@link Services} to search in. - * @param containerTypeName The name of the type which contains the method. - * @param methodFullName The method name to search. - * @return The first found {@link IProgramMethod} in the type. - */ - public static IProgramMethod searchProgramMethod(Services services, String containerTypeName, - final String methodFullName) { - return HelperClassForTests.searchProgramMethod(services, containerTypeName, methodFullName); - } - - /** - * Creates a {@link SymbolicExecutionEnvironment} which consists of loading a file to load, - * finding the method to proof, instantiation of proof and creation with configuration of - * {@link SymbolicExecutionTreeBuilder}. - * - * @param baseDir The base directory which contains test and oracle file. - * @param baseContractName The name of the contract. - * @param mergeBranchConditions Merge branch conditions? - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @param truthValueEvaluationEnabled {@code true} truth value evaluation is enabled, - * {@code false} truth value evaluation is disabled. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @return The created {@link SymbolicExecutionEnvironment}. - * @throws ProblemLoaderException Occurred Exception. - * @throws ProofInputException Occurred Exception. - */ - protected static SymbolicExecutionEnvironment createSymbolicExecutionEnvironment( - Path baseDir, String javaPathInBaseDir, String baseContractName, - boolean mergeBranchConditions, boolean useOperationContracts, boolean useLoopInvariants, - boolean blockTreatmentContract, boolean nonExecutionBranchHidingSideProofs, - boolean aliasChecks, boolean useUnicode, boolean usePrettyPrinting, - boolean variablesAreOnlyComputedFromUpdates, boolean truthValueEvaluationEnabled, - boolean simplifyConditions) throws ProblemLoaderException, ProofInputException { - // Make sure that required files exists - Path javaFile = baseDir.resolve(javaPathInBaseDir); - assertTrue(Files.exists(javaFile)); - // Load java file - KeYEnvironment environment = KeYEnvironment.load( - SymbolicExecutionJavaProfile.getDefaultInstance(truthValueEvaluationEnabled), javaFile, - null, null, null, true); - setupTacletOptions(environment); - // Start proof - final Contract contract = environment.getServices().getSpecificationRepository() - .getContractByName(baseContractName); - assertInstanceOf(FunctionalOperationContract.class, contract); - ProofOblInput input = new FunctionalOperationContractPO(environment.getInitConfig(), - (FunctionalOperationContract) contract, true, true); - Proof proof = environment.createProof(input); - assertNotNull(proof); - // Set strategy and goal chooser to use for auto mode - SymbolicExecutionEnvironment.configureProofForSymbolicExecution(proof, - ExecutedSymbolicExecutionTreeNodesStopCondition.MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_IN_COMPLETE_RUN, - useOperationContracts, useLoopInvariants, blockTreatmentContract, - nonExecutionBranchHidingSideProofs, aliasChecks); - // Create symbolic execution tree which contains only the start node at beginning - SymbolicExecutionTreeBuilder builder = - new SymbolicExecutionTreeBuilder(proof, mergeBranchConditions, useUnicode, - usePrettyPrinting, variablesAreOnlyComputedFromUpdates, simplifyConditions); - SymbolicExecutionUtil.initializeStrategy(builder); - builder.analyse(); - assertNotNull(builder.getStartNode()); - return new SymbolicExecutionEnvironment<>(environment, builder); - } - - /** - * Creates a {@link SymbolicExecutionEnvironment} which consists of loading a file to load, - * finding the method to proof, instantiation of proof and creation with configuration of - * {@link SymbolicExecutionTreeBuilder}. - * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The name of the type which contains the method. - * @param methodFullName The method name to search. - * @param precondition An optional precondition to use. - * @param mergeBranchConditions Merge branch conditions? - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @return The created {@link SymbolicExecutionEnvironment}. - * @throws ProblemLoaderException Occurred Exception. - * @throws ProofInputException Occurred Exception. - */ - protected static SymbolicExecutionEnvironment createSymbolicExecutionEnvironment( - Path baseDir, String javaPathInBaseDir, String containerTypeName, String methodFullName, - String precondition, boolean mergeBranchConditions, boolean useOperationContracts, - boolean useLoopInvariants, boolean blockTreatmentContract, - boolean nonExecutionBranchHidingSideProofs, boolean aliasChecks, boolean useUnicode, - boolean usePrettyPrinting, boolean variablesAreOnlyComputedFromUpdates, - boolean simplifyConditions) throws ProblemLoaderException, ProofInputException { - // Make sure that required files exists - if (javaPathInBaseDir.startsWith("/")) { - javaPathInBaseDir = javaPathInBaseDir.substring(1); - } - Path javaFile = baseDir.resolve(javaPathInBaseDir); - assertTrue(Files.exists(javaFile)); - // Load java file - KeYEnvironment environment = KeYEnvironment.load( - SymbolicExecutionJavaProfile.getDefaultInstance(), javaFile, null, null, null, true); - setupTacletOptions(environment); - // Search method to proof - IProgramMethod pm = - searchProgramMethod(environment.getServices(), containerTypeName, methodFullName); - // Start proof - ProofOblInput input = new ProgramMethodPO(environment.getInitConfig(), pm.getFullName(), pm, - precondition, true, true); - Proof proof = environment.createProof(input); - assertNotNull(proof); - // Set strategy and goal chooser to use for auto mode - SymbolicExecutionEnvironment.configureProofForSymbolicExecution(proof, - ExecutedSymbolicExecutionTreeNodesStopCondition.MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_IN_COMPLETE_RUN, - useOperationContracts, useLoopInvariants, blockTreatmentContract, - nonExecutionBranchHidingSideProofs, aliasChecks); - // Create symbolic execution tree which contains only the start node at beginning - SymbolicExecutionTreeBuilder builder = - new SymbolicExecutionTreeBuilder(proof, mergeBranchConditions, useUnicode, - usePrettyPrinting, variablesAreOnlyComputedFromUpdates, simplifyConditions); - SymbolicExecutionUtil.initializeStrategy(builder); - builder.analyse(); - assertNotNull(builder.getStartNode()); - return new SymbolicExecutionEnvironment<>(environment, builder); - } - - private static void setupTacletOptions(KeYEnvironment env) { - // Set Taclet options - ImmutableSet choices = env.getInitConfig().getActivatedChoices(); - choices = choices.add(new Choice("methodExpansion", "noRestriction")); - - ProofSettings settings = env.getInitConfig().getSettings(); - if (settings == null) { - settings = ProofSettings.DEFAULT_SETTINGS; - } - settings.getChoiceSettings().updateWith(choices); - } - - /** - * Creates a {@link SymbolicExecutionEnvironment} which consists of loading a proof file to load - * and creation with configuration of {@link SymbolicExecutionTreeBuilder}. - * - * @param baseDir The base directory which contains test and oracle file. - * @param proofPathInBaseDir The path to the proof file inside the base directory. - * @param mergeBranchConditions Merge branch conditions? - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @param truthValueEvaluationEnabled {@code true} truth value evaluation is enabled, - * {@code false} truth value evaluation is disabled. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @return The created {@link SymbolicExecutionEnvironment}. - * @throws ProblemLoaderException Occurred Exception. - */ - protected static SymbolicExecutionEnvironment createSymbolicExecutionEnvironment( - Path baseDir, String proofPathInBaseDir, boolean mergeBranchConditions, - boolean useOperationContracts, boolean useLoopInvariants, - boolean blockTreatmentContract, - boolean nonExecutionBranchHidingSideProofs, boolean aliasChecks, boolean useUnicode, - boolean usePrettyPrinting, boolean variablesAreOnlyComputedFromUpdates, - boolean truthValueEvaluationEnabled, boolean simplifyConditions) - throws ProblemLoaderException { - // Make sure that required files exists - Path proofFile = baseDir.resolve(proofPathInBaseDir); - assertTrue(Files.exists(proofFile)); - // Load java file - KeYEnvironment environment = KeYEnvironment.load( - SymbolicExecutionJavaProfile.getDefaultInstance(truthValueEvaluationEnabled), proofFile, - null, null, null, SymbolicExecutionTreeBuilder.createPoPropertiesToForce(), null, true); - setupTacletOptions(environment); - Proof proof = environment.getLoadedProof(); - assertNotNull(proof); - // Set strategy and goal chooser to use for auto mode - SymbolicExecutionEnvironment.configureProofForSymbolicExecution(proof, - ExecutedSymbolicExecutionTreeNodesStopCondition.MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_IN_COMPLETE_RUN, - useOperationContracts, useLoopInvariants, blockTreatmentContract, - nonExecutionBranchHidingSideProofs, aliasChecks); - // Create symbolic execution tree which contains only the start node at beginning - SymbolicExecutionTreeBuilder builder = - new SymbolicExecutionTreeBuilder(proof, mergeBranchConditions, useUnicode, - usePrettyPrinting, variablesAreOnlyComputedFromUpdates, simplifyConditions); - SymbolicExecutionUtil.initializeStrategy(builder); - builder.analyse(); - assertNotNull(builder.getStartNode()); - return new SymbolicExecutionEnvironment<>(environment, builder); - } - - /** - * Creates a {@link SymbolicExecutionEnvironment} which consists of loading a file to load, - * finding the method to proof, instantiation of proof and creation with configuration of - * {@link SymbolicExecutionTreeBuilder}. - * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The name of the type which contains the method. - * @param methodFullName The method name to search. - * @param precondition An optional precondition to use. - * @param startPosition The start position. - * @param endPosition The end position. - * @param mergeBranchConditions Merge branch conditions? - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @return The created {@link SymbolicExecutionEnvironment}. - * @throws ProblemLoaderException Occurred Exception. - * @throws ProofInputException Occurred Exception. - */ - protected static SymbolicExecutionEnvironment createSymbolicExecutionEnvironment( - Path baseDir, String javaPathInBaseDir, String containerTypeName, String methodFullName, - String precondition, Position startPosition, Position endPosition, - boolean mergeBranchConditions, boolean useOperationContracts, boolean useLoopInvariants, - boolean blockTreatmentContract, boolean nonExecutionBranchHidingSideProofs, - boolean aliasChecks, boolean useUnicode, boolean usePrettyPrinting, - boolean variablesAreOnlyComputedFromUpdates, boolean simplifyConditions) - throws ProblemLoaderException, ProofInputException { - // Make sure that required files exists - Path javaFile = baseDir.resolve(javaPathInBaseDir); - assertTrue(Files.exists(javaFile)); - // Load java file - KeYEnvironment environment = KeYEnvironment.load( - SymbolicExecutionJavaProfile.getDefaultInstance(), javaFile, null, null, null, true); - setupTacletOptions(environment); - // Search method to proof - IProgramMethod pm = - searchProgramMethod(environment.getServices(), containerTypeName, methodFullName); - // Start proof - ProofOblInput input = new ProgramMethodSubsetPO(environment.getInitConfig(), methodFullName, - pm, precondition, startPosition, endPosition, true, true); - Proof proof = environment.createProof(input); - assertNotNull(proof); - // Set strategy and goal chooser to use for auto mode - SymbolicExecutionEnvironment.configureProofForSymbolicExecution(proof, - ExecutedSymbolicExecutionTreeNodesStopCondition.MAXIMAL_NUMBER_OF_SET_NODES_TO_EXECUTE_PER_GOAL_IN_COMPLETE_RUN, - useOperationContracts, useLoopInvariants, blockTreatmentContract, - nonExecutionBranchHidingSideProofs, aliasChecks); - // Create symbolic execution tree which contains only the start node at beginning - SymbolicExecutionTreeBuilder builder = - new SymbolicExecutionTreeBuilder(proof, mergeBranchConditions, useUnicode, - usePrettyPrinting, variablesAreOnlyComputedFromUpdates, simplifyConditions); - SymbolicExecutionUtil.initializeStrategy(builder); - builder.analyse(); - assertNotNull(builder.getStartNode()); - return new SymbolicExecutionEnvironment<>(environment, builder); - } - - /** - * Extracts the content of the try block from the initial {@link Sequent}. - * - * @param proof The {@link Proof} which contains the initial {@link Sequent}: - * @return The try content. - */ - protected String getTryContent(Proof proof) { - assertNotNull(proof); - Node node = proof.root(); - Sequent sequent = node.sequent(); - assertEquals(1, sequent.succedent().size()); - JTerm succedent = (JTerm) sequent.succedent().get(0).formula(); - assertEquals(2, succedent.arity()); - JTerm updateApplication = succedent.subs().get(1); - assertEquals(2, updateApplication.arity()); - JavaProgramElement updateContent = updateApplication.subs().get(1).javaBlock().program(); - assertInstanceOf(StatementBlock.class, updateContent); - ImmutableArray updateContentBody = - ((StatementBlock) updateContent).getBody(); - assertEquals(2, updateContentBody.size()); - assertInstanceOf(Try.class, updateContentBody.get(1)); - Try tryStatement = (Try) updateContentBody.get(1); - assertEquals(1, tryStatement.getBranchCount()); - return ProofSaver.printAnything(tryStatement.getBody(), proof.getServices()); - } - - /** - * Makes sure that the save and loading process works. - * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param oraclePathInBaseDirFile The oracle path. - * @param env The already executed {@link SymbolicExecutionEnvironment} which contains the proof - * to save/load. - * @throws IOException Occurred Exception - * @throws ProofInputException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - * @throws ProblemLoaderException Occurred Exception - */ - protected void assertSaveAndReload(Path baseDir, String javaPathInBaseDir, - String oraclePathInBaseDirFile, SymbolicExecutionEnvironment env) - throws IOException, ProofInputException, ParserConfigurationException, SAXException, - ProblemLoaderException { - Path javaFile = baseDir.resolve(javaPathInBaseDir); - assertTrue(Files.exists(javaFile)); - Path tempFile = - Files.createTempFile(javaFile.getParent(), "TestProgramMethodSubsetPO", ".proof"); - KeYEnvironment reloadedEnv = null; - SymbolicExecutionTreeBuilder reloadedBuilder = null; - try { - ProofSaver saver = new ProofSaver(env.getProof(), tempFile.toAbsolutePath(), - KeYConstants.INTERNAL_VERSION); - assertNull(saver.save()); - // Load proof from saved *.proof file - reloadedEnv = KeYEnvironment.load(SymbolicExecutionJavaProfile.getDefaultInstance(), - tempFile, null, null, null, true); - Proof reloadedProof = reloadedEnv.getLoadedProof(); - assertNotSame(env.getProof(), reloadedProof); - // Recreate symbolic execution tree - reloadedBuilder = - new SymbolicExecutionTreeBuilder(reloadedProof, false, false, false, false, true); - SymbolicExecutionUtil.initializeStrategy(reloadedBuilder); - reloadedBuilder.analyse(); - assertSetTreeAfterStep(reloadedBuilder, oraclePathInBaseDirFile, baseDir); - } finally { - if (reloadedBuilder != null) { - reloadedBuilder.dispose(); - } - if (reloadedEnv != null) { - reloadedEnv.dispose(); - } - Files.deleteIfExists(tempFile); - } - } - - /** - * Executes a test with the following steps: - *
    - *
  1. Load java file
  2. - *
  3. Instantiate proof for method in container type
  4. - *
  5. Try to close proof in auto mode
  6. - *
  7. Create symbolic execution tree
  8. - *
  9. Create new oracle file in temporary directory {@link #tempNewOracleDirectory} if it is - * defined
  10. - *
  11. Load oracle file
  12. - *
  13. Compare created symbolic execution tree with oracle model
  14. - *
- * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The java class to test. - * @param methodFullName The method to test. - * @param precondition An optional precondition. - * @param oraclePathInBaseDirFile The path to the oracle file inside the base directory. - * @param includeConstraints Include constraints? - * @param includeVariables Include variables? - * @param includeCallStack Include call stack? - * @param includeReturnValues Include method return values? - * @param maximalNumberOfExecutedSetNodesPerRun The number of executed set nodes per auto mode - * run. The whole test is executed for each defined value. - * @param mergeBranchConditions Merge branch conditions? - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @throws ProofInputException Occurred Exception - * @throws IOException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - * @throws ProblemLoaderException Occurred Exception - */ - protected void doSETTest(Path baseDir, String javaPathInBaseDir, String containerTypeName, - String methodFullName, String precondition, String oraclePathInBaseDirFile, - boolean includeConstraints, boolean includeVariables, boolean includeCallStack, - boolean includeReturnValues, int[] maximalNumberOfExecutedSetNodesPerRun, - boolean mergeBranchConditions, boolean useOperationContracts, boolean useLoopInvariants, - boolean blockTreatmentContract, boolean nonExecutionBranchHidingSideProofs, - boolean aliasChecks, boolean useUnicode, boolean usePrettyPrinting, - boolean variablesAreOnlyComputedFromUpdates, boolean simplifyConditions) - throws ProofInputException, IOException, ParserConfigurationException, SAXException, - ProblemLoaderException { - assertNotNull(maximalNumberOfExecutedSetNodesPerRun); - for (int j : maximalNumberOfExecutedSetNodesPerRun) { - SymbolicExecutionEnvironment env = doSETTest(baseDir, - javaPathInBaseDir, containerTypeName, methodFullName, precondition, - oraclePathInBaseDirFile, includeConstraints, includeVariables, includeCallStack, - includeReturnValues, j, - mergeBranchConditions, useOperationContracts, useLoopInvariants, - blockTreatmentContract, nonExecutionBranchHidingSideProofs, aliasChecks, useUnicode, - usePrettyPrinting, variablesAreOnlyComputedFromUpdates, simplifyConditions); - env.dispose(); - } - } - - /** - * Executes method doTest - * and disposes the created {@link SymbolicExecutionEnvironment}. - * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The java class to test. - * @param methodFullName The method to test. - * @param precondition An optional precondition. - * @param oraclePathInBaseDirFile The path to the oracle file inside the base directory. - * @param includeConstraints Include constraints? - * @param includeVariables Include variables? - * @param includeCallStack Include call stack? - * @param includeReturnValues Include method return values? - * @param maximalNumberOfExecutedSetNodes The number of executed set nodes per auto mode run. - * @param mergeBranchConditions Merge branch conditions? - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @throws ProofInputException Occurred Exception - * @throws IOException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - * @throws ProblemLoaderException Occurred Exception - */ - protected void doSETTestAndDispose(Path baseDir, String javaPathInBaseDir, - String containerTypeName, String methodFullName, String precondition, - String oraclePathInBaseDirFile, boolean includeConstraints, boolean includeVariables, - boolean includeCallStack, boolean includeReturnValues, - int maximalNumberOfExecutedSetNodes, boolean mergeBranchConditions, - boolean useOperationContracts, boolean useLoopInvariants, - boolean blockTreatmentContract, boolean nonExecutionBranchHidingSideProofs, - boolean aliasChecks, boolean useUnicode, boolean usePrettyPrinting, - boolean variablesAreOnlyComputedFromUpdates, boolean simplifyConditions) - throws ProofInputException, IOException, ParserConfigurationException, SAXException, - ProblemLoaderException { - SymbolicExecutionEnvironment env = - doSETTest(baseDir, javaPathInBaseDir, containerTypeName, methodFullName, precondition, - oraclePathInBaseDirFile, includeConstraints, includeVariables, includeCallStack, - includeReturnValues, maximalNumberOfExecutedSetNodes, mergeBranchConditions, - useOperationContracts, useLoopInvariants, blockTreatmentContract, - nonExecutionBranchHidingSideProofs, aliasChecks, useUnicode, usePrettyPrinting, - variablesAreOnlyComputedFromUpdates, simplifyConditions); - env.dispose(); - } - - /** - * Executes a test with the following steps: - *
    - *
  1. Load java file
  2. - *
  3. Instantiate proof for method in container type
  4. - *
  5. Try to close proof in auto mode
  6. - *
  7. Create symbolic execution tree
  8. - *
  9. Create new oracle file in temporary directory {@link #tempNewOracleDirectory} if it is - * defined
  10. - *
  11. Load oracle file
  12. - *
  13. Compare created symbolic execution tree with oracle model
  14. - *
- * - * @param baseDir The base directory which contains test and oracle file. - * @param proofFilePathInBaseDir The path to the proof file inside the base directory. - * @param oraclePathInBaseDirFile The path to the oracle file inside the base directory. - * @param includeConstraints Include constraints? - * @param includeVariables Include variables? - * @param includeCallStack Include call stack? - * @param includeReturnValues Include method return values? - * @param mergeBranchConditions Merge branch conditions? - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @throws ProofInputException Occurred Exception - * @throws IOException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - * @throws ProblemLoaderException Occurred Exception - */ - protected void doSETTestAndDispose(Path baseDir, String proofFilePathInBaseDir, - String oraclePathInBaseDirFile, boolean includeConstraints, boolean includeVariables, - boolean includeCallStack, boolean includeReturnValues, boolean mergeBranchConditions, - boolean useOperationContracts, boolean useLoopInvariants, - boolean blockTreatmentContract, boolean nonExecutionBranchHidingSideProofs, - boolean aliasChecks, boolean useUnicode, boolean usePrettyPrinting, - boolean variablesAreOnlyComputedFromUpdates) throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - SymbolicExecutionEnvironment env = - doSETTest(baseDir, proofFilePathInBaseDir, oraclePathInBaseDirFile, includeConstraints, - includeVariables, includeCallStack, includeReturnValues, mergeBranchConditions, - useOperationContracts, useLoopInvariants, blockTreatmentContract, - nonExecutionBranchHidingSideProofs, aliasChecks, useUnicode, usePrettyPrinting, - variablesAreOnlyComputedFromUpdates, false, true); - if (env != null) { - env.dispose(); - } - } - - /** - * Executes a test with the following steps: - *
    - *
  1. Load java file
  2. - *
  3. Instantiate proof for method in container type
  4. - *
  5. Try to close proof in auto mode
  6. - *
  7. Create symbolic execution tree
  8. - *
  9. Create new oracle file in temporary directory {@link #tempNewOracleDirectory} if it is - * defined
  10. - *
  11. Load oracle file
  12. - *
  13. Compare created symbolic execution tree with oracle model
  14. - *
- * - * @param baseDir The base directory which contains test and oracle file. - * @param proofFilePathInBaseDir The path to the proof file inside the base directory. - * @param oraclePathInBaseDirFile The path to the oracle file inside the base directory. - * @param includeConstraints Include constraints? - * @param includeVariables Include variables? - * @param includeCallStack Include call stack? - * @param includeReturnValues Include method return values? - * @param mergeBranchConditions Merge branch conditions? - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @param truthValueEvaluationEnabled {@code true} truth value evaluation is enabled, - * {@code false} truth value evaluation is disabled. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @return The tested {@link SymbolicExecutionEnvironment}. - * @throws ProofInputException Occurred Exception - * @throws IOException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - * @throws ProblemLoaderException Occurred Exception - */ - protected SymbolicExecutionEnvironment doSETTest(Path baseDir, - String proofFilePathInBaseDir, String oraclePathInBaseDirFile, - boolean includeConstraints, boolean includeVariables, boolean includeCallStack, - boolean includeReturnValues, boolean mergeBranchConditions, - boolean useOperationContracts, boolean useLoopInvariants, - boolean blockTreatmentContract, boolean nonExecutionBranchHidingSideProofs, - boolean aliasChecks, boolean useUnicode, boolean usePrettyPrinting, - boolean variablesAreOnlyComputedFromUpdates, boolean truthValueEvaluationEnabled, - boolean simplifyConditions) throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - SymbolicExecutionEnvironment env; - try { - // Make sure that the parameters are valid. - assertNotNull(proofFilePathInBaseDir); - assertNotNull(oraclePathInBaseDirFile); - Path oracleFile = baseDir.resolve(oraclePathInBaseDirFile); - if (!CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY) { - assertTrue(Files.exists(oracleFile), - "Oracle file does not exist. Set \"CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY\" to true to create an oracle file."); - } - // Make sure that the correct taclet options are defined. - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(baseDir, proofFilePathInBaseDir, - mergeBranchConditions, useOperationContracts, useLoopInvariants, - blockTreatmentContract, nonExecutionBranchHidingSideProofs, aliasChecks, useUnicode, - usePrettyPrinting, variablesAreOnlyComputedFromUpdates, truthValueEvaluationEnabled, - simplifyConditions); - // Create new oracle file if required in a temporary directory - createOracleFile(env.getBuilder().getStartNode(), oraclePathInBaseDirFile, - includeConstraints, includeVariables, includeCallStack, includeReturnValues); - // Read oracle file - ExecutionNodeReader reader = new ExecutionNodeReader(); - IExecutionNode oracleRoot = reader.read(oracleFile.toFile()); - assertNotNull(oracleRoot); - // Make sure that the created symbolic execution tree matches the expected one. - assertExecutionNodes(oracleRoot, env.getBuilder().getStartNode(), includeVariables, - includeCallStack, false, includeReturnValues, includeConstraints); - return env; - } finally { - // Restore original options - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - } - } - - /** - * Executes a test with the following steps: - *
    - *
  1. Load java file
  2. - *
  3. Instantiate proof for method in container type
  4. - *
  5. Try to close proof in auto mode
  6. - *
  7. Create symbolic execution tree
  8. - *
  9. Create new oracle file in temporary directory {@link #tempNewOracleDirectory} if it is - * defined
  10. - *
  11. Load oracle file
  12. - *
  13. Compare created symbolic execution tree with oracle model
  14. - *
- * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param containerTypeName The java class to test. - * @param methodFullName The method to test. - * @param precondition An optional precondition. - * @param oraclePathInBaseDirFile The path to the oracle file inside the base directory. - * @param includeConstraints Include constraints? - * @param includeVariables Include variables? - * @param includeCallStack Include call stack? - * @param includeReturnValues Include method return values? - * @param maximalNumberOfExecutedSetNodes The number of executed set nodes per auto mode run. - * @param mergeBranchConditions Merge branch conditions? - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @return The tested {@link SymbolicExecutionEnvironment}. - * @throws ProofInputException Occurred Exception - * @throws IOException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - * @throws ProblemLoaderException Occurred Exception - */ - protected SymbolicExecutionEnvironment doSETTest(Path baseDir, - String javaPathInBaseDir, String containerTypeName, final String methodFullName, - String precondition, String oraclePathInBaseDirFile, boolean includeConstraints, - boolean includeVariables, boolean includeCallStack, boolean includeReturnValues, - int maximalNumberOfExecutedSetNodes, boolean mergeBranchConditions, - boolean useOperationContracts, boolean useLoopInvariants, - boolean blockTreatmentContract, boolean nonExecutionBranchHidingSideProofs, - boolean aliasChecks, boolean useUnicode, boolean usePrettyPrinting, - boolean variablesAreOnlyComputedFromUpdates, boolean simplifyConditions) - throws ProofInputException, IOException, ParserConfigurationException, SAXException, - ProblemLoaderException { - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Make sure that the parameters are valid. - assertNotNull(javaPathInBaseDir); - assertNotNull(containerTypeName); - assertNotNull(methodFullName); - assertNotNull(oraclePathInBaseDirFile); - if (oraclePathInBaseDirFile.startsWith("/")) { - oraclePathInBaseDirFile = oraclePathInBaseDirFile.substring(1); - } - var oracleFile = baseDir.resolve(oraclePathInBaseDirFile); - if (!CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY) { - assertTrue(Files.exists(oracleFile), - "Oracle file does not exist. Set \"CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY\" to true to create an oracle file."); - } - assertTrue(maximalNumberOfExecutedSetNodes >= 1); - // Make sure that the correct taclet options are defined. - originalTacletOptions = setDefaultTacletOptions(baseDir, javaPathInBaseDir, - containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - SymbolicExecutionEnvironment env = - createSymbolicExecutionEnvironment(baseDir, javaPathInBaseDir, containerTypeName, - methodFullName, precondition, mergeBranchConditions, useOperationContracts, - useLoopInvariants, blockTreatmentContract, nonExecutionBranchHidingSideProofs, - aliasChecks, useUnicode, usePrettyPrinting, variablesAreOnlyComputedFromUpdates, - simplifyConditions); - internalDoSETTest(oracleFile, env, oraclePathInBaseDirFile, - maximalNumberOfExecutedSetNodes, includeConstraints, includeVariables, - includeCallStack, includeReturnValues); - return env; - } finally { - // Restore original options - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - } - } - - /** - * Executes a test with the following steps: - *
    - *
  1. Load java file
  2. - *
  3. Instantiate proof for method in container type
  4. - *
  5. Try to close proof in auto mode
  6. - *
  7. Create symbolic execution tree
  8. - *
  9. Create new oracle file in temporary directory {@link #tempNewOracleDirectory} if it is - * defined
  10. - *
  11. Load oracle file
  12. - *
  13. Compare created symbolic execution tree with oracle model
  14. - *
- * - * @param baseDir The base directory which contains test and oracle file. - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param baseContractName The name of the contract. - * @param oraclePathInBaseDirFile The path to the oracle file inside the base directory. - * @param includeConstraints Include constraints? - * @param includeVariables Include variables? - * @param includeCallStack Include call stack? - * @param includeReturnValues Include method return values? - * @param maximalNumberOfExecutedSetNodes The number of executed set nodes per auto mode run. - * @param mergeBranchConditions Merge branch conditions? - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param nonExecutionBranchHidingSideProofs {@code true} hide non execution branch labels by - * side proofs, {@code false} do not hide execution branch labels. - * @param aliasChecks Do alias checks? - * @param useUnicode {@code true} use unicode characters, {@code false} do not use unicode - * characters. - * @param usePrettyPrinting {@code true} use pretty printing, {@code false} do not use pretty - * printing. - * @param variablesAreOnlyComputedFromUpdates {@code true} {@link IExecutionVariable} are only - * computed from updates, {@code false} {@link IExecutionVariable}s are computed - * according to the type structure of the visible memory. - * @param truthValueEvaluationEnabled {@code true} truth value evaluation is enabled, - * {@code false} truth value evaluation is disabled. - * @param simplifyConditions {@code true} simplify conditions, {@code false} do not simplify - * conditions. - * @return The tested {@link SymbolicExecutionEnvironment}. - * @throws ProofInputException Occurred Exception - * @throws IOException Occurred Exception - * @throws ParserConfigurationException Occurred Exception - * @throws SAXException Occurred Exception - * @throws ProblemLoaderException Occurred Exception - */ - protected SymbolicExecutionEnvironment doSETTest(Path baseDir, - String javaPathInBaseDir, String baseContractName, String oraclePathInBaseDirFile, - boolean includeConstraints, boolean includeVariables, boolean includeCallStack, - boolean includeReturnValues, int maximalNumberOfExecutedSetNodes, - boolean mergeBranchConditions, boolean useOperationContracts, boolean useLoopInvariants, - boolean blockTreatmentContract, boolean nonExecutionBranchHidingSideProofs, - boolean aliasChecks, boolean useUnicode, boolean usePrettyPrinting, - boolean variablesAreOnlyComputedFromUpdates, boolean truthValueEvaluationEnabled, - boolean simplifyConditions) throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - Map originalTacletOptions = null; - try { - // Make sure that the parameters are valid. - assertNotNull(javaPathInBaseDir); - assertNotNull(baseContractName); - assertNotNull(oraclePathInBaseDirFile); - var oracleFile = baseDir.resolve(oraclePathInBaseDirFile); - if (!CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY) { - assertTrue(Files.exists(oracleFile), - "Oracle file does not exist. Set \"CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY\" to true to create an oracle file."); - } - assertTrue(maximalNumberOfExecutedSetNodes >= 1); - // Make sure that the correct taclet options are defined. - originalTacletOptions = - setDefaultTacletOptions(javaPathInBaseDir, baseContractName); - // Create proof environment for symbolic execution - SymbolicExecutionEnvironment env = - createSymbolicExecutionEnvironment(baseDir, javaPathInBaseDir, baseContractName, - mergeBranchConditions, useOperationContracts, useLoopInvariants, - blockTreatmentContract, nonExecutionBranchHidingSideProofs, aliasChecks, - useUnicode, usePrettyPrinting, variablesAreOnlyComputedFromUpdates, - truthValueEvaluationEnabled, simplifyConditions); - internalDoSETTest(oracleFile, env, oraclePathInBaseDirFile, - maximalNumberOfExecutedSetNodes, includeConstraints, includeVariables, - includeCallStack, includeReturnValues); - return env; - } finally { - // Restore taclet options - restoreTacletOptions(originalTacletOptions); - } - } - - /** - * Internal test method - */ - private void internalDoSETTest(Path oracleFile, - SymbolicExecutionEnvironment env, - String oraclePathInBaseDirFile, int maximalNumberOfExecutedSetNodes, - boolean includeConstraints, boolean includeVariables, boolean includeCallStack, - boolean includeReturnValues) - throws IOException, ProofInputException, ParserConfigurationException, SAXException { - // Set stop condition to stop after a number of detected symbolic execution tree nodes - // instead of applied rules - ExecutedSymbolicExecutionTreeNodesStopCondition stopCondition = - new ExecutedSymbolicExecutionTreeNodesStopCondition(maximalNumberOfExecutedSetNodes); - env.getProof().getSettings().getStrategySettings() - .setCustomApplyStrategyStopCondition(stopCondition); - int nodeCount; - // Execute auto mode until no more symbolic execution tree nodes are found or no new rules - // are applied. - do { - // Store the number of nodes before start of the auto mode - nodeCount = env.getProof().countNodes(); - // Run proof - env.getProofControl().startAndWaitForAutoMode(env.getProof()); - // Update symbolic execution tree - env.getBuilder().analyse(); - // Make sure that not to many set nodes are executed - Map executedSetNodesPerGoal = stopCondition.getExectuedSetNodesPerGoal(); - for (Integer value : executedSetNodesPerGoal.values()) { - assertNotNull(value); - assertTrue(value <= maximalNumberOfExecutedSetNodes, - value + " is not less equal to " + maximalNumberOfExecutedSetNodes); - } - } while (stopCondition.wasSetNodeExecuted() && nodeCount != env.getProof().countNodes()); - // Create new oracle file if required in a temporary directory - createOracleFile(env.getBuilder().getStartNode(), oraclePathInBaseDirFile, - includeConstraints, includeVariables, includeCallStack, includeReturnValues); - // Read oracle file - ExecutionNodeReader reader = new ExecutionNodeReader(); - IExecutionNode oracleRoot = reader.read(oracleFile.toFile()); - assertNotNull(oracleRoot); - // Make sure that the created symbolic execution tree matches the expected one. - assertExecutionNodes(oracleRoot, env.getBuilder().getStartNode(), includeVariables, - includeCallStack, false, includeReturnValues, includeConstraints); - } - - /** - * Ensures that the default taclet options are defined. - * - * @param javaPathInBaseDir The path in the base directory to the java file. - * @param baseContractName The name of the contract to prove. - * @return The original settings which are overwritten. - * @throws ProblemLoaderException Occurred Exception. - * @throws ProofInputException Occurred Exception. - */ - public static Map setDefaultTacletOptions(String javaPathInBaseDir, - String baseContractName) - throws ProblemLoaderException, ProofInputException { - if (!SymbolicExecutionUtil.isChoiceSettingInitialised()) { - SymbolicExecutionEnvironment env = - createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInBaseDir, - baseContractName, - false, false, false, - false, false, false, - false, false, false, - false, false); - env.dispose(); - } - return setDefaultTacletOptions(); - } - - /** - * Ensures that the default taclet options are defined. - * - * @param baseDir The base directory which contains the java file. - * @param javaPathInBaseDir The path in the base directory to the java file. - * @param containerTypeName name of the type where the method is implemented/declared - * @param methodFullName The method to prove. - * @return The original settings which are overwritten. - * @throws ProblemLoaderException Occurred Exception. - * @throws ProofInputException Occurred Exception. - */ - public static Map setDefaultTacletOptions(Path baseDir, - String javaPathInBaseDir, - String containerTypeName, - String methodFullName) - throws ProblemLoaderException, ProofInputException { - if (!SymbolicExecutionUtil.isChoiceSettingInitialised()) { - SymbolicExecutionEnvironment env = - createSymbolicExecutionEnvironment(baseDir, javaPathInBaseDir, containerTypeName, - methodFullName, - null, false, false, false, - false, false, false, false, - false, false, false); - env.dispose(); - } - return setDefaultTacletOptions(); - } - - /** - * Ensures that the default taclet options are defined. - * - * @param javaFile The java file to load. - * @param containerTypeName The type name which provides the target. - * @param targetName The target to proof. - * @return The original settings which are overwritten. - * @throws ProblemLoaderException Occurred Exception. - * @throws ProofInputException Occurred Exception. - */ - @SuppressWarnings("unused") - public static Map setDefaultTacletOptionsForTarget(Path javaFile, - String containerTypeName, final String targetName) - throws ProblemLoaderException, ProofInputException { - return HelperClassForTests.setDefaultTacletOptionsForTarget(javaFile, containerTypeName, - targetName); - } - - /** - * Ensures that the default taclet options are defined. - * - * @return The original settings which are overwritten. - */ - public static Map setDefaultTacletOptions() { - Map original = HelperClassForTests.setDefaultTacletOptions(); - ChoiceSettings choiceSettings = ProofSettings.DEFAULT_SETTINGS.getChoiceSettings(); - ImmutableSet cs = DefaultImmutableSet.nil(); - cs = cs.add(new Choice("noRestriction", "methodExpansion")); - choiceSettings.updateWith(cs); - return original; - } - - /** - * Restores the given taclet options. - * - * @param options The taclet options to restore. - */ - public static void restoreTacletOptions(Map options) { - HelperClassForTests.restoreTacletOptions(options); - } - - /** - * creates a new factory that should be used by others afterward - * - * @return collector factory for program variables - */ - protected ITermProgramVariableCollectorFactory createNewProgramVariableCollectorFactory( - final SymbolicExecutionBreakpointStopCondition breakpointParentStopCondition) { - return services -> new TermProgramVariableCollectorKeepUpdatesForBreakpointconditions( - services, breakpointParentStopCondition); - } - - /** - * Makes sure that two {@link JTerm}s are equal. - * - * @param expected The expected {@link JTerm}. - * @param actual The actual {@link JTerm}. - */ - protected void assertTerm(JTerm expected, JTerm actual) { - if (expected != null) { - assertEquals(expected.op(), actual.op()); - assertEquals(expected.javaBlock(), actual.javaBlock()); - assertEquals(expected.getLabels(), actual.getLabels()); - assertEquals(expected.arity(), actual.arity()); - for (int i = 0; i < expected.arity(); i++) { - assertTerm(expected.sub(i), actual.sub(i)); - } - } else { - assertNull(actual); - } - } - - /** - * Checks if one-step simplification is enabled in the given {@link Proof}. - * - * @param proof The {@link Proof} to read from or {@code null} to return the general settings - * value. - * @return {@code true} one step simplification is enabled, {@code false} if disabled. - */ - public static boolean isOneStepSimplificationEnabled(Proof proof) { - return HelperClassForTests.isOneStepSimplificationEnabled(proof); - } - - /** - * Defines if one-step simplification is enabled in general and within the {@link Proof}. - * - * @param proof The optional {@link Proof}. - * @param enabled {@code true} use one-step simplification, {@code false} do not use one-step - * simplification. - */ - public static void setOneStepSimplificationEnabled(Proof proof, boolean enabled) { - HelperClassForTests.setOneStepSimplificationEnabled(proof, enabled); - } -} 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 deleted file mode 100644 index 1aaa2e1428e..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestConditionalVariables.java +++ /dev/null @@ -1,185 +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.symbolic_execution.testcase; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeReader; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionBaseMethodReturn; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionStart; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -/** - * Tests the conditional values provided by - * {@link IExecutionNode#getVariables(JTerm)}. - * - * @author Martin Hentschel - */ -public class TestConditionalVariables extends AbstractSymbolicExecutionTestCase { - /** - * Compares the conditional values on the {@code Number} example. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testVariablesUnderMethodReturnCondition() throws Exception { - SymbolicExecutionEnvironment env = - doSETTest(testCaseDirectory, "/set/conditionalVariables/test/Number.java", "Number", - "equals", null, "/set/conditionalVariables/oracle/Number.xml", false, false, false, - false, 1000, false, false, false, false, false, false, false, false, false, true); - try { - // Find nodes in tree - IExecutionStart start = env.getBuilder().getStartNode(); - IExecutionNode call = start.getChildren()[0]; - IExecutionNode ifStatement = call.getChildren()[0]; - IExecutionNode notNullCondition = ifStatement.getChildren()[0]; - IExecutionNode equalCondition = notNullCondition.getChildren()[0]; - IExecutionNode returnTrueStatement = equalCondition.getChildren()[0]; - IExecutionBaseMethodReturn returnTrue = - (IExecutionBaseMethodReturn) returnTrueStatement.getChildren()[0]; - IExecutionNode notEqualCondition = notNullCondition.getChildren()[1]; - IExecutionNode returnFalseStatement = notEqualCondition.getChildren()[0]; - IExecutionBaseMethodReturn returnFalse = - (IExecutionBaseMethodReturn) returnFalseStatement.getChildren()[0]; - IExecutionNode nullCondition = ifStatement.getChildren()[1]; - IExecutionBaseMethodReturn exceptionalReturn = - (IExecutionBaseMethodReturn) nullCondition.getChildren()[0]; - // Test conditional values on if statement (call node provides only exc) under method - // return condition - assertConditionalVariables(createExpectedEqualCaseVariables(), ifStatement, - returnTrue.getMethodReturnCondition(), true, true, false); - assertConditionalVariables(createExpectedNotEqualCaseVariables(), ifStatement, - returnFalse.getMethodReturnCondition(), true, true, false); - assertConditionalVariables(createExpectedNullCaseVariables(), ifStatement, - exceptionalReturn.getMethodReturnCondition(), true, true, false); - } finally { - env.dispose(); - } - } - - /** - * Ensures that the result of {@link IExecutionNode#getVariables(JTerm)} is correct. - * - * @param expected The expected {@link IExecutionVariable}s. - * @param node The current {@link IExecutionNode} to call - * {@link IExecutionNode#getVariables(JTerm)} on. - * @param condition The condition to use. - * @param compareParent Compare parents? - * @param compareChildren Compare children? - * @param compareConstraints Compare constraints? - * @throws ProofInputException Occurred Exception. - */ - protected static void assertConditionalVariables(IExecutionVariable[] expected, - IExecutionNode node, JTerm condition, boolean compareParent, boolean compareChildren, - boolean compareConstraints) throws ProofInputException { - IExecutionVariable[] current = node.getVariables(condition); - assertVariables(expected, current, true, true, false); - IExecutionVariable[] currentAgain = node.getVariables(condition); - Assertions.assertSame(current, currentAgain); - assertVariables(expected, currentAgain, true, true, false); - } - - /** - * Creates the expected variables in case that {@code n.content == self.content}. - * - * @return The expected {@link IExecutionVariable}s. - */ - protected IExecutionVariable[] createExpectedEqualCaseVariables() { - ExecutionNodeReader.KeYlessVariable[] result = new ExecutionNodeReader.KeYlessVariable[3]; - // self - result[0] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "self"); - ExecutionNodeReader.KeYlessValue selfValue = new ExecutionNodeReader.KeYlessValue(result[0], - "Number", "self", "self {true}", false, true, "true"); - result[0].addValue(selfValue); - ExecutionNodeReader.KeYlessVariable selfContentVar = - new ExecutionNodeReader.KeYlessVariable(selfValue, false, null, "content"); - selfContentVar.addValue(new ExecutionNodeReader.KeYlessValue(selfContentVar, "int", - "select<[int]>(heap,n,Number::$content)", "content {true}", false, false, "true")); - selfValue.addChildVariable(selfContentVar); - // n - result[1] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "n"); - ExecutionNodeReader.KeYlessValue nValue = new ExecutionNodeReader.KeYlessValue(result[1], - "Number", "n", "n {true}", false, true, "true"); - result[1].addValue(nValue); - ExecutionNodeReader.KeYlessVariable nContentVar = - new ExecutionNodeReader.KeYlessVariable(nValue, false, null, "content"); - nContentVar.addValue(new ExecutionNodeReader.KeYlessValue(nContentVar, "int", - "select<[int]>(heap,n,Number::$content)", "content {true}", false, false, "true")); - nValue.addChildVariable(nContentVar); - // exc - result[2] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "exc"); - result[2].addValue(new ExecutionNodeReader.KeYlessValue(result[2], "Null", "null", - "exc {true}", false, false, "true")); - return result; - } - - /** - * Creates the expected variables in case that {@code n.content != self.content}. - * - * @return The expected {@link IExecutionVariable}s. - */ - protected IExecutionVariable[] createExpectedNotEqualCaseVariables() { - ExecutionNodeReader.KeYlessVariable[] result = new ExecutionNodeReader.KeYlessVariable[3]; - // self - result[0] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "self"); - ExecutionNodeReader.KeYlessValue selfValue = new ExecutionNodeReader.KeYlessValue(result[0], - "Number", "self", "self {true}", false, true, "true"); - result[0].addValue(selfValue); - ExecutionNodeReader.KeYlessVariable selfContentVar = - new ExecutionNodeReader.KeYlessVariable(selfValue, false, null, "content"); - selfContentVar.addValue(new ExecutionNodeReader.KeYlessValue(selfContentVar, "int", - "select<[int]>(heap,self,Number::$content)", "content {true}", false, false, "true")); - selfValue.addChildVariable(selfContentVar); - // n - result[1] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "n"); - ExecutionNodeReader.KeYlessValue nValue = new ExecutionNodeReader.KeYlessValue(result[1], - "Number", "n", "n {true}", false, true, "true"); - result[1].addValue(nValue); - ExecutionNodeReader.KeYlessVariable nContentVar = - new ExecutionNodeReader.KeYlessVariable(nValue, false, null, "content"); - nContentVar.addValue(new ExecutionNodeReader.KeYlessValue(nContentVar, "int", - "select<[int]>(heap,n,Number::$content)", "content {true}", false, false, "true")); - nValue.addChildVariable(nContentVar); - // exc - result[2] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "exc"); - result[2].addValue(new ExecutionNodeReader.KeYlessValue(result[2], "Null", "null", - "exc {true}", false, false, "true")); - return result; - } - - /** - * Creates the expected variables in case that {@code n} is {@code null}. - * - * @return The expected {@link IExecutionVariable}s. - */ - protected IExecutionVariable[] createExpectedNullCaseVariables() { - ExecutionNodeReader.KeYlessVariable[] result = new ExecutionNodeReader.KeYlessVariable[3]; - // self - result[0] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "self"); - ExecutionNodeReader.KeYlessValue selfValue = new ExecutionNodeReader.KeYlessValue(result[0], - "Number", "self", "self {true}", false, true, "true"); - result[0].addValue(selfValue); - ExecutionNodeReader.KeYlessVariable selfContentVar = - new ExecutionNodeReader.KeYlessVariable(selfValue, false, null, "content"); - selfContentVar.addValue(new ExecutionNodeReader.KeYlessValue(selfContentVar, "int", - "select<[int]>(heap,self,Number::$content)", "content {true}", false, false, "true")); - selfValue.addChildVariable(selfContentVar); - // n - result[1] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "n"); - ExecutionNodeReader.KeYlessValue nValue = new ExecutionNodeReader.KeYlessValue(result[1], - "Null", "null", "n {true}", false, false, "true"); - result[1].addValue(nValue); - // exc - result[2] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "exc"); - result[2].addValue(new ExecutionNodeReader.KeYlessValue(result[2], "Null", "null", - "exc {true}", false, false, "true")); - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestExecutionNodePreorderIterator.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestExecutionNodePreorderIterator.java deleted file mode 100644 index a7747f1494c..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestExecutionNodePreorderIterator.java +++ /dev/null @@ -1,329 +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.symbolic_execution.testcase; - -import java.util.LinkedList; -import java.util.List; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.AbstractProfile; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodePreorderIterator; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeReader.AbstractKeYlessExecutionNode; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeReader.KeYlessStart; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeReader.KeYlessStatement; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.impl.ExecutionStart; -import de.uka.ilkd.key.symbolic_execution.model.impl.TreeSettings; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -/** - * Tests for {@link ExecutionNodePreorderIterator}. - * - * @author Martin Hentschel - */ -public class TestExecutionNodePreorderIterator { - /** - * Tests a tree of {@link IExecutionNode}s with three levels after root. - */ - @Test - public void testNodesThreeLevel() throws ProofInputException { - // Create tree to test - Proof proof = - new Proof("target", new InitConfig(new Services(AbstractProfile.getDefaultProfile()))); - Node root = appendRoot(proof); - Node l1 = appendNode(proof, root); - Node l11 = appendNode(proof, l1); - Node l111 = appendNode(proof, l11); - Node l12 = appendNode(proof, l1); - Node l2 = appendNode(proof, root); - Node l21 = appendNode(proof, l2); - Node l22 = appendNode(proof, l2); - Node l221 = appendNode(proof, l22); - Node l222 = appendNode(proof, l22); - Node l23 = appendNode(proof, l2); - Node l3 = appendNode(proof, root); - Node l4 = appendNode(proof, root); - Node l41 = appendNode(proof, l4); - // Create execution test model - KeYlessStart executionRoot = new KeYlessStart("", null, false); - KeYlessStatement el1 = createStatement(executionRoot, l1); - KeYlessStatement el11 = createStatement(el1, l11); - createStatement(el11, l111); - createStatement(el1, l12); - KeYlessStatement el2 = createStatement(executionRoot, l2); - createStatement(el2, l21); - KeYlessStatement el22 = createStatement(el2, l22); - createStatement(el22, l221); - createStatement(el22, l222); - createStatement(el2, l23); - createStatement(executionRoot, l3); - KeYlessStatement el4 = createStatement(executionRoot, l4); - createStatement(el4, l41); - // Test tree - ExpectedNode[] level111 = createExpectedNodes("3"); - ExpectedNode[] level11 = createExpectedNodes(new String[] { "2", "4" }, level111, null); - ExpectedNode[] level122 = createExpectedNodes("8", "9"); - ExpectedNode[] level12 = - createExpectedNodes(new String[] { "6", "7", "10" }, null, level122, null); - ExpectedNode[] level14 = createExpectedNodes("13"); - ExpectedNode[] level1 = createExpectedNodes(new String[] { "1", "5", "11", "12" }, level11, - level12, null, level14); - assertRoot(executionRoot, createExpectedNodes(new String[] { "" }, level1)); - } - - /** - * Tests a tree of {@link IExecutionNode}s with two levels after root. - */ - @Test - public void testNodesTwoLevel() throws ProofInputException { - // Create tree to test - Proof proof = - new Proof("target", new InitConfig(new Services(AbstractProfile.getDefaultProfile()))); - Node root = appendRoot(proof); - Node l1 = appendNode(proof, root); - Node l11 = appendNode(proof, l1); - Node l12 = appendNode(proof, l1); - Node l2 = appendNode(proof, root); - Node l21 = appendNode(proof, l2); - Node l22 = appendNode(proof, l2); - Node l23 = appendNode(proof, l2); - Node l3 = appendNode(proof, root); - Node l4 = appendNode(proof, root); - Node l41 = appendNode(proof, l4); - // Create execution test model - KeYlessStart executionRoot = new KeYlessStart("", null, false); - KeYlessStatement el1 = createStatement(executionRoot, l1); - createStatement(el1, l11); - createStatement(el1, l12); - KeYlessStatement el2 = createStatement(executionRoot, l2); - createStatement(el2, l21); - createStatement(el2, l22); - createStatement(el2, l23); - createStatement(executionRoot, l3); - KeYlessStatement el4 = createStatement(executionRoot, l4); - createStatement(el4, l41); - // Test tree - ExpectedNode[] level11 = createExpectedNodes("2", "3"); - ExpectedNode[] level12 = createExpectedNodes("5", "6", "7"); - ExpectedNode[] level14 = createExpectedNodes("10"); - ExpectedNode[] level1 = createExpectedNodes(new String[] { "1", "4", "8", "9" }, level11, - level12, null, level14); - assertRoot(executionRoot, createExpectedNodes(new String[] { "" }, level1)); - } - - /** - * Tests a tree of {@link IExecutionNode}s with one level after root. - */ - @Test - public void testNodesOneLevel() throws ProofInputException { - // Create tree to test - Proof proof = - new Proof("target", new InitConfig(new Services(AbstractProfile.getDefaultProfile()))); - Node root = appendRoot(proof); - Node child1 = appendNode(proof, root); - Node child2 = appendNode(proof, root); - Node child3 = appendNode(proof, root); - Node child4 = appendNode(proof, root); - // Create execution test model - KeYlessStart executionRoot = new KeYlessStart("", null, false); - createStatement(executionRoot, child1); - createStatement(executionRoot, child2); - createStatement(executionRoot, child3); - createStatement(executionRoot, child4); - // Test tree - ExpectedNode[] level1 = createExpectedNodes("1", "2", "3", "4"); - assertRoot(executionRoot, createExpectedNodes(new String[] { "" }, level1)); - } - - /** - * Creates a new {@link KeYlessStatement} which represents the given {@link Node} in KeY's proof - * tree. - * - * @param parent The parent {@link AbstractKeYlessExecutionNode}. - * @param proofNode The {@link Node} in KeY's proof tree to represent. - * @return The created {@link KeYlessStatement}. - */ - protected KeYlessStatement createStatement(AbstractKeYlessExecutionNode parent, - Node proofNode) { - KeYlessStatement statement = - new KeYlessStatement(parent, proofNode.serialNr() + "", null, false); - parent.addChild(statement); - return statement; - } - - /** - * Tests only a root {@link IExecutionNode}. - */ - @Test - public void testEmptyRoot() throws ProofInputException { - // Create tree to test - Proof proof = - new Proof("target", new InitConfig(new Services(AbstractProfile.getDefaultProfile()))); - Node root = appendRoot(proof); - // Create execution test model - TreeSettings settings = new TreeSettings(false, false, false, false, false); - ExecutionStart executionRoot = new ExecutionStart(settings, root); - // Test tree - assertRoot(executionRoot, createExpectedNodes("")); - } - - /** - * Makes sure that a {@link ExecutionNodePreorderIterator} which iterates over the given - * {@link IExecutionNode} returns nodes in preorder iteration over the expected trees. - * - * @param element The {@link IExecutionNode} to iterate over. - * @param expectedRoots The expected values. - * @throws ProofInputException Occurred Exception. - */ - protected void assertRoot(IExecutionNode element, ExpectedNode[] expectedRoots) - throws ProofInputException { - ExecutionNodePreorderIterator iter = new ExecutionNodePreorderIterator(element); - assertExpectedNodes(iter, expectedRoots, false); - assertFalse(iter.hasNext()); - } - - /** - * Makes sure that the nodes returned by the given {@link ExecutionNodePreorderIterator} are - * equal to the defined model. - * - * @param iter The {@link ExecutionNodePreorderIterator} to test. - * @param expectedRoots The expected model. - * @param iterateOverSubtree Start new sub tree iteration at the current node? - * @throws ProofInputException Occurred Exception. - */ - protected void assertExpectedNodes(ExecutionNodePreorderIterator iter, - ExpectedNode[] expectedRoots, boolean iterateOverSubtree) throws ProofInputException { - if (expectedRoots != null) { - assertNotNull(iter); - for (ExpectedNode node : expectedRoots) { - assertTrue(iter.hasNext()); - IExecutionNode next = iter.next(); - assertNotNull(next); - assertEquals(node.getExpectedName(), next.getName()); - if (iterateOverSubtree) { - assertRoot(next, new ExpectedNode[] { node }); - } - assertExpectedNodes(iter, node.getExpectedChildren(), true); - } - } - } - - /** - * Forms the expected tree. - * - * @author Martin Hentschel - */ - protected static class ExpectedNode { - /** - * The expected name. - */ - private final String expectedName; - - /** - * The expected children. - */ - private ExpectedNode[] expectedChildren; - - /** - * Constructor. - * - * @param expectedName The expected name. - */ - public ExpectedNode(String expectedName) { - this.expectedName = expectedName; - } - - /** - * Constructor. - * - * @param expectedName The expected name. - * @param expectedChildren The expected children. - */ - public ExpectedNode(String expectedName, ExpectedNode[] expectedChildren) { - this.expectedName = expectedName; - this.expectedChildren = expectedChildren; - } - - /** - * Returns the expected name. - * - * @return The expected name. - */ - public String getExpectedName() { - return expectedName; - } - - /** - * Returns the expected children. - * - * @return The expected children. - */ - public ExpectedNode[] getExpectedChildren() { - return expectedChildren; - } - } - - /** - * Creates new {@link ExpectedNode}s with the given names and children. - * - * @param expectedNames The given names. - * @param children The given children. - * @return The created {@link ExpectedNode}s. - */ - protected ExpectedNode[] createExpectedNodes(String[] expectedNames, - ExpectedNode[]... children) { - assertEquals(expectedNames.length, children.length); - List result = new LinkedList<>(); - for (int i = 0; i < expectedNames.length; i++) { - result.add(new ExpectedNode(expectedNames[i], children[i])); - } - return result.toArray(new ExpectedNode[0]); - } - - /** - * Creates new {@link ExpectedNode}s with the given names. - * - * @param expectedNames The given names. - * @return The created {@link ExpectedNode}s. - */ - protected ExpectedNode[] createExpectedNodes(String... expectedNames) { - List result = new LinkedList<>(); - for (String name : expectedNames) { - result.add(new ExpectedNode(name)); - } - return result.toArray(new ExpectedNode[0]); - } - - /** - * Appends a new node to the given parent {@link Node}. - * - * @param proof The {@link Proof} which forms the test model. - * @param parent The parent {@link Node} to add to. - * @return The new created child {@link Node}. - */ - protected Node appendNode(Proof proof, Node parent) { - Node newChild = new Node(proof); - parent.add(newChild); - return newChild; - } - - /** - * Sets a new root {@link Node} on the proof. - * - * @param proof The {@link Proof} to set root on. - * @return The created root {@link Node}. - */ - protected Node appendRoot(Proof proof) { - Node root = new Node(proof); - proof.setRoot(root); - return root; - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestExecutionNodeWriterAndReader.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestExecutionNodeWriterAndReader.java deleted file mode 100644 index 088d626404d..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestExecutionNodeWriterAndReader.java +++ /dev/null @@ -1,281 +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.symbolic_execution.testcase; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.nio.charset.Charset; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeReader; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeReader.*; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeWriter; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionConstraint; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionTermination.TerminationKind; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -/** - * Tests {@link ExecutionNodeWriter} and {@link ExecutionNodeReader} - * - * @author Martin Hentschel - */ -public class TestExecutionNodeWriterAndReader { - /** - * Tests the reading and writing process without variables and without call stack. - */ - @Test - public void testWritingAndReading_withoutVariables_and_withoutCallStack_withReturnValues() - throws ProofInputException, ParserConfigurationException, SAXException, IOException { - doTestWritingAndReading(false, false, true, true); - } - - /** - * Tests the reading and writing process without call stack. - */ - @Test - public void testWritingAndReading_withoutCallStack_withReturnValues() - throws ProofInputException, ParserConfigurationException, SAXException, IOException { - doTestWritingAndReading(true, false, true, true); - } - - /** - * Tests the reading and writing process without variables. - */ - @Test - public void testWritingAndReading_withoutVariables_withReturnValues() - throws ProofInputException, ParserConfigurationException, SAXException, IOException { - doTestWritingAndReading(false, true, true, true); - } - - /** - * Tests the reading and writing process. - */ - @Test - public void testWritingAndReading_withReturnValues() - throws ProofInputException, ParserConfigurationException, SAXException, IOException { - doTestWritingAndReading(true, true, true, true); - } - - /** - * Tests the reading and writing process without variables and without call stack. - */ - @Test - public void testWritingAndReading_withoutVariables_and_withoutCallStack_noReturnValues() - throws ProofInputException, ParserConfigurationException, SAXException, IOException { - doTestWritingAndReading(false, false, false, true); - } - - /** - * Tests the reading and writing process without call stack. - */ - @Test - public void testWritingAndReading_withoutCallStack_noReturnValues() - throws ProofInputException, ParserConfigurationException, SAXException, IOException { - doTestWritingAndReading(true, false, false, false); - } - - /** - * Tests the reading and writing process without variables. - */ - @Test - public void testWritingAndReading_withoutVariables_noReturnValues() - throws ProofInputException, ParserConfigurationException, SAXException, IOException { - doTestWritingAndReading(false, true, false, true); - } - - /** - * Tests the reading and writing process. - */ - @Test - public void testWritingAndReading_noReturnValues() - throws ProofInputException, ParserConfigurationException, SAXException, IOException { - doTestWritingAndReading(true, true, false, false); - } - - /** - * @param saveVariabes Save variables? - * @param saveCallStack Save call stack? - * @param saveReturnValues Save method return values? - * @param saveConstraints Save constraints? - */ - protected void doTestWritingAndReading(boolean saveVariabes, boolean saveCallStack, - boolean saveReturnValues, boolean saveConstraints) - throws ProofInputException, ParserConfigurationException, SAXException, IOException { - // Create model - IExecutionNode expectedNode = createModel(); - // Serialize model to XML string - ExecutionNodeWriter writer = new ExecutionNodeWriter(); - String xml = writer.toXML(expectedNode, ExecutionNodeWriter.DEFAULT_ENCODING, saveVariabes, - saveCallStack, saveReturnValues, saveConstraints); - // Read from XML string - ExecutionNodeReader reader = new ExecutionNodeReader(); - IExecutionNode currentNode = reader.read(new ByteArrayInputStream( - xml.getBytes(Charset.forName(ExecutionNodeWriter.DEFAULT_ENCODING)))); - TestSymbolicExecutionTreeBuilder.assertExecutionNodes(expectedNode, currentNode, - saveVariabes, saveCallStack, true, saveReturnValues, saveConstraints); - // Serialize model to output stream - try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - writer.write(expectedNode, ExecutionNodeWriter.DEFAULT_ENCODING, out, saveVariabes, - saveCallStack, saveReturnValues, saveConstraints); - // Read from input stream - currentNode = reader.read(new ByteArrayInputStream(out.toByteArray())); - } - TestSymbolicExecutionTreeBuilder.assertExecutionNodes(expectedNode, currentNode, - saveVariabes, saveCallStack, true, saveReturnValues, saveConstraints); - // Serialize model to temporary file - File tempFile = - File.createTempFile("TestExecutionNodeWriterAndReader", "testWritingAndReading"); - try { - writer.write(expectedNode, ExecutionNodeWriter.DEFAULT_ENCODING, tempFile, saveVariabes, - saveCallStack, saveReturnValues, saveConstraints); - assertTrue(tempFile.isFile()); - // Read from temporary file - currentNode = reader.read(tempFile); - TestSymbolicExecutionTreeBuilder.assertExecutionNodes(expectedNode, currentNode, - saveVariabes, saveCallStack, true, saveReturnValues, saveConstraints); - } finally { - tempFile.delete(); - } - } - - /** - * Creates an example symbolic execution tree. - * - * @return The root of the example symbolic execution tree. - */ - protected IExecutionNode createModel() { - KeYlessStart root = new KeYlessStart("start", "pc1", true); - root.addCallStackEntry(root); - KeYlessBranchCondition bc = new KeYlessBranchCondition(root, "bc", "pc2", false, - "condition of bc", true, true, "myCustomBC"); - bc.addCallStackEntry(root); - bc.addCallStackEntry(bc); - root.addChild(bc); - KeYlessTermination tNormal = - new KeYlessTermination(root, "t normal", "pc3", true, TerminationKind.NORMAL, true); - root.addChild(tNormal); - root.addTermination(tNormal); - KeYlessTermination tExceptional = new KeYlessTermination(root, "t exceptional", "pc4", - false, TerminationKind.EXCEPTIONAL, false); - root.addChild(tExceptional); - root.addTermination(tExceptional); - KeYlessTermination tloop = new KeYlessTermination(root, "t loop", "pcLoopTermination", - false, TerminationKind.LOOP_BODY, true); - root.addChild(tloop); - root.addTermination(tloop); - KeYlessBranchStatement bn = new KeYlessBranchStatement(root, "bn", "pc5", true, true); - bn.addCallStackEntry(root); - bn.addCallStackEntry(bc); - root.addChild(bn); - IExecutionConstraint constraint = new KeYlessConstraint("myConstraint"); - bn.addConstraint(constraint); - KeYlessVariable bnVar1 = new KeYlessVariable(null, true, "2", "bnVar1"); - bn.addVariable(bnVar1); - KeYlessValue bnVar1Value1 = - new KeYlessValue(bnVar1, "myType1", "myValue1", "value of bnVar1", true, false, "c1"); - bnVar1.addValue(bnVar1Value1); - bnVar1Value1.addConstraint(new KeYlessConstraint("constraint of bnVar1")); - KeYlessValue bnVar1Value2 = - new KeYlessValue(bnVar1, "myType2", "myValue2", "value of bnVar1", false, true, "c2"); - bnVar1.addValue(bnVar1Value2); - KeYlessVariable bnVar2 = new KeYlessVariable(null, false, null, "bnVar2"); - bn.addVariable(bnVar2); - KeYlessValue bnVar2Value = new KeYlessValue(bnVar2, "myTypeAgain", "myValueAgain", - "value of bnVar2", false, true, "c3"); - bnVar2.addValue(bnVar2Value); - KeYlessLoopStatement ln = new KeYlessLoopStatement(root, "ln", "pc6", true, false); - root.addChild(ln); - ln.addCompletedBlock(bn, "My Block Completion Condition!"); - bn.addBlockCompletion(ln); - KeYlessLoopCondition lc = new KeYlessLoopCondition(ln, "lc", "pc7", false, true); - ln.addChild(lc); - KeYlessMethodCall mc = new KeYlessMethodCall(ln, "mc", "pc8", false); - mc.addCallStackEntry(mc); - ln.addChild(mc); - KeYlessMethodReturn mr = - new KeYlessMethodReturn(mc, "mr", "pc9", true, "mc with return value", "mc(arg)", - "mc(arg) with return value", true, "myMethodReturnCondition"); - mr.addReturnValue(new KeYlessMethodReturnValue("rv1", "rv1String", false, null)); - mr.addReturnValue(new KeYlessMethodReturnValue("rv2", "rv2String", true, "c2String")); - mr.addCallStackEntry(mc); - mc.addChild(mr); - mc.addMethodReturn(mr); - KeYlessBlockContract blockContract = - new KeYlessBlockContract(mr, "blockContract", "formatedPathCondition", true, true); - mr.addChild(blockContract); - KeYlessJoin join = new KeYlessJoin(mr, "join", "formatedPathConditionOfJoin", false, true); - mr.addChild(join); - - KeYlessVariable mrVar1 = new KeYlessVariable(null, true, "2", "mrVar1"); - mr.addCallStateVariable(mrVar1); - KeYlessValue mrVar1Value1 = - new KeYlessValue(mrVar1, "myType1", "myValue1", "value of mrVar1", true, false, "c1"); - mrVar1.addValue(mrVar1Value1); - KeYlessVariable mrVar1child1 = new KeYlessVariable(mrVar1Value1, true, "2", "mrVar1child1"); - mrVar1Value1.addChildVariable(mrVar1child1); - KeYlessValue mrVar1child1Value1 = new KeYlessValue(mrVar1child1, "myType2", - "myValue1child1", "value of mrVar1child1", true, false, "c2"); - mrVar1child1.addValue(mrVar1child1Value1); - - KeYlessExceptionalMethodReturn emr = new KeYlessExceptionalMethodReturn(mc, "emr", - "pcExceptional", true, "mc(arg)", "myExceptionalMethodReturnCondition"); - emr.addCallStackEntry(mc); - mc.addChild(emr); - mc.addMethodReturn(emr); - KeYlessOperationContract contract = - new KeYlessOperationContract(root, "useOperationContract", "pcUse", true, false, true, - false, "ResultTerm", "ExceptionTerm", "SelfTerm", "ParamA, ParamB"); - root.addChild(contract); - KeYlessLoopInvariant invariant = - new KeYlessLoopInvariant(root, "useLoppInvariant", "pcUseLoopInvariant", false, true); - root.addChild(invariant); - KeYlessStatement s = new KeYlessStatement(root, "s", "pc10", true); - root.addChild(s); - KeYlessVariable sVar1 = new KeYlessVariable(null, true, "2", "sVar1"); - s.addVariable(sVar1); - KeYlessValue sVar1Value = - new KeYlessValue(sVar1, "myType", "myValue", "value of sVar1", false, false, "c4"); - sVar1.addValue(sVar1Value); - KeYlessVariable sVar1_1 = new KeYlessVariable(sVar1Value, true, "2", "sVar1_1"); - sVar1Value.addChildVariable(sVar1_1); - KeYlessValue sVar1_1Value = - new KeYlessValue(sVar1_1, "myType", "myValue", "value of sVar1_1", true, true, "c5"); - sVar1_1.addValue(sVar1_1Value); - KeYlessVariable sVar1_1_1 = new KeYlessVariable(sVar1_1Value, true, "1", "sVar1_1_1"); - sVar1_1Value.addChildVariable(sVar1_1_1); - KeYlessValue sVar1_1_1Value = new KeYlessValue(sVar1_1_1, "myType", "myValue", - "value of sVar1_1_1", true, false, "c6"); - sVar1_1_1.addValue(sVar1_1_1Value); - KeYlessVariable sVar1_2 = new KeYlessVariable(sVar1Value, true, "2", "sVar1_2"); - sVar1Value.addChildVariable(sVar1_2); - KeYlessValue sVar1_2Value = - new KeYlessValue(sVar1_2, "myType", "myValue", "value of sVar1_2", false, true, "c7"); - sVar1_2.addValue(sVar1_2Value); - KeYlessVariable sVar1_2_1 = new KeYlessVariable(sVar1_2Value, true, "2", "sVar1_2_1"); - sVar1_2Value.addChildVariable(sVar1_2_1); - KeYlessValue sVar1_2_1Value = new KeYlessValue(sVar1_2_1, "myType", "myValue", - "value of sVar1_2_1", false, false, "c8"); - sVar1_2_1.addValue(sVar1_2_1Value); - KeYlessVariable sVar1_2_2 = new KeYlessVariable(sVar1_2Value, true, "2", "sVar1_2_2"); - sVar1_2Value.addChildVariable(sVar1_2_2); - KeYlessValue sVar1_2_2Value = new KeYlessValue(sVar1_2_2, "myType", "myValue", - "value of sVar1_2_2", true, true, "c9"); - sVar1_2_2.addValue(sVar1_2_2Value); - - KeYLessLink link = new KeYLessLink(); - link.setSource(emr); - emr.addOutgoingLink(link); - link.setTarget(blockContract); - blockContract.addIncomingLink(link); - return root; - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestExecutionVariableExtractor.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestExecutionVariableExtractor.java deleted file mode 100644 index e1f18b37049..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestExecutionVariableExtractor.java +++ /dev/null @@ -1,223 +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.symbolic_execution.testcase; - -import de.uka.ilkd.key.symbolic_execution.ExecutionVariableExtractor; - -import org.junit.jupiter.api.MethodOrderer; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; - -/** - * Tests for {@link ExecutionVariableExtractor}. - * - * @author Martin Hentschel - */ -@TestMethodOrder(MethodOrderer.MethodName.class) -public class TestExecutionVariableExtractor extends AbstractSymbolicExecutionTestCase { - /** - * Tests example: /set/variablesEmptyArrayCreationTest - */ - @Test - public void testVariablesEmptyArrayCreationTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesEmptyArrayCreationTest/test/EmptyArrayCreationTest.java", - "EmptyArrayCreationTest", "main", "obj != null & n == 0", - "/set/variablesEmptyArrayCreationTest/oracle/EmptyArrayCreationTest_Sequent.xml", false, - true, false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, - false, true, false); - } - - /** - * Tests example: /set/variablesNonSimpleArrayCreationTest - */ - @Test - public void testVariablesNonSimpleArrayCreationTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesNonSimpleArrayCreationTest/test/NonSimpleArrayCreationTest.java", - "NonSimpleArrayCreationTest", "main", - "n >= 4 & instance != null & instance.value == 100", - "/set/variablesNonSimpleArrayCreationTest/oracle/NonSimpleArrayCreationTest_Sequent.xml", - false, true, false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, - false, false, true, false); - } - - /** - * Tests example: /set/variablesNonSimpleArrayAssignmentTest - */ - @Test - public void testVariablesNonSimpleArrayAssignmentTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesNonSimpleArrayAssignmentTest/test/NonSimpleArrayAssignmentTest.java", - "NonSimpleArrayAssignmentTest", "main", "array != null & array.length >= 4", - "/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest_Sequent.xml", - false, true, false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, - false, false, true, false); - } - - /** - * Tests example: /set/variablesArrayCreationInstanceTest - */ - @Test - public void testVariablesArrayCreationInstanceTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesArrayCreationInstanceTest/test/ArrayCreationInstanceTest.java", - "ArrayCreationInstanceTest", "main", "obj != null & n >= 4", - "/set/variablesArrayCreationInstanceTest/oracle/ArrayCreationInstanceTest_Sequent.xml", - false, true, false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, - false, false, true, false); - } - - /** - * Tests example: /set/variablesArrayAssignmentTest - */ - @Test - public void testVariablesArrayAssignmentTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesArrayAssignmentTest/test/ArrayAssignmentTest.java", - "ArrayAssignmentTest", "main", "array != null & array.length >= 4", - "/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest_Sequent.xml", false, true, - false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, - true, false); - } - - /** - * Tests example: /set/variablesArrayCreationTest - */ - @Test - public void testVariablesArrayCreationTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesArrayCreationTest/test/ArrayCreationTest.java", "ArrayCreationTest", - "main", "n >= 4", - "/set/variablesArrayCreationTest/oracle/ArrayCreationTest_Sequent.xml", false, true, - false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, - true, false); - } - - /** - * Tests example: /set/variableVariableMethodContractTest - */ - @Test - public void testVariableMethodContractTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/variableVariableMethodContractTest/test/VariableMethodContractTest.java", - "VariableMethodContractTest", "findMax", null, - "/set/variableVariableMethodContractTest/oracle/VariableMethodContractTest.xml", false, - true, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, - false, false, false, true, true); - } - - /** - * Tests example: /set/variablesConditionalCycle - */ - @Test - public void testVariablesConditionalCycle() throws Exception { - doSETTest(testCaseDirectory, - "/set/variablesConditionalCycle/test/VariablesConditionalCycle.java", - "VariablesConditionalCycle", "main", null, - "/set/variablesConditionalCycle/oracle/VariablesConditionalCycle.xml", false, true, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, - false, false, false, true, true); - } - - /** - * Tests example: /set/variablesSimpleCycle - */ - @Test - public void testVariablesSimpleCycle() throws Exception { - doSETTest(testCaseDirectory, "/set/variablesSimpleCycle/test/VariablesSimpleCycle.java", - "VariablesSimpleCycle", "main", "something != null", - "/set/variablesSimpleCycle/oracle/VariablesSimpleCycle.xml", false, true, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, true, true); - } - - /** - * Tests example: /set/variablesWithQuantifier - */ - @Test - public void testVariablesWithQuantifier() throws Exception { - doSETTest(testCaseDirectory, "/set/variablesWithQuantifier/test/EnoughInfoReturn.java", - "EnoughInfoReturn", "passwordChecker", "passwords != null", - "/set/variablesWithQuantifier/oracle/EnoughInfoReturn.xml", false, true, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, false, false, - false, true, true); - } - - /** - * Tests example: /set/variablesVariableArrayIndex - */ - @Test - public void testVariableArrayIndex() throws Exception { - doSETTest(testCaseDirectory, - "/set/variablesVariableArrayIndex/test/VariableArrayIndex.java", "VariableArrayIndex", - "magic", "array != null && array.length >= 1 && index >= 0 && index < array.length", - "/set/variablesVariableArrayIndex/oracle/VariableArrayIndex.xml", false, true, false, - false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, true, true); - } - - /** - * Tests example: /set/variablesConditionalValuesTest - */ - @Test - public void testVariablesConditionalValuesTest_next() throws Exception { - doSETTest(testCaseDirectory, - "/set/variablesConditionalValuesTest/test/ConditionalValuesTest.java", - "ConditionalValuesTest", "mainNext", null, - "/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest_next.xml", false, - true, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, true, true); - } - - /** - * Tests example: /set/variablesConditionalValuesTest - */ - @Test - public void testVariablesConditionalValuesTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/variablesConditionalValuesTest/test/ConditionalValuesTest.java", - "ConditionalValuesTest", "main", null, - "/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest.xml", false, true, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, - false, false, false, true, true); - } - - /** - * Tests example: /set/variableVariablesArrayTest - */ - @Test - public void testVariableVariablesArrayTest() throws Exception { - doSETTest(testCaseDirectory, "/set/variableVariablesArrayTest/test/VariablesArrayTest.java", - "VariablesArrayTest", "arrayTest", null, - "/set/variableVariablesArrayTest/oracle/VariablesArrayTest.xml", false, true, false, - false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, true, true); - } - - /** - * Tests example: /set/variablesLocalVariablesTest - */ - @Test - public void testVariablesLocalVariablesTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/variablesLocalVariablesTest/test/LocalVariablesTest.java", "LocalVariablesTest", - "main", null, "/set/variablesLocalVariablesTest/oracle/LocalVariablesTest.xml", false, - true, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, true, true); - } - - /** - * Tests example: /set/variablesUpdateVariablesTest - */ - @Test - public void testUpdateVariablesTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/variablesUpdateVariablesTest/test/UpdateVariablesTest.java", - "UpdateVariablesTest", "main", null, - "/set/variablesUpdateVariablesTest/oracle/UpdateVariablesTest.xml", false, true, false, - false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, true, true); - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestParallelSiteProofs.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestParallelSiteProofs.java deleted file mode 100644 index da4d5ca3677..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestParallelSiteProofs.java +++ /dev/null @@ -1,268 +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.symbolic_execution.testcase; - -import java.io.IOException; -import java.util.LinkedList; -import java.util.List; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodePreorderIterator; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodReturn; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionVariable; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * This test class makes sure that parallel site proofs are working. It is only verified that no - * exception is thrown and not that correct results are computed. - * - * @author Martin Hentschel - */ -public class TestParallelSiteProofs extends AbstractSymbolicExecutionTestCase { - private static final int NUMBER_OF_THREADS = 21; - - /** - * Tests parallel site proofs on a new instantiate proof after applying "resume" on it. - */ - @Test - @Disabled("Commented out for the moment as Hudson throws an OOM Exception") - public void xxxtestNewProof() - throws ProofInputException, IOException, ParserConfigurationException, SAXException, - ProblemLoaderException, InterruptedException { - // Define test settings - String javaPathInkeyRepDirectory = "/set/magic42/test/Magic42.java"; - String containerTypeName = "Magic42"; - final String methodFullName = "compute"; - String oraclePathInBaseDirFile = "/set/magic42/oracle/Magic42.xml"; - // Create proof environment for symbolic execution - SymbolicExecutionEnvironment env = - createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, false); - try { - // Resume - resume(env.getUi(), env.getBuilder(), oraclePathInBaseDirFile, testCaseDirectory); - // Do test steps - doParallelSiteProofTest(env); - } finally { - env.dispose(); - } - } - - /** - * Tests parallel site proofs on a proof reconstructed from a *.proof file. - */ - @Test - public void testProofFile() throws ProblemLoaderException, InterruptedException { - // Define test settings - String javaPathInkeyRepDirectory = "/set/magic42/test/Magic42.proof"; - // Create proof environment for symbolic execution - SymbolicExecutionEnvironment env = - createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, false, - false, false, false, false, false, false, false, false, false, false); - try { - // Do test steps - doParallelSiteProofTest(env); - } finally { - env.dispose(); - } - } - - /** - * Executes the test steps to make sure that parallel tests are working without thrown - * {@link Exception}s. - * - * @param env The {@link SymbolicExecutionEnvironment} to use. - */ - protected void doParallelSiteProofTest( - SymbolicExecutionEnvironment env) - throws InterruptedException { - // Create threads - List> threads = new LinkedList<>(); - ExecutionNodePreorderIterator iter = - new ExecutionNodePreorderIterator(env.getBuilder().getStartNode()); - while (iter.hasNext() && threads.size() < NUMBER_OF_THREADS) { - IExecutionNode next = iter.next(); - if (next != null) { - threads.add(new ExecutionVariableSiteProofThread(next)); - } - if (next instanceof IExecutionMethodReturn) { - threads.add(new ExecutionReturnValueSiteProofThread((IExecutionMethodReturn) next)); - } - } - // Make sure that the correct number of threads are available - assertEquals(NUMBER_OF_THREADS, threads.size()); - // Start threads - for (SiteProofThread thread : threads) { - thread.start(); - } - // Wait for threads - waitForThreads(threads, 20 * 1000); - // Check result - for (SiteProofThread thread : threads) { - // Make sure that no exception is thrown. - if (thread.getException() != null) { - Assertions.fail(thread.getException()); - } - // Make sure that something was computed in site proofs. - Assertions.assertNotNull(thread.getResult()); - } - } - - /** - * Waits until the given {@link Thread}s have terminated. - * - * @param threads The {@link Thread}s to wait for. - */ - public static void waitForThreads(List> threads, long timeout) - throws InterruptedException { - long start = System.currentTimeMillis(); - if (threads != null) { - for (SiteProofThread thread : threads) { - thread.join(timeout); - if (System.currentTimeMillis() > start + timeout) { - Assertions.fail("Timeout during wait for parallel site proofs."); - } - /* - * while (thread.isAlive()) { if (System.currentTimeMillis() > start + timeout) { - * Assertions.fail("Timeout during wait for parallel site proofs."); } try { - * Thread.sleep(100); } catch (InterruptedException e) { // Nothing to do. } } - */ - } - } - } - - /** - * Utility {@link Thread} to execute a parallel site proof. - * - * @author Martin Hentschel - */ - private static abstract class SiteProofThread extends Thread { - /** - * A possibly caught exception. - */ - private Exception exception; - - /** - * The result of the executed site proof. - */ - private T result; - - /** - * Returns the caught exception. - * - * @return The caught exception. - */ - public Exception getException() { - return exception; - } - - /** - * Sets the caught exception. - * - * @param exception The caught exception. - */ - protected void setException(Exception exception) { - this.exception = exception; - } - - /** - * Returns the result of the site proof. - * - * @return The site proof result. - */ - public T getResult() { - return result; - } - - /** - * Sets the result of the site proof. - * - * @param result The site proof result. - */ - protected void setResult(T result) { - this.result = result; - } - } - - /** - * A {@link Thread} which computes the variables of a given {@link IExecutionNode} via site - * proofs. - * - * @author Martin Hentschel - */ - private static class ExecutionVariableSiteProofThread - extends SiteProofThread { - /** - * The {@link IExecutionNode} to read variables from. - */ - private final IExecutionNode node; - - /** - * Constructor. - * - * @param node The {@link IExecutionNode} to read variables from. - */ - public ExecutionVariableSiteProofThread(IExecutionNode node) { - this.node = node; - } - - /** - * {@inheritDoc} - */ - @Override - public void run() { - try { - setResult(node.getVariables()); - } catch (Exception e) { - setException(e); - } - } - } - - /** - * A {@link Thread} which computes the method return value of a given - * {@link IExecutionMethodReturn} via a site proof. - * - * @author Martin Hentschel - */ - private static class ExecutionReturnValueSiteProofThread extends SiteProofThread { - /** - * The {@link IExecutionMethodReturn} to read method return value from. - */ - private final IExecutionMethodReturn returnNode; - - /** - * Constructor - * - * @param returnNode The {@link IExecutionMethodReturn} to read method return value from. - */ - public ExecutionReturnValueSiteProofThread(IExecutionMethodReturn returnNode) { - this.returnNode = returnNode; - } - - /** - * {@inheritDoc} - */ - @Override - public void run() { - try { - setResult(returnNode.getNameIncludingReturnValue()); - } catch (Exception e) { - setException(e); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestSymbolicExecutionTreeBuilder.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestSymbolicExecutionTreeBuilder.java deleted file mode 100644 index bebbe2cc9f3..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestSymbolicExecutionTreeBuilder.java +++ /dev/null @@ -1,2640 +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.symbolic_execution.testcase; - -import java.util.Iterator; -import java.util.Map; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.control.KeYEnvironment; -import de.uka.ilkd.key.java.ast.PositionInfo; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.init.JavaProfile; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder.SymbolicExecutionCompletions; -import de.uka.ilkd.key.symbolic_execution.model.*; -import de.uka.ilkd.key.symbolic_execution.strategy.ExecutedSymbolicExecutionTreeNodesStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionGoalChooser; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.jspecify.annotations.NonNull; -import org.junit.jupiter.api.*; - -import static org.junit.jupiter.api.Assertions.*; - - -/** - * Tests for {@link SymbolicExecutionTreeBuilder}, - * {@link ExecutedSymbolicExecutionTreeNodesStopCondition} and {@link SymbolicExecutionGoalChooser}. - * - * @author Martin Hentschel - */ -@TestMethodOrder(MethodOrderer.MethodName.class) -@Tag("slow") -public class TestSymbolicExecutionTreeBuilder extends AbstractSymbolicExecutionTestCase { - /** - * Tests example: /set/joinTest - */ - @Test - public void testJoinTestAfterBranchConditionWithWeakeningGoalNotVerified() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoalNotVerified.proof", - "/set/joinTest/oracle/JoinTestAfterBranchConditionWithWeakeningGoalNotVerified.xml", - false, false, false, false, false, false, false, false, false, false, false, false, - false); - } - - /** - * Tests example: /set/joinTest - */ - @Test - public void testJoinTestAfterBranchConditionWithWeakeningGoalAndSubgoals() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoalAndSubgoals.proof", - "/set/joinTest/oracle/JoinTestAfterBranchCondition.xml", // Same result: with and - // without weakening! - false, false, false, false, false, false, false, false, false, false, false, false, - false); - } - - /** - * Tests example: /set/joinTest - */ - @Test - public void testJoinTestAfterBranchConditionWithWeakeningGoal() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoal.proof", - "/set/joinTest/oracle/JoinTestAfterBranchCondition.xml", // Same result: with and - // without weakening! - false, false, false, false, false, false, false, false, false, false, false, false, - false); - } - - /** - * Tests example: /set/joinTest - */ - @Test - public void testJoinTestAfterBranchCondition() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/joinTest/test/JoinTestAfterBranchCondition.proof", - "/set/joinTest/oracle/JoinTestAfterBranchCondition.xml", // Same result: with and - // without weakening! - false, false, false, false, false, false, false, false, false, false, false, false, - false); - } - - /** - * Tests example: /set/joinTest - */ - @Test - public void testJoinTestAfterAssignment() throws Exception { - doSETTestAndDispose(testCaseDirectory, "/set/joinTest/test/JoinTestAfterAssignment.proof", - "/set/joinTest/oracle/JoinTestAfterAssignment.xml", false, false, false, false, false, - false, false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/variablesEmptyArrayCreationTest - */ - @Test - public void testVariablesEmptyArrayCreationTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesEmptyArrayCreationTest/test/EmptyArrayCreationTest.java", - "EmptyArrayCreationTest", "main", "obj != null & n == 0", - "/set/variablesEmptyArrayCreationTest/oracle/EmptyArrayCreationTest.xml", false, true, - false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, - false, false); - } - - /** - * Tests example: /set/variablesNonSimpleArrayCreationTest - */ - @Test - public void testVariablesNonSimpleArrayCreationTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesNonSimpleArrayCreationTest/test/NonSimpleArrayCreationTest.java", - "NonSimpleArrayCreationTest", "main", - "n >= 4 & instance != null & instance.value == 100", - "/set/variablesNonSimpleArrayCreationTest/oracle/NonSimpleArrayCreationTest.xml", false, - true, false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, - false, false, false); - } - - /** - * Tests example: /set/variablesNonSimpleArrayAssignmentTest - */ - @Test - public void testVariablesNonSimpleArrayAssignmentTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesNonSimpleArrayAssignmentTest/test/NonSimpleArrayAssignmentTest.java", - "NonSimpleArrayAssignmentTest", "main", "array != null & array.length >= 4", - "/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest.xml", - false, true, false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, - false, false, false, false); - } - - /** - * Tests example: /set/variablesArrayCreationInstanceTest - */ - @Test - public void testVariablesArrayCreationInstanceTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesArrayCreationInstanceTest/test/ArrayCreationInstanceTest.java", - "ArrayCreationInstanceTest", "main", "obj != null & n >= 4", - "/set/variablesArrayCreationInstanceTest/oracle/ArrayCreationInstanceTest.xml", false, - true, false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, - false, false, false); - } - - /** - * Tests example: /set/variablesArrayAssignmentTest - */ - @Test - public void testVariablesArrayAssignmentTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesArrayAssignmentTest/test/ArrayAssignmentTest.java", - "ArrayAssignmentTest", "main", "array != null & array.length >= 4", - "/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest.xml", false, true, false, - false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, - false); - } - - /** - * Tests example: /set/variablesArrayCreationTest - */ - @Test - public void testVariablesArrayCreationTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesArrayCreationTest/test/ArrayCreationTest.java", "ArrayCreationTest", - "main", "n >= 4", "/set/variablesArrayCreationTest/oracle/ArrayCreationTest.xml", false, - true, false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, - false, false, false); - } - - /** - * Tests example: /set/useOperationContractLightweightOperationContractTest - */ - @Test - public void testUseOperationContractLightweightOperationContractTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractLightweightOperationContractTest/test/LightweightOperationContractTest.java", - "LightweightOperationContractTest", "main", null, - "/set/useOperationContractLightweightOperationContractTest/oracle/LightweightOperationContractTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/blockContractModifiableEverything - */ - @Test - public void testBlockContractModifiableEverything() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractModifiableEverything/test/BlockContractModifiableEverything.proof", - "/set/blockContractModifiableEverything/oracle/BlockContractModifiableEverything.xml", - false, false, true, true, false, false, false, false, false, false, false, false, - false); - } - - /** - * Tests example: /set/blockContractModifiableLocationNotRequested - */ - @Test - public void testBlockContractModifiableLocationNotRequested() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractModifiableLocationNotRequested/test/BlockContractModifiableLocationNotRequested.proof", - "/set/blockContractModifiableLocationNotRequested/oracle/BlockContractModifiableLocationNotRequested.xml", - false, false, true, true, false, false, false, false, false, false, false, false, - false); - } - - /** - * Tests example: /set/blockContractModifiableRequestedLocation - */ - @Test - public void testBlockContractModifiableRequestedLocation() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractModifiableRequestedLocation/test/BlockContractModifiableRequestedLocation.proof", - "/set/blockContractModifiableRequestedLocation/oracle/BlockContractModifiableRequestedLocation.xml", - false, false, true, true, false, false, false, false, false, false, false, false, - false); - } - - /** - * Tests example: /set/blockContractParamRemaned - */ - @Test - public void testBlockContractParamRemaned() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractParamRemaned/test/BlockContractParamRemaned.proof", - "/set/blockContractParamRemaned/oracle/BlockContractParamRemaned.xml", false, false, - true, true, false, false, false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/blockContractPreconditionNotVerified - */ - @Test - public void testBlockContractPreconditionNotVerified() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractPreconditionNotVerified/test/BlockContractPreconditionNotVerified.proof", - "/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified.xml", - false, false, true, true, false, false, false, false, false, false, false, false, - false); - } - - /** - * Tests example: /set/blockContractThisTest - */ - @Test - public void testBlockContractThisTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractThisTest/test/BlockContractThisTest.proof", - "/set/blockContractThisTest/oracle/BlockContractThisTest.xml", false, false, true, true, - false, false, false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/blockContractVarRenamedLater - */ - @Test - public void testBlockContractVarRenamedLater() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractVarRenamedLater/test/BlockContractVarRenamedLater.proof", - "/set/blockContractVarRenamedLater/oracle/BlockContractVarRenamedLater.xml", false, - false, true, true, false, false, false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/blockContractWithException - */ - @Test - public void testBlockContractWithException() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractWithException/test/BlockContractWithException.proof", - "/set/blockContractWithException/oracle/BlockContractWithException.xml", false, false, - true, true, false, false, false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/blockContractWithExceptionPostconditionNotVerified - */ - @Test - public void testBlockContractWithExceptionPostconditionNotVerified() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractWithExceptionPostconditionNotVerified/test/BlockContractWithExceptionPostconditionNotVerified.proof", - "/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified.xml", - false, false, true, true, false, false, false, false, false, false, false, false, - false); - } - - /** - * Tests example: /set/blockContractWithReturn - */ - @Test - public void testBlockContractWithReturn() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractWithReturn/test/BlockContractWithReturn.proof", - "/set/blockContractWithReturn/oracle/BlockContractWithReturn.xml", false, false, true, - true, false, false, false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/blockContractWithReturnPostconditionNotVerified - */ - @Test - public void testBlockContractWithReturnPostconditionNotVerified() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractWithReturnPostconditionNotVerified/test/BlockContractWithReturnPostconditionNotVerified.proof", - "/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified.xml", - false, false, true, true, false, false, false, false, false, false, false, false, - false); - } - - /** - * Tests example: /set/useLoopInvariantWithoutDecreasing - */ - @Test - public void testUseLoopInvariantWithoutDecreasing() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/useLoopInvariantWithoutDecreasing/test/LoopInvArrayExample.proof", - "/set/useLoopInvariantWithoutDecreasing/oracle/LoopInvArrayExample.xml", false, false, - false, false, false, false, false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/simpleIf - */ - @Test - public void testSimpleIfNoConditionSimplification() throws Exception { - doSETTest(testCaseDirectory, "/set/simpleIf/test/SimpleIf.java", "SimpleIf", "min", null, - "/set/simpleIf/oracle/SimpleIf_NoConditionSimplification.xml", false, false, false, - false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, false, false); - } - - /** - * Tests example: /set/simpleStaticContractTest in the Symbolic Execution Profile and ensures - * that no rules are applied forever. - */ - @Test - public void testSimpleStaticContractTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/simpleStaticContractTest/test/SimpleStaticContractTest.java", - "SimpleStaticContractTest", "main", null, - "/set/simpleStaticContractTest/oracle/SimpleStaticContractTest.xml", false, false, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/anotherStaticContractTest in the Symbolic Execution Profile and ensures - * that no rules are applied forever. - */ - @Test - public void testAnotherStaticContractTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/anotherStaticContractTest/test/AnotherStaticContractTest.java", - "AnotherStaticContractTest", "main", null, - "/set/anotherStaticContractTest/oracle/AnotherStaticContractTest.xml", false, false, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/staticDefaultContractTest in the Symbolic Execution Profile and ensures - * that no rules are applied forever. - */ - @Test - public void testStaticDefaultContractTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/staticDefaultContractTest/test/StaticDefaultContractTest.java", - "StaticDefaultContractTest", "main", null, - "/set/staticDefaultContractTest/oracle/StaticDefaultContractTest.xml", false, false, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/anotherInstanceContractTest in the Symbolic Execution Profile and ensures - * that no rules are applied forever. - */ - @Test - public void testAnotherInstanceContractTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/anotherInstanceContractTest/test/AnotherInstanceContractTest.java", - "AnotherInstanceContractTest", "main", null, - "/set/anotherInstanceContractTest/oracle/AnotherInstanceContractTest.xml", false, false, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/instanceOfNotInEndlessLoop in the Symbolic Execution Profile and ensures - * that no rules are applied forever. - */ - @Test - public void testInstanceOfNotInEndlessLoop() throws Exception { - SymbolicExecutionEnvironment env = doSETTest(testCaseDirectory, - "/set/instanceOfNotInEndlessLoop/test/Number.java", "Number", "equals", null, - "/set/instanceOfNotInEndlessLoop/oracle/Number.xml", false, false, false, false, - ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, true); - try { - int nodesCount = env.getProof().countNodes(); - assertTrue(nodesCount >= 100); // Currently 105 nodes are needed, +-5 are acceptable - assertTrue(nodesCount < 110); // Currently 105 nodes are needed, +-5 are acceptable - } finally { - if (env != null) { - env.dispose(); - } - } - } - - /** - * Tests example: /set/assumesUserInputTest in the Symbolic Execution Profile - */ - @Test - public void testAssumesUserInputTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/assumesUserInputTest/test/AssumesUserInputTest.proof", - "/set/assumesUserInputTest/oracle/AssumesUserInputTest.xml", false, false, false, false, - false, false, false, false, false, false, false, false, false); - } - - /** - * Tests simple pruning on the example /set/complexIf. - * - * @throws Exception - * @author Anna Filighera - */ - @Test - public void testSimplePruning() throws Exception { - SymbolicExecutionEnvironment env = null; - try { - env = doSETTest(testCaseDirectory, "/set/complexIf/test/ComplexIf.java", "ComplexIf", - "min", null, "/set/complexIf/oracle/ComplexIf.xml", false, false, false, false, - ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, - true); - env.getBuilder().prune(env.getProof().root().child(0).child(0)); - assertSetTreeAfterStep(env.getBuilder(), "/set/complexIf/oracle/PrunedIf.xml", - testCaseDirectory); - } finally { - if (env.getProof() != null) { - env.getProof().dispose(); - } - if (env != null) { - env.dispose(); - } - } - } - - /** - * Tests pruning on a branch of the first split in the example /set/complexIf. - * - * @throws Exception - * @author Anna Filighera - */ - @Test - public void testBranchPruning() throws Exception { - SymbolicExecutionEnvironment env = null; - try { - env = doSETTest(testCaseDirectory, "/set/complexIf/test/ComplexIf.java", "ComplexIf", - "min", null, "/set/complexIf/oracle/ComplexIf.xml", false, false, false, false, - ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, - true); - - Iterator iter = env.getProof().root().subtreeIterator(); - Node node = null; - while (iter.hasNext()) { - node = iter.next(); - if (node.childrenCount() == 2) { - break; - } - } - assertEquals(2, node.childrenCount(), - "They prooftree does not contain nodes it should."); - env.getBuilder().prune(node.child(0)); - assertSetTreeAfterStep(env.getBuilder(), "/set/complexIf/oracle/BranchPrunedIf.xml", - testCaseDirectory); - } finally { - if (env.getProof() != null) { - env.getProof().dispose(); - } - if (env != null) { - env.dispose(); - } - } - } - - - /** - * Tests pruning on both branches of a split in a branch of the first split in the example - * /set/complexIf. - * - * @throws Exception - * @author Anna Filighera - */ - @Test - public void testComplexPruning() throws Exception { - SymbolicExecutionEnvironment env = null; - try { - env = doSETTest(testCaseDirectory, "/set/complexIf/test/ComplexIf.java", "ComplexIf", - "min", null, "/set/complexIf/oracle/ComplexIf.xml", false, false, false, false, - ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, - true); - - Iterator iter = env.getProof().root().subtreeIterator(); - Node node = null; - int branchesCount = 0; - while (iter.hasNext()) { - node = iter.next(); - if (node.childrenCount() == 2) { - branchesCount++; - } - if (branchesCount == 2) { - break; - } - } - assertEquals(2, node.childrenCount(), - "They prooftree does not contain nodes it should."); - env.getBuilder().prune(node.child(0)); - assertSetTreeAfterStep(env.getBuilder(), - "/set/complexIf/oracle/Branch0InBranchPrunedIf.xml", testCaseDirectory); - env.getBuilder().prune(node.child(1)); - assertSetTreeAfterStep(env.getBuilder(), - "/set/complexIf/oracle/Branch1InBranchPrunedIf.xml", testCaseDirectory); - } finally { - if (env.getProof() != null) { - env.getProof().dispose(); - } - if (env != null) { - env.dispose(); - } - } - } - - /** - * Tests example: /set/symbolicExecutionCompletionsTest - */ - @Test - public void testSymbolicExecutionCompletionsTest() throws Exception { - SymbolicExecutionEnvironment env = null; - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - String javaPathInBaseDir = - "/set/symbolicExecutionCompletionsTest/test/SymbolicExecutionCompletionsTest.java"; - String containerTypeName = "SymbolicExecutionCompletionsTest"; - String methodFullName = "magic"; - // Make sure that the correct taclet options are defined. - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, javaPathInBaseDir, - containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInBaseDir, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, true); - IExecutionStart start = env.getBuilder().getStartNode(); - // Perform step into - SymbolicExecutionCompletions completions = stepInto(env.getUi(), env.getBuilder(), - "/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest", 1, - ".xml", testCaseDirectory); - assertNotNull(completions); - IExecutionNode call = start.getChildren()[0]; - assertEquals(0, completions.getBlockCompletions().length); - assertEquals(0, completions.getMethodReturns().length); - // Perform step into - completions = stepInto(env.getUi(), env.getBuilder(), - "/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest", 2, - ".xml", testCaseDirectory); - assertNotNull(completions); - IExecutionNode ifStatement = call.getChildren()[0]; - assertEquals(0, completions.getBlockCompletions().length); - assertEquals(0, completions.getMethodReturns().length); - // Perform step into - completions = stepInto(env.getUi(), env.getBuilder(), - "/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest", 3, - ".xml", testCaseDirectory); - assertNotNull(completions); - IExecutionNode leftBC = ifStatement.getChildren()[0]; - IExecutionNode rightBC = ifStatement.getChildren()[1]; - IExecutionNode leftReturnStatement = leftBC.getChildren()[0]; - IExecutionNode rightIncrement = rightBC.getChildren()[0]; - assertEquals(1, completions.getBlockCompletions().length); - assertSame(leftReturnStatement, completions.getBlockCompletions()[0]); - assertEquals(0, completions.getMethodReturns().length); - // Perform step into - completions = stepInto(env.getUi(), env.getBuilder(), - "/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest", 4, - ".xml", testCaseDirectory); - assertNotNull(completions); - IExecutionNode leftReturn = leftReturnStatement.getChildren()[0]; - IExecutionNode rightReturnStatement = rightIncrement.getChildren()[0]; - assertEquals(1, completions.getBlockCompletions().length); - assertSame(rightReturnStatement, completions.getBlockCompletions()[0]); - assertEquals(1, completions.getMethodReturns().length); - assertSame(leftReturn, completions.getMethodReturns()[0]); - // Perform step into - completions = stepInto(env.getUi(), env.getBuilder(), - "/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest", 5, - ".xml", testCaseDirectory); - assertNotNull(completions); - IExecutionNode rightReturn = rightReturnStatement.getChildren()[0]; - assertEquals(0, completions.getBlockCompletions().length); - assertEquals(1, completions.getMethodReturns().length); - assertSame(rightReturn, completions.getMethodReturns()[0]); - // Perform step into - completions = stepInto(env.getUi(), env.getBuilder(), - "/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest", 6, - ".xml", testCaseDirectory); - assertNotNull(completions); - assertEquals(0, completions.getBlockCompletions().length); - assertEquals(0, completions.getMethodReturns().length); - } finally { - // Restore original options - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } - - /** - * Tests example: /set/allNodeTypesTest in the Java Profile - */ - @Test - public void testAllNodeTypesTest_JavaProfile_NoOneStepSimplification() throws Exception { - doJavaProfileTest( - "/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile_NoOneStepSimplification.proof", - "/set/allNodeTypesTest/oracle/AllNodeTypesTest_VerificationProfile_NoOneStepSimplification.xml"); - } - - /** - * Tests example: /set/allNodeTypesTest in the Java Profile - */ - @Test - public void testAllNodeTypesTest_JavaProfile() throws Exception { - doJavaProfileTest("/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile.proof", - "/set/allNodeTypesTest/oracle/AllNodeTypesTest_VerificationProfile.xml"); - } - - /** - * Loads an existing proof file performed in the {@link JavaProfile}. - * - * @param proofFilePathInBaseDir The path to the proof file inside the base directory. - * @param oraclePathInBaseDirFile The path to the oracle file inside the base directory. - * @throws Exception Occurred Exception. - */ - protected void doJavaProfileTest(String proofFilePathInBaseDir, String oraclePathInBaseDirFile) - throws Exception { - proofFilePathInBaseDir = cleanStartSlash(proofFilePathInBaseDir); - oraclePathInBaseDirFile = cleanStartSlash(oraclePathInBaseDirFile); - - // Ensure that JavaProfile was used before - KeYEnvironment env = KeYEnvironment.load(JavaProfile.getDefaultInstance(), - testCaseDirectory.resolve(proofFilePathInBaseDir), null, null, null, true); - env.dispose(); - // Test symbolic execution - doSETTestAndDispose(testCaseDirectory, proofFilePathInBaseDir, oraclePathInBaseDirFile, - false, false, false, false, false, false, false, false, false, false, false, false, - false); - // Test symbolic execution again when symbolic execution profile was used before. - doSETTestAndDispose(testCaseDirectory, proofFilePathInBaseDir, oraclePathInBaseDirFile, - false, false, false, false, false, false, false, false, false, false, false, false, - false); - } - - private static @NonNull String cleanStartSlash(String proofFilePathInBaseDir) { - if (proofFilePathInBaseDir.startsWith("/")) { - proofFilePathInBaseDir = proofFilePathInBaseDir.substring(1); - } - return proofFilePathInBaseDir; - } - - /** - * Tests example: /set/allNodeTypesTest in the Symbolic Execution Profile - */ - @Test - public void testAllNodeTypesTest_SymbolicExecutionProfile() throws Exception { - doSETTestAndDispose(testCaseDirectory, "/set/allNodeTypesTest/test/AllNodeTypesTest.proof", - "/set/allNodeTypesTest/oracle/AllNodeTypesTest.xml", false, false, false, false, false, - false, false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/loopStatementBlockTest - */ - @Test - public void testLoopStatementBlockTest_nestedLoop() throws Exception { - doSETTest(testCaseDirectory, "/set/loopStatementBlockTest/test/LoopStatementBlockTest.java", - "LoopStatementBlockTest", "nestedLoop", null, - "/set/loopStatementBlockTest/oracle/LoopStatementBlockTest_nestedLoop.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/loopStatementBlockTest - */ - @Test - public void testLoopStatementBlockTest_simpleLoop() throws Exception { - doSETTest(testCaseDirectory, "/set/loopStatementBlockTest/test/LoopStatementBlockTest.java", - "LoopStatementBlockTest", "simpleLoop", null, - "/set/loopStatementBlockTest/oracle/LoopStatementBlockTest_simpleLoop.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/branchStatementBlockTest - */ - @Test - public void testBranchStatementBlockTest_min() throws Exception { - doSETTest(testCaseDirectory, - "/set/branchStatementBlockTest/test/BranchStatementBlockTest.java", - "BranchStatementBlockTest", "min", null, - "/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_min.xml", false, false, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/branchStatementBlockTest - */ - @Test - public void testBranchStatementBlockTest_nestedIf() throws Exception { - doSETTest(testCaseDirectory, - "/set/branchStatementBlockTest/test/BranchStatementBlockTest.java", - "BranchStatementBlockTest", "nestedIf", null, - "/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_nestedIf.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/branchStatementBlockTest - */ - @Test - public void testBranchStatementBlockTest_simpleBlock() throws Exception { - doSETTest(testCaseDirectory, - "/set/branchStatementBlockTest/test/BranchStatementBlockTest.java", - "BranchStatementBlockTest", "simpleBlock", null, - "/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_simpleBlock.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/branchStatementBlockTest - */ - @Test - public void testBranchStatementBlockTest_ifNoBlock() throws Exception { - doSETTest(testCaseDirectory, - "/set/branchStatementBlockTest/test/BranchStatementBlockTest.java", - "BranchStatementBlockTest", "ifNoBlock", null, - "/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_ifNoBlock.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/branchStatementBlockTest - */ - @Test - public void testBranchStatementBlockTest_onlyThen() throws Exception { - doSETTest(testCaseDirectory, - "/set/branchStatementBlockTest/test/BranchStatementBlockTest.java", - "BranchStatementBlockTest", "onlyThen", null, - "/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyThen.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/branchStatementBlockTest - */ - @Test - public void testBranchStatementBlockTest_onlyElse() throws Exception { - doSETTest(testCaseDirectory, - "/set/branchStatementBlockTest/test/BranchStatementBlockTest.java", - "BranchStatementBlockTest", "onlyElse", null, - "/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyElse.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/branchStatementBlockTest - */ - @Test - public void testBranchStatementBlockTest_switchTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/branchStatementBlockTest/test/BranchStatementBlockTest.java", - "BranchStatementBlockTest", "switchTest", null, - "/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_switchTest.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/branchStatementBlockTest - */ - @Test - public void testBranchStatementBlockTest_onlyEmptyThen() throws Exception { - doSETTest(testCaseDirectory, - "/set/branchStatementBlockTest/test/BranchStatementBlockTest.java", - "BranchStatementBlockTest", "onlyEmptyThen", null, - "/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyEmptyThen.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/branchStatementBlockTest - */ - @Test - public void testBranchStatementBlockTest_recursive() throws Exception { - doSETTest(testCaseDirectory, - "/set/branchStatementBlockTest/test/BranchStatementBlockTest.java", - "BranchStatementBlockTest", "recursiveMain", null, - "/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_recursive.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/constraintsAfterUsedLoopInvariant - */ - @Test - public void testConstraintsAfterUsedLoopInvariant() throws Exception { - doSETTest(testCaseDirectory, "/set/constraintsAfterUsedLoopInvariant/test/E_Loop.java", - "E_Loop", "calculate", null, "/set/constraintsAfterUsedLoopInvariant/oracle/E_Loop.xml", - true, true, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/constraintsOfAppliedMethodContract - */ - @Test - public void testConstraintsOfAppliedMethodContract() throws Exception { - doSETTest(testCaseDirectory, - "/set/constraintsOfAppliedMethodContract/test/MethodContract.java", "MethodContract", - "magic", null, "/set/constraintsOfAppliedMethodContract/oracle/MethodContract.xml", - true, true, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/exceptionalMethodReturnTest - */ - @Test - public void testExceptionalMethodReturnTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/exceptionalMethodReturnTest/test/ExceptionalMethodReturnTest.java", - "ExceptionalMethodReturnTest", "main", null, - "/set/exceptionalMethodReturnTest/oracle/ExceptionalMethodReturnTest.xml", false, false, - true, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/exceptionalMethodReturnTestWithLoop - */ - @Test - public void testExceptionalMethodReturnTestWithLoop() throws Exception { - doSETTest(testCaseDirectory, "/set/exceptionalMethodReturnTestWithLoop/test/Loop.java", - "Loop", "magic", null, "/set/exceptionalMethodReturnTestWithLoop/oracle/Loop.xml", - false, false, true, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/staticInstanceFieldChanged - */ - @Test - public void testStaticInstanceFieldChanged() throws Exception { - doSETTest(testCaseDirectory, - "/set/staticInstanceFieldChanged/test/StaticInstanceFieldChanged.java", - "StaticInstanceFieldChanged", "magic", null, - "/set/staticInstanceFieldChanged/oracle/StaticInstanceFieldChanged.xml", false, true, - false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractVariableNestedOperationContractUse - */ - @Test - public void testUseOperationContractVariableNestedOperationContractUse() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractVariableNestedOperationContractUse/test/VariableNestedOperationContractUse.java", - "VariableNestedOperationContractUse", "main", null, - "/set/useOperationContractVariableNestedOperationContractUse/oracle/VariableNestedOperationContractUse.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractApplyContractTwice - */ - @Test - public void testUseOperationContractApplyContractTwice() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractApplyContractTwice/test/OperationContractAppliedTwiceTest.java", - "OperationContractAppliedTwiceTest", "doubleMagic", null, - "/set/useOperationContractApplyContractTwice/oracle/OperationContractAppliedTwiceTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/verificationProofFile_VerifyNumber - */ - @Test - public void testVerifyNumberNormal() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/verificationProofFile_VerifyNumber/test/VerifyNumberNormal.proof", - "/set/verificationProofFile_VerifyNumber/oracle/VerifyNumberNormal.xml", false, false, - false, false, false, false, false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/verificationProofFile_VerifyMin - */ - @Test - public void testVerifyMinTrueBranch() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/verificationProofFile_VerifyMin/test/VerifyMinTrueBranch.proof", - "/set/verificationProofFile_VerifyMin/oracle/VerifyMinTrueBranch.xml", false, false, - false, false, false, false, false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/verificationProofFile_VerifyMin - */ - @Test - public void testVerifyMin() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/verificationProofFile_VerifyMin/test/VerifyMin.proof", - "/set/verificationProofFile_VerifyMin/oracle/VerifyMin.xml", false, true, true, true, - false, false, false, false, false, false, false, false, false); - } - - /** - * Tests example: /set/simpleMethodCallStackTest - */ - @Test - public void testSimpleMethodCallStack() throws Exception { - doSETTest(testCaseDirectory, - "/set/simpleMethodCallStackTest/test/SimpleMethodCallStackTest.java", - "SimpleMethodCallStackTest", "magic", null, - "/set/simpleMethodCallStackTest/oracle/SimpleMethodCallStackTest.xml", false, false, - true, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/methodCallStackTest - */ - @Test - public void testMethodCallStack() throws Exception { - doSETTest(testCaseDirectory, "/set/methodCallStackTest/test/MethodCallStackTest.java", - "MethodCallStackTest", "magic", null, - "/set/methodCallStackTest/oracle/MethodCallStackTest.xml", false, false, true, true, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/unicodeTest - */ - @Test - public void testUnicode_Disabled() throws Exception { - doSETTest(testCaseDirectory, "/set/unicodeTest/test/UnicodeTest.java", "UnicodeTest", - "magic", null, "/set/unicodeTest/oracle/UnicodeTest_Disabled.xml", false, true, true, - true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, false, false, false, - true, false, true); - } - - /** - * Tests example: /set/unicodeTest - */ - @Test - public void testUnicode_Enabled() throws Exception { - doSETTest(testCaseDirectory, "/set/unicodeTest/test/UnicodeTest.java", "UnicodeTest", - "magic", null, "/set/unicodeTest/oracle/UnicodeTest_Enabled.xml", false, true, true, - true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, false, false, true, - true, false, true); - } - - /** - * Tests example: /set/prettyPrint - */ - @Test - public void testPrettyPrinting_Disabled() throws Exception { - doSETTest(testCaseDirectory, "/set/prettyPrint/test/PrettyPrintTest.java", - "PrettyPrintTest", "main", null, "/set/prettyPrint/oracle/PrettyPrintTest_Disabled.xml", - false, true, true, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/prettyPrint - */ - @Test - public void testPrettyPrinting_Enabled() throws Exception { - doSETTest(testCaseDirectory, "/set/prettyPrint/test/PrettyPrintTest.java", - "PrettyPrintTest", "main", null, "/set/prettyPrint/oracle/PrettyPrintTest_Enabled.xml", - false, true, true, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, - false, false, false, true, false, true); - } - - /** - * Tests example: /set/useLoopInvariantAndOperationContractStrictlyPure - */ - @Test - public void testLoopInvariantAndOperationContractStrictlyPure() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantAndOperationContractStrictlyPure/test/IndexOf.java", "IndexOf", - "indexOf", null, - "/set/useLoopInvariantAndOperationContractStrictlyPure/oracle/IndexOf.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainVoidMethod() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainVoidMethod", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainVoidMethod.xml", false, - false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainNoArgs() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainNoArgs", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainNoArgs.xml", false, false, - false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainResult() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainResult", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainResult.xml", false, false, - false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainResultNotSpecified() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainResultNotSpecified", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainResultNotSpecified.xml", - false, false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainExceptinalVoid() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainExceptinalVoid", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainExceptinalVoid.xml", false, - false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainExceptinalUnused() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainExceptinalUnused", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainExceptinalUnused.xml", false, - false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainExceptinal() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainExceptinal", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainExceptinal.xml", false, - false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainBooleanResultUnused() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainBooleanResultUnused", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainBooleanResultUnused.xml", - false, false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainBooleanResultUnspecifiedUnused() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainBooleanResultUnspecifiedUnused", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainBooleanResultUnspecifiedUnused.xml", - false, false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainExceptionalConstructor() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainExceptionalConstructor", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainExceptionalConstructor.xml", - false, false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainConstructor() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainConstructor", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainConstructor.xml", false, - false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/instanceContractTest - */ - @Test - public void testInstanceContractTest_mainOnObject() throws Exception { - doSETTest(testCaseDirectory, "/set/instanceContractTest/test/InstanceContractTest.java", - "InstanceContractTest", "mainOnObject", null, - "/set/instanceContractTest/oracle/InstanceContractTest_mainOnObject.xml", false, false, - false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainVoidMethod() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainVoidMethod", null, - "/set/staticContractTest/oracle/StaticContractTest_mainVoidMethod.xml", false, false, - false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainNoArgs() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainNoArgs", null, - "/set/staticContractTest/oracle/StaticContractTest_mainNoArgs.xml", false, false, false, - true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainResult() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainResult", null, - "/set/staticContractTest/oracle/StaticContractTest_mainResult.xml", false, false, false, - true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainResultNotSpecified() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainResultNotSpecified", null, - "/set/staticContractTest/oracle/StaticContractTest_mainResultNotSpecified.xml", false, - false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainExceptinalVoid() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainExceptinalVoid", null, - "/set/staticContractTest/oracle/StaticContractTest_mainExceptinalVoid.xml", false, - false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainExceptinalUnused() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainExceptinalUnused", null, - "/set/staticContractTest/oracle/StaticContractTest_mainExceptinalUnused.xml", false, - false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainExceptinal() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainExceptinal", null, - "/set/staticContractTest/oracle/StaticContractTest_mainExceptinal.xml", false, false, - false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainBooleanResultUnused() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainBooleanResultUnused", null, - "/set/staticContractTest/oracle/StaticContractTest_mainBooleanResultUnused.xml", false, - false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainBooleanResultUnspecifiedUnused() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainBooleanResultUnspecifiedUnused", null, - "/set/staticContractTest/oracle/StaticContractTest_mainBooleanResultUnspecifiedUnused.xml", - false, false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainExceptionalConstructor() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainExceptionalConstructor", null, - "/set/staticContractTest/oracle/StaticContractTest_mainExceptionalConstructor.xml", - false, false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainConstructor() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainConstructor", null, - "/set/staticContractTest/oracle/StaticContractTest_mainConstructor.xml", false, false, - false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/staticContractTest - */ - @Test - public void testStaticContractTest_mainOnObject() throws Exception { - doSETTest(testCaseDirectory, "/set/staticContractTest/test/StaticContractTest.java", - "StaticContractTest", "mainOnObject", null, - "/set/staticContractTest/oracle/StaticContractTest_mainOnObject.xml", false, false, - false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/verifiedTest - */ - @Test - public void testVerifiedTest_notLoop() throws Exception { - doSETTest(testCaseDirectory, "/set/verifiedTest/test/VerifiedTest.java", - "VerifiedTest[VerifiedTest::notLoop(int)].JML operation contract.0", - "/set/verifiedTest/oracle/VerifiedTest_notLoop.xml", false, false, false, false, - ALL_IN_ONE_RUN, false, false, true, false, false, false, false, false, false, false, - true); - } - - /** - * Tests example: /set/verifiedTest - */ - @Test - public void testVerifiedTest_loop() throws Exception { - doSETTest(testCaseDirectory, "/set/verifiedTest/test/VerifiedTest.java", - "VerifiedTest[VerifiedTest::loop(int)].JML operation contract.0", - "/set/verifiedTest/oracle/VerifiedTest_loop.xml", false, false, false, false, - ALL_IN_ONE_RUN, false, false, true, false, false, false, false, false, false, false, - true); - } - - /** - * Tests example: /set/verifiedTest - */ - @Test - public void testVerifiedTest_notMagic() throws Exception { - doSETTest(testCaseDirectory, "/set/verifiedTest/test/VerifiedTest.java", - "VerifiedTest[VerifiedTest::notMagic()].JML operation contract.0", - "/set/verifiedTest/oracle/VerifiedTest_notMagic.xml", false, false, false, false, - ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, false, - true); - } - - /** - * Tests example: /set/verifiedTest - */ - @Test - public void testVerifiedTest_magic() throws Exception { - doSETTest(testCaseDirectory, "/set/verifiedTest/test/VerifiedTest.java", - "VerifiedTest[VerifiedTest::magic()].JML operation contract.0", - "/set/verifiedTest/oracle/VerifiedTest_magic.xml", false, false, false, false, - ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, false, - true); - } - - /** - * Tests example: /set/verifiedTest - */ - @Test - public void testVerifiedTest_notMagicException() throws Exception { - doSETTest(testCaseDirectory, "/set/verifiedTest/test/VerifiedTest.java", - "VerifiedTest[VerifiedTest::notMagicException()].JML exceptional_behavior operation contract.0", - "/set/verifiedTest/oracle/VerifiedTest_notMagicException.xml", false, false, false, - false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, - false, true); - } - - /** - * Tests example: /set/verifiedTest - */ - @Test - public void testVerifiedTest_magicException() throws Exception { - doSETTest(testCaseDirectory, "/set/verifiedTest/test/VerifiedTest.java", - "VerifiedTest[VerifiedTest::magicException()].JML exceptional_behavior operation contract.0", - "/set/verifiedTest/oracle/VerifiedTest_magicException.xml", false, false, false, false, - ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, false, - true); - } - - /** - * Tests example: /set/methodCallReturnTests - */ - @Test - public void testMethodCallReturnTests() throws Exception { - doSETTest(testCaseDirectory, "/set/methodCallReturnTests/test/MethodCallReturnTests.java", - "MethodCallReturnTests", "main", null, - "/set/methodCallReturnTests/oracle/MethodCallReturnTests.xml", false, true, true, true, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/useLoopInvariantArrayAverage - */ - @Test - public void testUseLoopInvariantArrayAverage() throws Exception { - doSETTest(testCaseDirectory, "/set/useLoopInvariantArrayAverage/test/ArrayAverage.java", - "ArrayAverage", "average", null, - "/set/useLoopInvariantArrayAverage/oracle/ArrayAverage.xml", false, false, true, true, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/useOperationContractStatementsInImpliciteConstructor - */ - @Test - public void testUseOperationContractStatementsInImpliciteConstructor() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractStatementsInImpliciteConstructor/test/UseOperationContractStatementsInImpliciteConstructor.java", - "UseOperationContractStatementsInImpliciteConstructor", "average", null, - "/set/useOperationContractStatementsInImpliciteConstructor/oracle/UseOperationContractStatementsInImpliciteConstructor.xml", - false, true, true, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, - false, false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantLoopSplittingCondition - *

- *

- * Tests the handling of method returns in different modalities. - *

- */ - @Test - public void testUseLoopInvariantLoopSplittingCondition() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantLoopSplittingCondition/test/LoopSplittingCondition.java", - "LoopSplittingCondition", "main", null, - "/set/useLoopInvariantLoopSplittingCondition/oracle/LoopSplittingCondition.xml", false, - false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, - false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantTwoLoops - *

- *

- * Tests the handling of method returns in different modalities. - *

- */ - @Test - public void testUseLoopInvariantTwoLoops() throws Exception { - doSETTest(testCaseDirectory, "/set/useLoopInvariantTwoLoops/test/TwoLoops.java", "TwoLoops", - "main", null, "/set/useLoopInvariantTwoLoops/oracle/TwoLoops.xml", false, false, false, - true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, false, false, false, - false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantWhileWithMethodCallAsConditionFullImplemented - *

- *

- * Tests the handling of method returns in different modalities. - *

- */ - @Test - public void testLoopInvariantMethodReturnInDifferentModalities() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantWhileWithMethodCallAsConditionFullImplemented/test/WhileWithMethodCallAsConditionFullImplemented.java", - "WhileWithMethodCallAsConditionFullImplemented", "size", null, - "/set/useLoopInvariantWhileWithMethodCallAsConditionFullImplemented/oracle/WhileWithMethodCallAsConditionFullImplemented.xml", - false, false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, - false, false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantLoopBodyBranchClosed - *

- *

- * Tests the handling of {@code continue} when a loop is expanded. - *

- */ - @Test - public void testLoopBodyBranchClosed() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantLoopBodyBranchClosed/test/LoopBodyBranchClosed.java", - "LoopBodyBranchClosed", "deadBody", null, - "/set/useLoopInvariantLoopBodyBranchClosed/oracle/LoopBodyBranchClosed.xml", false, - false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, - false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantLoopUsageBranchClosed - *

- *

- * Tests the handling of {@code continue} when a loop is expanded. - *

- */ - @Test - public void testLoopUsageBranchClosed() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantLoopUsageBranchClosed/test/LoopUsageBranchClosed.java", - "LoopUsageBranchClosed", "deadCodeAfterLoop", null, - "/set/useLoopInvariantLoopUsageBranchClosed/oracle/LoopUsageBranchClosed.xml", false, - false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, - false, false, false, false, true); - } - - /** - *

- * Tests example: /set/nestedLoopsWithContinue - *

- *

- * Tests the handling of {@code continue} when a loop is expanded. - *

- */ - @Test - public void testNestedLoopsWithContinue() throws Exception { - doSETTest(testCaseDirectory, - "/set/nestedLoopsWithContinue/test/NestedLoopsWithContinue.java", - "NestedLoopsWithContinue", "main", null, - "/set/nestedLoopsWithContinue/oracle/NestedLoopsWithContinue.xml", false, false, true, - false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantArraySumWhileWithContinue - *

- *

- * Tests the handling of {@code continue} when a loop invariant is applied. - *

- */ - @Test - public void testArraySumWhileWithContinue() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantArraySumWhileWithContinue/test/ArraySumWhileWithContinue.java", - "ArraySumWhileWithContinue", "sum", null, - "/set/useLoopInvariantArraySumWhileWithContinue/oracle/ArraySumWhileWithContinue.xml", - false, false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, - false, false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantVoidWhileWithReturn - *

- *

- * Tests the handling of {@code return} when a loop invariant is applied. - *

- */ - @Test - public void testVoidWhileWithReturn() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantVoidWhileWithReturn/test/VoidWhileWithReturn.java", - "VoidWhileWithReturn", "sum", null, - "/set/useLoopInvariantVoidWhileWithReturn/oracle/VoidWhileWithReturn.xml", false, false, - true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, false, - false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantArraySumWhileWithReturn - *

- *

- * Tests the handling of {@code return} when a loop invariant is applied. - *

- */ - @Test - public void testArraySumWhileWithReturn() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantArraySumWhileWithReturn/test/ArraySumWhileWithReturn.java", - "ArraySumWhileWithReturn", "sum", null, - "/set/useLoopInvariantArraySumWhileWithReturn/oracle/ArraySumWhileWithReturn.xml", - false, false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, - false, false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantArraySumWhileWithBreak - *

- *

- * Tests the handling of {@code break} when a loop invariant is applied. - *

- */ - @Test - public void testArraySumWhileWithBreak() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantArraySumWhileWithBreak/test/ArraySumWhileWithBreak.java", - "ArraySumWhileWithBreak", "sum", null, - "/set/useLoopInvariantArraySumWhileWithBreak/oracle/ArraySumWhileWithBreak.xml", false, - false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, - false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantArraySumWhileWithException - *

- *

- * Tests the handling of thrown exceptions when a loop invariant is applied. - *

- */ - @Test - public void testArraySumWhileWithException() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantArraySumWhileWithException/test/ArraySumWhileWithException.java", - "ArraySumWhileWithException", "sum", "array != null", - "/set/useLoopInvariantArraySumWhileWithException/oracle/ArraySumWhileWithException.xml", - false, false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, - false, false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantWhileWithMethodCallAsCondition - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testWhileWithMethodCallAsCondition_preMethodContract() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantWhileWithMethodCallAsCondition/test/WhileWithMethodCallAsCondition.java", - "WhileWithMethodCallAsCondition", "size", "array != null", - "/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_preMethodContract.xml", - false, false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, - false, false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantWhileWithMethodCallAsCondition - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testWhileWithMethodCallAsCondition_preExpandMethods() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantWhileWithMethodCallAsCondition/test/WhileWithMethodCallAsCondition.java", - "WhileWithMethodCallAsCondition", "size", "array != null", - "/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_preExpandMethods.xml", - false, false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, - false, false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantWhileWithMethodCallAsCondition - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testWhileWithMethodCallAsCondition_NoPreMethodContract() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantWhileWithMethodCallAsCondition/test/WhileWithMethodCallAsCondition.java", - "WhileWithMethodCallAsCondition", "size", null, - "/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_NoPreMethodContract.xml", - false, false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, - false, false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantWhileWithLoopInvariantInCondition - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testWhileWithLoopInvariantInCondition() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantWhileWithLoopInvariantInCondition/test/WhileWithLoopInvariantInCondition.java", - "WhileWithLoopInvariantInCondition", "size", null, - "/set/useLoopInvariantWhileWithLoopInvariantInCondition/oracle/WhileWithLoopInvariantInCondition.xml", - false, false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, - false, false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantWhileWithMethodCallAsConditionOnObject - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testWhileWithMethodCallAsConditionOnObject() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantWhileWithMethodCallAsConditionOnObject/test/WhileWithMethodCallAsConditionOnObject.java", - "WhileWithMethodCallAsConditionOnObject", "size", null, - "/set/useLoopInvariantWhileWithMethodCallAsConditionOnObject/oracle/WhileWithMethodCallAsConditionOnObject.xml", - false, false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, true, false, - false, false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantWhileWithMethodCallAsCondition - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testWhileWithMethodCallAsCondition_NoPreExpandMethods() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantWhileWithMethodCallAsCondition/test/WhileWithMethodCallAsCondition.java", - "WhileWithMethodCallAsCondition", "size", null, - "/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_NoPreExpandMethods.xml", - false, false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, - false, false, false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantArraySizeDoWhile - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testUseLoopInvariantArraySizeDoWhile() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantArraySizeDoWhile/test/ArraySizeDoWhile.java", "ArraySizeDoWhile", - "size", "array != null", - "/set/useLoopInvariantArraySizeDoWhile/oracle/ArraySizeDoWhile.xml", false, false, true, - false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, false, - false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantArraySizeWhile - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testUseLoopInvariantArraySizeWhile() throws Exception { - doSETTest(testCaseDirectory, "/set/useLoopInvariantArraySizeWhile/test/ArraySizeWhile.java", - "ArraySizeWhile", "size", "array != null", - "/set/useLoopInvariantArraySizeWhile/oracle/ArraySizeWhile.xml", false, false, true, - false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, false, - false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantArraySumFor - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testUseLoopInvariantArraySumFor() throws Exception { - doSETTest(testCaseDirectory, "/set/useLoopInvariantArraySumFor/test/ArraySumFor.java", - "ArraySumFor", "sum", "array != null", - "/set/useLoopInvariantArraySumFor/oracle/ArraySumFor.xml", false, false, true, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, false, false, - false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantArraySumForEach - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testUseLoopInvariantArraySumForEach() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantArraySumForEach/test/ArraySumForEach.java", "ArraySumForEach", - "sum", "array != null", - "/set/useLoopInvariantArraySumForEach/oracle/ArraySumForEach.xml", false, false, true, - false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, false, - false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantArraySumWhile - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testUseLoopInvariantArraySumWhile() throws Exception { - doSETTest(testCaseDirectory, "/set/useLoopInvariantArraySumWhile/test/ArraySumWhile.java", - "ArraySumWhile", "sum", "array != null", - "/set/useLoopInvariantArraySumWhile/oracle/ArraySumWhile.xml", false, false, true, - false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, false, false, - false, false, false, true); - } - - /** - *

- * Tests example: /set/useLoopInvariantArraySumWhileInitiallyInvalid - *

- *

- * The preserves loop body branch is fulfilled and not contained in the symbolic execution tree! - *

- */ - @Test - public void testUseLoopInvariantArraySumWhileInitiallyInvalid() throws Exception { - doSETTest(testCaseDirectory, - "/set/useLoopInvariantArraySumWhileInitiallyInvalid/test/ArraySumWhileInitiallyInvalid.java", - "ArraySumWhileInitiallyInvalid", "sum", "array != null", - "/set/useLoopInvariantArraySumWhileInitiallyInvalid/oracle/ArraySumWhileInitiallyInvalid.xml", - false, false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, true, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractQueryTest - */ - @Test - public void testUseOperationContractQueryTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractQueryTest/test/UseOperationContractQueryTest.java", - "UseOperationContractQueryTest", "main", "value == magicNumber()", - "/set/useOperationContractQueryTest/oracle/UseOperationContractQueryTest.xml", false, - false, true, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractAllBranchesOpenTest - */ - @Test - public void testUseOperationContractAllBranchesOpenTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractAllBranchesOpenTest/test/UseOperationContractAllBranchesOpenTest.java", - "UseOperationContractAllBranchesOpenTest", "main", null, - "/set/useOperationContractAllBranchesOpenTest/oracle/UseOperationContractAllBranchesOpenTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/identicalTermsDuringProof - */ - @Test - public void testIdenticalTermsDuringProof() throws Exception { - // Make sure that correct symbolic execution tree is created. - SymbolicExecutionEnvironment env = doSETTest(testCaseDirectory, - "/set/identicalTermsDuringProof/test/IdenticalTermsDuringProof.java", - "IdenticalTermsDuringProof", "mid", null, - "/set/identicalTermsDuringProof/oracle/IdenticalTermsDuringProof.xml", false, false, - false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, - false, true); - try { - // Find both statements "mid = y;". - IExecutionStart startNode = env.getBuilder().getStartNode(); - IExecutionMethodCall methodCall = (IExecutionMethodCall) startNode.getChildren()[0]; - IExecutionStatement intMidZ = (IExecutionStatement) methodCall.getChildren()[0]; - IExecutionBranchStatement ifYZ = (IExecutionBranchStatement) intMidZ.getChildren()[0]; - IExecutionBranchCondition notXY = (IExecutionBranchCondition) ifYZ.getChildren()[0]; - IExecutionBranchStatement ifXZ = (IExecutionBranchStatement) notXY.getChildren()[0]; - IExecutionBranchCondition not1X = (IExecutionBranchCondition) ifXZ.getChildren()[0]; - IExecutionStatement midThenBranch = (IExecutionStatement) not1X.getChildren()[0]; - IExecutionBranchCondition not1Y = (IExecutionBranchCondition) ifYZ.getChildren()[1]; - IExecutionStatement midElseBranch = (IExecutionStatement) not1Y.getChildren()[0]; - // Make sure that both statements "mid = y;" have the correct position info. - assertNotSame(midThenBranch, midElseBranch); - assertNotSame(midThenBranch.getActiveStatement(), midElseBranch.getActiveStatement()); - PositionInfo thenPosition = midThenBranch.getActivePositionInfo(); - PositionInfo elsePosition = midElseBranch.getActivePositionInfo(); - assertNotSame(thenPosition, elsePosition); - assertNotSame(PositionInfo.UNDEFINED, thenPosition); - assertNotSame(PositionInfo.UNDEFINED, elsePosition); - assertEquals(6, thenPosition.getStartPosition().line()); - assertEquals(21, thenPosition.getStartPosition().column()); - assertEquals(6, thenPosition.getEndPosition().line()); - assertEquals(24, thenPosition.getEndPosition().column()); - assertEquals(9, elsePosition.getStartPosition().line()); - assertEquals(17, elsePosition.getStartPosition().column()); - assertEquals(9, elsePosition.getEndPosition().line()); - assertEquals(20, elsePosition.getEndPosition().column()); - } finally { - env.dispose(); - } - } - - /** - * Tests example: /set/labelTest - */ - @Test - public void testLabelTest_doubled() throws Exception { - doSETTest(testCaseDirectory, "/set/labelTest/test/LabelTest.java", "LabelTest", "doubled", - null, "/set/labelTest/oracle/LabelTest_doubled.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/labelTest - */ - @Test - public void testLabelTest_lost() throws Exception { - doSETTest(testCaseDirectory, "/set/labelTest/test/LabelTest.java", "LabelTest", "lost", - null, "/set/labelTest/oracle/LabelTest_lost.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/emptyBlockTest - */ - @Test - public void testEmptyBlockTest() throws Exception { - doSETTest(testCaseDirectory, "/set/emptyBlockTest/test/EmptyBlockTest.java", - "EmptyBlockTest", "emptyBlocks", null, "/set/emptyBlockTest/oracle/EmptyBlockTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractExceptionalNoPreconditionWithNullCheckTest - */ - @Test - public void testUseOperationContractExceptionalNoPreconditionWithNullCheckTest() - throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractExceptionalNoPreconditionWithNullCheckTest/test/UseOperationContractExceptionalNoPreconditionWithNullCheckTest.java", - "UseOperationContractExceptionalNoPreconditionWithNullCheckTest", "main", null, - "/set/useOperationContractExceptionalNoPreconditionWithNullCheckTest/oracle/UseOperationContractExceptionalNoPreconditionWithNullCheckTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractFalsePreconditionTest - */ - @Test - public void testUseOperationContractFalsePreconditionTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractFalsePreconditionTest/test/UseOperationContractFalsePreconditionTest.java", - "UseOperationContractFalsePreconditionTest", "main", null, - "/set/useOperationContractFalsePreconditionTest/oracle/UseOperationContractFalsePreconditionTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractFixedNormalPostTest - */ - @Test - public void testUseOperationContractFixedNormalPostTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractFixedNormalPostTest/test/UseOperationContractFixedNormalPostTest.java", - "UseOperationContractFixedNormalPostTest", "main", null, - "/set/useOperationContractFixedNormalPostTest/oracle/UseOperationContractFixedNormalPostTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractInvalidPreconditionOnObjectTest - */ - @Test - public void testUseOperationContractInvalidPreconditionOnObjectTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractInvalidPreconditionOnObjectTest/test/UseOperationContractInvalidPreconditionOnObjectTest.java", - "UseOperationContractInvalidPreconditionOnObjectTest", "main", null, - "/set/useOperationContractInvalidPreconditionOnObjectTest/oracle/UseOperationContractInvalidPreconditionOnObjectTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractInvalidPreconditionTest - */ - @Test - public void testUseOperationContractInvalidPreconditionTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractInvalidPreconditionTest/test/UseOperationContractInvalidPreconditionTest.java", - "UseOperationContractInvalidPreconditionTest", "main", null, - "/set/useOperationContractInvalidPreconditionTest/oracle/UseOperationContractInvalidPreconditionTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractNoExceptionTest - */ - @Test - public void testUseOperationContractNoExceptionTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractNoExceptionTest/test/UseOperationContractNoExceptionTest.java", - "UseOperationContractNoExceptionTest", "main", null, - "/set/useOperationContractNoExceptionTest/oracle/UseOperationContractNoExceptionTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractNoPreconditionTest - */ - @Test - public void testUseOperationContractNoPreconditionTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractNoPreconditionTest/test/UseOperationContractNoPreconditionTest.java", - "UseOperationContractNoPreconditionTest", "main", null, - "/set/useOperationContractNoPreconditionTest/oracle/UseOperationContractNoPreconditionTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractNoPreconditionWithNullCheckTest - */ - @Test - public void testUseOperationContractNoPreconditionWithNullCheckTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractNoPreconditionWithNullCheckTest/test/UseOperationContractNoPreconditionWithNullCheckTest.java", - "UseOperationContractNoPreconditionWithNullCheckTest", "main", null, - "/set/useOperationContractNoPreconditionWithNullCheckTest/oracle/UseOperationContractNoPreconditionWithNullCheckTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractNormalAndExceptionalBranchTest - */ - @Test - public void testUseOperationContractNormalAndExceptionalBranchTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractNormalAndExceptionalBranchTest/test/UseOperationContractNormalAndExceptionalBranchTest.java", - "UseOperationContractNormalAndExceptionalBranchTest", "main", null, - "/set/useOperationContractNormalAndExceptionalBranchTest/oracle/UseOperationContractNormalAndExceptionalBranchTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/useOperationContractNormalAndExceptionalTogetherTest - */ - @Test - public void testUseOperationContractNormalAndExceptionalTogetherTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/useOperationContractNormalAndExceptionalTogetherTest/test/UseOperationContractNormalAndExceptionalTogetherTest.java", - "UseOperationContractNormalAndExceptionalTogetherTest", "main", null, - "/set/useOperationContractNormalAndExceptionalTogetherTest/oracle/UseOperationContractNormalAndExceptionalTogetherTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, true, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/complexConstructorTest - */ - @Disabled - @Test - public void testComplexConstructorTest() throws Exception { - doSETTest(testCaseDirectory, "/set/complexConstructorTest/test/ComplexConstructorTest.java", - "ComplexConstructorTest", "main", null, - "/set/complexConstructorTest/oracle/ComplexConstructorTest.xml", false, false, true, - true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/simpleConstructorTest - */ - @Test - public void testSimpleConstructorTest() throws Exception { - doSETTest(testCaseDirectory, "/set/simpleConstructorTest/test/SimpleConstructorTest.java", - "SimpleConstructorTest", "main", null, - "/set/simpleConstructorTest/oracle/SimpleConstructorTest.xml", false, false, true, true, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/variablesUnknownTest - */ - @Test - public void testVariablesUnknownTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, "/set/variablesUnknownTest/test/UnknownTest.java", - "endless.UnknownTest", "main", null, "/set/variablesUnknownTest/oracle/UnknownTest.xml", - false, true, false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/variablesParameterAttributesChange - */ - @Test - public void testElseIfTest_variablesParameterAttributesChange() throws Exception { - doSETTest(testCaseDirectory, - "/set/variablesParameterAttributesChange/test/VariablesParameterAttributesChange.java", - "VariablesParameterAttributesChange", "main", null, - "/set/variablesParameterAttributesChange/oracle/VariablesParameterAttributesChange.xml", - false, true, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/elseIfTest - */ - @Test - public void testElseIfTest_mergedBranchConditions() throws Exception { - doSETTest(testCaseDirectory, "/set/elseIfTest/test/ElseIfTest.java", "ElseIfTest", "elseIf", - null, "/set/elseIfTest/oracle/ElseIfTestMergedBranchConditions.xml", false, false, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, true, false, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/switchCaseTest - */ - @Test - public void testSwitchCaseTest_mergedBranchConditions() throws Exception { - doSETTest(testCaseDirectory, "/set/switchCaseTest/test/SwitchCaseTest.java", - "SwitchCaseTest", "switchCase", null, - "/set/switchCaseTest/oracle/SwitchCaseTestMergedBranchConditions.xml", false, false, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, true, false, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/loopIterationTest - */ - @Test - public void testLoopIteration_LoopWithMethod() throws Exception { - doSETTest(testCaseDirectory, "/set/loopIterationTest/test/LoopIterationTest.java", - "LoopIterationTest", "loopMultipleTimes", null, - "/set/loopIterationTest/oracle/LoopIterationTest_loopMultipleTimes.xml", false, false, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/loopIterationTest - */ - @Test - public void testLoopIteration_LoopStatementCopied() throws Exception { - doSETTest(testCaseDirectory, "/set/loopIterationTest/test/LoopIterationTest.java", - "LoopIterationTest", "mainWorks", null, - "/set/loopIterationTest/oracle/LoopIterationTest_mainWorks.xml", false, false, false, - false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/loopIterationTest - */ - @Test - public void testLoopIteration_LoopStatementReused() throws Exception { - doSETTest(testCaseDirectory, "/set/loopIterationTest/test/LoopIterationTest.java", - "LoopIterationTest", "main", null, - "/set/loopIterationTest/oracle/LoopIterationTest_main.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/variablesArrayTest - */ - @Test - public void testVariablesArrayTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesArrayTest/test/VariablesArrayTest.java", "VariablesArrayTest", "main", - null, "/set/variablesArrayTest/oracle/VariablesArrayTest.xml", false, true, false, - false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, - true); - } - - /** - * Tests example: /set/variablesInstanceVariableTest - */ - @Test - public void testVariablesInstanceVariableTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesInstanceVariableTest/test/VariablesInstanceVariableTest.java", - "VariablesInstanceVariableTest", "main", null, - "/set/variablesInstanceVariableTest/oracle/VariablesInstanceVariableTest.xml", false, - true, false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/variablesLocalTest - */ - @Test - public void testVariablesLocalTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesLocalTest/test/VariablesLocalTest.java", "VariablesLocalTest", "main", - null, "/set/variablesLocalTest/oracle/VariablesLocalTest.xml", false, true, false, - false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, - true); - } - - /** - * Tests example: /set/variablesStaticTest - */ - @Test - public void testVariablesStaticTest() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/variablesStaticTest/test/VariablesStaticTest.java", "VariablesStaticTest", "main", - null, "/set/variablesStaticTest/oracle/VariablesStaticTest.xml", false, true, false, - false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, - true); - } - - /** - * Tests example: /set/complexFlatSteps - */ - @Test - public void testComplexFlatSteps() throws Exception { - doSETTest(testCaseDirectory, "/set/complexFlatSteps/test/ComplexFlatSteps.java", - "ComplexFlatSteps", "doSomething", null, - "/set/complexFlatSteps/oracle/ComplexFlatSteps.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/complexIf - */ - @Test - public void testComplexIf() throws Exception { - doSETTest(testCaseDirectory, "/set/complexIf/test/ComplexIf.java", "ComplexIf", "min", null, - "/set/complexIf/oracle/ComplexIf.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/doWhileFalseTest - */ - @Test - public void testDoWhileFlaseTest() throws Exception { - doSETTest(testCaseDirectory, "/set/doWhileFalseTest/test/DoWhileFalseTest.java", - "DoWhileFalseTest", "main", null, "/set/doWhileFalseTest/oracle/DoWhileFalseTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/doWhileTest - */ - @Test - public void testDoWhileTest() throws Exception { - doSETTest(testCaseDirectory, "/set/doWhileTest/test/DoWhileTest.java", "DoWhileTest", - "main", null, "/set/doWhileTest/oracle/DoWhileTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/elseIfDifferentVariables - */ - @Test - public void testElseIfDifferentVariables() throws Exception { - doSETTest(testCaseDirectory, - "/set/elseIfDifferentVariables/test/ElseIfDifferentVariables.java", - "ElseIfDifferentVariables", "main", null, - "/set/elseIfDifferentVariables/oracle/ElseIfDifferentVariables.xml", false, false, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/elseIfTest - */ - @Test - public void testElseIfTest() throws Exception { - doSETTest(testCaseDirectory, "/set/elseIfTest/test/ElseIfTest.java", "ElseIfTest", "elseIf", - null, "/set/elseIfTest/oracle/ElseIfTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/fixedRecursiveMethodCallTest - */ - @Test - public void testFixedRecursiveMethodCallTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/fixedRecursiveMethodCallTest/test/FixedRecursiveMethodCallTest.java", - "FixedRecursiveMethodCallTest", "decreaseValue", null, - "/set/fixedRecursiveMethodCallTest/oracle/FixedRecursiveMethodCallTest.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/forEachTest - */ - @Test - public void testForEachTest() throws Exception { - doSETTest(testCaseDirectory, "/set/forEachTest/test/ForEachTest.java", "ForEachTest", - "main", null, "/set/forEachTest/oracle/ForEachTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/forFalseTest - */ - @Test - public void testForFalseTest() throws Exception { - doSETTest(testCaseDirectory, "/set/forFalseTest/test/ForFalseTest.java", "ForFalseTest", - "main", null, "/set/forFalseTest/oracle/ForFalseTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/forTest - */ - @Test - public void testForTest() throws Exception { - doSETTest(testCaseDirectory, "/set/forTest/test/ForTest.java", "ForTest", "main", null, - "/set/forTest/oracle/ForTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/functionalDoWhileTest - */ - @Test - public void testFunctionalDoWhileTest() throws Exception { - doSETTest(testCaseDirectory, "/set/functionalDoWhileTest/test/FunctionalDoWhileTest.java", - "FunctionalDoWhileTest", "main", null, - "/set/functionalDoWhileTest/oracle/FunctionalDoWhileTest.xml", false, false, false, - false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/functionalForTest - */ - @Test - public void testFunctionalForTest() throws Exception { - doSETTest(testCaseDirectory, "/set/functionalForTest/test/FunctionalForTest.java", - "FunctionalForTest", "main", null, - "/set/functionalForTest/oracle/FunctionalForTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/functionalIf - */ - @Test - public void testFunctionalIf() throws Exception { - doSETTest(testCaseDirectory, "/set/functionalIf/test/FunctionalIf.java", "FunctionalIf", - "min", null, "/set/functionalIf/oracle/FunctionalIf.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/functionalWhileTest - */ - @Test - public void testFunctionalWhileTest() throws Exception { - doSETTest(testCaseDirectory, "/set/functionalWhileTest/test/FunctionalWhileTest.java", - "FunctionalWhileTest", "main", null, - "/set/functionalWhileTest/oracle/FunctionalWhileTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/methodCallOnObject - */ - @Test - public void testMethodCallOnObject() throws Exception { - doSETTest(testCaseDirectory, "/set/methodCallOnObject/test/MethodCallOnObject.java", - "MethodCallOnObject", "main", null, - "/set/methodCallOnObject/oracle/MethodCallOnObject.xml", false, false, false, true, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/methodCallOnObjectWithException - */ - @Test - public void testMethodCallOnObjectWithException() throws Exception { - doSETTest(testCaseDirectory, - "/set/methodCallOnObjectWithException/test/MethodCallOnObjectWithException.java", - "MethodCallOnObjectWithException", "main", null, - "/set/methodCallOnObjectWithException/oracle/MethodCallOnObjectWithException.xml", - false, false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/methodCallParallelTest - */ - @Test - public void testMethodCallParallelTest() throws Exception { - doSETTest(testCaseDirectory, "/set/methodCallParallelTest/test/MethodCallParallelTest.java", - "MethodCallParallelTest", "main", null, - "/set/methodCallParallelTest/oracle/MethodCallParallelTest.xml", false, false, false, - true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/methodFormatTest - */ - @Test - public void testMethodFormatTest() throws Exception { - doSETTest(testCaseDirectory, "/set/methodFormatTest/test/MethodFormatTest.java", - "MethodFormatTest", "main", null, "/set/methodFormatTest/oracle/MethodFormatTest.xml", - false, false, false, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/methodHierarchyCallTest - */ - @Test - public void testMethodHierarchyCallTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/methodHierarchyCallTest/test/MethodHierarchyCallTest.java", - "MethodHierarchyCallTest", "main", null, - "/set/methodHierarchyCallTest/oracle/MethodHierarchyCallTest.xml", false, false, true, - true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/methodHierarchyCallWithExceptionTest - */ - @Test - public void testMethodHierarchyCallWithExceptionTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/methodHierarchyCallWithExceptionTest/test/MethodHierarchyCallWithExceptionTest.java", - "MethodHierarchyCallWithExceptionTest", "main", null, - "/set/methodHierarchyCallWithExceptionTest/oracle/MethodHierarchyCallWithExceptionTest.xml", - false, false, true, true, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/nestedDoWhileTest - */ - @Test - public void testNestedDoWhileTest() throws Exception { - doSETTest(testCaseDirectory, "/set/nestedDoWhileTest/test/NestedDoWhileTest.java", - "NestedDoWhileTest", "main", null, - "/set/nestedDoWhileTest/oracle/NestedDoWhileTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/nestedForTest - */ - @Test - public void testNestedForTest() throws Exception { - doSETTest(testCaseDirectory, "/set/nestedForTest/test/NestedForTest.java", "NestedForTest", - "main", null, "/set/nestedForTest/oracle/NestedForTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/nestedWhileTest - */ - @Test - public void testNestedWhileTest() throws Exception { - doSETTest(testCaseDirectory, "/set/nestedWhileTest/test/NestedWhileTest.java", - "NestedWhileTest", "mainNested", null, - "/set/nestedWhileTest/oracle/NestedWhileTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - *

- * Tests example: /set/recursiveFibonacci - *

- *

- * This test produces a deep symbolic execution tree to make sure that no - * {@link StackOverflowError}s are thrown. - *

- */ - @Test - public void testRecursiveFibonacci_LONG_RUNNING_TEST() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/recursiveFibonacci/test/RecursiveFibonacci.java", "RecursiveFibonacci", - "fibonacci10", null, "/set/recursiveFibonacci/oracle/RecursiveFibonacci.xml", false, - false, false, false, ALL_IN_ONE_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/simpleIf - */ - @Test - public void testSimpleIf() throws Exception { - doSETTest(testCaseDirectory, "/set/simpleIf/test/SimpleIf.java", "SimpleIf", "min", null, - "/set/simpleIf/oracle/SimpleIf.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/simpleNullPointerSplitTest - */ - @Test - public void testSimpleNullPointerSplitTest() throws Exception { - doSETTest(testCaseDirectory, - "/set/simpleNullPointerSplitTest/test/SimpleNullPointerSplitTest.java", - "SimpleNullPointerSplitTest", "main", null, - "/set/simpleNullPointerSplitTest/oracle/SimpleNullPointerSplitTest.xml", false, false, - false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, - false, false, false, false, true); - } - - /** - * Tests example: /set/statementKindTest - */ - @Test - public void testStatementKindTest() throws Exception { - doSETTest(testCaseDirectory, "/set/statementKindTest/test/StatementKindTest.java", - "StatementKindTest", "main", null, - "/set/statementKindTest/oracle/StatementKindTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/statements - */ - @Test - public void testStatements() throws Exception { - doSETTest(testCaseDirectory, "/set/statements/test/FlatSteps.java", "FlatSteps", - "doSomething", null, "/set/statements/oracle/FlatSteps.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/staticMethodCall - */ - @Test - public void testStaticMethodCall() throws Exception { - doSETTest(testCaseDirectory, "/set/staticMethodCall/test/StaticMethodCall.java", - "StaticMethodCall", "main", null, "/set/staticMethodCall/oracle/StaticMethodCall.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/switchCaseTest - */ - @Test - public void testSwitchCaseTest() throws Exception { - doSETTest(testCaseDirectory, "/set/switchCaseTest/test/SwitchCaseTest.java", - "SwitchCaseTest", "switchCase", null, "/set/switchCaseTest/oracle/SwitchCaseTest.xml", - false, false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, - false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/throwTest - */ - @Test - public void testThrowTest() throws Exception { - doSETTest(testCaseDirectory, "/set/throwTest/test/ThrowTest.java", "ThrowTest", "main", - null, "/set/throwTest/oracle/ThrowTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/throwVariableTest - */ - @Test - public void testThrowVariableTest() throws Exception { - doSETTest(testCaseDirectory, "/set/throwVariableTest/test/ThrowVariableTest.java", - "ThrowVariableTest", "main", null, - "/set/throwVariableTest/oracle/ThrowVariableTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/tryCatchFinally - */ - @Test - public void testTryCatchFinally() throws Exception { - doSETTest(testCaseDirectory, "/set/tryCatchFinally/test/TryCatchFinally.java", - "TryCatchFinally", "tryCatchFinally", null, - "/set/tryCatchFinally/oracle/TryCatchFinally.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } - - /** - * Tests example: /set/whileFalseTest - */ - @Test - public void testWhileFalseTest() throws Exception { - doSETTest(testCaseDirectory, "/set/whileFalseTest/test/WhileFalseTest.java", - "WhileFalseTest", "main", null, "/set/whileFalseTest/oracle/WhileFalseTest.xml", false, - false, false, false, DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, - false, false, false, false, false, true); - } - - /** - * Tests example: /set/whileTest - */ - @Test - public void testWhileTest() throws Exception { - doSETTest(testCaseDirectory, "/set/whileTest/test/WhileTest.java", "WhileTest", "main", - null, "/set/whileTest/oracle/WhileTest.xml", false, false, false, false, - DEFAULT_MAXIMAL_SET_NODES_PER_RUN, false, false, false, false, false, false, false, - false, false, true); - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestSymbolicLayoutExtractor.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestSymbolicLayoutExtractor.java deleted file mode 100644 index d81499b86c3..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestSymbolicLayoutExtractor.java +++ /dev/null @@ -1,921 +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.symbolic_execution.testcase; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.symbolic_execution.SymbolicLayoutExtractor; -import de.uka.ilkd.key.symbolic_execution.SymbolicLayoutReader; -import de.uka.ilkd.key.symbolic_execution.SymbolicLayoutWriter; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionMethodReturn; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionStatement; -import de.uka.ilkd.key.symbolic_execution.object_model.*; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.java.StringUtil; - -import org.junit.jupiter.api.*; - -import static org.junit.jupiter.api.Assertions.*; - - -/** - * Tests {@link SymbolicLayoutExtractor}. - * - * @author Martin Hentschel - */ -@TestMethodOrder(MethodOrderer.MethodName.class) -@Tag("slow") -@Disabled -public class TestSymbolicLayoutExtractor extends AbstractSymbolicExecutionTestCase { - /** - * Tests "configurationExtractorInstanceCreationTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testEmptyArrayCreationTest() throws Exception { - doTest("/set/configurationExtractorEmptyArrayCreationTest/test/EmptyArrayCreationTest.java", - "EmptyArrayCreationTest", "/set/configurationExtractorEmptyArrayCreationTest/oracle/", - "EmptyArrayCreationTest.xml", "testEmptyArrayCreationTest_initial", ".xml", - "testEmptyArrayCreationTest_current", ".xml", "n == 0", 1, 1, false, false); - } - - /** - * Tests "configurationExtractorInstanceCreationTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testArrayCreationTest() throws Exception { - doTest("/set/configurationExtractorArrayCreationTest/test/ArrayCreationTest.java", - "ArrayCreationTest", "/set/configurationExtractorArrayCreationTest/oracle/", - "ArrayCreationTest.xml", "testArrayCreationTest_initial", ".xml", - "testArrayCreationTest_current", ".xml", "n >= 4", 1, 1, false, false); - } - - /** - * Tests "configurationExtractorInstanceCreationTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testMyInteger() throws Exception { - doTest("/set/configurationExtractorMyInteger/test/MyInteger.java", "MyInteger", - "/set/configurationExtractorMyInteger/oracle/", "StaticMember.xml", - "testMyInteger_initial", ".xml", "testMyInteger_current", ".xml", null, 1, 2, false, - false); - } - - /** - * Tests "configurationExtractorInstanceCreationTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testVariableArrayIndex() throws Exception { - doTest("/set/configurationExtractorVariableArrayIndex/test/VariableArrayIndex.java", - "VariableArrayIndex", "/set/configurationExtractorVariableArrayIndex/oracle/", - "StaticMember.xml", "testVariableArrayIndex_initial", ".xml", - "testVariableArrayIndex_current", ".xml", null, 1, 1, false, false); - } - - /** - * Tests "configurationExtractorInstanceCreationTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testStaticMember_OnReturnNode() throws Exception { - doTest("/set/configurationExtractorStaticMember/test/StaticMember.java", "StaticMember", - "/set/configurationExtractorStaticMember/oracle/", "StaticMember.xml", - "testInstanceCreationTest_staticMember_initial", ".xml", - "testInstanceCreationTest_staticMember_current", ".xml", null, 1, 2, false, false); - } - - /** - * Tests "configurationExtractorExistsQuantifierTest". - * - * @throws Exception Occurred Exception. - */ - @Test - public void testExistsQuantifierTest() throws Exception { - doTest("/set/configurationExtractorExistsQuantifierTest/test/ExistsQuantifierTest.proof", - "/set/configurationExtractorExistsQuantifierTest/oracle/", "ExistsQuantifierTest.xml", - "testExistsQuantifierTest_initial", ".xml", "testExistsQuantifierTest_current", ".xml", - null, 1, 2, false); - } - - /** - * Tests "configurationExtractorInstanceCreationTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testInstanceCreationTest_OnReturnNode() throws Exception { - doTest("/set/configurationExtractorInstanceCreationTest/test/InstanceCreationTest.java", - "InstanceCreationTest", "/set/configurationExtractorInstanceCreationTest/oracle/", - "InstanceCreationTest.xml", "testInstanceCreationTest_onReturnNode_initial", ".xml", - "testInstanceCreationTest_onReturnNode_current", ".xml", null, 5, 2, false, false); - } - - /** - * Tests "configurationExtractorWithOperationContractsTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testWithOperationContracts() throws Exception { - doTest( - "/set/configurationExtractorWithOperationContractsTest/test/ConfigurationExtractorWithOperationContractsTest.java", - "ConfigurationExtractorWithOperationContractsTest", - "/set/configurationExtractorWithOperationContractsTest/oracle/", - "ConfigurationExtractorWithOperationContractsTest.xml", - "testWithOperationContracts_initial", ".xml", "testWithOperationContracts_current", - ".xml", null, 1, 2, true); - } - - /** - * Tests "configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass" - * without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass() throws Exception { - doTest( - "/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/test/AssociationSourceIsNotRepresentativeTermOfEquivalenceClass.java", - "algorithm.AssociationSourceIsNotRepresentativeTermOfEquivalenceClass", - "/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/", - "AssociationSourceIsNotRepresentativeTermOfEquivalenceClass.xml", - "testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_initial", ".xml", - "testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_current", ".xml", null, - 1, 3, false); - } - - /** - * Tests "configurationExtractorArrayInstanceCreationTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testArrayInstanceCreationTest() throws Exception { - doTest( - "/set/configurationExtractorArrayInstanceCreationTest/test/ArrayInstanceCreationTest.java", - "ArrayInstanceCreationTest", - "/set/configurationExtractorArrayInstanceCreationTest/oracle/", - "ArrayInstanceCreationTest.xml", "testArrayInstanceCreationTest_initial", ".xml", - "testArrayInstanceCreationTest_current", ".xml", null, 1, 2, false); - } - - /** - * Tests "configurationExtractorInstanceCreationTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testInstanceCreationTest() throws Exception { - doTest("/set/configurationExtractorInstanceCreationTest/test/InstanceCreationTest.java", - "InstanceCreationTest", "/set/configurationExtractorInstanceCreationTest/oracle/", - "InstanceCreationTest.xml", "testInstanceCreationTest_initial", ".xml", - "testInstanceCreationTest_current", ".xml", null, 5, 2, false); - } - - /** - * Tests "configurationExtractorSimpleArrayCreation" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleArrayCreation() throws Exception { - doTest("/set/configurationExtractorSimpleArrayCreation/test/SimpleArrayCreation.java", - "SimpleArrayCreation", "/set/configurationExtractorSimpleArrayCreation/oracle/", - "SimpleArrayCreation.xml", "testSimpleArrayCreation_initial", ".xml", - "testSimpleArrayCreation_current", ".xml", null, 1, 1, false); - } - - /** - * Tests "configurationExtractorMultiArrayIndexReadWriteAccess" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testMultiArrayIndexReadWriteAccess() throws Exception { - doTest( - "/set/configurationExtractorMultiArrayIndexReadWriteAccess/test/MultiArrayIndexReadWriteAccess.java", - "MultiArrayIndexReadWriteAccess", - "/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/", - "MultiArrayIndexReadWriteAccess.xml", "testMultiArrayIndexReadWriteAccess_initial", - ".xml", "testMultiArrayIndexReadWriteAccess_current", ".xml", null, 1, 1, false); - } - - /** - * Tests "configurationExtractorSimpleLinkedArrays" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleLinkedArrays() throws Exception { - doTest("/set/configurationExtractorSimpleLinkedArrays/test/SimpleLinkedArrays.java", - "SimpleLinkedArrays", "/set/configurationExtractorSimpleLinkedArrays/oracle/", - "SimpleLinkedArrays.xml", "testSimpleLinkedArrays_initial", ".xml", - "testSimpleLinkedArrays_current", ".xml", null, 1, 5, false); - } - - /** - * Tests "configurationExtractorObjectArrayIndexWriteAccess" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testObjectArrayIndexWriteAccess() throws Exception { - doTest( - "/set/configurationExtractorObjectArrayIndexWriteAccess/test/ObjectArrayIndexWriteAccess.java", - "ObjectArrayIndexWriteAccess", - "/set/configurationExtractorObjectArrayIndexWriteAccess/oracle/", - "ObjectArrayIndexWriteAccess.xml", "testObjectArrayIndexWriteAccess_initial", ".xml", - "testObjectArrayIndexWriteAccess_current", ".xml", null, 2, 1, false); - } - - /** - * Tests "configurationExtractorArrayIndexWriteAccess" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testArrayIndexWriteAccess() throws Exception { - doTest("/set/configurationExtractorArrayIndexWriteAccess/test/ArrayIndexWriteAccess.java", - "ArrayIndexWriteAccess", "/set/configurationExtractorArrayIndexWriteAccess/oracle/", - "ArrayIndexWriteAccess.xml", "testArrayIndexWriteAccess_initial", ".xml", - "testArrayIndexWriteAccess_current", ".xml", null, 1, 1, false); - } - - /** - * Tests "configurationExtractorObjectArrayIndexReadAccess" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testObjectArrayIndexReadAccess() throws Exception { - doTest( - "/set/configurationExtractorObjectArrayIndexReadAccess/test/ObjectArrayIndexReadAccess.java", - "ObjectArrayIndexReadAccess", - "/set/configurationExtractorObjectArrayIndexReadAccess/oracle/", - "ObjectArrayIndexReadAccess.xml", "testObjectArrayIndexReadAccess_initial", ".xml", - "testObjectArrayIndexReadAccess_current", ".xml", null, 1, 1, false); - } - - /** - * Tests "configurationExtractorOneAssignmentTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testArrayIndexReadAccess() throws Exception { - doTest("/set/configurationExtractorArrayIndexReadAccess/test/ArrayIndexReadAccess.java", - "ArrayIndexReadAccess", "/set/configurationExtractorArrayIndexReadAccess/oracle/", - "ArrayIndexReadAccess.xml", "testArrayIndexReadAccess_initial", ".xml", - "testArrayIndexReadAccess_current", ".xml", null, 1, 1, false); - } - - /** - * Tests "configurationExtractorOneAssignmentTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testOneAssignmentTest() throws Exception { - doTest("/set/configurationExtractorOneAssignmentTest/test/OneAssignmentTest.java", - "OneAssignmentTest", "/set/configurationExtractorOneAssignmentTest/oracle/", - "OneAssignmentTest.xml", "testOneAssignmentTest_initial", ".xml", - "testOneAssignmentTest_current", ".xml", null, 1, 5, false); - } - - /** - * Tests "configurationExtractorEmptyPathConditionAndNoUpdates" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testEmptyPathConditionAndNoUpdates() throws Exception { - doTest( - "/set/configurationExtractorEmptyPathConditionAndNoUpdates/test/EmptyPathConditionAndNoUpdates.java", - "EmptyPathConditionAndNoUpdates", - "/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/", - "EmptyPathConditionAndNoUpdates.xml", "testEmptyPathConditionAndNoUpdates_initial", - ".xml", "testEmptyPathConditionAndNoUpdates_current", ".xml", null, 1, 2, false); - } - - /** - * Tests "configurationExtractorSimpleLinkedOjbectsInsertion" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleLinkedOjbectsInsertion() throws Exception { - doTest( - "/set/configurationExtractorSimpleLinkedOjbectsInsertion/test/SimpleLinkedOjbectsInsertion.java", - "SimpleLinkedOjbectsInsertion", - "/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/", - "SimpleLinkedOjbectsInsertion.xml", "testSimpleLinkedOjbectsInsertion_initial", ".xml", - "testSimpleLinkedOjbectsInsertion_current", ".xml", null, 2, 4, false); - } - - /** - * Tests "configurationExtractorIntegerConditionTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testObjectConditionTest() throws Exception { - doTest("/set/configurationExtractorObjectConditionTest/test/ObjectConditionTest.java", - "ObjectConditionTest", "/set/configurationExtractorObjectConditionTest/oracle/", - "ObjectConditionTest.xml", "testObjectConditionTestt_initial", ".xml", - "testObjectConditionTest_current", ".xml", null, 1, 1, false); - } - - /** - * Tests "configurationExtractorIntegerConditionTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testIntegerConditionTest() throws Exception { - doTest("/set/configurationExtractorIntegerConditionTest/test/IntegerConditionTest.java", - "IntegerConditionTest", "/set/configurationExtractorIntegerConditionTest/oracle/", - "IsInstanceTest.xml", "testIntegerConditionTest_initial", ".xml", - "testIntegerConditionTest_current", ".xml", null, 1, 1, false); - } - - /** - * Tests "configurationExtractorIsInstanceTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testIsInstanceTest() throws Exception { - doTest("/set/configurationExtractorIsInstanceTest/test/IsInstanceTest.java", - "IsInstanceTest", "/set/configurationExtractorIsInstanceTest/oracle/", - "IsInstanceTest.xml", "testIsInstanceTest_initial", ".xml", - "testIsInstanceTest_current", ".xml", null, 1, 2, false); - } - - /** - * Tests "configurationExtractorIsNullTest" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testIsNullTest() throws Exception { - doTest("/set/configurationExtractorIsNullTest/test/IsNullTest.java", "IsNullTest", - "/set/configurationExtractorIsNullTest/oracle/", "NullInEquivalenceClass.xml", - "testIsNullTest_initial", ".xml", "testIsNullTest_current", ".xml", null, 1, 1, false); - } - - /** - * Tests "configurationExtractorSimpleLinkedOjbects" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleLinkedOjbectsInstanceVariable() throws Exception { - doTest( - "/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/test/SimpleLinkedOjbectsInstanceVariable.java", - "SimpleLinkedOjbectsInstanceVariable", - "/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/", - "SimpleLinkedOjbectsInstanceVariable.xml", - "testSimpleLinkedOjbectsInstanceVariable_initial", ".xml", - "testSimpleLinkedOjbectsInstanceVariable_current", ".xml", null, 1, 4, false); - } - - /** - * Tests "configurationExtractorSimpleStaticAttributes" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleStaticAttributes() throws Exception { - doTest("/set/configurationExtractorSimpleStaticAttributes/test/SimpleStaticAttributes.java", - "SimpleStaticAttributes", "/set/configurationExtractorSimpleStaticAttributes/oracle/", - "SimpleStaticAttributes.xml", "testSimpleStaticAttributes_initial", ".xml", - "testSimpleStaticAttributes_current", ".xml", null, 1, 2, false); - } - - /** - * Tests "configurationExtractorSimpleArrayLength" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleArrayLength() throws Exception { - doTest("/set/configurationExtractorSimpleArrayLength/test/SimpleArrayLength.java", - "SimpleArrayLength", "/set/configurationExtractorSimpleArrayLength/oracle/", - "SimpleArrayLength.xml", "testSimpleArrayLength_initial", ".xml", - "testSimpleArrayLength_current", ".xml", null, 1, 1, false); - } - - /** - * Tests "configurationExtractorSimpleLinkedOjbectsDeletion" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleLinkedOjbectsDeletion() throws Exception { - doTest( - "/set/configurationExtractorSimpleLinkedOjbectsDeletion/test/SimpleLinkedOjbectsDeletion.java", - "SimpleLinkedOjbectsDeletion", - "/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/", - "SimpleLinkedOjbectsDeletion.xml", "testSimpleLinkedOjbectsDeletion_initial", ".xml", - "testSimpleLinkedOjbectsDeletion_current", ".xml", null, 1, 4, false); - } - - - /** - * Tests "configurationExtractorSimpleLinkedOjbectsDeletion" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleLinkedOjbectsDeletionPreCondition() throws Exception { - doTest( - "/set/configurationExtractorSimpleLinkedOjbectsDeletion/test/SimpleLinkedOjbectsDeletion.java", - "SimpleLinkedOjbectsDeletion", - "/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/", - "SimpleLinkedOjbectsDeletionPreCondition.xml", - "testSimpleLinkedOjbectsDeletionPreCondition_initial", ".xml", - "testSimpleLinkedOjbectsDeletionPreCondition_current", ".xml", - "x != null & x.next != null & x.next.next != null", 1, 4, false); - } - - /** - * Tests "configurationExtractorSimpleLinkedOjbects" without precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleLinkedOjbects() throws Exception { - doTest("/set/configurationExtractorSimpleLinkedOjbects/test/SimpleLinkedOjbects.java", - "SimpleLinkedOjbects", "/set/configurationExtractorSimpleLinkedOjbects/oracle/", - "SimpleLinkedOjbects.xml", "testSimpleLinkedOjbects_initial", ".xml", - "testSimpleLinkedOjbects_current", ".xml", null, 1, 4, false); - } - - /** - * Tests "configurationExtractorSimpleLinkedOjbects" with precondition. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleLinkedOjbectsPreCondition() throws Exception { - doTest("/set/configurationExtractorSimpleLinkedOjbects/test/SimpleLinkedOjbects.java", - "SimpleLinkedOjbects", "/set/configurationExtractorSimpleLinkedOjbects/oracle/", - "SimpleLinkedOjbectsPreCondition.xml", "testSimpleLinkedOjbectsPreCondition_initial", - ".xml", "testSimpleLinkedOjbectsPreCondition_current", ".xml", - "x != null & x.next != null & x.next.next != null", 1, 4, false); - } - - /** - * Executes the test steps. - * - * @param javaPathInkeyRepDirectory The path to the Java file. - * @param containerTypeName The class name. - * @param oraclePathInBaseDir The path to the oracle directory. - * @param symbolicExecutionOracleFileName File name of the symbolic execution oracle file. - * @param initialStatesOraclePrefix Prefix for initial memory layout oracles. - * @param initialStatesOracleFileExtension Initial memory layout oracle file extension. - * @param currentStatesOraclePrefix Prefix for current memory layout oracles. - * @param currentStatesOracleFileExtension Current memory layout oracle file extension. - * @param precondition An optional precondition. - * @param useOperationContracts Use operation contracts? - * @throws Exception Occurred Exception. - */ - protected void doTest(String javaPathInkeyRepDirectory, String containerTypeName, - String oraclePathInBaseDir, String symbolicExecutionOracleFileName, - String initialStatesOraclePrefix, String initialStatesOracleFileExtension, - String currentStatesOraclePrefix, String currentStatesOracleFileExtension, - String precondition, int numberOfReturnNodeInMostLeftBranch, - int expectedNumberOfLayouts, boolean useOperationContracts) throws Exception { - doTest(javaPathInkeyRepDirectory, containerTypeName, oraclePathInBaseDir, - symbolicExecutionOracleFileName, initialStatesOraclePrefix, - initialStatesOracleFileExtension, currentStatesOraclePrefix, - currentStatesOracleFileExtension, precondition, numberOfReturnNodeInMostLeftBranch, - expectedNumberOfLayouts, useOperationContracts, true); - } - - /** - * Executes the test steps. - * - * @param javaPathInkeyRepDirectory The path to the Java file. - * @param containerTypeName The class name. - * @param oraclePathInBaseDir The path to the oracle directory. - * @param symbolicExecutionOracleFileName File name of the symbolic execution oracle file. - * @param initialStatesOraclePrefix Prefix for initial memory layout oracles. - * @param initialStatesOracleFileExtension Initial memory layout oracle file extension. - * @param currentStatesOraclePrefix Prefix for current memory layout oracles. - * @param currentStatesOracleFileExtension Current memory layout oracle file extension. - * @param precondition An optional precondition. - * @param useOperationContracts Use operation contracts? - * @throws Exception Occurred Exception. - */ - protected void doTest(String javaPathInkeyRepDirectory, String containerTypeName, - String oraclePathInBaseDir, String symbolicExecutionOracleFileName, - String initialStatesOraclePrefix, String initialStatesOracleFileExtension, - String currentStatesOraclePrefix, String currentStatesOracleFileExtension, - String precondition, int numberOfReturnNodeInMostLeftBranch, - int expectedNumberOfLayouts, boolean useOperationContracts, - boolean onReturnStatementNode) throws Exception { - Map originalTacletOptions = null; - SymbolicExecutionEnvironment env = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Define test settings - final String methodFullName = "compute"; - // Make sure that the correct taclet options are defined. - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, precondition, false, useOperationContracts, - false, false, false, false, false, false, false, true); - setOneStepSimplificationEnabled(null, true); - // Resume - resume(env.getUi(), env.getBuilder(), - oraclePathInBaseDir + symbolicExecutionOracleFileName, testCaseDirectory); - // Perform test steps - doTestSteps(env, oraclePathInBaseDir, symbolicExecutionOracleFileName, - initialStatesOraclePrefix, initialStatesOracleFileExtension, - currentStatesOraclePrefix, currentStatesOracleFileExtension, precondition, - numberOfReturnNodeInMostLeftBranch, expectedNumberOfLayouts, onReturnStatementNode); - } finally { - // Restore original options - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } - - /** - * Executes the test steps. - * - * @param proofFilePathInkeyRepDirectory The path to the Proof file. - * @param oraclePathInBaseDir The path to the oracle directory. - * @param symbolicExecutionOracleFileName File name of the symbolic execution oracle file. - * @param initialStatesOraclePrefix Prefix for initial memory layout oracles. - * @param initialStatesOracleFileExtension Initial memory layout oracle file extension. - * @param currentStatesOraclePrefix Prefix for current memory layout oracles. - * @param currentStatesOracleFileExtension Current memory layout oracle file extension. - * @param precondition An optional precondition. - * @throws Exception Occurred Exception. - */ - protected void doTest(String proofFilePathInkeyRepDirectory, String oraclePathInBaseDir, - String symbolicExecutionOracleFileName, String initialStatesOraclePrefix, - String initialStatesOracleFileExtension, String currentStatesOraclePrefix, - String currentStatesOracleFileExtension, String precondition, - int numberOfReturnNodeInMostLeftBranch, int expectedNumberOfLayouts, - boolean onReturnStatementNode) throws Exception { - SymbolicExecutionEnvironment env = null; - try { - // Load proof file - env = createSymbolicExecutionEnvironment(testCaseDirectory, - proofFilePathInkeyRepDirectory, false, false, false, false, false, false, false, - false, false, false, true); - // Perform test steps - doTestSteps(env, oraclePathInBaseDir, symbolicExecutionOracleFileName, - initialStatesOraclePrefix, initialStatesOracleFileExtension, - currentStatesOraclePrefix, currentStatesOracleFileExtension, precondition, - numberOfReturnNodeInMostLeftBranch, expectedNumberOfLayouts, onReturnStatementNode); - } finally { - if (env != null) { - env.dispose(); - } - } - } - - protected void doTestSteps(SymbolicExecutionEnvironment env, - String oraclePathInBaseDir, String symbolicExecutionOracleFileName, - String initialStatesOraclePrefix, String initialStatesOracleFileExtension, - String currentStatesOraclePrefix, String currentStatesOracleFileExtension, - String precondition, int numberOfReturnNodeInMostLeftBranch, - int expectedNumberOfLayouts, boolean onReturnStatementNode) throws Exception { - // Find most left method return node - IExecutionNode returnNode = env.getBuilder().getStartNode(); - int foundReturnStatement = 0; - while (foundReturnStatement < numberOfReturnNodeInMostLeftBranch - && returnNode.getChildren().length >= 1) { - returnNode = returnNode.getChildren()[0]; - if (returnNode instanceof IExecutionMethodReturn) { - foundReturnStatement++; - } - } - assertTrue(returnNode instanceof IExecutionMethodReturn); - IExecutionNode nodeToTest; - if (onReturnStatementNode) { - // Get the return statement which is returned in returnNode - IExecutionNode returnStatement = returnNode.getParent(); - while (!(returnStatement instanceof IExecutionStatement)) { - if (returnStatement instanceof IExecutionStatement) { - foundReturnStatement++; - } - returnStatement = returnStatement.getParent(); - } - assertNotNull(returnStatement); - assertTrue(returnStatement.getName().startsWith("return")); - nodeToTest = returnStatement; - } else { - nodeToTest = returnNode; - } - // Extract possible heaps - SymbolicLayoutExtractor extractor = new SymbolicLayoutExtractor(nodeToTest.getProofNode(), - nodeToTest.getModalityPIO(), false, false, true); - extractor.analyse(); - // Test the initial memory layouts (first time with lazy computation) - List initialLayoutsFirstTime = - new ArrayList<>(extractor.getLayoutsCount()); - assertEquals(expectedNumberOfLayouts, extractor.getLayoutsCount()); - for (int i = 0; i < extractor.getLayoutsCount(); i++) { - ISymbolicLayout current = extractor.getInitialLayout(i); - initialLayoutsFirstTime.add(current); - String oracleFile = oraclePathInBaseDir + initialStatesOraclePrefix + i - + initialStatesOracleFileExtension; - createOracleFile(current, oracleFile); - if (!CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY) { - SymbolicLayoutReader reader = new SymbolicLayoutReader(); - ISymbolicLayout expected = - reader.read(testCaseDirectory.resolve(oracleFile).toFile()); - assertNotNull(expected); - assertModel(expected, current); - } - } - // Test the initial memory layouts (second time with same memory layouts) - for (int i = 0; i < extractor.getLayoutsCount(); i++) { - ISymbolicLayout current = extractor.getInitialLayout(i); - assertSame(initialLayoutsFirstTime.get(i), current); - } - // Test the current memory layouts (first time with lazy computation) - List currentLayoutsFirstTime = - new ArrayList<>(extractor.getLayoutsCount()); - for (int i = 0; i < extractor.getLayoutsCount(); i++) { - ISymbolicLayout current = extractor.getCurrentLayout(i); - currentLayoutsFirstTime.add(current); - String oracleFile = oraclePathInBaseDir + currentStatesOraclePrefix + i - + currentStatesOracleFileExtension; - createOracleFile(current, oracleFile); - if (!CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY) { - SymbolicLayoutReader reader = new SymbolicLayoutReader(); - ISymbolicLayout expected = - reader.read(testCaseDirectory.resolve(oracleFile).toFile()); - assertNotNull(expected); - assertModel(expected, current); - } - } - // Test the current memory layouts (second time with same memory layouts) - for (int i = 0; i < extractor.getLayoutsCount(); i++) { - ISymbolicLayout current = extractor.getCurrentLayout(i); - assertSame(currentLayoutsFirstTime.get(i), current); - } - } - - protected static void createOracleFile(ISymbolicLayout model, String oraclePathInBaseDirFile) - throws IOException { - if (tempNewOracleDirectory != null && tempNewOracleDirectory.isDirectory()) { - // Create sub folder structure - File oracleFile = new File(tempNewOracleDirectory, oraclePathInBaseDirFile); - oracleFile.getParentFile().mkdirs(); - // Create oracle file - SymbolicLayoutWriter writer = new SymbolicLayoutWriter(); - writer.write(model, SymbolicLayoutWriter.DEFAULT_ENCODING, oracleFile); - // Print message to the user. - printOracleDirectory(); - } - } - - public static void assertModel(ISymbolicLayout expected, ISymbolicLayout current) { - if (expected != null) { - assertNotNull(current); - assertState(expected.getState(), current.getState()); - assertObjects(expected.getObjects(), current.getObjects()); - assertEquivalenceClasses(expected.getEquivalenceClasses(), - current.getEquivalenceClasses()); - } else { - assertNull(current); - } - } - - /** - * Compares the given {@link ISymbolicState}s. - * - * @param expected The expected instance. - * @param current The current instance. - */ - public static void assertState(ISymbolicState expected, ISymbolicState current) { - if (expected != null) { - assertNotNull(current); - assertEquals(expected.getName(), current.getName()); - assertValues(expected.getValues(), current.getValues()); - assertAssociations(expected.getAssociations(), current.getAssociations()); - } else { - assertNull(current); - } - } - - /** - * Compares the given {@link ISymbolicObject}s. - * - * @param expected The expected instance. - * @param current The current instance. - */ - public static void assertObjects(ImmutableList expected, - ImmutableList current) { - assertNotNull(expected); - assertNotNull(current); - assertEquals(expected.size(), current.size()); - Iterator expectedIter = expected.iterator(); - Iterator currentIter = current.iterator(); - while (expectedIter.hasNext() && currentIter.hasNext()) { - assertObject(expectedIter.next(), currentIter.next(), true); - } - assertFalse(expectedIter.hasNext()); - assertFalse(currentIter.hasNext()); - } - - /** - * Compares the given {@link ISymbolicObject}s. - * - * @param expected The expected instance. - * @param current The current instance. - * @param compareAssociations Compare contained associations? - */ - public static void assertObject(ISymbolicObject expected, ISymbolicObject current, - boolean compareAssociations) { - if (expected != null) { - assertNotNull(current); - assertEquals(expected.getNameString(), current.getNameString()); - assertEquals(expected.getTypeString(), current.getTypeString()); - assertValues(expected.getValues(), current.getValues()); - if (compareAssociations) { - assertAssociations(expected.getAssociations(), current.getAssociations()); - } - } else { - assertNull(current); - } - } - - /** - * Compares the given {@link ISymbolicEquivalenceClass}s. - * - * @param expected The expected instance. - * @param current The current instance. - */ - public static void assertEquivalenceClasses(ImmutableList expected, - ImmutableList current) { - assertNotNull(expected); - assertNotNull(current); - assertEquals(expected.size(), current.size()); - Iterator expectedIter = expected.iterator(); - Iterator currentIter = current.iterator(); - while (expectedIter.hasNext() && currentIter.hasNext()) { - assertEquivalenceClass(expectedIter.next(), currentIter.next()); - } - assertFalse(expectedIter.hasNext()); - assertFalse(currentIter.hasNext()); - } - - /** - * Compares the given {@link ISymbolicEquivalenceClass}s. - * - * @param expected The expected instance. - * @param current The current instance. - */ - public static void assertEquivalenceClass(ISymbolicEquivalenceClass expected, - ISymbolicEquivalenceClass current) { - if (expected != null) { - assertNotNull(current); - assertStringListEqualsIgnoreWhiteSpace(expected.getTermStrings(), - current.getTermStrings()); - assertEquals(expected.getRepresentativeString(), current.getRepresentativeString()); - } else { - assertNull(current); - } - } - - /** - * Compares the given {@link ImmutableList}s ignoring white space. - * - * @param expected The expected instance. - * @param current The current instance. - */ - public static void assertStringListEqualsIgnoreWhiteSpace(ImmutableList expected, - ImmutableList current) { - assertNotNull(expected); - assertNotNull(current); - assertEquals(expected.size(), current.size()); - Iterator expectedIter = expected.iterator(); - Iterator currentIter = current.iterator(); - while (expectedIter.hasNext() && currentIter.hasNext()) { - String nextExpected = expectedIter.next(); - String nextCurrent = currentIter.next(); - assertTrue(StringUtil.equalIgnoreWhiteSpace(nextExpected, nextCurrent), - "\"" + nextExpected + "\" does not match \"" + nextCurrent + "\""); - } - assertFalse(expectedIter.hasNext()); - assertFalse(currentIter.hasNext()); - } - - /** - * Compares the given {@link ISymbolicValue}s. - * - * @param expected The expected instance. - * @param current The current instance. - */ - public static void assertValues(ImmutableList expected, - ImmutableList current) { - assertNotNull(expected); - assertNotNull(current); - - assertEquals(expected.size(), current.size()); - Iterator expectedIter = expected.iterator(); - Iterator currentIter = current.iterator(); - while (expectedIter.hasNext() && currentIter.hasNext()) { - assertValue(expectedIter.next(), currentIter.next()); - } - assertFalse(expectedIter.hasNext()); - assertFalse(currentIter.hasNext()); - } - - /** - * Compares the given {@link ISymbolicValue}s. - * - * @param expected The expected instance. - * @param current The current instance. - */ - public static void assertValue(ISymbolicValue expected, ISymbolicValue current) { - if (expected != null) { - assertNotNull(current); - assertEquals(expected.getName(), current.getName()); - assertEquals(expected.getProgramVariableString(), current.getProgramVariableString()); - assertEquals(expected.isArrayIndex(), current.isArrayIndex()); - assertEquals(expected.getArrayIndexString(), current.getArrayIndexString()); - assertTrue( - StringUtil.equalIgnoreWhiteSpace(expected.getValueString(), - current.getValueString()), - "\"" + expected.getValueString() + "\" does not match \"" + current.getValueString() - + "\""); - assertEquals(expected.getTypeString(), current.getTypeString()); - assertEquals(expected.getConditionString(), current.getConditionString()); - } else { - assertNull(current); - } - } - - /** - * Compares the given {@link ISymbolicAssociation}s. - * - * @param expected The expected instance. - * @param current The current instance. - */ - public static void assertAssociations(ImmutableList expected, - ImmutableList current) { - assertNotNull(expected); - assertNotNull(current); - assertEquals(expected.size(), current.size()); - Iterator expectedIter = expected.iterator(); - Iterator currentIter = current.iterator(); - while (expectedIter.hasNext() && currentIter.hasNext()) { - assertAssociation(expectedIter.next(), currentIter.next()); - } - assertFalse(expectedIter.hasNext()); - assertFalse(currentIter.hasNext()); - } - - /** - * Compares the given {@link ISymbolicAssociation}s. - * - * @param expected The expected instance. - * @param current The current instance. - */ - public static void assertAssociation(ISymbolicAssociation expected, - ISymbolicAssociation current) { - if (expected != null) { - assertNotNull(current); - assertEquals(expected.getName(), current.getName()); - assertEquals(expected.getProgramVariableString(), current.getProgramVariableString()); - assertEquals(expected.isArrayIndex(), current.isArrayIndex()); - assertEquals(expected.getArrayIndexString(), current.getArrayIndexString()); - assertObject(expected.getTarget(), current.getTarget(), false); - assertEquals(expected.getConditionString(), current.getConditionString()); - } else { - assertNull(current); - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestSymbolicLayoutWriterAndReader.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestSymbolicLayoutWriterAndReader.java deleted file mode 100644 index ba4015e0702..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestSymbolicLayoutWriterAndReader.java +++ /dev/null @@ -1,105 +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.symbolic_execution.testcase; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.nio.charset.Charset; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeWriter; -import de.uka.ilkd.key.symbolic_execution.SymbolicLayoutReader; -import de.uka.ilkd.key.symbolic_execution.SymbolicLayoutReader.*; -import de.uka.ilkd.key.symbolic_execution.SymbolicLayoutWriter; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicLayout; - -import org.key_project.util.collection.ImmutableList; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -/** - * Tests {@link SymbolicLayoutWriter} and {@link SymbolicLayoutReader} - * - * @author Martin Hentschel - */ -public class TestSymbolicLayoutWriterAndReader { - /** - * Tests the writing and reading of an {@link ISymbolicLayout}. - */ - @Test - public void testWritingAndReading() - throws ParserConfigurationException, SAXException, IOException { - // Create model - ISymbolicLayout expectedNode = createModel(); - // Serialize model to XML string - SymbolicLayoutWriter writer = new SymbolicLayoutWriter(); - String xml = writer.toXML(expectedNode, ExecutionNodeWriter.DEFAULT_ENCODING); - // Read from XML string - SymbolicLayoutReader reader = new SymbolicLayoutReader(); - ISymbolicLayout currentNode = reader.read(new ByteArrayInputStream( - xml.getBytes(Charset.forName(ExecutionNodeWriter.DEFAULT_ENCODING)))); - TestSymbolicLayoutExtractor.assertModel(expectedNode, currentNode); - // Serialize model to output stream - ByteArrayOutputStream out = new ByteArrayOutputStream(); - writer.write(expectedNode, ExecutionNodeWriter.DEFAULT_ENCODING, out); - // Read from input stream - currentNode = reader.read(new ByteArrayInputStream(out.toByteArray())); - TestSymbolicLayoutExtractor.assertModel(expectedNode, currentNode); - // Serialize model to temporary file - File tempFile = - File.createTempFile("TestExecutionNodeWriterAndReader", "testWritingAndReading"); - try { - tempFile.delete(); - writer.write(expectedNode, ExecutionNodeWriter.DEFAULT_ENCODING, tempFile); - Assertions.assertTrue(tempFile.isFile()); - // Read from temporary file - currentNode = reader.read(tempFile); - TestSymbolicLayoutExtractor.assertModel(expectedNode, currentNode); - } finally { - tempFile.delete(); - } - } - - /** - * Creates an example model. - * - * @return The root of the example model. - */ - protected ISymbolicLayout createModel() { - KeYlessLayout model = new KeYlessLayout(); - model.addEquivalenceClass( - new KeYlessEquivalenceClass(ImmutableList.nil().append("A", "B", "C"), "A")); - model.addEquivalenceClass( - new KeYlessEquivalenceClass(ImmutableList.nil().append("1", "2", "3"), "63")); - // state - KeYlessState state = new KeYlessState("exampleState"); - state.addValue(new KeYlessValue("v1", "v1", false, "-1", "v1Value", "t1", null)); - state.addValue(new KeYlessValue("v2", "v2", false, "-1", "v2Value", "t2", "c1")); - model.setState(state); - // o1 - KeYlessObject o1 = new KeYlessObject("o1", "t1"); - o1.addValue(new KeYlessValue("o1", "o1", false, "-1", "o1Value", "t1", "c2")); - model.addObject(o1); - // o2 - KeYlessObject o2 = new KeYlessObject("o2", "t2"); - model.addObject(o2); - // o3 - KeYlessObject o3 = new KeYlessObject("o3", "t3"); - o3.addValue(new KeYlessValue("o1", "o1", false, "-1", "o1Value", "t1", null)); - o3.addValue(new KeYlessValue("o2", "o2", true, "52", "o2Value", "t2", "c3")); - o3.addValue(new KeYlessValue("o3", "o3", false, "-1", "o3Value", "t3", null)); - model.addObject(o3); - // associations - state.addAssociation(new KeYlessAssociation("a1", "a1", false, "-1", o2, null)); - o1.addAssociation(new KeYlessAssociation("a1", "a1", false, "-1", o1, "c4")); - o1.addAssociation(new KeYlessAssociation("a1", "a1", false, "-1", o2, "c5")); - o2.addAssociation(new KeYlessAssociation("a1", "a1", false, "-1", o3, null)); - o3.addAssociation(new KeYlessAssociation("a1", "a1", false, "-1", o1, "c6")); - return model; - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestTruthValueEvaluationUtil.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestTruthValueEvaluationUtil.java deleted file mode 100644 index e02a1979ce7..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestTruthValueEvaluationUtil.java +++ /dev/null @@ -1,1382 +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.symbolic_execution.testcase; - -import java.util.*; -import java.util.Map.Entry; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.logic.label.FormulaTermLabel; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodePreorderIterator; -import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil; -import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil.BranchResult; -import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil.MultiEvaluationResult; -import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil.TruthValue; -import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil.TruthValueTracingResult; -import de.uka.ilkd.key.symbolic_execution.model.*; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static org.junit.jupiter.api.Assertions.assertNotNull; - -/** - * Tests for {@link TruthValueTracingUtil}. - * - * @author Martin Hentschel - */ -@TestMethodOrder(MethodOrderer.MethodName.class) -public class TestTruthValueEvaluationUtil extends AbstractSymbolicExecutionTestCase { - private static final Logger LOGGER = - LoggerFactory.getLogger(TestTruthValueEvaluationUtil.class); - - /** - * Tests example: /set/truthValueWeakeningTest - */ - @Test - public void testJoinTestAfterBranchConditionWithWeakeningGoal() throws Exception { - // Create expected results - ExpectedBranchResult seGoal = new ExpectedBranchResult(); - ExpectedBranchResult weakeningGoal = - new ExpectedBranchResult(new ExpectedTruthValueResult("13.0", TruthValue.FALSE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE), - new ExpectedTruthValueResult("10.0", TruthValue.FALSE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("12.0", TruthValue.FALSE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE), - new ExpectedTruthValueResult("17.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.FALSE)); - ExpectedTruthValueEvaluationResult seResult = - new ExpectedTruthValueEvaluationResult(seGoal); - ExpectedTruthValueEvaluationResult weakeningResult = - new ExpectedTruthValueEvaluationResult(weakeningGoal); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueWeakeningTest/test/JoinTestAfterBranchConditionWithWeakeningGoal.proof", - "/set/truthValueWeakeningTest/oracle/JoinTestAfterBranchCondition.xml", false, false, - false, seResult, weakeningResult); - } - - /** - * Tests example: /set/truthValueLabelBelowUpdatesDifferentToApplicationTerm - */ - @Test - public void testTruthValueLabelBelowUpdatesDifferentToApplicationTerm() throws Exception { - // Create expected results - ExpectedBranchResult goal15 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE)); - ExpectedBranchResult goal17 = - new ExpectedBranchResult(new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result = - new ExpectedTruthValueEvaluationResult(goal15, goal17); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueLabelBelowUpdatesDifferentToApplicationTerm/test/TwoBranch.proof", - "/set/truthValueLabelBelowUpdatesDifferentToApplicationTerm/oracle/TwoBranch.xml", - false, false, false, result); - } - - /** - * Tests example: /set/truthValueExceptionalModifiableNothingTest - */ - @Test - public void testExceptionalModifiableNothingTest_OSS() throws Exception { - // Create expected results - ExpectedBranchResult goal374 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE)); - ExpectedBranchResult goal407 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE)); - ExpectedBranchResult goal444 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE)); - ExpectedBranchResult goal475 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE)); - ExpectedBranchResult goal476 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult exceptionResult = - new ExpectedTruthValueEvaluationResult(goal374, goal407, goal444, goal475, goal476); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueExceptionalModifiableNothingTest/test/ExceptionalModifiableNothingTest_OSS.proof", - "/set/truthValueExceptionalModifiableNothingTest/oracle/ExceptionalModifiableNothingTest.xml", - false, false, false, exceptionResult); - } - - /** - * Tests example: /set/truthValueExceptionalModifiableNothingTest - */ - @Test - public void testExceptionalModifiableNothingTest() throws Exception { - // Create expected results - ExpectedBranchResult goal374 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE)); - ExpectedBranchResult goal407 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE)); - ExpectedBranchResult goal444 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE)); - ExpectedBranchResult goal475 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE)); - ExpectedBranchResult goal476 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult exceptionResult = - new ExpectedTruthValueEvaluationResult(goal374, goal407, goal444, goal475, goal476); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueExceptionalModifiableNothingTest/test/ExceptionalModifiableNothingTest.proof", - "/set/truthValueExceptionalModifiableNothingTest/oracle/ExceptionalModifiableNothingTest.xml", - false, false, false, exceptionResult); - } - - /** - * Tests example: /set/truthValueBlockContractMagic42 - */ - @Test - @Disabled - public void IGNORE_testBlockContractMagic42() throws Exception { - // Create expected results - ExpectedBranchResult goal66 = - new ExpectedBranchResult(new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult preconditionResult = - new ExpectedTruthValueEvaluationResult(goal66); - ExpectedBranchResult goal62 = - new ExpectedBranchResult(new ExpectedTruthValueResult("13.0", TruthValue.TRUE), - new ExpectedTruthValueResult("14.0", TruthValue.TRUE), - new ExpectedTruthValueResult("19.0", TruthValue.TRUE), - new ExpectedTruthValueResult("20.0", TruthValue.TRUE), - new ExpectedTruthValueResult("21.0", TruthValue.TRUE)); - ExpectedBranchResult goal64 = - new ExpectedBranchResult(new ExpectedTruthValueResult("13.0", TruthValue.TRUE), - new ExpectedTruthValueResult("14.0", TruthValue.TRUE), - new ExpectedTruthValueResult("21.0", TruthValue.FALSE)); - ExpectedTruthValueEvaluationResult validitiyResult = - new ExpectedTruthValueEvaluationResult(goal62, goal64); - ExpectedBranchResult goal152 = - new ExpectedBranchResult(new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE)); - ExpectedBranchResult goal154 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.FALSE), - new ExpectedTruthValueResult("6.0", TruthValue.FALSE), - new ExpectedTruthValueResult("8.0", TruthValue.FALSE)); - ExpectedTruthValueEvaluationResult usageResult = - new ExpectedTruthValueEvaluationResult(goal152, goal154); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueBlockContractMagic42/test/BlockContractMagic42.proof", - "/set/truthValueBlockContractMagic42/oracle/BlockContractMagic42.xml", false, false, - true, preconditionResult, validitiyResult, usageResult); - } - - /** - * Tests example: /set/truthValueRejectedFormula - */ - @Test - public void testValueRejectedFormula() throws Exception { - // Create expected results - ExpectedBranchResult goal31 = - new ExpectedBranchResult(new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE)); - ExpectedBranchResult goal33 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result = - new ExpectedTruthValueEvaluationResult(goal31, goal33); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueRejectedFormula/test/LabelLostVerification.proof", - "/set/truthValueRejectedFormula/oracle/LabelLostVerification.xml", false, false, false, - result); - } - - /** - * Tests example: /set/truthValueAddingOfLabeledSubtree - */ - @Test - @Disabled - public void IGNORE_testAddingOfLabeledSubtree() throws Exception { - // Create expected results - ExpectedBranchResult goal53 = - new ExpectedBranchResult(new ExpectedTruthValueResult("13.0", TruthValue.TRUE), - new ExpectedTruthValueResult("14.0", TruthValue.TRUE), - new ExpectedTruthValueResult("15.0", TruthValue.FALSE), - new ExpectedTruthValueResult("16.0", TruthValue.UNKNOWN), - new ExpectedTruthValueResult("17.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult resultInvInitial = - new ExpectedTruthValueEvaluationResult(goal53); - ExpectedBranchResult goal141 = new ExpectedBranchResult(); - ExpectedTruthValueEvaluationResult resultInvTermination = - new ExpectedTruthValueEvaluationResult(goal141); - ExpectedBranchResult goal214 = new ExpectedBranchResult(); - ExpectedBranchResult goal229 = new ExpectedBranchResult(); - ExpectedBranchResult goal233 = new ExpectedBranchResult(); - ExpectedBranchResult goal231 = new ExpectedBranchResult(); - ExpectedBranchResult goal216 = new ExpectedBranchResult(); - ExpectedTruthValueEvaluationResult resultNormalTermination = - new ExpectedTruthValueEvaluationResult(goal214, goal229, goal233, goal231, goal216); - // Perform test - doTruthValueEvaluationTest("/set/truthValueAddingOfLabeledSubtree/test/ImmutableList.proof", - "/set/truthValueAddingOfLabeledSubtree/oracle/ImmutableList.xml", false, false, false, - resultInvInitial, resultInvTermination, resultNormalTermination); - } - - /** - * Tests example: /set/truthValueModifiableAndLoop - */ - @Test - @Disabled - public void IGNORE_testModifiableAndLoop() throws Exception { - // Create expected results - ExpectedBranchResult goal430 = - new ExpectedBranchResult(new ExpectedTruthValueResult("3.0", TruthValue.FALSE), - new ExpectedTruthValueResult("4.0", TruthValue.FALSE), - new ExpectedTruthValueResult("6.0", TruthValue.FALSE)); - ExpectedTruthValueEvaluationResult resultExceptionBranch = - new ExpectedTruthValueEvaluationResult(goal430); - ExpectedBranchResult goal478 = - new ExpectedBranchResult(new ExpectedTruthValueResult("7.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult resultInvInitial = - new ExpectedTruthValueEvaluationResult(goal478); - ExpectedBranchResult goal922 = - new ExpectedBranchResult(new ExpectedTruthValueResult("19.0", TruthValue.TRUE), - new ExpectedTruthValueResult("20.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult resultPrecondition = - new ExpectedTruthValueEvaluationResult(goal922); - ExpectedBranchResult goal886 = new ExpectedBranchResult(); - ExpectedBranchResult goal869 = - new ExpectedBranchResult(new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("14.0", TruthValue.TRUE), - new ExpectedTruthValueResult("15.0", TruthValue.TRUE), - new ExpectedTruthValueResult("16.0", TruthValue.TRUE)); - ExpectedBranchResult goal868 = - new ExpectedBranchResult(new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("14.0", TruthValue.TRUE), - new ExpectedTruthValueResult("15.0", TruthValue.TRUE), - new ExpectedTruthValueResult("16.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult resultLoopEnd = - new ExpectedTruthValueEvaluationResult(goal868, goal869, goal886); - ExpectedBranchResult goal1113 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.UNKNOWN), - new ExpectedTruthValueResult("6.0", TruthValue.UNKNOWN)); - ExpectedBranchResult goal1134 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE)); - ExpectedBranchResult goal1137 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result5 = - new ExpectedTruthValueEvaluationResult(goal1113, goal1134, goal1137); - // Perform test - doTruthValueEvaluationTest("/set/truthValueModifiableAndLoop/test/MagicProofNoOSS.proof", - "/set/truthValueModifiableAndLoop/oracle/MagicProofNoOSS.xml", true, true, false, - resultExceptionBranch, resultInvInitial, resultPrecondition, resultLoopEnd, result5); - } - - /** - * Tests example: /set/truthValueAnd - */ - @Test - public void testAnd3_replaceKnown() throws Exception { - // Create expected results - ExpectedBranchResult goal13 = - new ExpectedBranchResult(new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE)); - ExpectedBranchResult goal15 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("2.0", TruthValue.FALSE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result1 = - new ExpectedTruthValueEvaluationResult(goal13, goal15); - // Perform test - doTruthValueEvaluationTest("/set/truthValueAnd/test/And3_replaceKnown.proof", - "/set/truthValueAnd/oracle/And3_replaceKnown.xml", false, false, false, result1); - } - - /** - * Tests example: /set/truthValueUnderstandingProofsMyInteger - */ - @Test - public void testUnderstandingProofs_MyInteger() throws Exception { - // Create expected results - ExpectedBranchResult goal131 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE)); - ExpectedBranchResult goal133 = - new ExpectedBranchResult(new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.FALSE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.FALSE), - new ExpectedTruthValueResult("6.0", TruthValue.FALSE)); - ExpectedBranchResult goal150 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result1 = - new ExpectedTruthValueEvaluationResult(goal131, goal133, goal150); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueUnderstandingProofsMyInteger/test/MyInteger.proof", - "/set/truthValueUnderstandingProofsMyInteger/oracle/MyInteger.xml", false, false, false, - result1); - } - - /** - * Tests example: /set/truthValueUnderstandingProofsArrayUtil - */ - @Test - public void testUnderstandingProofs_ArrayUtil() throws Exception { - // Create expected results - ExpectedBranchResult goal87 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.FALSE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.FALSE), - new ExpectedTruthValueResult("8.0", TruthValue.FALSE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("12.0", TruthValue.TRUE), - new ExpectedTruthValueResult("13.0", TruthValue.TRUE), - new ExpectedTruthValueResult("14.0", TruthValue.TRUE), - new ExpectedTruthValueResult("15.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result1 = new ExpectedTruthValueEvaluationResult(goal87); - ExpectedBranchResult goal175 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.FALSE), - new ExpectedTruthValueResult("2.0", TruthValue.FALSE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.FALSE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE), - new ExpectedTruthValueResult("12.0", TruthValue.TRUE), - new ExpectedTruthValueResult("14.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result2 = - new ExpectedTruthValueEvaluationResult(goal175); - ExpectedBranchResult goal249 = - new ExpectedBranchResult(new ExpectedTruthValueResult("16.0", TruthValue.TRUE), - new ExpectedTruthValueResult("17.0", TruthValue.TRUE), - new ExpectedTruthValueResult("18.0", TruthValue.TRUE), - new ExpectedTruthValueResult("19.0", TruthValue.TRUE), - new ExpectedTruthValueResult("24.0", TruthValue.TRUE), - new ExpectedTruthValueResult("25.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result3 = - new ExpectedTruthValueEvaluationResult(goal249); - ExpectedBranchResult goal698 = - new ExpectedBranchResult(new ExpectedTruthValueResult("26.0", TruthValue.TRUE), - new ExpectedTruthValueResult("27.0", TruthValue.TRUE), - new ExpectedTruthValueResult("28.0", TruthValue.TRUE), - new ExpectedTruthValueResult("29.0", TruthValue.TRUE), - new ExpectedTruthValueResult("40.0", TruthValue.TRUE)); - ExpectedBranchResult goal747 = - new ExpectedBranchResult(new ExpectedTruthValueResult("26.0", TruthValue.TRUE), - new ExpectedTruthValueResult("27.0", TruthValue.TRUE), - new ExpectedTruthValueResult("28.0", TruthValue.TRUE), - new ExpectedTruthValueResult("29.0", TruthValue.TRUE), - new ExpectedTruthValueResult("34.0", TruthValue.TRUE), - new ExpectedTruthValueResult("40.0", TruthValue.TRUE)); - ExpectedBranchResult goal812 = - new ExpectedBranchResult(new ExpectedTruthValueResult("26.0", TruthValue.TRUE), - new ExpectedTruthValueResult("27.0", TruthValue.TRUE), - new ExpectedTruthValueResult("28.0", TruthValue.TRUE), - new ExpectedTruthValueResult("29.0", TruthValue.TRUE), - new ExpectedTruthValueResult("34.0", TruthValue.TRUE), - new ExpectedTruthValueResult("40.0", TruthValue.TRUE)); - ExpectedBranchResult goal821 = - new ExpectedBranchResult(new ExpectedTruthValueResult("26.0", TruthValue.TRUE), - new ExpectedTruthValueResult("27.0", TruthValue.TRUE), - new ExpectedTruthValueResult("28.0", TruthValue.TRUE), - new ExpectedTruthValueResult("29.0", TruthValue.TRUE), - new ExpectedTruthValueResult("38.0", TruthValue.TRUE), - new ExpectedTruthValueResult("39.0", TruthValue.TRUE), - new ExpectedTruthValueResult("40.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result4 = - new ExpectedTruthValueEvaluationResult(goal698, goal747, goal812, goal821); - ExpectedBranchResult goal1012 = - new ExpectedBranchResult(new ExpectedTruthValueResult("26.0", TruthValue.TRUE), - new ExpectedTruthValueResult("27.0", TruthValue.TRUE), - new ExpectedTruthValueResult("28.0", TruthValue.TRUE), - new ExpectedTruthValueResult("29.0", TruthValue.TRUE), - new ExpectedTruthValueResult("34.0", TruthValue.TRUE), - new ExpectedTruthValueResult("40.0", TruthValue.TRUE)); - ExpectedBranchResult goal1021 = - new ExpectedBranchResult(new ExpectedTruthValueResult("26.0", TruthValue.TRUE), - new ExpectedTruthValueResult("27.0", TruthValue.TRUE), - new ExpectedTruthValueResult("28.0", TruthValue.TRUE), - new ExpectedTruthValueResult("29.0", TruthValue.TRUE), - new ExpectedTruthValueResult("38.0", TruthValue.TRUE), - new ExpectedTruthValueResult("39.0", TruthValue.TRUE), - new ExpectedTruthValueResult("40.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result5 = - new ExpectedTruthValueEvaluationResult(goal1012, goal1021); - ExpectedBranchResult goal1251 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.FALSE), - new ExpectedTruthValueResult("2.0", TruthValue.FALSE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.FALSE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("12.0", TruthValue.TRUE), - new ExpectedTruthValueResult("13.0", TruthValue.TRUE), - new ExpectedTruthValueResult("14.0", TruthValue.TRUE), - new ExpectedTruthValueResult("15.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result6 = - new ExpectedTruthValueEvaluationResult(goal1251); - ExpectedBranchResult goal1272 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.FALSE), - new ExpectedTruthValueResult("8.0", TruthValue.FALSE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("12.0", TruthValue.TRUE), - new ExpectedTruthValueResult("13.0", TruthValue.TRUE), - new ExpectedTruthValueResult("14.0", TruthValue.TRUE), - new ExpectedTruthValueResult("15.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result7 = - new ExpectedTruthValueEvaluationResult(goal1272); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueUnderstandingProofsArrayUtil/test/ArrayUtil.proof", - "/set/truthValueUnderstandingProofsArrayUtil/oracle/ArrayUtil.xml", false, false, false, - result1, result2, result3, result4, result5, result6, result7); - } - - /** - * Tests example: /set/truthValueUnderstandingProofsAccount - */ - @Test - public void testUnderstandingProofs_Account() throws Exception { - // Create expected results - ExpectedBranchResult goal246 = - new ExpectedBranchResult(new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("12.0", TruthValue.TRUE)); - ExpectedBranchResult goal248 = - new ExpectedBranchResult(new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("12.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result1 = - new ExpectedTruthValueEvaluationResult(goal246, goal248); - ExpectedBranchResult goal195 = - new ExpectedBranchResult(new ExpectedTruthValueResult("13.0", TruthValue.TRUE), - new ExpectedTruthValueResult("14.0", TruthValue.TRUE), - new ExpectedTruthValueResult("15.0", TruthValue.TRUE), - new ExpectedTruthValueResult("16.0", TruthValue.TRUE)); - ExpectedBranchResult goal197 = - new ExpectedBranchResult(new ExpectedTruthValueResult("13.0", TruthValue.TRUE), - new ExpectedTruthValueResult("15.0", TruthValue.TRUE), - new ExpectedTruthValueResult("16.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result2 = - new ExpectedTruthValueEvaluationResult(goal195, goal197); - ExpectedBranchResult goal165 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE)); - ExpectedBranchResult goal166 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE)); - ExpectedBranchResult goal168 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result3 = - new ExpectedTruthValueEvaluationResult(goal165, goal166, goal168); - ExpectedBranchResult goal224 = - new ExpectedBranchResult(new ExpectedTruthValueResult("1.0", TruthValue.FALSE), - new ExpectedTruthValueResult("3.0", TruthValue.FALSE), - new ExpectedTruthValueResult("4.0", TruthValue.FALSE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.FALSE), - new ExpectedTruthValueResult("8.0", TruthValue.FALSE)); - ExpectedTruthValueEvaluationResult result4 = - new ExpectedTruthValueEvaluationResult(goal224); - // Perform test - doTruthValueEvaluationTest("/set/truthValueUnderstandingProofsAccount/test/Account.proof", - "/set/truthValueUnderstandingProofsAccount/oracle/Account.xml", false, false, false, - result1, result2, result3, result4); - } - - /** - * Tests example: /set/truthValueUnderstandingProofsCalendar - */ - @Test - public void testUnderstandingProofs_Calendar() throws Exception { - // Create expected results - ExpectedBranchResult goal369 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE)); - ExpectedBranchResult goal392 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE)); - ExpectedBranchResult goal423 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.FALSE), - new ExpectedTruthValueResult("3.0", TruthValue.FALSE), - new ExpectedTruthValueResult("4.0", TruthValue.FALSE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.FALSE), - new ExpectedTruthValueResult("8.0", TruthValue.FALSE)); - ExpectedBranchResult goal425 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result1 = - new ExpectedTruthValueEvaluationResult(goal369, goal392, goal423, goal425); - ExpectedBranchResult goal611 = - new ExpectedBranchResult(new ExpectedTruthValueResult("5.0", TruthValue.FALSE), - new ExpectedTruthValueResult("6.0", TruthValue.FALSE), - new ExpectedTruthValueResult("8.0", TruthValue.FALSE)); - ExpectedTruthValueEvaluationResult result2 = - new ExpectedTruthValueEvaluationResult(goal611); - // Perform test - doTruthValueEvaluationTest("/set/truthValueUnderstandingProofsCalendar/test/Calendar.proof", - "/set/truthValueUnderstandingProofsCalendar/oracle/Calendar.xml", false, false, false, - result1, result2); - } - - /** - * Tests example: /set/truthValueMyInteger - */ - @Test - public void testMyInteger() throws Exception { - // Create expected results - ExpectedBranchResult goal131 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE)); - ExpectedBranchResult goal133 = - new ExpectedBranchResult(new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.FALSE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.FALSE), - new ExpectedTruthValueResult("6.0", TruthValue.FALSE)); - ExpectedBranchResult goal150 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result = - new ExpectedTruthValueEvaluationResult(goal131, goal133, goal150); - // Perform test - doTruthValueEvaluationTest("/set/truthValueMyInteger/test/MyInteger.proof", - "/set/truthValueMyInteger/oracle/MyInteger.xml", false, false, false, result); - } - - /** - * Tests example: /set/truthValueEquivExample - */ - @Test - public void testEquivExample_NoOneStepSimplification() throws Exception { - // Create expected results - ExpectedBranchResult goal79 = - new ExpectedBranchResult(new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE)); - ExpectedBranchResult goal91 = - new ExpectedBranchResult(new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE)); - ExpectedBranchResult goal95 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE)); - ExpectedBranchResult goal97 = - new ExpectedBranchResult(new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.FALSE)); // SETAccumulate is false - ExpectedTruthValueEvaluationResult result = - new ExpectedTruthValueEvaluationResult(goal79, goal91, goal95, goal97); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueEquivExample/test/EquivExampleNoOneStepSimplification.proof", - "/set/truthValueEquivExample/oracle/EquivExample.xml", false, true, false, result); - } - - /** - * Tests example: /set/truthValueIfThenElseIntegerTest - */ - @Test - public void testIfThenElseInteger() throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult thenResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult elseResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE))); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueIfThenElseIntegerTest/test/IfThenElseIntegerTest.java", - "IfThenElseIntegerTest[IfThenElseIntegerTest::magic(int,int)].JML normal_behavior operation contract.0", - "/set/truthValueIfThenElseIntegerTest/oracle/IfThenElseIntegerTest.xml", false, false, - false, thenResult, elseResult); - } - - /** - * Tests example: /set/truthValueIfThenElseNotFormulaTest - */ - @Test - public void testIfThenElseNotFormula() throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult thenResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult elseResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE))); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueIfThenElseNotFormulaTest/test/IfThenElseNotFormulaTest.java", - "IfThenElseNotFormulaTest[IfThenElseNotFormulaTest::magic(int,int)].JML normal_behavior operation contract.0", - "/set/truthValueIfThenElseNotFormulaTest/oracle/IfThenElseNotFormulaTest.xml", false, - false, false, thenResult, elseResult); - } - - /** - * Tests example: /set/truthValueIfThenElseFormulaTest - */ - @Test - public void testIfThenElseFormula() throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult thenResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult elseResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE))); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueIfThenElseFormulaTest/test/IfThenElseFormulaTest.java", - "IfThenElseFormulaTest[IfThenElseFormulaTest::magic(int,int)].JML normal_behavior operation contract.0", - "/set/truthValueIfThenElseFormulaTest/oracle/IfThenElseFormulaTest.xml", false, false, - false, thenResult, elseResult); - } - - /** - * Tests example: /set/truthValueNotLastEvaluationGivesTruthValue - */ - @Test - public void testNotLastEvaluationGivesTruthValue() throws Exception { - // Create expected results - ExpectedBranchResult goal53 = - new ExpectedBranchResult(new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.TRUE), - new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.12", TruthValue.FALSE), - new ExpectedTruthValueResult("1.13", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE)); - ExpectedBranchResult goal41 = - new ExpectedBranchResult(new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("0.0", TruthValue.TRUE)); - ExpectedBranchResult goal39 = - new ExpectedBranchResult(new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("0.0", TruthValue.TRUE)); - ExpectedBranchResult goal55 = - new ExpectedBranchResult(new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.11", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult result = - new ExpectedTruthValueEvaluationResult(goal53, goal41, goal39, goal55); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueNotLastEvaluationGivesTruthValue/test/NotLastEvaluationGivesTruthValue.proof", - "/set/truthValueNotLastEvaluationGivesTruthValue/oracle/NotLastEvaluationGivesTruthValue.xml", - false, true, false, result); - } - - /** - * Tests example: /set/truthValueArraySumWhile - */ - @Test - public void testArraySumWhile_NoOneStepSimplification() throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult initialResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("14.0", TruthValue.TRUE), - new ExpectedTruthValueResult("15.0", TruthValue.TRUE), - new ExpectedTruthValueResult("16.0", TruthValue.TRUE), - new ExpectedTruthValueResult("17.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult preservesResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("18.0", TruthValue.TRUE), - new ExpectedTruthValueResult("19.0", TruthValue.TRUE), - new ExpectedTruthValueResult("20.0", TruthValue.TRUE), - new ExpectedTruthValueResult("21.0", TruthValue.TRUE), - new ExpectedTruthValueResult("22.0", TruthValue.TRUE), - new ExpectedTruthValueResult("23.0", TruthValue.TRUE), - new ExpectedTruthValueResult("24.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult terminationResult = - new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.FALSE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE))); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueArraySumWhile/test/ArraySumWhileNoOneStepSimplification.proof", - "/set/truthValueArraySumWhile/oracle/ArraySumWhile.xml", false, true, false, - initialResult, preservesResult, terminationResult); - } - - /** - * Tests example: /set/truthValueArraySumWhile - */ - @Test - public void testArraySumWhile() throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult initialResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("14.0", TruthValue.TRUE), - new ExpectedTruthValueResult("15.0", TruthValue.TRUE), - new ExpectedTruthValueResult("16.0", TruthValue.TRUE), - new ExpectedTruthValueResult("17.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult preservesResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("18.0", TruthValue.TRUE), - new ExpectedTruthValueResult("19.0", TruthValue.TRUE), - new ExpectedTruthValueResult("20.0", TruthValue.TRUE), - new ExpectedTruthValueResult("21.0", TruthValue.TRUE), - new ExpectedTruthValueResult("22.0", TruthValue.TRUE), - new ExpectedTruthValueResult("23.0", TruthValue.TRUE), - new ExpectedTruthValueResult("24.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult terminationResult = - new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE), - new ExpectedTruthValueResult("4.0", TruthValue.FALSE), - new ExpectedTruthValueResult("8.0", TruthValue.TRUE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE))); - // Perform test - doTruthValueEvaluationTest("/set/truthValueArraySumWhile/test/ArraySumWhile.proof", - "/set/truthValueArraySumWhile/oracle/ArraySumWhile.xml", false, true, false, - initialResult, preservesResult, terminationResult); - } - - /** - * Tests example: /set/truthValueArrayUtil - */ - @Test - @Disabled - public void IGNORE_testArrayUtil_NoOneStepSimplification() throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult goal97 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult goal826 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("17.0", TruthValue.TRUE), - new ExpectedTruthValueResult("18.0", TruthValue.TRUE), - new ExpectedTruthValueResult("20.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult goal630 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("8.0", TruthValue.TRUE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("13.0", TruthValue.FALSE))); - ExpectedTruthValueEvaluationResult goal792 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("8.0", TruthValue.TRUE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("12.0", TruthValue.TRUE), - new ExpectedTruthValueResult("13.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult goal1024 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult goal1161 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE))); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueArrayUtil/test/ArrayUtilNoOneStepSimplification.proof", - "/set/truthValueArrayUtil/oracle/ArrayUtil.xml", true, true, false, goal97, goal826, - goal630, goal792, goal1024, goal1161); - } - - /** - * Tests example: /set/truthValueArrayUtil - */ - @Test - @Disabled - public void IGNORE_testArrayUtil() throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult goal97 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("6.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult goal826 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("17.0", TruthValue.TRUE), - new ExpectedTruthValueResult("18.0", TruthValue.TRUE), - new ExpectedTruthValueResult("20.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult goal630 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("8.0", TruthValue.TRUE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("13.0", TruthValue.FALSE))); - ExpectedTruthValueEvaluationResult goal792 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("8.0", TruthValue.TRUE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("12.0", TruthValue.TRUE), - new ExpectedTruthValueResult("13.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult goal1024 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult goal1161 = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("3.0", TruthValue.TRUE))); - // Perform test - doTruthValueEvaluationTest("/set/truthValueArrayUtil/test/ArrayUtil.proof", - "/set/truthValueArrayUtil/oracle/ArrayUtil.xml", true, true, false, goal97, goal826, - goal630, goal792, goal1024, goal1161); - } - - /** - * Tests example: /set/truthValueSimpleInstanceMethodContractApplication - */ - @Test - public void testSimpleInstanceMethodContractApplication_NoOneStepSimplification() - throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult preResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("12.0", TruthValue.TRUE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult terminationResult = - new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE))); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueSimpleInstanceMethodContractApplication/test/SimpleInstanceMethodContractApplication_NoOneStepSimplification.proof", - "/set/truthValueSimpleInstanceMethodContractApplication/oracle/SimpleInstanceMethodContractApplication.xml", - true, false, false, preResult, terminationResult); - } - - /** - * Tests example: /set/truthValueSimpleInstanceMethodContractApplication - */ - @Test - public void testSimpleInstanceMethodContractApplication() throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult preResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("12.0", TruthValue.TRUE), - new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult terminationResult = - new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE))); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueSimpleInstanceMethodContractApplication/test/SimpleInstanceMethodContractApplication.proof", - "/set/truthValueSimpleInstanceMethodContractApplication/oracle/SimpleInstanceMethodContractApplication.xml", - true, false, false, preResult, terminationResult); - } - - /** - * Tests example: /set/truthValueSimpleMethodContractApplication - */ - @Test - public void testSimpleMethodContractApplication_NoOneStepSimplification() throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult preResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult terminationResult = - new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE))); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueSimpleMethodContractApplication/test/SimpleMethodContractApplication_NoOneStepSimplification.proof", - "/set/truthValueSimpleMethodContractApplication/oracle/SimpleMethodContractApplication.xml", - true, false, false, preResult, terminationResult); - } - - /** - * Tests example: /set/truthValueSimpleMethodContractApplication - */ - @Test - public void testSimpleMethodContractApplication() throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult preResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("10.0", TruthValue.TRUE), - new ExpectedTruthValueResult("9.0", TruthValue.TRUE), - new ExpectedTruthValueResult("11.0", TruthValue.TRUE), - new ExpectedTruthValueResult("7.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult terminationResult = - new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE), - new ExpectedTruthValueResult("5.0", TruthValue.TRUE), - new ExpectedTruthValueResult("2.0", TruthValue.TRUE))); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueSimpleMethodContractApplication/test/SimpleMethodContractApplication.proof", - "/set/truthValueSimpleMethodContractApplication/oracle/SimpleMethodContractApplication.xml", - true, false, false, preResult, terminationResult); - } - - /** - * Tests example: /set/truthValueDifferentBranchesTest - */ - @Test - public void testDifferentBranchesTest() throws Exception { - // Create expected results - ExpectedTruthValueEvaluationResult firstResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult secondResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE))); - ExpectedTruthValueEvaluationResult thirdResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("1.0", TruthValue.FALSE))); - ExpectedTruthValueEvaluationResult fourthResult = new ExpectedTruthValueEvaluationResult( - new ExpectedBranchResult(new ExpectedTruthValueResult("1.0", TruthValue.FALSE))); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueDifferentBranchesTest/test/DifferentBranchesTest.proof", - "/set/truthValueDifferentBranchesTest/oracle/DifferentBranchesTest.xml", false, false, - false, firstResult, secondResult, thirdResult, fourthResult); - } - - /** - * Tests example: /set/truthValueMultiplePredicateResults - */ - @Test - public void testMultiplePredicateResultsTest() throws Exception { - // Create expected results - ExpectedBranchResult goal102 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.FALSE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE)); - ExpectedBranchResult goal95 = - new ExpectedBranchResult(new ExpectedTruthValueResult("0.0", TruthValue.TRUE), - new ExpectedTruthValueResult("1.0", TruthValue.TRUE)); - ExpectedTruthValueEvaluationResult expectedResult = - new ExpectedTruthValueEvaluationResult(goal102, goal95); - // Perform test - doTruthValueEvaluationTest( - "/set/truthValueMultiplePredicateResults/test/MultiplePredicateResultsTest.java", - "MultiplePredicateResultsTest[MultiplePredicateResultsTest::main(MultiplePredicateResultsTest,MultiplePredicateResultsTest)].JML normal_behavior operation contract.0", - "/set/truthValueMultiplePredicateResults/oracle/MultiplePredicateResultsTest.xml", - false, false, false, expectedResult); - } - - /** - * Performs an {@link TruthValueTracingUtil} test. - * - * @param proofFilePathInBaseDir The path to the java file inside the base directory. - * @param oraclePathInBaseDirFile The path to the oracle file inside the base directory. - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param expectedResults The expected results. - * @throws Exception Occurred Exception. - */ - protected void doTruthValueEvaluationTest(String proofFilePathInBaseDir, - String oraclePathInBaseDirFile, boolean useOperationContracts, - boolean useLoopInvariants, boolean blockTreatmentContract, - ExpectedTruthValueEvaluationResult... expectedResults) throws Exception { - SymbolicExecutionEnvironment env = null; - try { - // Perform symbolic execution - env = doSETTest(testCaseDirectory, proofFilePathInBaseDir, oraclePathInBaseDirFile, - false, false, false, false, false, useOperationContracts, useLoopInvariants, - blockTreatmentContract, false, false, false, false, false, true, true); - assertNotNull(env); - // Evaluate truth values - doTruthValueEvaluationTest(env, expectedResults); - } finally { - if (env != null) { - env.dispose(); - } - } - } - - /** - * Performs an {@link TruthValueTracingUtil} test. - * - * @param javaPathInBaseDir The path to the java file inside the base directory. - * @param baseContractName The name of the contract. - * @param oraclePathInBaseDirFile The path to the oracle file inside the base directory. - * @param useOperationContracts Use operation contracts? - * @param useLoopInvariants Use loop invariants? - * @param blockTreatmentContract Block contracts or expand otherwise? - * @param expectedResults The expected results. - * @throws Exception Occurred Exception. - */ - protected void doTruthValueEvaluationTest(String javaPathInBaseDir, String baseContractName, - String oraclePathInBaseDirFile, boolean useOperationContracts, - boolean useLoopInvariants, boolean blockTreatmentContract, - ExpectedTruthValueEvaluationResult... expectedResults) throws Exception { - SymbolicExecutionEnvironment env = null; - try { - // Perform symbolic execution - env = doSETTest(testCaseDirectory, javaPathInBaseDir, baseContractName, - oraclePathInBaseDirFile, false, false, false, false, ALL_IN_ONE_RUN, false, - useOperationContracts, useLoopInvariants, blockTreatmentContract, false, false, - false, false, false, true, true); - // Evaluate truth values - doTruthValueEvaluationTest(env, expectedResults); - } finally { - if (env != null) { - env.dispose(); - } - } - } - - /** - * Performs an {@link TruthValueTracingUtil} test. - * - * @param env The {@link SymbolicExecutionEnvironment} to use. - * @param expectedResults The expected results. - * @throws Exception Occurred Exception. - */ - protected void doTruthValueEvaluationTest( - SymbolicExecutionEnvironment env, - ExpectedTruthValueEvaluationResult... expectedResults) throws Exception { - // Compute current results - List currentResults = new LinkedList<>(); - ExecutionNodePreorderIterator iter = - new ExecutionNodePreorderIterator(env.getBuilder().getStartNode()); - while (iter.hasNext()) { - IExecutionNode next = iter.next(); - Node nodeToEvaluate; - if (next instanceof IExecutionTermination) { - nodeToEvaluate = next.getProofNode(); - } else if (next instanceof IExecutionOperationContract) { - nodeToEvaluate = next.getProofNode().child(2); // Precondition branch - } else if (next instanceof IExecutionLoopInvariant) { - nodeToEvaluate = next.getProofNode().child(0); // Initial - } else if (next instanceof IExecutionAuxiliaryContract) { - nodeToEvaluate = next.getProofNode().child(1); // Precondition branch - } else if (next instanceof IExecutionJoin) { - nodeToEvaluate = next.getProofNode().child(0); // Weakening branch - } else { - nodeToEvaluate = null; - } - if (nodeToEvaluate != null) { - TruthValueTracingResult result = TruthValueTracingUtil.evaluate(nodeToEvaluate, - FormulaTermLabel.NAME, false, false); - currentResults.add(result); - if (CREATE_NEW_ORACLE_FILES_IN_TEMP_DIRECTORY) { - LOGGER.info("Found Result: {}", result); - } - } - } - // Compare results - assertResults(expectedResults, currentResults); - } - - /** - * Asserts the results. - * - * @param expected The expected results. - * @param current The current results. - */ - protected void assertResults(ExpectedTruthValueEvaluationResult[] expected, - List current) { - Assertions.assertEquals(expected.length, current.size()); - int i = 0; - Iterator currentIter = current.iterator(); - while (i < expected.length && currentIter.hasNext()) { - assertTruthValueResults(expected[i], currentIter.next()); - i++; - } - Assertions.assertEquals(expected.length, i); - Assertions.assertFalse(currentIter.hasNext()); - } - - /** - * Asserts the truth value results. - * - * @param expected The expected results. - * @param current The current results. - */ - protected void assertTruthValueResults(ExpectedTruthValueEvaluationResult expected, - TruthValueTracingResult current) { - BranchResult[] currentResults = current.getBranchResults(); - Assertions.assertEquals(expected.branchResults.length, currentResults.length); - for (int i = 0; i < currentResults.length; i++) { - assertBranchResult(expected.branchResults[i], currentResults[i]); - } - } - - /** - * Asserts the branch results. - * - * @param expected The expected results. - * @param current The current results. - */ - protected void assertBranchResult(ExpectedBranchResult expected, BranchResult current) { - Map currentResults = current.results(); - Assertions.assertTrue(expected.labelResults.size() <= currentResults.size(), - "To many expected results at goal " + current.leafNode().serialNr()); - for (Entry expectedEntry : expected.labelResults.entrySet()) { - MultiEvaluationResult currentInstruction = currentResults.get(expectedEntry.getKey()); - assertNotNull(currentInstruction, "Current result of " + expectedEntry.getKey() - + " is missing at goal " + current.leafNode().serialNr() + "."); - TruthValue currentResult = - currentInstruction.evaluate(current.termLabelName(), currentResults); - TruthValue expectedValue = expectedEntry.getValue(); - if (expectedValue == null) { - Assertions.assertNull(currentResult); - } else { - assertNotNull(currentResult, "Current result of " + expectedEntry.getKey() - + " at goal " + current.leafNode().serialNr() + " is not available."); - Assertions.assertEquals(expectedValue, currentResult, - "Wrong truth value of " + expectedEntry.getKey() + " at goal " - + current.leafNode().serialNr() + "."); - } - } - } - - /** - * Represents an expected evaluation result. - * - * @author Martin Hentschel - */ - protected static class ExpectedTruthValueEvaluationResult { - /** - * The expected branches. - */ - private final ExpectedBranchResult[] branchResults; - - /** - * Constructor. - * - * @param branchResults The expected branches. - */ - public ExpectedTruthValueEvaluationResult(ExpectedBranchResult... branchResults) { - this.branchResults = branchResults; - } - } - - /** - * Represents an expected branch result. - * - * @author Martin Hentschel - */ - protected static class ExpectedBranchResult { - /** - * The truth values of all labels. - */ - private final Map labelResults = new HashMap<>(); - - /** - * Constructor. - * - * @param labelResults The truth values of all labels. - */ - public ExpectedBranchResult(ExpectedTruthValueResult... labelResults) { - for (ExpectedTruthValueResult result : labelResults) { - this.labelResults.put(result.labelId, result.value); - } - } - } - - /** - * Represents an expected truth value result of a particular label ID. - * - * @author Martin Hentschel - */ - protected static class ExpectedTruthValueResult { - /** - * The label ID. - */ - private final String labelId; - - /** - * The truth value. - */ - private final TruthValue value; - - /** - * Constructor. - * - * @param labelId The label ID. - * @param value The truth value. - */ - public ExpectedTruthValueResult(String labelId, TruthValue value) { - this.labelId = labelId; - this.value = value; - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestTruthValueValue.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestTruthValueValue.java deleted file mode 100644 index 3c1f5472d6d..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestTruthValueValue.java +++ /dev/null @@ -1,261 +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.symbolic_execution.testcase; - -import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil.TruthValue; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; - - -/** - * Tests for {@link TruthValue}. - * - * @author Martin Hentschel - */ -public class TestTruthValueValue { - /** - * Tests {@link TruthValue#ifThenElse(TruthValue, TruthValue, TruthValue)}. - */ - @Test - public void testIfThenElse() { - // true - assertEquals(TruthValue.TRUE, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.TRUE, TruthValue.TRUE)); - assertEquals(TruthValue.TRUE, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.TRUE, TruthValue.FALSE)); - assertEquals(TruthValue.TRUE, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.TRUE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.TRUE, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.TRUE, null)); - assertEquals(TruthValue.FALSE, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.FALSE, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.FALSE, TruthValue.FALSE)); - assertEquals(TruthValue.FALSE, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.FALSE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.FALSE, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.FALSE, null)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.UNKNOWN, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.UNKNOWN, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.UNKNOWN, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.TRUE, TruthValue.UNKNOWN, null)); - assertNull(TruthValue.ifThenElse(TruthValue.TRUE, null, TruthValue.TRUE)); - assertNull(TruthValue.ifThenElse(TruthValue.TRUE, null, TruthValue.FALSE)); - assertNull(TruthValue.ifThenElse(TruthValue.TRUE, null, TruthValue.UNKNOWN)); - assertNull(TruthValue.ifThenElse(TruthValue.TRUE, null, null)); - // false - assertEquals(TruthValue.TRUE, - TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.TRUE, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, - TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.TRUE, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.TRUE, TruthValue.UNKNOWN)); - assertNull(TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.TRUE, null)); - assertEquals(TruthValue.TRUE, - TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.FALSE, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, - TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.FALSE, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.FALSE, TruthValue.UNKNOWN)); - assertNull(TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.FALSE, null)); - assertEquals(TruthValue.TRUE, - TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.UNKNOWN, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, - TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.UNKNOWN, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.UNKNOWN, TruthValue.UNKNOWN)); - assertNull(TruthValue.ifThenElse(TruthValue.FALSE, TruthValue.UNKNOWN, null)); - assertEquals(TruthValue.TRUE, - TruthValue.ifThenElse(TruthValue.FALSE, null, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, - TruthValue.ifThenElse(TruthValue.FALSE, null, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.FALSE, null, TruthValue.UNKNOWN)); - assertNull(TruthValue.ifThenElse(TruthValue.FALSE, null, null)); - // unknown - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.TRUE, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.TRUE, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.TRUE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.TRUE, null)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.FALSE, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.FALSE, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.FALSE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.FALSE, null)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.UNKNOWN, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.UNKNOWN, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.UNKNOWN, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, TruthValue.UNKNOWN, null)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, null, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, null, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(TruthValue.UNKNOWN, null, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.ifThenElse(TruthValue.UNKNOWN, null, null)); - // null - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(null, TruthValue.TRUE, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(null, TruthValue.TRUE, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(null, TruthValue.TRUE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.ifThenElse(null, TruthValue.TRUE, null)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(null, TruthValue.FALSE, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(null, TruthValue.FALSE, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(null, TruthValue.FALSE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.ifThenElse(null, TruthValue.FALSE, null)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(null, TruthValue.UNKNOWN, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(null, TruthValue.UNKNOWN, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, - TruthValue.ifThenElse(null, TruthValue.UNKNOWN, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.ifThenElse(null, TruthValue.UNKNOWN, null)); - assertEquals(TruthValue.UNKNOWN, TruthValue.ifThenElse(null, null, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.ifThenElse(null, null, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.ifThenElse(null, null, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.ifThenElse(null, null, null)); - } - - /** - * Tests {@link TruthValue#eqv(TruthValue, TruthValue)}. - */ - @Test - public void testEqv() { - // true - assertEquals(TruthValue.TRUE, TruthValue.eqv(TruthValue.TRUE, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, TruthValue.eqv(TruthValue.TRUE, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(TruthValue.TRUE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(TruthValue.TRUE, null)); - // false - assertEquals(TruthValue.FALSE, TruthValue.eqv(TruthValue.FALSE, TruthValue.TRUE)); - assertEquals(TruthValue.TRUE, TruthValue.eqv(TruthValue.FALSE, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(TruthValue.FALSE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(TruthValue.FALSE, null)); - // unknown - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(TruthValue.UNKNOWN, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(TruthValue.UNKNOWN, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(TruthValue.UNKNOWN, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(TruthValue.UNKNOWN, null)); - // null - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(null, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(null, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(null, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.eqv(null, null)); - } - - /** - * Tests {@link TruthValue#and(TruthValue, TruthValue)}. - */ - @Test - public void testAnd() { - // true - assertEquals(TruthValue.TRUE, TruthValue.and(TruthValue.TRUE, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, TruthValue.and(TruthValue.TRUE, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.and(TruthValue.TRUE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.and(TruthValue.TRUE, null)); - // false - assertEquals(TruthValue.FALSE, TruthValue.and(TruthValue.FALSE, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, TruthValue.and(TruthValue.FALSE, TruthValue.FALSE)); - assertEquals(TruthValue.FALSE, TruthValue.and(TruthValue.FALSE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.FALSE, TruthValue.and(TruthValue.FALSE, null)); - // unknown - assertEquals(TruthValue.UNKNOWN, TruthValue.and(TruthValue.UNKNOWN, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, TruthValue.and(TruthValue.UNKNOWN, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.and(TruthValue.UNKNOWN, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.and(TruthValue.UNKNOWN, null)); - // null - assertEquals(TruthValue.UNKNOWN, TruthValue.and(null, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, TruthValue.and(null, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.and(null, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.and(null, null)); - } - - /** - * Tests {@link TruthValue#or(TruthValue, TruthValue)}. - */ - @Test - public void testOr() { - // true - assertEquals(TruthValue.TRUE, TruthValue.or(TruthValue.TRUE, TruthValue.TRUE)); - assertEquals(TruthValue.TRUE, TruthValue.or(TruthValue.TRUE, TruthValue.FALSE)); - assertEquals(TruthValue.TRUE, TruthValue.or(TruthValue.TRUE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.TRUE, TruthValue.or(TruthValue.TRUE, null)); - // false - assertEquals(TruthValue.TRUE, TruthValue.or(TruthValue.FALSE, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, TruthValue.or(TruthValue.FALSE, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.or(TruthValue.FALSE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.or(TruthValue.FALSE, null)); - // unknown - assertEquals(TruthValue.TRUE, TruthValue.or(TruthValue.UNKNOWN, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.or(TruthValue.UNKNOWN, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.or(TruthValue.UNKNOWN, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.or(TruthValue.UNKNOWN, null)); - // null - assertEquals(TruthValue.TRUE, TruthValue.or(null, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.or(null, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.or(null, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.or(null, null)); - } - - /** - * Tests {@link TruthValue#imp(TruthValue, TruthValue)}. - */ - @Test - public void testImp() { - // true - assertEquals(TruthValue.TRUE, TruthValue.imp(TruthValue.TRUE, TruthValue.TRUE)); - assertEquals(TruthValue.FALSE, TruthValue.imp(TruthValue.TRUE, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.imp(TruthValue.TRUE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.imp(TruthValue.TRUE, null)); - // false - assertEquals(TruthValue.TRUE, TruthValue.imp(TruthValue.FALSE, TruthValue.TRUE)); - assertEquals(TruthValue.TRUE, TruthValue.imp(TruthValue.FALSE, TruthValue.FALSE)); - assertEquals(TruthValue.TRUE, TruthValue.imp(TruthValue.FALSE, TruthValue.UNKNOWN)); - assertEquals(TruthValue.TRUE, TruthValue.imp(TruthValue.FALSE, null)); - // unknown - assertEquals(TruthValue.TRUE, TruthValue.imp(TruthValue.UNKNOWN, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.imp(TruthValue.UNKNOWN, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.imp(TruthValue.UNKNOWN, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.imp(TruthValue.UNKNOWN, null)); - // null - assertEquals(TruthValue.TRUE, TruthValue.imp(null, TruthValue.TRUE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.imp(null, TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.imp(null, TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.imp(null, null)); - } - - /** - * Tests {@link TruthValue#not(TruthValue)}. - */ - @Test - public void testNot() { - assertEquals(TruthValue.FALSE, TruthValue.not(TruthValue.TRUE)); - assertEquals(TruthValue.TRUE, TruthValue.not(TruthValue.FALSE)); - assertEquals(TruthValue.UNKNOWN, TruthValue.not(TruthValue.UNKNOWN)); - assertEquals(TruthValue.UNKNOWN, TruthValue.not(null)); - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/po/TestFunctionalOperationContractPO.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/po/TestFunctionalOperationContractPO.java deleted file mode 100644 index ef89d9686cb..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/po/TestFunctionalOperationContractPO.java +++ /dev/null @@ -1,74 +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.symbolic_execution.testcase.po; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.proof.init.FunctionalOperationContractPO; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.key_project.util.java.StringUtil; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -/** - * Tests the {@link FunctionalOperationContractPO} used for symbolic execution. - * - * @author Martin Hentschel - */ -public class TestFunctionalOperationContractPO extends AbstractSymbolicExecutionTestCase { - /** - * Tests the contract of method {@code doubleValue}. - */ - @Test - public void testDoubleValue() throws Exception { - doTest("/set/existingContractTest/test/ExistingContractTest.java", - "ExistingContractTest[ExistingContractTest::doubleValue(int)].JML operation contract.0", - "/set/existingContractTest/oracle/ExistingContractTest.xml", - "{result_doubleValue=self.doubleValue(_value)@ExistingContractTest; }"); - } - - /** - * Executes the test steps of all contained test methods. - */ - protected void doTest(String javaPathInkeyRepDirectory, String baseContractName, - String oraclePathInBaseDirFile, String expectedTryContent) throws ProofInputException, - IOException, ParserConfigurationException, SAXException, ProblemLoaderException { - Map originalTacletOptions = null; - SymbolicExecutionEnvironment env = null; - try { - // Make sure that the correct taclet options are defined. - originalTacletOptions = setDefaultTacletOptions( - javaPathInkeyRepDirectory, baseContractName); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - baseContractName, false, false, false, false, false, false, false, false, false, - false, false); - // Extract and test try content - String tryContent = getTryContent(env.getProof()); - if (!StringUtil.equalIgnoreWhiteSpace(expectedTryContent, tryContent)) { - Assertions.assertEquals(expectedTryContent, tryContent); - } - // Resume - resume(env.getUi(), env.getBuilder(), oraclePathInBaseDirFile, testCaseDirectory); - // Test save and reload of the proof - assertSaveAndReload(testCaseDirectory, javaPathInkeyRepDirectory, - oraclePathInBaseDirFile, env); - } finally { - // Restore taclet options - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/po/TestProgramMethodPO.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/po/TestProgramMethodPO.java deleted file mode 100644 index a8e1fb29255..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/po/TestProgramMethodPO.java +++ /dev/null @@ -1,144 +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.symbolic_execution.testcase.po; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.key_project.util.java.StringUtil; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -/** - * Tests for {@link ProgramMethodPO}. - * - * @author Martin Hentschel - */ -public class TestProgramMethodPO extends AbstractSymbolicExecutionTestCase { - /** - * Tests {@code complicatedMethod} without precondition. - */ - @Test - public void testComplicatedInnerMethod() throws Exception { - doTest("/set/fullqualifiedTypeNamesTest/test/my/packageName/TheClass.java", - "my.packageName.TheClass.TheInnerClass", "complicatedInnerMethod", - "/set/fullqualifiedTypeNamesTest/oracle/TheInnerClass_complicatedInnerMethod.xml", null, - "{result_complicatedInnerMethod=self.complicatedInnerMethod(z,a,b,x,o,ac)@my.packageName.TheClass.TheInnerClass; }"); - } - - /** - * Tests {@code complicatedMethod} with precondition. - */ - @Test - public void testComplicatedMethod_Precondition() throws Exception { - doTest("/set/fullqualifiedTypeNamesTest/test/my/packageName/TheClass.java", - "my.packageName.TheClass", "complicatedMethod", - "/set/fullqualifiedTypeNamesTest/oracle/TheClass_complicatedMethod.xml", - "a == 2 && b && x != null && \"Hello\" == x", - "{result_complicatedMethod=self.complicatedMethod(i,a,b,x,o,ac,acArray)@my.packageName.TheClass; }"); - } - - /** - * Tests {@code complicatedMethod} without precondition. - */ - @Test - public void testComplicatedMethod() throws IOException, ProofInputException, - ParserConfigurationException, SAXException, ProblemLoaderException { - doTest("/set/fullqualifiedTypeNamesTest/test/my/packageName/TheClass.java", - "my.packageName.TheClass", "complicatedMethod", - "/set/fullqualifiedTypeNamesTest/oracle/TheClass_complicatedMethod.xml", null, - "{result_complicatedMethod=self.complicatedMethod(i,a,b,x,o,ac,acArray)@my.packageName.TheClass; }"); - } - - /** - * Tests {@code returnMethod} with precondition. - */ - @Test - public void testReturnMethod_Precondition() throws IOException, ProofInputException, - ParserConfigurationException, SAXException, ProblemLoaderException { - doTest("/set/methodPOTest/test/MethodPOTest.java", "MethodPOTest", "returnMethod", - "/set/methodPOTest/oracle/MethodPOTest_returnMethod_ParamNotNull.xml", "param != null", - "{result_returnMethod=MethodPOTest.returnMethod(param)@MethodPOTest; }"); - } - - /** - * Tests {@code returnMethod} without precondition. - */ - @Test - public void testReturnMethod() throws IOException, ProofInputException, - ParserConfigurationException, SAXException, ProblemLoaderException { - doTest("/set/methodPOTest/test/MethodPOTest.java", "MethodPOTest", "returnMethod", - "/set/methodPOTest/oracle/MethodPOTest_returnMethod.xml", null, - "{result_returnMethod=MethodPOTest.returnMethod(param)@MethodPOTest; }"); - } - - /** - * Tests {@code voidMethod} with precondition. - */ - @Test - public void testVoidMethod_Precondition() throws Exception { - doTest("/set/methodPOTest/test/MethodPOTest.java", "MethodPOTest", "voidMethod", - "/set/methodPOTest/oracle/MethodPOTest_voidMethod_ParamNotNull.xml", "param != null", - "{MethodPOTest.voidMethod(param)@MethodPOTest; }"); - } - - /** - * Tests {@code voidMethod} without precondition. - */ - @Test - public void testVoidMethod() throws Exception { - doTest("/set/methodPOTest/test/MethodPOTest.java", "MethodPOTest", "voidMethod", - "/set/methodPOTest/oracle/MethodPOTest_voidMethod.xml", null, - "{MethodPOTest.voidMethod(param)@MethodPOTest; }"); - } - - /** - * Executes the test steps of all contained test methods. - */ - protected void doTest(String javaPathInkeyRepDirectory, String containerTypeName, - String methodFullName, String oraclePathInBaseDirFile, String precondition, - String expectedTryContent) throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - Map originalTacletOptions = null; - SymbolicExecutionEnvironment env = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Make sure that the correct taclet options are defined. - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, precondition, false, false, false, false, false, - false, false, false, false, true); - // Extract and test try content - String tryContent = getTryContent(env.getProof()); - assertTrue(StringUtil.equalIgnoreWhiteSpace(expectedTryContent, tryContent), - "Expected \"" + expectedTryContent + "\" but is \"" + tryContent + "\"."); - // Resume - resume(env.getUi(), env.getBuilder(), oraclePathInBaseDirFile, testCaseDirectory); - // Test save and reload of the proof - assertSaveAndReload(testCaseDirectory, javaPathInkeyRepDirectory, - oraclePathInBaseDirFile, env); - } finally { - // Restore original options - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/po/TestProgramMethodSubsetPO.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/po/TestProgramMethodSubsetPO.java deleted file mode 100644 index f2b37ad4320..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/po/TestProgramMethodSubsetPO.java +++ /dev/null @@ -1,202 +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.symbolic_execution.testcase.po; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.symbolic_execution.po.ProgramMethodSubsetPO; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.key_project.util.java.StringUtil; -import org.key_project.util.parsing.Position; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -/** - * Tests for {@link ProgramMethodSubsetPO}. - * - * @author Martin Hentschel - */ -public class TestProgramMethodSubsetPO extends AbstractSymbolicExecutionTestCase { - /** - * Tests {@code x-=42;return x;} of {@code doSomething} with precondition. - */ - @Test - public void testDoSomethingElseBranch() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", - "doSomething", - "/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_elsebranch.xml", null, - Position.newOneBased(24, 27), Position.newOneBased(25, 33), - "{method-frame(result->result_doSomething, source=doSomething(int, java.lang.String, boolean)@MethodPartPOTest,this=self) { x-=42;return x; } }"); - } - - /** - * Tests {@code x=x*-1; x+=2;} of {@code doSomething} with precondition. - */ - @Test - public void testDoSomethingIfBranch() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", - "doSomething", "/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_ifbranch.xml", - null, Position.newOneBased(20, 27), Position.newOneBased(21, 31), - "{method-frame(source=doSomething(int, java.lang.String, boolean)@MethodPartPOTest,this=self) { x=x*-1; x+=2; } }"); - } - - /** - * Tests - * {@code {method-frame(source=doSomething(int, String, boolean)@MethodPartPOTest,this=self) {if (asdf<0) - * { x=x*-1; x+=2; }else { x-=42;return x; } } }} of {@code doSomething} with precondition. - */ - @Test - public void testDoSomethingIf() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", - "doSomething", "/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_if.xml", null, - Position.newOneBased(19, 17), Position.newOneBased(26, 17), - "{method-frame(source=doSomething(int, java.lang.String, boolean)@MethodPartPOTest,this=self) {if (asdf<0) { x=x*-1; x+=2; }else { x-=42;return x; } } }"); - } - - /** - * Tests - * {@code {method-frame(source=doSomething(int, String, boolean)@MethodPartPOTest,this=self) {int x = 0;if (asdf<0) - * { x=x*-1; x+=2; }else { x-=42;return x; } x=1*asdf; } }} of {@code doSomething} with - * precondition. - */ - @Test - public void testDoSomethingIfWithSurroundingStatements() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", - "doSomething", - "/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_if_surroundingStatements.xml", - null, Position.newOneBased(17, 63), Position.newOneBased(27, 29), - "{method-frame(source=doSomething(int, java.lang.String, boolean)@MethodPartPOTest,this=self) {int x = 0;if (asdf<0) { x=x*-1; x+=2; }else { x-=42;return x; } x=1*asdf; } }"); - } - - /** - * Tests - * {@code x=1*asdf;int y = 2+CONSTANT+field;int doubleValue = doubleValue(x);int z = x+y+doubleValue; return z;} - * of {@code doSomething} with precondition. - */ - @Test - public void testDoSomethingWithReturn_Precondition() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", - "doSomething", - "/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_withReturn_precondition.xml", - "x == 1 && asdf == 2 && this.field == 3", Position.newOneBased(27, 19), - Position.newOneBased(31, 25), - "{method-frame(result->result_doSomething, source=doSomething(int, java.lang.String, boolean)@MethodPartPOTest,this=self) { x=1*asdf;int y = 2+MethodPartPOTest.CONSTANT+this.field;int doubleValue = doubleValue(x);int z = x+y+doubleValue;return z; } }"); - } - - /** - * Tests - * {@code x=1*asdf;int y = 2+CONSTANT+field;int doubleValue = doubleValue(x);int z = x+y+doubleValue; return z;} - * of {@code doSomething} without precondition. - */ - @Test - public void testDoSomethingWithReturn() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", - "doSomething", - "/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_withReturn.xml", null, - Position.newOneBased(27, 19), Position.newOneBased(31, 25), - "{method-frame(result->result_doSomething, source=doSomething(int, java.lang.String, boolean)@MethodPartPOTest,this=self) { x=1*asdf;int y = 2+MethodPartPOTest.CONSTANT+this.field;int doubleValue = doubleValue(x);int z = x+y+doubleValue;return z; } }"); - } - - /** - * Tests - * {@code x=1*asdf;int y = 2+CONSTANT+field;int doubleValue = doubleValue(x);int z = x+y+doubleValue;} - * of {@code doSomething} with precondition. - */ - @Test - public void testDoSomethingNoReturn_Precondition() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", - "doSomething", - "/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_noReturn_precondition.xml", - "x == 1 && asdf == 2 && this.field == 3", Position.newOneBased(27, 19), - Position.newOneBased(30, 44), - "{method-frame(source=doSomething(int, java.lang.String, boolean)@MethodPartPOTest,this=self) { x=1*asdf;int y = 2+MethodPartPOTest.CONSTANT+this.field;int doubleValue = doubleValue(x);int z = x+y+doubleValue; } }"); - } - - /** - * Tests - * {@code x=1*asdf;int y = 2+CONSTANT+field;int doubleValue = doubleValue(x);int z = x+y+doubleValue;} - * of {@code doSomething} without precondition. - */ - @Test - public void testDoSomethingNoReturn() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", - "doSomething", "/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_noReturn.xml", - null, Position.newOneBased(27, 19), Position.newOneBased(30, 44), - "{method-frame(source=doSomething(int, java.lang.String, boolean)@MethodPartPOTest,this=self) { x=1*asdf;int y = 2+MethodPartPOTest.CONSTANT+this.field;int doubleValue = doubleValue(x);int z = x+y+doubleValue; } }"); - } - - /** - * Tests {@code int b = 3*y;return ;} of {@code voidMethod} with precondition. - */ - @Test - public void testVoidMethodWithReturn_Precondition() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", "voidMethod", - "/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_withReturn_precondition.xml", - "y == -2", Position.newOneBased(11, 22), Position.newOneBased(13, 31), - "{method-frame(source=voidMethod(boolean, int)@MethodPartPOTest,this=self) {int b = 3*y;return ; } }"); - } - - /** - * Tests {@code int b = 3*y;return ;} of {@code voidMethod} without precondition. - */ - @Test - public void testVoidMethodWithReturn() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", "voidMethod", - "/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_withReturn.xml", null, - Position.newOneBased(11, 22), Position.newOneBased(13, 31), - "{method-frame(source=voidMethod(boolean, int)@MethodPartPOTest,this=self) {int b = 3*y;return ; } }"); - } - - /** - * Tests {@code int a = 2 * y;} of {@code voidMethod} with precondition. - */ - @Test - public void testVoidMethodNoReturn_Precondition() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", "voidMethod", - "/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_noReturn_precondition.xml", - "y == 2", Position.newOneBased(8, 24), Position.newOneBased(9, 38), - "{method-frame(source=voidMethod(boolean, int)@MethodPartPOTest,this=self) {int a = 2*y; } }"); - } - - /** - * Tests {@code int a = 2 * y;} of {@code voidMethod} without precondition. - */ - @Test - public void testVoidMethodNoReturn() throws Exception { - doTest("/set/methodPartPOTest/test/MethodPartPOTest.java", "MethodPartPOTest", "voidMethod", - "/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_noReturn.xml", null, - Position.newOneBased(8, 24), Position.newOneBased(9, 38), - "{method-frame(source=voidMethod(boolean, int)@MethodPartPOTest,this=self) {int a = 2*y; } }"); - } - - /** - * Executes the test steps of all contained test methods. - */ - protected void doTest(String javaPathInkeyRepDirectory, String containerTypeName, - String methodFullName, String oraclePathInBaseDirFile, String precondition, - Position startPosition, Position endPosition, String expectedTryContent) - throws Exception { - // Create proof environment for symbolic execution - SymbolicExecutionEnvironment env = - createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, precondition, startPosition, endPosition, false, - false, false, false, false, false, false, false, false, true); - try { - // Extract and test try content - String tryContent = getTryContent(env.getProof()); - assertTrue(StringUtil.equalIgnoreWhiteSpace(expectedTryContent, tryContent), - "Expected \"" + expectedTryContent + "\" but is \"" + tryContent + "\"."); - // Resume - resume(env.getUi(), env.getBuilder(), oraclePathInBaseDirFile, testCaseDirectory); - // Test save and reload of the proof - assertSaveAndReload(testCaseDirectory, javaPathInkeyRepDirectory, - oraclePathInBaseDirFile, env); - } finally { - env.dispose(); - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/slicing/TestThinBackwardSlicer.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/slicing/TestThinBackwardSlicer.java deleted file mode 100644 index f7942a52606..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/slicing/TestThinBackwardSlicer.java +++ /dev/null @@ -1,931 +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.symbolic_execution.testcase.slicing; - -import java.nio.file.Files; -import java.nio.file.Path; - -import de.uka.ilkd.key.control.KeYEnvironment; -import de.uka.ilkd.key.java.ast.SourceElement; -import de.uka.ilkd.key.java.ast.declaration.VariableDeclaration; -import de.uka.ilkd.key.java.ast.declaration.VariableSpecification; -import de.uka.ilkd.key.java.ast.expression.operator.CopyAssignment; -import de.uka.ilkd.key.java.ast.reference.ReferencePrefix; -import de.uka.ilkd.key.java.ast.statement.Return; -import de.uka.ilkd.key.proof.Node; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.ProofVisitor; -import de.uka.ilkd.key.symbolic_execution.ExecutionNodeSymbolicLayoutExtractor; -import de.uka.ilkd.key.symbolic_execution.SymbolicExecutionTreeBuilder; -import de.uka.ilkd.key.symbolic_execution.model.IExecutionNode; -import de.uka.ilkd.key.symbolic_execution.model.impl.AbstractExecutionNode; -import de.uka.ilkd.key.symbolic_execution.object_model.ISymbolicEquivalenceClass; -import de.uka.ilkd.key.symbolic_execution.profile.SymbolicExecutionJavaProfile; -import de.uka.ilkd.key.symbolic_execution.slicing.ThinBackwardSlicer; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.util.collection.ImmutableArray; -import org.key_project.util.collection.ImmutableList; -import org.key_project.util.collection.Pair; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.MethodOrderer; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -/** - * Tests for {@link ThinBackwardSlicer}. - * - * @author Martin Hentschel - */ -@TestMethodOrder(MethodOrderer.MethodName.class) -public class TestThinBackwardSlicer extends AbstractSymbolicExecutionTestCase { - /** - * Flag to print found slices in the console. - */ - public static final boolean PRINT_SLICE = false; - private static final Logger LOGGER = LoggerFactory.getLogger(TestThinBackwardSlicer.class); - - /** - * Tests slicing on the example {@code blockContractModifiableLocationNotRequested}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testBlockContractModifiableLocationNotRequested() throws Exception { - doSlicingTest( - "/slicing/blockContractModifiableLocationNotRequested/BlockContractModifiableLocationNotRequested.proof", - new ReturnSelector(122), true, 109, 14, 12); - } - - /** - * Tests slicing on the example {@code blockContractModifiableRequestedLocation}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testBlockContractModifiableRequestedLocation() throws Exception { - doSlicingTest( - "/slicing/blockContractModifiableRequestedLocation/BlockContractModifiableRequestedLocation.proof", - new ReturnSelector(111), true, 23); - } - - /** - * Tests slicing on the example {@code blockContractModifiableEverything}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testBlockContractModifiableEverything() throws Exception { - doSlicingTest( - "/slicing/blockContractModifiableEverything/BlockContractModifiableEverything.proof", - new ReturnSelector(97), true, 23); - } - - /** - * Tests slicing on the example {@code methodContractModifiableLocationNotRequested}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testMethodContractModifiableLocationNotRequested() throws Exception { - doSlicingTest( - "/slicing/methodContractModifiableLocationNotRequested/MethodContractModifiableLocationNotRequested.proof", - new ReturnSelector(29), true, 14, 12); - } - - /** - * Tests slicing on the example {@code methodContractModifiableRequestedLocation}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testMethodContractModifiableRequestedLocation() throws Exception { - doSlicingTest( - "/slicing/methodContractModifiableRequestedLocation/MethodContractModifiableRequestedLocation.proof", - new ReturnSelector(29), true, 23); - } - - /** - * Tests slicing on the example {@code methodContractModifiableEverything}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testMethodContractModifiableEverything() throws Exception { - doSlicingTest( - "/slicing/methodContractModifiableEverything/MethodContractModifiableExample.proof", - new ReturnSelector(29), true, 23); - } - - /** - * Tests slicing on the example {@code equivalenceClassesTest} with equivalence classes at index - * {@code 0}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testEquivalenceClasses_Index_1_no_OSS() throws Exception { - doSlicingTest("/slicing/equivalenceClassesTest/Example_NoOSS.proof", new ReturnSelector(55), - new EquivalenceClassByIndexSelector(1), // [Equivalence Class [a,b]] - true, 38); - } - - /** - * Tests slicing on the example {@code equivalenceClassesTest} with equivalence classes at index - * {@code 0}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testEquivalenceClasses_Index_0_no_OSS() throws Exception { - doSlicingTest("/slicing/equivalenceClassesTest/Example_NoOSS.proof", new ReturnSelector(55), - new EquivalenceClassByIndexSelector(0), // [] - true, 24); - } - - /** - * Tests slicing on the example {@code equivalenceClassesTest} with equivalence classes at index - * {@code 0}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testEquivalenceClasses_Index_1() throws Exception { - doSlicingTest("/slicing/equivalenceClassesTest/Example.proof", new ReturnSelector(27), - new EquivalenceClassByIndexSelector(1), // [Equivalence Class [a,b]] - true, 22); - } - - /** - * Tests slicing on the example {@code equivalenceClassesTest} with equivalence classes at index - * {@code 0}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testEquivalenceClasses_Index_0() throws Exception { - doSlicingTest("/slicing/equivalenceClassesTest/Example.proof", new ReturnSelector(27), - new EquivalenceClassByIndexSelector(0), // [] - true, 17); - } - - /** - * Tests slicing on the example {@code aliasedByExecutionTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testAliasedByExecutionTest() throws Exception { - doSlicingTest("/slicing/aliasedByExecutionTest/AliasedByExecution.proof", - new ReturnSelector(41), true, 31); - } - - /** - * Tests slicing on the example {@code aliasedByExecutionTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testNotAliasedByExecutionTest() throws Exception { - doSlicingTest("/slicing/aliasedByExecutionTest/AliasedByExecution.proof", - new ReturnSelector(72), true, 17); - } - - /** - * Tests slicing on the example {@code loopInvariantNestedListFieldsTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testLoopInvariantNestedListFieldsTest() throws Exception { - doSlicingTest( - "/slicing/loopInvariantNestedListFieldsTest/LoopInvariantNestedListFieldsTest.proof", - new ReturnSelector(424), true, 67); - } - - /** - * Tests slicing on the example {@code loopInvariantNotInListFieldsTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testLoopInvariantNotInListFieldsTest() throws Exception { - doSlicingTest( - "/slicing/loopInvariantNotInListFieldsTest/LoopInvariantNotInListFieldsTest.proof", - new ReturnSelector(278), true, 13); - } - - /** - * Tests slicing on the example {@code loopInvariantInListFieldsTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testLoopInvariantInListFieldsTest() throws Exception { - doSlicingTest("/slicing/loopInvariantInListFieldsTest/LoopInvariantInListFieldsTest.proof", - new ReturnSelector(278), true, 15); - } - - /** - * Tests slicing on the example {@code loopInvariantStarFieldsTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testLoopInvariantStarFieldsTest() throws Exception { - doSlicingTest("/slicing/loopInvariantStarFieldsTest/LoopInvariantStarFieldsTest.proof", - new ReturnSelector(229), true, 13); - } - - /** - * Tests slicing on the example {@code simpleStaticLoopInvariantTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleStaticLoopInvariantTest() throws Exception { - doSlicingTest("/slicing/simpleStaticLoopInvariantTest/SimpleStatiLoopInvariantTest.proof", - new ReturnSelector(224), true, 12); - } - - /** - * Tests slicing on the example {@code simpleLoopInvariantTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleLoopInvariantTest() throws Exception { - doSlicingTest("/slicing/simpleLoopInvariantTest/SimpleLoopInvariantTest.proof", - new ReturnSelector(125), true, 9); - } - - /** - * Tests slicing on the example {@code arrayIndexAsVariableFieldTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testArrayIndexAsVariableFieldTest() throws Exception { - doSlicingTest("/slicing/arrayIndexAsVariableFieldTest/ArrayIndexAsVariableFieldTest.proof", - new ReturnSelector(412), true, 408, 397, 315, 256, 148); - } - - /** - * Tests slicing on the example {@code arrayIndexVariableTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testArrayIndexVariableTest() throws Exception { - doSlicingTest("/slicing/arrayIndexVariableTest/ArrayIndexVariableTest.proof", - new ReturnSelector(347), true, 343, 332, 258, 211, 118); - } - - /** - * Tests slicing on the example {@code arrayIndexSideeffectsBevore}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testArrayIndexSideeffectsBevore() throws Exception { - doSlicingTest("/slicing/arrayIndexSideeffectsBevore/ArrayIndexSideeffectsBevore.proof", - new ReturnSelector(211), true, 148, 55); - } - - /** - * Tests slicing on the example {@code arrayIndexSideeffectsAfter}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testArrayIndexSideeffectsAfter() throws Exception { - doSlicingTest("/slicing/arrayIndexSideeffectsAfter/ArrayIndexSideeffectsAfter.proof", - new ReturnSelector(216), true, 163, 59); - } - - /** - * Tests slicing on the example {@code simpleMultidimensionArrayTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleMultidimensionArrayTest() throws Exception { - doSlicingTest("/slicing/simpleMultidimensionArrayTest/SimpleMultidimensionArrayTest.proof", - new ReturnSelector(456), true, 440, 436, 411, 348, 172, 133); - } - - /** - * Tests slicing on the example {@code simpleArrayTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleArrayTest() throws Exception { - doSlicingTest("/slicing/simpleArrayTest/SimpleArrayTest.proof", new ReturnSelector(163), - false, 143, 36, 21); - } - - /** - * Tests slicing on the example {@code figure2Param}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testFigure2Param_right() throws Exception { - doSlicingTest("/slicing/figure2Param/Figure2Param.proof", new RightAssignmentSelector(165), - true, 151, 85); - } - - /** - * Tests slicing on the example {@code figure2Local}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testFigure2Local_right() throws Exception { - doSlicingTest("/slicing/figure2Local/Figure2Local.proof", - new RightVariableDeclarationSelector(168), true, 154, 86); - } - - /** - * Tests slicing on the example {@code figure2Instance}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testFigure2Instance_right() throws Exception { - doSlicingTest("/slicing/figure2Instance/Figure2Instance.proof", - new RightAssignmentSelector(267), true, 229, 182, 180, 165, 161, 144, 99); - } - - /** - * Tests slicing on the example {@code valueChange}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testValueChange() throws Exception { - doSlicingTest("/slicing/valueChange/ValueChange.proof", new ReturnSelector(88), true, 84, - 72, 56, 52, 26); - } - - /** - * Tests slicing on the example {@code readWriteTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testReadWriteTest() throws Exception { - doSlicingTest("/slicing/readWriteTest/ReadWriteTest.proof", new ReturnSelector(40), true, - 36, 29, 21, 11); - } - - /** - * Tests slicing on the example {@code aliasChanged}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testAliasChanged() throws Exception { - doSlicingTest("/slicing/aliasChanged/AliasChanged.proof", new ReturnSelector(203), false, - 198, 194, 86, 57); - } - - /** - * Tests slicing on the example {@code aliasNotAvailable}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testAliasNotAvailable() throws Exception { - doSlicingTest("/slicing/aliasNotAvailable/AliasNotAvailable.proof", new ReturnSelector(178), - false, 173, 169, 98, 77); - } - - /** - * Tests slicing on the example {@code intEndTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testIntEndTest() throws Exception { - doSlicingTest("/slicing/intEndTest/IntEndTest.proof", new ReturnSelector(17), false, 13, - 11); - } - - /** - * Tests slicing on the example {@code simpleAliasChanged}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleAliasChanged() throws Exception { - doSlicingTest("/slicing/simpleAliasChanged/SimpleAliasChanged.proof", - new ReturnSelector(36), false, 24); - } - - /** - * Tests slicing on the example {@code instanceFieldsAliased}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testInstanceFieldsAliased() throws Exception { - doSlicingTest("/slicing/instanceFieldsAliased/InstanceFieldsAliased.proof", - new ReturnSelector(185), false, 180, 176, 68); - } - - /** - * Tests slicing on the example {@code nestedInstanceFields}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testNestedInstanceFields() throws Exception { - doSlicingTest("/slicing/nestedInstanceFields/NestedInstanceFields.proof", - new ReturnSelector(142), false, 137, 133, 41, 27); - } - - /** - * Tests slicing on the example {@code methodCallTest}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testMethodCallTest() throws Exception { - doSlicingTest("/slicing/methodCallTest/MethodCallTest.proof", new ReturnSelector(138), - false, 98, 39, 15); - } - - /** - * Tests slicing on the example {@code aliasing}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testAliasing() throws Exception { - doSlicingTest("/slicing/aliasing/Aliasing.proof", new ReturnSelector(62), false, 58, 20, - 15); - } - - /** - * Tests slicing on the example {@code nestedInstanceAccess}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testNestedInstanceAccess_subResult() throws Exception { - doSlicingTest("/slicing/nestedInstanceAccess/NestedInstanceAccess.proof", - new ReturnSelector(138), false, 136, 132, 127, 113, 86, 54, 39); - } - - /** - * Tests slicing on the example {@code figure2}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testFigure2_right() throws Exception { - doSlicingTest("/slicing/figure2/Figure2.proof", new RightAssignmentSelector(269), false, - 229, 179); - } - - /** - * Tests slicing on the example {@code figure2}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testFigure2_left() throws Exception { - doSlicingTest("/slicing/figure2/Figure2.proof", new LeftAssignmentSelector(269), false, 269, - 229, 179); - } - - /** - * Tests slicing on the example {@code simpleInstanceFields}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleInstanceFields() throws Exception { - doSlicingTest("/slicing/simpleInstanceFields/SimpleInstanceFields.proof", - new ReturnSelector(74), false, 69, 65, 18, 13); - } - - /** - * Tests slicing on the example {@code simpleThisInstanceFields}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleThisInstanceFields() throws Exception { - doSlicingTest("/slicing/simpleThisInstanceFields/SimpleThisInstanceFields.proof", - new ReturnSelector(48), false, 46, 42, 11, 9); - } - - /** - * Tests slicing on the example {@code simpleStaticFields}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleStaticFields() throws Exception { - doSlicingTest("/slicing/simpleStaticFields/SimpleStaticFields.proof", - new ReturnSelector(73), false, 59, 17, 10); - } - - /** - * Tests slicing on the example {@code simpleLocalVariables}. - * - * @throws Exception Occurred Exception. - */ - @Test - public void testSimpleLocalVariables() throws Exception { - doSlicingTest("/slicing/simpleLocalVariables/SimpleLocalVariables.proof", - new ReturnSelector(23), true, 19, 11, 7); - } - - /** - * Performs a slicing test. - * - * @param proofFileInRepository The path to the proof file. - * @param selector The {@link ISeedLocationSelector} to use. - * @param fullSlize {@code true} if the he full slice is given as expected slice and - * {@code false} if only a part of the slice is given as expected slice. - * @param expectedSlice The serial IDs of the expected slices. - * @throws Exception Occurred Exception - */ - protected void doSlicingTest(String proofFileInRepository, ISeedLocationSelector selector, - boolean fullSlize, int... expectedSlice) throws Exception { - doSlicingTest(proofFileInRepository, selector, new NoEquivalenceClassSelector(), fullSlize, - expectedSlice); - } - - /** - * Performs a slicing test. - * - * @param proofFileInRepository The path to the proof file. - * @param selector The {@link ISeedLocationSelector} to use. - * @param fullSlize {@code true} if the he full slice is given as expected slice and - * {@code false} if only a part of the slice is given as expected slice. - * @param expectedSlice The serial IDs of the expected slices. - * @throws Exception Occurred Exception - */ - protected void doSlicingTest(String proofFileInRepository, ISeedLocationSelector selector, - IEquivalenceClassSelector eqSelector, boolean fullSlize, int... expectedSlice) - throws Exception { - // Load proof - Path proofFile = testCaseDirectory.resolve(proofFileInRepository); - Assertions.assertTrue(Files.exists(proofFile)); - KeYEnvironment environment = KeYEnvironment.load( - SymbolicExecutionJavaProfile.getDefaultInstance(), proofFile, null, null, null, true); - try { - // Get loaded proof - Proof proof = environment.getLoadedProof(); - Assertions.assertNotNull(proof); - // Find seed - Pair seed = selector.findSeed(proof); - // Select equivalence class - Assertions.assertNotNull(eqSelector); - ImmutableList sec = - eqSelector.selectEquivalenceClass(environment, proof, seed); - if (PRINT_SLICE) { - LOGGER.info("Equivalence Class: {}", sec); - } - // Perform slicing - ThinBackwardSlicer slicer = new ThinBackwardSlicer(); - ImmutableArray slices = slicer.slice(seed.first, seed.second, sec); - // Print slice if requested - if (PRINT_SLICE) { - LOGGER.info("Found Slices: {}", slices.size()); - for (Node slice : slices) { - LOGGER.info("SerialNr {}", slice.serialNr()); - } - } - if (fullSlize) { - // Compare all Nodes in the slice - Assertions.assertEquals(expectedSlice.length, slices.size()); - for (int i = 0; i < expectedSlice.length; i++) { - Node slice = slices.get(i); - Assertions.assertNotNull(slice); - Assertions.assertEquals(expectedSlice[i], slice.serialNr()); - } - } else { - // Ensure that only given Nodes exist in the slice maintaining the order - int currentIndex = 0; - for (int expected : expectedSlice) { - Node slice = null; - while (slice == null && currentIndex < slices.size()) { - Node toCheck = slices.get(currentIndex); - Assertions.assertNotNull(toCheck); - if (toCheck.serialNr() == expected) { - slice = toCheck; - } - currentIndex++; - } - Assertions.assertNotNull(slice); - } - } - } finally { - environment.dispose(); - } - } - - /** - * Implementations are used to select an {@link ISymbolicEquivalenceClass}. - * - * @author Martin Hentschel - */ - protected interface IEquivalenceClassSelector { - /** - * Selects the {@link ISymbolicEquivalenceClass}. - * - * @param environment The current {@link KeYEnvironment}. - * @param proof The current {@link Proof}. - * @param seed The current seed. - * @return The {@link ISymbolicEquivalenceClass}es or {@code null} to select. - */ - ImmutableList selectEquivalenceClass( - KeYEnvironment environment, Proof proof, Pair seed) - throws Exception; - } - - /** - * An {@link IEquivalenceClassSelector} which selects no {@link ISymbolicEquivalenceClass}. - * - * @author Martin Hentschel - */ - protected static class NoEquivalenceClassSelector implements IEquivalenceClassSelector { - /** - * {@inheritDoc} - */ - @Override - public ImmutableList selectEquivalenceClass( - KeYEnvironment environment, Proof proof, Pair seed) { - return null; - } - } - - /** - * An {@link IEquivalenceClassSelector} which selects an {@link ISymbolicEquivalenceClass} by - * index. - * - * @author Martin Hentschel - */ - protected static class EquivalenceClassByIndexSelector implements IEquivalenceClassSelector { - /** - * The index of the {@link ISymbolicEquivalenceClass}es. - */ - private final int index; - - /** - * Constructor. - * - * @param index The index of the {@link ISymbolicEquivalenceClass}es. - */ - public EquivalenceClassByIndexSelector(int index) { - this.index = index; - } - - /** - * {@inheritDoc} - */ - @Override - public ImmutableList selectEquivalenceClass( - KeYEnvironment environment, Proof proof, Pair seed) - throws Exception { - SymbolicExecutionTreeBuilder builder = - new SymbolicExecutionTreeBuilder(proof, false, false, false, false, false); - SymbolicExecutionUtil.initializeStrategy(builder); - builder.analyse(); - IExecutionNode node = builder.getExecutionNode(seed.first); - assert node instanceof AbstractExecutionNode; - ExecutionNodeSymbolicLayoutExtractor extractor = - ((AbstractExecutionNode) node).getLayoutExtractor(); - return extractor.getEquivalenceClasses(index); - } - } - - /** - * {@link ISeedLocationSelector} which searches the right side of a variable declaration. - * - * @author Martin Hentschel - */ - protected static class RightVariableDeclarationSelector implements ISeedLocationSelector { - /** - * The serial ID of the seed node. - */ - private final int seedNodeId; - - /** - * Constructor. - * - * @param seedNodeId The serial ID of the seed node. - */ - public RightVariableDeclarationSelector(int seedNodeId) { - this.seedNodeId = seedNodeId; - } - - /** - * {@inheritDoc} - */ - @Override - public Pair findSeed(Proof proof) { - // Find seed - Node seedNode = findNode(proof, seedNodeId); - Assertions.assertNotNull(seedNode); - // Get seed location - SourceElement activeStatemt = seedNode.getNodeInfo().getActiveStatement(); - Assertions.assertInstanceOf(VariableDeclaration.class, activeStatemt); - VariableDeclaration variableDeclaration = (VariableDeclaration) activeStatemt; - SourceElement seedLocation = variableDeclaration.getChildAt(1); - Assertions.assertInstanceOf(VariableSpecification.class, seedLocation); - return new Pair<>(seedNode, - (ReferencePrefix) ((VariableSpecification) seedLocation).getInitializer()); - } - } - - /** - * {@link ISeedLocationSelector} which searches the right side of an assignment. - * - * @author Martin Hentschel - */ - protected static class RightAssignmentSelector implements ISeedLocationSelector { - /** - * The serial ID of the seed node. - */ - private final int seedNodeId; - - /** - * Constructor. - * - * @param seedNodeId The serial ID of the seed node. - */ - public RightAssignmentSelector(int seedNodeId) { - this.seedNodeId = seedNodeId; - } - - /** - * {@inheritDoc} - */ - @Override - public Pair findSeed(Proof proof) { - // Find seed - Node seedNode = findNode(proof, seedNodeId); - Assertions.assertNotNull(seedNode); - // Get seed location - SourceElement activeStatemt = seedNode.getNodeInfo().getActiveStatement(); - Assertions.assertInstanceOf(CopyAssignment.class, activeStatemt); - CopyAssignment assignment = (CopyAssignment) activeStatemt; - SourceElement seedLocation = assignment.getChildAt(1); - return new Pair<>(seedNode, (ReferencePrefix) seedLocation); - } - } - - /** - * {@link ISeedLocationSelector} which searches the left side of an assignment. - * - * @author Martin Hentschel - */ - protected static class LeftAssignmentSelector implements ISeedLocationSelector { - /** - * The serial ID of the seed node. - */ - private final int seedNodeId; - - /** - * Constructor. - * - * @param seedNodeId The serial ID of the seed node. - */ - public LeftAssignmentSelector(int seedNodeId) { - this.seedNodeId = seedNodeId; - } - - /** - * {@inheritDoc} - */ - @Override - public Pair findSeed(Proof proof) { - // Find seed - Node seedNode = findNode(proof, seedNodeId); - Assertions.assertNotNull(seedNode); - // Get seed location - SourceElement activeStatemt = seedNode.getNodeInfo().getActiveStatement(); - Assertions.assertInstanceOf(CopyAssignment.class, activeStatemt); - CopyAssignment assignment = (CopyAssignment) activeStatemt; - SourceElement seedLocation = assignment.getChildAt(0); - return new Pair<>(seedNode, (ReferencePrefix) seedLocation); - } - } - - /** - * {@link ISeedLocationSelector} which searches a return expression as seed. - * - * @author Martin Hentschel - */ - protected static class ReturnSelector implements ISeedLocationSelector { - /** - * The serial ID of the seed node. - */ - private final int seedNodeId; - - /** - * Constructor. - * - * @param seedNodeId The serial ID of the seed node. - */ - public ReturnSelector(int seedNodeId) { - this.seedNodeId = seedNodeId; - } - - /** - * {@inheritDoc} - */ - @Override - public Pair findSeed(Proof proof) { - // Find seed - Node seedNode = findNode(proof, seedNodeId); - Assertions.assertNotNull(seedNode); - // Get seed location - SourceElement activeStatemt = seedNode.getNodeInfo().getActiveStatement(); - Assertions.assertInstanceOf(Return.class, activeStatemt); - Return returnStatement = (Return) activeStatemt; - SourceElement seedLocation = returnStatement.getExpression(); - return new Pair<>(seedNode, (ReferencePrefix) seedLocation); - } - } - - /** - * Implementations of this interface are used to find the seed. - * - * @author Martin Hentschel - */ - protected interface ISeedLocationSelector { - Pair findSeed(Proof proof); - } - - /** - * Searches a {@link Node} with the given serial ID. - * - * @param proof The {@link Proof} to search in. - * @param nodeId The ID of the {@link Node} to search. - * @return The found {@link Node} or {@code null} if not available. - */ - protected static Node findNode(Proof proof, int nodeId) { - FindNodeProofVisitor visitor = new FindNodeProofVisitor(nodeId); - proof.breadthFirstSearch(proof.root(), visitor); - return visitor.getNode(); - } - - /** - * Utility class used by {@link TestThinBackwardSlicer#findNode(Proof, int)}. - * - * @author Martin Hentschel - */ - private static class FindNodeProofVisitor implements ProofVisitor { - /** - * The ID of the node to search. - */ - private final int nodeId; - - /** - * The found node. - */ - private Node node; - - /** - * Constructor. - * - * @param nodeId The ID of the node to search. - */ - public FindNodeProofVisitor(int nodeId) { - this.nodeId = nodeId; - } - - /** - * {@inheritDoc} - */ - @Override - public void visit(Proof proof, Node visitedNode) { - if (visitedNode.serialNr() == nodeId) { - node = visitedNode; - } - } - - /** - * Returns the found {@link Node}. - * - * @return The found {@link Node} or {@code null} if not available. - */ - public Node getNode() { - return node; - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestExceptionBreakpointStopConditionCaughtOrUncaught.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestExceptionBreakpointStopConditionCaughtOrUncaught.java deleted file mode 100644 index a69baf8e1d1..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestExceptionBreakpointStopConditionCaughtOrUncaught.java +++ /dev/null @@ -1,95 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.SymbolicExecutionExceptionBreakpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -/** - * Tests whether caught and uncaught ExceptionBreakpoints are handled correctly - * - * @author Marco Drebing - */ -public class TestExceptionBreakpointStopConditionCaughtOrUncaught - extends AbstractSymbolicExecutionTestCase { - @Test - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - SymbolicExecutionEnvironment env = null; - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/exceptionBreakpointsCaughtOrUncaught/test/ClassCastAndNullpointerExceptions.java"; - String containerTypeName = "ClassCastAndNullpointerExceptions"; - final String methodFullName = "main"; - String oraclePathInkeyRepDirectoryFile = - "/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions"; - String oracleFileExtension = ".xml"; - // Store original settings of KeY - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, true); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - - Proof proof = env.getBuilder().getProof(); - StrategyProperties props = - proof.getSettings().getStrategySettings().getActiveStrategyProperties(); - props.put(StrategyProperties.METHOD_OPTIONS_KEY, StrategyProperties.METHOD_EXPAND); - props.put(StrategyProperties.LOOP_OPTIONS_KEY, StrategyProperties.LOOP_EXPAND); - proof.getSettings().getStrategySettings().setActiveStrategyProperties(props); - - SymbolicExecutionExceptionBreakpoint firstBreakpoint = - new SymbolicExecutionExceptionBreakpoint(proof, "java.lang.NullPointerException", - true, false, false, true, -1); - SymbolicExecutionExceptionBreakpoint secondBreakpoint = - new SymbolicExecutionExceptionBreakpoint(proof, "java.lang.ClassCastException", - false, true, false, true, -1); - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(firstBreakpoint, secondBreakpoint); - allBreakpoints.addChildren(bc); - env.getProof().getServices().setFactory(createNewProgramVariableCollectorFactory(bc)); - // Do steps - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestExceptionBreakpointStopConditionWithHitCount.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestExceptionBreakpointStopConditionWithHitCount.java deleted file mode 100644 index 04ba37021b6..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestExceptionBreakpointStopConditionWithHitCount.java +++ /dev/null @@ -1,87 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.SymbolicExecutionExceptionBreakpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -public class TestExceptionBreakpointStopConditionWithHitCount - extends AbstractSymbolicExecutionTestCase { - @Test - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - SymbolicExecutionEnvironment env = null; - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/exceptionBreakpointsWithHitCountTest/test/ClassCastAndNullpointerExceptions.java"; - String containerTypeName = "ClassCastAndNullpointerExceptions"; - final String methodFullName = "main"; - String oraclePathInkeyRepDirectoryFile = - "/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions"; - String oracleFileExtension = ".xml"; - // Store original settings of KeY - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, true); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - - Proof proof = env.getBuilder().getProof(); - StrategyProperties props = - proof.getSettings().getStrategySettings().getActiveStrategyProperties(); - props.put(StrategyProperties.METHOD_OPTIONS_KEY, StrategyProperties.METHOD_EXPAND); - props.put(StrategyProperties.LOOP_OPTIONS_KEY, StrategyProperties.LOOP_EXPAND); - proof.getSettings().getStrategySettings().setActiveStrategyProperties(props); - - SymbolicExecutionExceptionBreakpoint firstBreakpoint = - new SymbolicExecutionExceptionBreakpoint(proof, "java.lang.NullPointerException", - true, true, false, true, 2); - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(firstBreakpoint); - allBreakpoints.addChildren(bc); - env.getProof().getServices().setFactory(createNewProgramVariableCollectorFactory(bc)); - // Do steps - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestExceptionBreakpointStopConditionWithSubclasses.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestExceptionBreakpointStopConditionWithSubclasses.java deleted file mode 100644 index 33b1d899f54..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestExceptionBreakpointStopConditionWithSubclasses.java +++ /dev/null @@ -1,97 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.strategy.StrategyProperties; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.SymbolicExecutionExceptionBreakpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -public class TestExceptionBreakpointStopConditionWithSubclasses - extends AbstractSymbolicExecutionTestCase { - @Test // weigl not prev. activated - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - SymbolicExecutionEnvironment env = null; - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/exceptionBreakpointsWithSubclassesTest/test/ClassCastAndNullpointerExceptions.java"; - String containerTypeName = "ClassCastAndNullpointerExceptions"; - final String methodFullName = "main"; - String oraclePathInkeyRepDirectoryFile = - "/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions"; - String oracleFileExtension = ".xml"; - // Store original settings of KeY - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, true); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - - Proof proof = env.getBuilder().getProof(); - StrategyProperties props = - proof.getSettings().getStrategySettings().getActiveStrategyProperties(); - props.put(StrategyProperties.METHOD_OPTIONS_KEY, StrategyProperties.METHOD_EXPAND); - props.put(StrategyProperties.LOOP_OPTIONS_KEY, StrategyProperties.LOOP_EXPAND); - proof.getSettings().getStrategySettings().setActiveStrategyProperties(props); - - SymbolicExecutionExceptionBreakpoint firstBreakpoint = - new SymbolicExecutionExceptionBreakpoint(proof, "java.lang.Exception", true, true, - true, true, -1); - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(firstBreakpoint); - allBreakpoints.addChildren(bc); - env.getProof().getServices().setFactory(createNewProgramVariableCollectorFactory(bc)); - // Do steps - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - } finally { - // Restore runtime option - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestJavaWatchpointStopConditionWithHitCount.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestJavaWatchpointStopConditionWithHitCount.java deleted file mode 100644 index abf69bd2d0c..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestJavaWatchpointStopConditionWithHitCount.java +++ /dev/null @@ -1,112 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.FieldWatchpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -public class TestJavaWatchpointStopConditionWithHitCount extends AbstractSymbolicExecutionTestCase { - @Test - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - SymbolicExecutionEnvironment env = null; - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/javaWatchpointsWithHitCountTest/test/GlobalAccessesAndModifications.java"; - String containerTypeName = "GlobalAccessesAndModifications"; - final String methodFullName = "main"; - String oraclePathInkeyRepDirectoryFile = - "/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications"; - String oracleFileExtension = ".xml"; - // Set settings - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, false); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - KeYJavaType containerType = null; - for (KeYJavaType kjt : env.getProof().getJavaInfo().getAllKeYJavaTypes()) { - if (kjt.getSort().toString().equals("GlobalAccessesAndModifications")) { - containerType = kjt; - } - } - - FieldWatchpoint firstBreakpoint = new FieldWatchpoint(true, 2, "access", true, false, - containerType, env.getBuilder().getProof()); - FieldWatchpoint secondBreakpoint = new FieldWatchpoint(true, -1, "modification", false, - true, containerType, env.getBuilder().getProof()); - FieldWatchpoint thirdBreakpoint = new FieldWatchpoint(true, 2, "accessAndModification", - true, true, containerType, env.getBuilder().getProof()); - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(firstBreakpoint, secondBreakpoint, - thirdBreakpoint); - allBreakpoints.addChildren(bc); - env.getProof().getServices().setFactory(createNewProgramVariableCollectorFactory(bc)); - // Do steps - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestKeYWatchpointGlobalVariablesOnSatisfiable.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestKeYWatchpointGlobalVariablesOnSatisfiable.java deleted file mode 100644 index e7520403451..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestKeYWatchpointGlobalVariablesOnSatisfiable.java +++ /dev/null @@ -1,91 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.java.JavaInfo; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.KeYWatchpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -public class TestKeYWatchpointGlobalVariablesOnSatisfiable - extends AbstractSymbolicExecutionTestCase { - @Test // weigl not prev. activated - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - SymbolicExecutionEnvironment env = null; - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/keyWatchpointGlobalVariablesOnSatisfiable/test/GlobalVariablesOnSatisfiable.java"; - String containerTypeName = "GlobalVariablesOnSatisfiable"; - final String methodFullName = "doSomething"; - String oraclePathInkeyRepDirectoryFile = - "/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable"; - String oracleFileExtension = ".xml"; - // Store original settings of KeY - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, true); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - JavaInfo javaInfo = env.getServices().getJavaInfo(); - KeYJavaType containerType = javaInfo.getTypeByClassName(containerTypeName); - - KeYWatchpoint globalVariableCondition = new KeYWatchpoint(-1, - env.getBuilder().getProof(), "x_global==17", true, true, containerType, false); - - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(globalVariableCondition); - allBreakpoints.addChildren(bc); - env.getProof().getServices().setFactory(createNewProgramVariableCollectorFactory(bc)); - // Do steps - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestKeYWatchpointGlobalVariablesOnTrueWithHitCount.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestKeYWatchpointGlobalVariablesOnTrueWithHitCount.java deleted file mode 100644 index 8b503e0e4b7..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestKeYWatchpointGlobalVariablesOnTrueWithHitCount.java +++ /dev/null @@ -1,82 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.java.JavaInfo; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.KeYWatchpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -public class TestKeYWatchpointGlobalVariablesOnTrueWithHitCount - extends AbstractSymbolicExecutionTestCase { - @Test - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - SymbolicExecutionEnvironment env = null; - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/test/GlobalVariablesOnTrue.java"; - String containerTypeName = "GlobalVariablesOnTrue"; - final String methodFullName = "doSomething"; - String oraclePathInkeyRepDirectoryFile = - "/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue"; - String oracleFileExtension = ".xml"; - // Store original settings of KeY - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, false); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - JavaInfo javaInfo = env.getServices().getJavaInfo(); - KeYJavaType containerType = javaInfo.getTypeByClassName(containerTypeName); - - KeYWatchpoint globalVariableCondition = new KeYWatchpoint(2, - env.getBuilder().getProof(), "x_global==17", true, true, containerType, true); - - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(globalVariableCondition); - allBreakpoints.addChildren(bc); - env.getProof().getServices().setFactory(createNewProgramVariableCollectorFactory(bc)); - // Do steps - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestKeYWatchpointMethodsOnSatisfiable.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestKeYWatchpointMethodsOnSatisfiable.java deleted file mode 100644 index 07380b676a4..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestKeYWatchpointMethodsOnSatisfiable.java +++ /dev/null @@ -1,91 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.java.JavaInfo; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.KeYWatchpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -public class TestKeYWatchpointMethodsOnSatisfiable extends AbstractSymbolicExecutionTestCase { - @Test - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - SymbolicExecutionEnvironment env = null; - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/keyWatchpointMethodsOnSatisfiable/test/MethodsOnSatisfiable.java"; - String containerTypeName = "MethodsOnSatisfiable"; - final String methodFullName = "doSomething"; - String oraclePathInkeyRepDirectoryFile = - "/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable"; - String oracleFileExtension = ".xml"; - // Store original settings of KeY - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, true); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - JavaInfo javaInfo = env.getServices().getJavaInfo(); - KeYJavaType containerType = javaInfo.getTypeByClassName(containerTypeName); - - KeYWatchpoint globalVariableCondition = - new KeYWatchpoint(-1, env.getBuilder().getProof(), "main(x_global)==42", true, true, - containerType, false); - - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(globalVariableCondition); - allBreakpoints.addChildren(bc); - env.getProof().getServices().setFactory(createNewProgramVariableCollectorFactory(bc)); - // Do steps - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestLineBreakpointStopConditionSimpleWithConditions.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestLineBreakpointStopConditionSimpleWithConditions.java deleted file mode 100644 index bfc72c9575a..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestLineBreakpointStopConditionSimpleWithConditions.java +++ /dev/null @@ -1,159 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.LineBreakpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -public class TestLineBreakpointStopConditionSimpleWithConditions - extends AbstractSymbolicExecutionTestCase { - @Test // weigl not prev. activated - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - SymbolicExecutionEnvironment envMain = null; - SymbolicExecutionEnvironment envSomethingMain = null; - SymbolicExecutionEnvironment envSomethingLocalMain = null; - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/lineBreakpointsWithConditionsTest/test/SimpleConditionExample.java"; - String containerTypeName = "SimpleConditionExample"; - final String methodFullName = "main"; - String oraclePathInkeyRepDirectoryFile = - "/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition"; - String oracleFileExtension = ".xml"; - // Store original settings of KeY - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - envMain = createSymbolicExecutionEnvironment(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName, null, false, false, - false, false, false, false, false, false, false, false); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(envMain.getBuilder(), oraclePathInkeyRepDirectoryFile, - ++oracleIndex, oracleFileExtension, testCaseDirectory); - IProgramMethod main = - searchProgramMethod(envMain.getServices(), containerTypeName, "main"); - // Test method main() - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - LineBreakpoint mainBreakpoint = new LineBreakpoint(main.getPositionInfo().getFileName(), - 9, -1, main, envMain.getBuilder().getProof(), "z==1", true, true, 6, 11); - - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(mainBreakpoint); - allBreakpoints.addChildren(bc); - envMain.getProof().getServices() - .setFactory(createNewProgramVariableCollectorFactory(bc)); - - stepReturnWithBreakpoints(envMain.getUi(), envMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envMain.getUi(), envMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - - - // Test method somethingMain() - envSomethingMain = createSymbolicExecutionEnvironment(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, "somethingMain", null, false, false, - false, false, false, false, false, false, false, false); - IProgramMethod something = - searchProgramMethod(envSomethingMain.getServices(), containerTypeName, "something"); - IProgramMethod somethingMain = searchProgramMethod(envSomethingMain.getServices(), - containerTypeName, "somethingMain"); - allBreakpoints = new CompoundStopCondition(); - LineBreakpoint somethingMainBreakpoint = new LineBreakpoint( - somethingMain.getPositionInfo().getFileName(), 15, -1, somethingMain, - envSomethingMain.getBuilder().getProof(), "a==2", true, true, 13, 17); - LineBreakpoint somethingBreakpoint = - new LineBreakpoint(something.getPositionInfo().getFileName(), 20, -1, something, - envSomethingMain.getBuilder().getProof(), "b==3", true, true, 19, 21); - bc = new SymbolicExecutionBreakpointStopCondition(somethingBreakpoint, - somethingMainBreakpoint); - allBreakpoints.addChildren(bc); - envSomethingMain.getProof().getServices() - .setFactory(createNewProgramVariableCollectorFactory(bc)); - assertSetTreeAfterStep(envSomethingMain.getBuilder(), oraclePathInkeyRepDirectoryFile, - ++oracleIndex, oracleFileExtension, testCaseDirectory); - stepReturnWithBreakpoints(envSomethingMain.getUi(), envSomethingMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingMain.getUi(), envSomethingMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingMain.getUi(), envSomethingMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingMain.getUi(), envSomethingMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - - // Test method somethingLocalMain() - envSomethingLocalMain = createSymbolicExecutionEnvironment(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, "somethingLocalMain", null, false, - false, false, false, false, false, false, false, false, false); - IProgramMethod somethingLocal = searchProgramMethod(envSomethingLocalMain.getServices(), - containerTypeName, "somethingLocal"); - IProgramMethod somethingLocalMain = searchProgramMethod( - envSomethingLocalMain.getServices(), containerTypeName, "somethingLocalMain"); - allBreakpoints = new CompoundStopCondition(); - LineBreakpoint somethingLocalBreakpoint = - new LineBreakpoint(somethingLocal.getPositionInfo().getFileName(), 31, -1, - somethingLocal, envSomethingLocalMain.getBuilder().getProof(), - "y==42*42&&x==42", true, true, 29, 32); - LineBreakpoint somethingLocalMainBreakpoint = - new LineBreakpoint(somethingLocalMain.getPositionInfo().getFileName(), 26, -1, - somethingLocalMain, envSomethingLocalMain.getBuilder().getProof(), - "x==42*42&&y==42", true, true, 23, 27); - bc = new SymbolicExecutionBreakpointStopCondition(somethingLocalBreakpoint, - somethingLocalMainBreakpoint); - allBreakpoints.addChildren(bc); - envSomethingLocalMain.getProof().getServices() - .setFactory(createNewProgramVariableCollectorFactory(bc)); - - assertSetTreeAfterStep(envSomethingLocalMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory); - stepReturnWithBreakpoints(envSomethingLocalMain.getUi(), - envSomethingLocalMain.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingLocalMain.getUi(), - envSomethingLocalMain.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingLocalMain.getUi(), - envSomethingLocalMain.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory, allBreakpoints); - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (envMain != null) { - envMain.dispose(); - } - if (envSomethingMain != null) { - envSomethingMain.dispose(); - } - if (envSomethingLocalMain != null) { - envSomethingLocalMain.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestLineBreakpointStopConditionSimpleWithHitCount.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestLineBreakpointStopConditionSimpleWithHitCount.java deleted file mode 100644 index 1093ba6d0e4..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestLineBreakpointStopConditionSimpleWithHitCount.java +++ /dev/null @@ -1,109 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.LineBreakpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -/** - * Tests for {@link LineBreakpoint}. Tests if execution stops at {@link JavaLineBreakpoint} - * correctly. - * - * @author Marco Drebing - */ -public class TestLineBreakpointStopConditionSimpleWithHitCount - extends AbstractSymbolicExecutionTestCase { - @Test // weigl not prev. activated - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - SymbolicExecutionEnvironment env = null; - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/lineBreakpointsWithHitcountTest/test/BreakpointStopCallerAndLoop.java"; - String containerTypeName = "BreakpointStopCallerAndLoop"; - final String methodFullName = "main"; - String oraclePathInkeyRepDirectoryFile = - "/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop"; - String oracleFileExtension = ".xml"; - // Store original settings of KeY - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, true); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); - IProgramMethod callerMain = - searchProgramMethod(env.getServices(), "BreakpointStopCallerAndLoop", "main"); - IProgramMethod calleeMain = - searchProgramMethod(env.getServices(), "BreakpointStopCallee", "main"); - IProgramMethod callerLoop = - searchProgramMethod(env.getServices(), "BreakpointStopCallerAndLoop", "loop"); - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - LineBreakpoint firstBreakpoint = - new LineBreakpoint(callerMain.getPositionInfo().getFileName(), 16, -1, callerMain, - env.getBuilder().getProof(), null, true, false, 15, 21); - LineBreakpoint secondBreakpoint = - new LineBreakpoint(callerLoop.getPositionInfo().getFileName(), 10, 2, callerLoop, - env.getBuilder().getProof(), null, true, false, 8, 13); - LineBreakpoint thirdBreakpoint = - new LineBreakpoint(calleeMain.getPositionInfo().getFileName(), 7, -1, calleeMain, - env.getBuilder().getProof(), null, true, false, 6, 9); - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(firstBreakpoint, secondBreakpoint, - thirdBreakpoint); - allBreakpoints.addChildren(bc); - env.getProof().getServices().setFactory(createNewProgramVariableCollectorFactory(bc)); - // Do steps - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestLineBreakpointStopConditionSimpleWithLoopInvariant.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestLineBreakpointStopConditionSimpleWithLoopInvariant.java deleted file mode 100644 index 5a2a21a1354..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestLineBreakpointStopConditionSimpleWithLoopInvariant.java +++ /dev/null @@ -1,92 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.LineBreakpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - - -public class TestLineBreakpointStopConditionSimpleWithLoopInvariant - extends AbstractSymbolicExecutionTestCase { - @Test - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - SymbolicExecutionEnvironment envMain = null; - SymbolicExecutionEnvironment envSomethingMain = null; - SymbolicExecutionEnvironment envSomethingLocalMain = null; - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/lineBreakpointsWithLoopInvariantTest/test/ArrayUtil.java"; - String containerTypeName = "ArrayUtil"; - final String methodFullName = "indexOf"; - String oraclePathInkeyRepDirectoryFile = - "/set/lineBreakpointsWithLoopInvariantTest/oracle/ArrayUtil"; - String oracleFileExtension = ".xml"; - // Store original settings of KeY - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - envMain = createSymbolicExecutionEnvironment(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName, null, false, true, - true, true, false, false, false, false, false, false); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(envMain.getBuilder(), oraclePathInkeyRepDirectoryFile, - ++oracleIndex, oracleFileExtension, testCaseDirectory); - IProgramMethod indexOfMethod = - searchProgramMethod(envMain.getServices(), containerTypeName, "indexOf"); - // Test method main() - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - LineBreakpoint mainBreakpoint = - new LineBreakpoint(indexOfMethod.getPositionInfo().getFileName(), 21, -1, - indexOfMethod, envMain.getBuilder().getProof(), null, true, true, 13, 26); - - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(mainBreakpoint); - allBreakpoints.addChildren(bc); - envMain.getProof().getServices() - .setFactory(createNewProgramVariableCollectorFactory(bc)); - - // Suspend at breakpoint - stepReturnWithBreakpoints(envMain.getUi(), envMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - - // Finish symbolic execution - stepReturnWithBreakpoints(envMain.getUi(), envMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (envMain != null) { - envMain.dispose(); - } - if (envSomethingMain != null) { - envSomethingMain.dispose(); - } - if (envSomethingLocalMain != null) { - envSomethingLocalMain.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestMethodBreakpointWithConditions.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestMethodBreakpointWithConditions.java deleted file mode 100644 index 30e77e394ac..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestMethodBreakpointWithConditions.java +++ /dev/null @@ -1,165 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.MethodBreakpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -public class TestMethodBreakpointWithConditions extends AbstractSymbolicExecutionTestCase { - @Test // weigl not prev. activated - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - SymbolicExecutionEnvironment envMain = null; - SymbolicExecutionEnvironment envSomethingMain = null; - SymbolicExecutionEnvironment envSomethingLocalMain = null; - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/methodBreakpointsWithConditionsTest/test/SimpleConditionExample.java"; - String containerTypeName = "SimpleConditionExample"; - final String methodFullName = "main"; - String oraclePathInkeyRepDirectoryFile = - "/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition"; - String oracleFileExtension = ".xml"; - // Store original settings of KeY - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - envMain = createSymbolicExecutionEnvironment(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName, null, false, false, - false, false, false, false, false, false, false, false); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(envMain.getBuilder(), oraclePathInkeyRepDirectoryFile, - ++oracleIndex, oracleFileExtension, testCaseDirectory); - IProgramMethod main = - searchProgramMethod(envMain.getServices(), "SimpleConditionExample", "main"); - // Test method main() - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - MethodBreakpoint mainBreakpoint = - new MethodBreakpoint(main.getPositionInfo().getFileName(), 6, -1, main, - envMain.getBuilder().getProof(), "z==-1", true, true, 6, 11, true, true); - - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(mainBreakpoint); - allBreakpoints.addChildren(bc); - envMain.getProof().getServices() - .setFactory(createNewProgramVariableCollectorFactory(bc)); - - stepReturnWithBreakpoints(envMain.getUi(), envMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envMain.getUi(), envMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - - - // Test method somethingMain() - envSomethingMain = createSymbolicExecutionEnvironment(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, "somethingMain", null, false, false, - false, false, false, false, false, false, false, false); - IProgramMethod something = searchProgramMethod(envSomethingMain.getServices(), - "SimpleConditionExample", "something"); - IProgramMethod somethingMain = searchProgramMethod(envSomethingMain.getServices(), - "SimpleConditionExample", "somethingMain"); - allBreakpoints = new CompoundStopCondition(); - MethodBreakpoint somethingMainBreakpoint = new MethodBreakpoint( - somethingMain.getPositionInfo().getFileName(), 13, -1, somethingMain, - envSomethingMain.getBuilder().getProof(), "a==2", true, true, 13, 17, true, true); - MethodBreakpoint somethingBreakpoint = new MethodBreakpoint( - something.getPositionInfo().getFileName(), 19, -1, something, - envSomethingMain.getBuilder().getProof(), "b==3", true, true, 19, 21, true, true); - bc = new SymbolicExecutionBreakpointStopCondition(somethingBreakpoint, - somethingMainBreakpoint); - allBreakpoints.addChildren(bc); - envSomethingMain.getProof().getServices() - .setFactory(createNewProgramVariableCollectorFactory(bc)); - assertSetTreeAfterStep(envSomethingMain.getBuilder(), oraclePathInkeyRepDirectoryFile, - ++oracleIndex, oracleFileExtension, testCaseDirectory); - stepReturnWithBreakpoints(envSomethingMain.getUi(), envSomethingMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingMain.getUi(), envSomethingMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingMain.getUi(), envSomethingMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingMain.getUi(), envSomethingMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - - // Test method somethingLocalMain() - envSomethingLocalMain = createSymbolicExecutionEnvironment(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, "somethingLocalMain", null, false, - false, false, false, false, false, false, false, false, false); - IProgramMethod somethingLocal = searchProgramMethod(envSomethingLocalMain.getServices(), - "SimpleConditionExample", "somethingLocal"); - IProgramMethod somethingLocalMain = - searchProgramMethod(envSomethingLocalMain.getServices(), "SimpleConditionExample", - "somethingLocalMain"); - allBreakpoints = new CompoundStopCondition(); - MethodBreakpoint somethingLocalBreakpoint = - new MethodBreakpoint(somethingLocal.getPositionInfo().getFileName(), 30, -1, - somethingLocal, envSomethingLocalMain.getBuilder().getProof(), - "y==42*42||x==42", true, true, 30, 34, true, true); - MethodBreakpoint somethingLocalMainBreakpoint = - new MethodBreakpoint(somethingLocalMain.getPositionInfo().getFileName(), 23, -1, - somethingLocalMain, envSomethingLocalMain.getBuilder().getProof(), "x==42*42", - true, true, 23, 28, true, true); - bc = new SymbolicExecutionBreakpointStopCondition(somethingLocalBreakpoint, - somethingLocalMainBreakpoint); - allBreakpoints.addChildren(bc); - envSomethingLocalMain.getProof().getServices() - .setFactory(createNewProgramVariableCollectorFactory(bc)); - assertSetTreeAfterStep(envSomethingLocalMain.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory); - stepReturnWithBreakpoints(envSomethingLocalMain.getUi(), - envSomethingLocalMain.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingLocalMain.getUi(), - envSomethingLocalMain.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingLocalMain.getUi(), - envSomethingLocalMain.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingLocalMain.getUi(), - envSomethingLocalMain.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(envSomethingLocalMain.getUi(), - envSomethingLocalMain.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory, allBreakpoints); - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (envMain != null) { - envMain.dispose(); - } - if (envSomethingMain != null) { - envSomethingMain.dispose(); - } - if (envSomethingLocalMain != null) { - envSomethingLocalMain.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestMethodBreakpointWithHitCount.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestMethodBreakpointWithHitCount.java deleted file mode 100644 index cd36f2a059d..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestMethodBreakpointWithHitCount.java +++ /dev/null @@ -1,103 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.logic.op.IProgramMethod; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionBreakpointStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.MethodBreakpoint; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -public class TestMethodBreakpointWithHitCount extends AbstractSymbolicExecutionTestCase { - @Test // weigl not prev. activated - public void testBreakpointStopCondition() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - SymbolicExecutionEnvironment env = null; - Map originalTacletOptions = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - try { - // Define test settings - String javaPathInkeyRepDirectory = - "/set/methodBreakpointsWithHitcountTest/test/BreakpointStopCallerAndLoop.java"; - String containerTypeName = "BreakpointStopCallerAndLoop"; - final String methodFullName = "main"; - String oraclePathInkeyRepDirectoryFile = - "/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop"; - String oracleFileExtension = ".xml"; - // Store original settings of KeY - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, true); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); - IProgramMethod callerMain = - searchProgramMethod(env.getServices(), "BreakpointStopCallerAndLoop", "main"); - IProgramMethod calleeMain = - searchProgramMethod(env.getServices(), "BreakpointStopCallee", "main"); - IProgramMethod callerLoop = - searchProgramMethod(env.getServices(), "BreakpointStopCallerAndLoop", "loop"); - CompoundStopCondition allBreakpoints = new CompoundStopCondition(); - // on method call and return - MethodBreakpoint inAndOutBreakpoint = - new MethodBreakpoint(callerMain.getPositionInfo().getFileName(), 15, -1, callerMain, - env.getBuilder().getProof(), null, true, false, 15, 24, true, true); - // on method call with hitcount - MethodBreakpoint hitCountBreakpoint = - new MethodBreakpoint(callerLoop.getPositionInfo().getFileName(), 8, 2, callerLoop, - env.getBuilder().getProof(), null, true, false, 8, 13, true, false); - // on method return with hitcount - MethodBreakpoint thirdBreakpoint = - new MethodBreakpoint(calleeMain.getPositionInfo().getFileName(), 6, 2, calleeMain, - env.getBuilder().getProof(), null, true, false, 6, 9, false, true); - SymbolicExecutionBreakpointStopCondition bc = - new SymbolicExecutionBreakpointStopCondition(inAndOutBreakpoint, hitCountBreakpoint, - thirdBreakpoint); - allBreakpoints.addChildren(bc); - env.getProof().getServices().setFactory(createNewProgramVariableCollectorFactory(bc)); - // Do steps - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - stepReturnWithBreakpoints(env.getUi(), env.getBuilder(), - oraclePathInkeyRepDirectoryFile, ++oracleIndex, oracleFileExtension, - testCaseDirectory, allBreakpoints); - - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestStepOverSymbolicExecutionTreeNodesStopCondition.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestStepOverSymbolicExecutionTreeNodesStopCondition.java deleted file mode 100644 index d0b195d6483..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestStepOverSymbolicExecutionTreeNodesStopCondition.java +++ /dev/null @@ -1,94 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.StepOverSymbolicExecutionTreeNodesStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionGoalChooser; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -/** - * Tests for {@link StepOverSymbolicExecutionTreeNodesStopCondition} and - * {@link SymbolicExecutionGoalChooser}. To do a step over the {@link CompoundStopCondition} is also - * tested. - * - * @author Martin Hentschel - */ -public class TestStepOverSymbolicExecutionTreeNodesStopCondition - extends AbstractSymbolicExecutionTestCase { - /** - * Does some step over tests on two branches with different number of symbolic execution tree - * nodes to make sure that the stop conditions works correctly in combination with the goal - * chooser. - */ - @Test // weigl not prev. activated - public void testStepOverOnTwoBranches() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - Map originalTacletOptions = null; - SymbolicExecutionEnvironment env = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - // Define test settings - String javaPathInkeyRepDirectory = - "/set/stepOverOnTwoBranches/test/StepOverOnTwoBranches.java"; - String containerTypeName = "StepOverOnTwoBranches"; - final String methodFullName = "main"; - String oraclePathInkeyRepDirectoryFile = - "/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches"; - String oracleFileExtension = ".xml"; - // Create proof environment for symbolic execution - try { - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, true); - // Create proof environment for symbolic execution - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); - // Do steps - stepInto(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // main method - stepInto(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // if - stepOver(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // i = 2 - stepOver(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // j = 3 - stepOver(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // x = valueLonger(i) - stepOver(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // y = value(j) - stepOver(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // z - stepOver(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // zz - stepOver(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // return statement - stepOver(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // method return -2 - stepOver(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // end - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestStepReturnSymbolicExecutionTreeNodesStopCondition.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestStepReturnSymbolicExecutionTreeNodesStopCondition.java deleted file mode 100644 index e9423b32227..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestStepReturnSymbolicExecutionTreeNodesStopCondition.java +++ /dev/null @@ -1,93 +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.symbolic_execution.testcase.strategy; - -import java.io.IOException; -import java.util.Map; -import javax.xml.parsers.ParserConfigurationException; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.proof.init.ProofInputException; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.symbolic_execution.strategy.CompoundStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.StepReturnSymbolicExecutionTreeNodesStopCondition; -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionGoalChooser; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; - -/** - * Tests for {@link StepReturnSymbolicExecutionTreeNodesStopCondition} and - * {@link SymbolicExecutionGoalChooser}. To do a step over the {@link CompoundStopCondition} is also - * tested. - * - * @author Martin Hentschel - */ -public class TestStepReturnSymbolicExecutionTreeNodesStopCondition - extends AbstractSymbolicExecutionTestCase { - /** - * Does some step return tests on one branch. - */ - @Test // weigl was not prev. activated - public void testStepReturn() throws ProofInputException, IOException, - ParserConfigurationException, SAXException, ProblemLoaderException { - Map originalTacletOptions = null; - SymbolicExecutionEnvironment env = null; - boolean originalOneStepSimplification = isOneStepSimplificationEnabled(null); - // Define test settings - String javaPathInkeyRepDirectory = "/set/stepReturnTest/test/StepReturnTest.java"; - String containerTypeName = "StepReturnTest"; - final String methodFullName = "main"; - String oraclePathInkeyRepDirectoryFile = "/set/stepReturnTest/oracle/StepReturnTest"; - String oracleFileExtension = ".xml"; - try { - originalTacletOptions = setDefaultTacletOptions(testCaseDirectory, - javaPathInkeyRepDirectory, containerTypeName, methodFullName); - setOneStepSimplificationEnabled(null, true); - // Create proof environment for symbolic execution - env = createSymbolicExecutionEnvironment(testCaseDirectory, javaPathInkeyRepDirectory, - containerTypeName, methodFullName, null, false, false, false, false, false, false, - false, false, false, false); - // Make sure that initial tree is valid - int oracleIndex = 0; - assertSetTreeAfterStep(env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); - // Do steps - stepInto(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // call main - stepInto(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // first level - stepInto(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // call first level - stepInto(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // second level - stepInto(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // call second level - stepInto(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // third level - stepInto(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // call third level - stepInto(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // fourth level - stepInto(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, ++oracleIndex, - oracleFileExtension, testCaseDirectory); // call fourth level - stepReturn(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, - ++oracleIndex, oracleFileExtension, testCaseDirectory); // a = a * 2 - stepReturn(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, - ++oracleIndex, oracleFileExtension, testCaseDirectory); // second level - stepReturn(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, - ++oracleIndex, oracleFileExtension, testCaseDirectory); // first level - stepReturn(env.getUi(), env.getBuilder(), oraclePathInkeyRepDirectoryFile, - ++oracleIndex, oracleFileExtension, testCaseDirectory); // end - } finally { - setOneStepSimplificationEnabled(null, originalOneStepSimplification); - restoreTacletOptions(originalTacletOptions); - if (env != null) { - env.dispose(); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestSymbolicExecutionStrategy.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestSymbolicExecutionStrategy.java deleted file mode 100644 index a664b69c943..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/strategy/TestSymbolicExecutionStrategy.java +++ /dev/null @@ -1,402 +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.symbolic_execution.testcase.strategy; - - -import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionStrategy; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; - -import org.junit.jupiter.api.MethodOrderer; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; - -/** - * Tests for {@link SymbolicExecutionStrategy} - * - * @author Martin Hentschel - */ -@TestMethodOrder(MethodOrderer.MethodName.class) -public class TestSymbolicExecutionStrategy extends AbstractSymbolicExecutionTestCase { - /** - * Tests example: /set/blockContractPreconditionNotVerified - */ - @Test - public void testBlockContractPreconditionNotVerified_SymbolicExecution() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractPreconditionNotVerified/test/BlockContractPreconditionNotVerified.java", - "BlockContractPreconditionNotVerified", "main", null, - "/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified_symbolicExecution.xml", - false, false, false, false, ALL_IN_ONE_RUN, false, false, false, true, false, false, - false, false, false, false); - } - - /** - * Tests example: /set/blockContractWithExceptionPostconditionNotVerified - */ - @Test - public void testBlockContractWithExceptionPostconditionNotVerified_SymbolicExecution() - throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractWithExceptionPostconditionNotVerified/test/BlockContractWithExceptionPostconditionNotVerified.java", - "BlockContractWithExceptionPostconditionNotVerified", "main", null, - "/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified_symbolicExecution.xml", - false, false, false, false, ALL_IN_ONE_RUN, false, false, false, true, false, false, - false, false, false, false); - } - - /** - * Tests example: /set/blockContractWithException - */ - @Test - public void testBlockContractWithException_SymbolicExecution() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractWithException/test/BlockContractWithException.java", - "BlockContractWithException", "main", null, - "/set/blockContractWithException/oracle/BlockContractWithException_symbolicExecution.xml", - false, false, false, false, ALL_IN_ONE_RUN, false, false, false, true, false, false, - false, false, false, false); - } - - /** - * Tests example: /set/blockContractWithReturnPostconditionNotVerified - */ - @Test - public void testBlockContractWithReturnPostconditionNotVerified_SymbolicExecution() - throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractWithReturnPostconditionNotVerified/test/BlockContractWithReturnPostconditionNotVerified.java", - "BlockContractWithReturnPostconditionNotVerified", "main", null, - "/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified_symbolicExecution.xml", - false, false, false, false, ALL_IN_ONE_RUN, false, false, false, true, false, false, - false, false, false, false); - } - - /** - * Tests example: /set/blockContractWithReturn - */ - @Test - public void testBlockContractWithReturn_SymbolicExecution() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/blockContractWithReturn/test/BlockContractWithReturn.java", - "BlockContractWithReturn", "main", null, - "/set/blockContractWithReturn/oracle/BlockContractWithReturn_symbolicExecution.xml", - false, false, false, false, ALL_IN_ONE_RUN, false, false, false, true, false, false, - false, false, false, false); - } - - /** - * Tests example: /set/nonExecutionBranchHidingArraysIndexOf - */ - @Test - public void testNonExecutionBranchHidingArraysIndexOf_hiding_side_proof() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingArraysIndexOf/test/Arrays.java", "Arrays", "indexOf", - "array != null && filter != null && \\invariant_for(filter)", - "/set/nonExecutionBranchHidingArraysIndexOf/oracle/Arrays_hiding_side_proof.xml", false, - false, false, true, ALL_IN_ONE_RUN, false, true, true, false, true, false, false, false, - false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingArraysIndexOf - */ - @Test - public void testNonExecutionBranchHidingArraysIndexOf_hiding_off() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingArraysIndexOf/test/Arrays.java", "Arrays", "indexOf", - "array != null && filter != null && \\invariant_for(filter)", - "/set/nonExecutionBranchHidingArraysIndexOf/oracle/Arrays_hiding_off.xml", false, false, - false, true, ALL_IN_ONE_RUN, false, true, true, false, false, false, false, false, - false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery - */ - @Test - public void testNonExecutionBranchHidingLoopInvariantWithSplittingQuery_hiding_side_proof() - throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/test/LoopInvariantWithSplittingQuery.java", - "LoopInvariantWithSplittingQuery", "main", null, - "/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/oracle/LoopInvariantWithSplittingQuery_hiding_side_proof.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, true, false, false, - false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery - */ - @Test - public void testNonExecutionBranchHidingLoopInvariantWithSplittingQuery_hiding_off() - throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/test/LoopInvariantWithSplittingQuery.java", - "LoopInvariantWithSplittingQuery", "main", null, - "/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/oracle/LoopInvariantWithSplittingQuery_hiding_off.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingQueryInPrecondition - */ - @Test - public void testNonExecutionBranchHidingQueryInPrecondition_hiding_side_proof() - throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingQueryInPrecondition/test/QueryInPrecondition.java", - "QueryInPrecondition", "main", null, - "/set/nonExecutionBranchHidingQueryInPrecondition/oracle/QueryInPrecondition_hiding_side_proof.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, true, false, false, - false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingQueryInPrecondition - */ - @Test - public void testNonExecutionBranchHidingQueryInPrecondition_hiding_off() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingQueryInPrecondition/test/QueryInPrecondition.java", - "QueryInPrecondition", "main", null, - "/set/nonExecutionBranchHidingQueryInPrecondition/oracle/QueryInPrecondition_hiding_off.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingComplexPrecondition - */ - @Test - public void testNonExecutionBranchHidingComplexPrecondition_hiding_side_proof() - throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingComplexPrecondition/test/ComplexPrecondition.java", - "ComplexPrecondition", "main", null, - "/set/nonExecutionBranchHidingComplexPrecondition/oracle/ComplexPrecondition_hiding_side_proof.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, true, false, false, - false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingComplexPrecondition - */ - @Test - public void testNonExecutionBranchHidingComplexPrecondition_hiding_off() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingComplexPrecondition/test/ComplexPrecondition.java", - "ComplexPrecondition", "main", null, - "/set/nonExecutionBranchHidingComplexPrecondition/oracle/ComplexPrecondition_hiding_off.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingQueryWithSideEffects - */ - @Test - public void testNonExecutionBranchHidingQueryWithSideEffects_hiding_side_proof() - throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingQueryWithSideEffects/test/QueryWithSideEffects.java", - "QueryWithSideEffects", "main", null, - "/set/nonExecutionBranchHidingQueryWithSideEffects/oracle/QueryWithSideEffects_hiding_side_proof.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, true, false, false, - false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingQueryWithSideEffects - */ - @Test - public void testNonExecutionBranchHidingQueryWithSideEffects_hiding_off() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingQueryWithSideEffects/test/QueryWithSideEffects.java", - "QueryWithSideEffects", "main", null, - "/set/nonExecutionBranchHidingQueryWithSideEffects/oracle/QueryWithSideEffects_hiding_off.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingQueryWithFields - */ - @Test - public void testNonExecutionBranchHidingQueryWithFields_hiding_side_proof() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingQueryWithFields/test/QueryWithFields.java", - "QueryWithFields", "main", null, - "/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_side_proof.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, true, false, false, - false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingQueryWithFields - */ - @Test - public void testNonExecutionBranchHidingQueryWithFields_hiding_off() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingQueryWithFields/test/QueryWithFields.java", - "QueryWithFields", "main", null, - "/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_off.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingSimpleObjectQuery - */ - @Test - public void testNonExecutionBranchHidingSimpleObjectQuery_hiding_side_proof() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingSimpleObjectQuery/test/SimpleObjectQuery.java", - "SimpleObjectQuery", "main", null, - "/set/nonExecutionBranchHidingSimpleObjectQuery/oracle/SimpleObjectQuery_hiding_side_proof.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, true, false, false, - false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingSimpleObjectQuery - */ - @Test - public void testNonExecutionBranchHidingSimpleObjectQuery_hiding_off() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingSimpleObjectQuery/test/SimpleObjectQuery.java", - "SimpleObjectQuery", "main", null, - "/set/nonExecutionBranchHidingSimpleObjectQuery/oracle/SimpleObjectQuery_hiding_off.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingSimpleBooleanQuery - */ - @Test - public void testNonExecutionBranchHidingSimpleBooleanQuery_hiding_side_proof() - throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingSimpleBooleanQuery/test/SimpleBooleanQuery.java", - "SimpleBooleanQuery", "main", null, - "/set/nonExecutionBranchHidingSimpleBooleanQuery/oracle/SimpleBooleanQuery_hiding_side_proof.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, true, false, false, - false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingSimpleBooleanQuery - */ - @Test - public void testNonExecutionBranchHidingSimpleBooleanQuery_hiding_off() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingSimpleBooleanQuery/test/SimpleBooleanQuery.java", - "SimpleBooleanQuery", "main", null, - "/set/nonExecutionBranchHidingSimpleBooleanQuery/oracle/SimpleBooleanQuery_hiding_off.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingSimpleIntQuery - */ - @Test - public void testNonExecutionBranchHidingSimpleIntQuery_mainWithSymbolicUpdates_hiding_side_proof() - throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingSimpleIntQuery/test/SimpleIntQuery.java", - "SimpleIntQuery", "mainWithSymbolicUpdates", null, - "/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_mainWithSymbolicUpdates_hiding_side_proof.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, true, false, false, - false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingSimpleIntQuery - */ - @Test - public void testNonExecutionBranchHidingSimpleIntQuery_mainWithUpdates_hiding_side_proof() - throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingSimpleIntQuery/test/SimpleIntQuery.java", - "SimpleIntQuery", "mainWithUpdates", null, - "/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_mainWithUpdates_hiding_side_proof.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, true, false, false, - false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingSimpleIntQuery - */ - @Test - public void testNonExecutionBranchHidingSimpleIntQuery_main_hiding_side_proof() - throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingSimpleIntQuery/test/SimpleIntQuery.java", - "SimpleIntQuery", "main", null, - "/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_main_hiding_side_proof.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, true, false, false, - false, false, true); - } - - /** - * Tests example: /set/nonExecutionBranchHidingSimpleIntQuery - */ - @Test - public void testNonExecutionBranchHidingSimpleIntQuery_main_hiding_off() throws Exception { - doSETTestAndDispose(testCaseDirectory, - "/set/nonExecutionBranchHidingSimpleIntQuery/test/SimpleIntQuery.java", - "SimpleIntQuery", "main", null, - "/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_main_hiding_off.xml", - false, false, false, true, ALL_IN_ONE_RUN, false, true, true, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/aliasTest - */ - @Test - public void testAliasTest_Array_AliasChecksNever() throws Exception { - doSETTestAndDispose(testCaseDirectory, "/set/aliasTest/test/AliasTest.java", "AliasTest", - "array", - "w != null && array != null && array.length == 2 && array[0] != null && array[1] != null", - "/set/aliasTest/oracle/AliasTest_array_never.xml", false, false, false, true, - ALL_IN_ONE_RUN, false, false, false, false, false, false, false, false, false, true); - } - - /** - * Tests example: /set/aliasTest - */ - @Test - public void testAliasTest_Array_AliasChecksImmediately() throws Exception { - doSETTestAndDispose(testCaseDirectory, "/set/aliasTest/test/AliasTest.java", "AliasTest", - "array", - "w != null && array != null && array.length == 2 && array[0] != null && array[1] != null", - "/set/aliasTest/oracle/AliasTest_array_immediately.xml", false, false, false, true, - ALL_IN_ONE_RUN, false, false, false, false, false, true, false, false, false, true); - } - - /** - * Tests example: /set/aliasTest - */ - @Test - public void testAliasTest_Objects_AliasChecksNever() throws Exception { - doSETTestAndDispose(testCaseDirectory, "/set/aliasTest/test/AliasTest.java", "AliasTest", - "main", "a != null && b != null", "/set/aliasTest/oracle/AliasTest_main_never.xml", - false, true, false, true, ALL_IN_ONE_RUN, false, false, false, false, false, false, - false, false, false, true); - } - - /** - * Tests example: /set/aliasTest - */ - @Test - public void testAliasTest_Objects_AliasChecksImmediately() throws Exception { - doSETTestAndDispose(testCaseDirectory, "/set/aliasTest/test/AliasTest.java", "AliasTest", - "main", "a != null && b != null", - "/set/aliasTest/oracle/AliasTest_main_immediately.xml", false, true, false, true, - ALL_IN_ONE_RUN, false, false, false, false, false, true, false, false, false, true); - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestDefaultEntry.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestDefaultEntry.java deleted file mode 100644 index 7f58003e0de..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestDefaultEntry.java +++ /dev/null @@ -1,33 +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.symbolic_execution.testcase.util; - -import java.util.Map.Entry; - -import de.uka.ilkd.key.symbolic_execution.util.DefaultEntry; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * Tests for {@link DefaultEntry}. - * - * @author Martin Hentschel - */ -public class TestDefaultEntry { - /** - * Tests {@link DefaultEntry#getKey()}, {@link DefaultEntry#getValue()} and - * {@link DefaultEntry#setValue(Object)}. - */ - @Test - public void testGetterAndSetter() { - Entry entry = new DefaultEntry<>("A", "B"); - assertEquals("A", entry.getKey()); - assertEquals("B", entry.getValue()); - entry.setValue("C"); - assertEquals("A", entry.getKey()); - assertEquals("C", entry.getValue()); - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestEqualsHashCodeResetter.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestEqualsHashCodeResetter.java deleted file mode 100644 index 4631b89e3ac..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestEqualsHashCodeResetter.java +++ /dev/null @@ -1,263 +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.symbolic_execution.testcase.util; - -import java.util.HashMap; -import java.util.LinkedHashSet; -import java.util.Map; -import java.util.Set; - -import de.uka.ilkd.key.symbolic_execution.util.EqualsHashCodeResetter; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -/** - * Tests for {@link EqualsHashCodeResetter} - * - * @author Martin Hentschel - */ -public class TestEqualsHashCodeResetter { - /** - * Tests {@link EqualsHashCodeResetter#wrappedElement()}. - */ - @Test - public void testGetWrappedElement() { - // Create model - String a1 = "a"; - String a2 = "a"; - String b = "b"; - MyBean a1b = new MyBean(a1); - MyBean a2b = new MyBean(a2); - MyBean bb = new MyBean(b); - EqualsHashCodeResetter a1r = new EqualsHashCodeResetter<>(a1b); - EqualsHashCodeResetter a2r = new EqualsHashCodeResetter<>(a2b); - EqualsHashCodeResetter a1ar = new EqualsHashCodeResetter<>(a1b); // Alias of a1r - EqualsHashCodeResetter br = new EqualsHashCodeResetter<>(bb); - EqualsHashCodeResetter nullr = new EqualsHashCodeResetter<>(null); - // Test wrapped elements - assertSame(a1b, a1r.wrappedElement()); - assertSame(a2b, a2r.wrappedElement()); - assertSame(a1b, a1ar.wrappedElement()); - assertSame(bb, br.wrappedElement()); - assertNull(nullr.wrappedElement()); - } - - /** - * Tests {@link EqualsHashCodeResetter#equals(Object)} by direct comparison and used in a - * {@link LinkedHashSet}. - */ - @Test - public void testEquals() { - // Create model - String a1 = "a"; - String a2 = "a"; - String b = "b"; - MyBean a1b = new MyBean(a1); - MyBean a2b = new MyBean(a2); - MyBean bb = new MyBean(b); - EqualsHashCodeResetter a1r = new EqualsHashCodeResetter<>(a1b); - EqualsHashCodeResetter a2r = new EqualsHashCodeResetter<>(a2b); - EqualsHashCodeResetter a1ar = new EqualsHashCodeResetter<>(a1b); // Alias of a1r - EqualsHashCodeResetter br = new EqualsHashCodeResetter<>(bb); - EqualsHashCodeResetter nullr = new EqualsHashCodeResetter<>(null); - // Test equals on bean - assertEquals(a1b, a1b); - assertEquals(a1b, a2b); // Equals is overwritten - assertNotEquals(a1b, bb); - assertEquals(a2b, a2b); - assertNotEquals(a2b, bb); - assertEquals(bb, bb); - // Test equals on bean with resetter - assertNotEquals(a1b, a1r); - assertNotEquals(a1b, a2r); - assertNotEquals(a1b, a1ar); - assertNotEquals(a1b, br); - assertNotEquals(a1b, nullr); - assertNotEquals(a2b, a1r); - assertNotEquals(a2b, a2r); - assertNotEquals(a2b, a1ar); - assertNotEquals(a2b, br); - assertNotEquals(a2b, nullr); - assertNotEquals(bb, a1r); - assertNotEquals(bb, a2r); - assertNotEquals(bb, a1ar); - assertNotEquals(bb, br); - assertNotEquals(bb, nullr); - // Test equals on resetter - assertEquals(a1r, a1r); - assertNotEquals(a1r, a2r); // Equals is no longer overwritten - assertEquals(a1r, a1ar); - assertNotEquals(a1r, br); - assertNotEquals(a1r, nullr); - assertEquals(a2r, a2r); - assertNotEquals(a2r, a1ar); - assertNotEquals(a2r, br); - assertNotEquals(a2r, nullr); - assertEquals(a1ar, a1ar); - assertNotEquals(a1ar, br); - assertNotEquals(a1ar, nullr); - assertEquals(br, br); - assertNotEquals(br, nullr); - assertEquals(nullr, nullr); - // Test equals on resetter with bean - assertNotEquals(a1r, a1b); - assertNotEquals(a1r, a2b); - assertNotEquals(a1r, bb); - assertNotEquals(a2r, a1b); - assertNotEquals(a2r, a2b); - assertNotEquals(a2r, bb); - assertNotEquals(a1ar, a1b); - assertNotEquals(a1ar, a2b); - assertNotEquals(a1ar, bb); - assertNotEquals(br, a1b); - assertNotEquals(br, a2b); - assertNotEquals(br, bb); - assertNotEquals(nullr, a1b); - assertNotEquals(nullr, a2b); - assertNotEquals(nullr, bb); - // Test bean in LinkedHashSet - Set beanSet = new LinkedHashSet<>(); - beanSet.add(a1b); - beanSet.add(a2b); // Replaces existing element a1b - beanSet.add(bb); - assertEquals(2, beanSet.size()); - assertTrue(beanSet.contains(a1b)); - assertTrue(beanSet.contains(a2b)); - assertTrue(beanSet.contains(bb)); - // Test resetter in LinkedHashSet - Set> set = new LinkedHashSet<>(); - set.add(a1r); - set.add(a2r); - set.add(br); - assertEquals(3, set.size()); - assertTrue(set.contains(a1r)); - assertTrue(set.contains(a2r)); - assertTrue(set.contains(a1ar)); - assertTrue(set.contains(br)); - } - - /** - * Tests {@link EqualsHashCodeResetter#hashCode()} by direct comparison and used in a - * {@link HashMap}. - */ - @Test - public void testHashCode() { - // Create model - String a1 = "a"; - String a2 = "a"; - String b = "b"; - MyBean a1b = new MyBean(a1); - MyBean a2b = new MyBean(a2); - MyBean bb = new MyBean(b); - EqualsHashCodeResetter a1r = new EqualsHashCodeResetter<>(a1b); - EqualsHashCodeResetter a2r = new EqualsHashCodeResetter<>(a2b); - EqualsHashCodeResetter a1ar = new EqualsHashCodeResetter<>(a1b); // Alias of a1r - EqualsHashCodeResetter br = new EqualsHashCodeResetter<>(bb); - EqualsHashCodeResetter nullr = new EqualsHashCodeResetter<>(null); - // Compare hashcodes on bean - assertEquals(a1b.hashCode(), a1b.hashCode()); - assertEquals(a1b.hashCode(), a2b.hashCode()); // Hashcode is overwritten - assertNotEquals(a1b.hashCode(), bb.hashCode()); - assertEquals(a2b.hashCode(), a2b.hashCode()); - assertNotEquals(a2b.hashCode(), bb.hashCode()); - assertEquals(bb.hashCode(), bb.hashCode()); - // Compare hashcodes on bean with resetter - assertNotEquals(a1b.hashCode(), a1r.hashCode()); - assertNotEquals(a1b.hashCode(), a2r.hashCode()); - assertNotEquals(a1b.hashCode(), a1ar.hashCode()); - assertNotEquals(a1b.hashCode(), br.hashCode()); - assertNotEquals(a1b.hashCode(), nullr.hashCode()); - assertNotEquals(a2b.hashCode(), a1r.hashCode()); - assertNotEquals(a2b.hashCode(), a2r.hashCode()); - assertNotEquals(a2b.hashCode(), a1ar.hashCode()); - assertNotEquals(a2b.hashCode(), br.hashCode()); - assertNotEquals(a2b.hashCode(), nullr.hashCode()); - assertNotEquals(bb.hashCode(), a1r.hashCode()); - assertNotEquals(bb.hashCode(), a2r.hashCode()); - assertNotEquals(bb.hashCode(), a1ar.hashCode()); - assertNotEquals(bb.hashCode(), br.hashCode()); - assertNotEquals(bb.hashCode(), nullr.hashCode()); - // Compare hashcodes on resetter - assertEquals(a1r.hashCode(), a1r.hashCode()); - assertNotEquals(a1r.hashCode(), a2r.hashCode()); // Hashcode is no longer overwritten - assertEquals(a1r.hashCode(), a1ar.hashCode()); - assertNotEquals(a1r.hashCode(), br.hashCode()); - assertNotEquals(a1r.hashCode(), nullr.hashCode()); - assertEquals(a2r.hashCode(), a2r.hashCode()); - assertNotEquals(a2r.hashCode(), a1ar.hashCode()); - assertNotEquals(a2r.hashCode(), br.hashCode()); - assertNotEquals(a2r.hashCode(), nullr.hashCode()); - assertEquals(a1ar.hashCode(), a1ar.hashCode()); - assertNotEquals(a1ar.hashCode(), br.hashCode()); - assertNotEquals(a1ar.hashCode(), nullr.hashCode()); - assertEquals(br.hashCode(), br.hashCode()); - assertNotEquals(br.hashCode(), nullr.hashCode()); - assertEquals(nullr.hashCode(), nullr.hashCode()); - // Compare hashcodes on resetter with bean - assertNotEquals(a1r.hashCode(), a1b.hashCode()); - assertNotEquals(a1r.hashCode(), a2b.hashCode()); - assertNotEquals(a1r.hashCode(), bb.hashCode()); - assertNotEquals(a2r.hashCode(), a1b.hashCode()); - assertNotEquals(a2r.hashCode(), a2b.hashCode()); - assertNotEquals(a2r.hashCode(), bb.hashCode()); - assertNotEquals(a1ar.hashCode(), a1b.hashCode()); - assertNotEquals(a1ar.hashCode(), a2b.hashCode()); - assertNotEquals(a1ar.hashCode(), bb.hashCode()); - assertNotEquals(br.hashCode(), a1b.hashCode()); - assertNotEquals(br.hashCode(), a2b.hashCode()); - assertNotEquals(br.hashCode(), bb.hashCode()); - assertNotEquals(nullr.hashCode(), a1b.hashCode()); - assertNotEquals(nullr.hashCode(), a2b.hashCode()); - assertNotEquals(nullr.hashCode(), bb.hashCode()); - // Test bean in HashMap - Map beanMap = new HashMap<>(); - beanMap.put(a1b, "a1rValue"); - beanMap.put(a2b, "a2rValue"); // Overwrites existing value "a1rValue" - beanMap.put(bb, "brValue"); - assertEquals("a2rValue", beanMap.get(a1b)); - assertEquals("a2rValue", beanMap.get(a2b)); - assertEquals("brValue", beanMap.get(bb)); - // Test resetter in HashMap - Map, String> map = new HashMap<>(); - map.put(a1r, "a1rValue"); - map.put(a2r, "a2rValue"); - map.put(br, "brValue"); - assertEquals("a1rValue", map.get(a1r)); - assertEquals("a2rValue", map.get(a2r)); - assertEquals("a1rValue", map.get(a1ar)); - assertEquals("brValue", map.get(br)); - } - - /** - * Utility class used in tests. - * - * @param value A value. - * @author Martin Hentschel - */ - private record MyBean(String value) { - /** - * Constructor. - * - * @param value A value. - */ - private MyBean { - assertNotNull(value); - } - - /** - * Overwritten to make {@link MyBean}s equal if they have the same value. - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof MyBean) { - return value.equals(((MyBean) obj).value); - } else { - return false; - } - } - - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestSideProofStore.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestSideProofStore.java deleted file mode 100644 index 54f22508aab..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestSideProofStore.java +++ /dev/null @@ -1,300 +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.symbolic_execution.testcase.util; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -import de.uka.ilkd.key.control.DefaultUserInterfaceControl; -import de.uka.ilkd.key.control.KeYEnvironment; -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.AbstractProfile; -import de.uka.ilkd.key.proof.init.InitConfig; -import de.uka.ilkd.key.proof.mgt.ProofEnvironment; -import de.uka.ilkd.key.symbolic_execution.util.SideProofStore; -import de.uka.ilkd.key.symbolic_execution.util.SideProofStore.Entry; -import de.uka.ilkd.key.symbolic_execution.util.event.ISideProofStoreListener; -import de.uka.ilkd.key.symbolic_execution.util.event.SideProofStoreEvent; -import de.uka.ilkd.key.util.ProofUserManager; - -import org.key_project.util.collection.Pair; -import org.key_project.util.java.ArrayUtil; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * Tests for {@link SideProofStore} - * - * @author Martin Hentschel - */ -public class TestSideProofStore { - /** - * Tests the proof management and thrown events: - *
    - *
  • {@link SideProofStore#containsEntry(Proof)}
  • - *
  • {@link SideProofStore#containsEntry(Entry)}
  • - *
  • {@link SideProofStore#getEntry(Proof)}
  • - *
  • {@link SideProofStore#countEntries()}
  • - *
  • {@link SideProofStore#getEntries()}
  • - *
  • {@link SideProofStore#getEntryAt(int)}
  • - *
  • {@link SideProofStore#addProof(String, Proof)}
  • - *
  • {@link SideProofStore#removeEntries(java.util.Collection)}
  • - *
- */ - @SuppressWarnings("unchecked") - @Test - public void testProofManagement() { - LoggingProofStoreListener listener = new LoggingProofStoreListener(); - try { - SideProofStore.DEFAULT_INSTANCE.addProofStoreListener(listener); - // Create proofs - Services services = new Services(AbstractProfile.getDefaultProfile()); - InitConfig ic = new InitConfig(services); - ProofEnvironment pe = new ProofEnvironment(ic); - Proof p1 = new Proof("TestSideProofStore 1", ic.deepCopy()); - p1.setEnv(pe); - Proof p2 = new Proof("TestSideProofStore 2", ic.deepCopy()); - p2.setEnv(pe); - Proof p3 = new Proof("TestSideProofStore 3", ic.deepCopy()); - p3.setEnv(pe); - Proof[] allProofs = { p1, p2, p3 }; - // Test initial state - assertEntries(allProofs, new Proof[0]); - // Add proof p1 - SideProofStore.DEFAULT_INSTANCE.addProof("P1", p1); - assertEntries(allProofs, new Proof[0], new Pair<>("P1", p1)); - listener.assertAddedLog(new SideProofStoreEvent(SideProofStore.DEFAULT_INSTANCE, - new Entry[] { SideProofStore.DEFAULT_INSTANCE.getEntry(p1) })); - listener.assertRemovedLog(); - // Add proof p2 - SideProofStore.DEFAULT_INSTANCE.addProof("P2", p2); - assertEntries(allProofs, new Proof[0], new Pair<>("P1", p1), new Pair<>("P2", p2)); - listener.assertAddedLog(new SideProofStoreEvent(SideProofStore.DEFAULT_INSTANCE, - new Entry[] { SideProofStore.DEFAULT_INSTANCE.getEntry(p2) })); - listener.assertRemovedLog(); - // Add proof p3 - SideProofStore.DEFAULT_INSTANCE.addProof("P3", p3); - assertEntries(allProofs, new Proof[0], new Pair<>("P1", p1), new Pair<>("P2", p2), - new Pair<>("P3", p3)); - listener.assertAddedLog(new SideProofStoreEvent(SideProofStore.DEFAULT_INSTANCE, - new Entry[] { SideProofStore.DEFAULT_INSTANCE.getEntry(p3) })); - listener.assertRemovedLog(); - // Remove p1 and p3 - List toRemove = new LinkedList<>(); - toRemove.add(SideProofStore.DEFAULT_INSTANCE.getEntry(p1)); - toRemove.add(SideProofStore.DEFAULT_INSTANCE.getEntry(p3)); - SideProofStore.DEFAULT_INSTANCE.removeEntries(toRemove); - assertEntries(allProofs, new Proof[] { p1, p3 }, new Pair<>("P2", p2)); - listener.assertAddedLog(); - listener.assertRemovedLog(new SideProofStoreEvent(SideProofStore.DEFAULT_INSTANCE, - toRemove.toArray(new Entry[0]))); - // Remove p2 - toRemove = Collections.singletonList(SideProofStore.DEFAULT_INSTANCE.getEntry(p2)); - SideProofStore.DEFAULT_INSTANCE.removeEntries(toRemove); - assertEntries(allProofs, new Proof[] { p1, p2, p3 }); - listener.assertAddedLog(); - listener.assertRemovedLog(new SideProofStoreEvent(SideProofStore.DEFAULT_INSTANCE, - toRemove.toArray(new Entry[0]))); - } finally { - SideProofStore.DEFAULT_INSTANCE.removeProofStoreListener(listener); - } - } - - /** - * Ensures the {@link Entry} is {@link SideProofStore#DEFAULT_INSTANCE}. - * - * @param allProofs All available {@link Proof}s. - * @param disposedProofs The expected disposed {@link Proof}s. - * @param expectedEntries The expected entries in {@link SideProofStore#DEFAULT_INSTANCE}. - */ - @SuppressWarnings("unchecked") - private void assertEntries(Proof[] allProofs, Proof[] disposedProofs, - Pair... expectedEntries) { - // Test entries - List containedProofs = new LinkedList<>(); - assertEquals(expectedEntries.length, SideProofStore.DEFAULT_INSTANCE.countEntries()); - Entry[] entries = SideProofStore.DEFAULT_INSTANCE.getEntries(); - assertEquals(expectedEntries.length, entries.length); - for (int i = 0; i < expectedEntries.length; i++) { - assertEquals(entries[i].getDescription(), expectedEntries[i].first); - Assertions.assertSame(entries[i].getProof(), expectedEntries[i].second); - Assertions.assertSame(entries[i], SideProofStore.DEFAULT_INSTANCE.getEntryAt(i)); - KeYEnvironment ui = entries[i].getEnvironment(); - Assertions.assertNotNull(ui); - KeYEnvironment uiAgain = entries[i].getEnvironment(); - Assertions.assertSame(ui, uiAgain); - containedProofs.add(expectedEntries[i].second); - Assertions.assertFalse(entries[i].getProof().isDisposed()); - Object[] user = ProofUserManager.getInstance().getUsers(entries[i].getProof()); - assertEquals(1, user.length); - Assertions.assertSame(SideProofStore.DEFAULT_INSTANCE, user[0]); - } - // Test proofs - for (Proof proof : allProofs) { - Entry entry = SideProofStore.DEFAULT_INSTANCE.getEntry(proof); - assertEquals(containedProofs.contains(proof), entry != null); - assertEquals(containedProofs.contains(proof), - SideProofStore.DEFAULT_INSTANCE.containsEntry(proof)); - assertEquals(containedProofs.contains(proof), - SideProofStore.DEFAULT_INSTANCE.containsEntry(entry)); - assertEquals(ArrayUtil.contains(disposedProofs, proof), proof.isDisposed()); - } - } - - /** - * A logging {@link ISideProofStoreListener}. - * - * @author Martin Hentschel - */ - private static class LoggingProofStoreListener implements ISideProofStoreListener { - /** - * The log with added entries. - */ - private final List addedLog = new LinkedList<>(); - - /** - * The log with removed entries. - */ - private final List removedLog = new LinkedList<>(); - - /** - * {@inheritDoc} - */ - @Override - public void entriesAdded(SideProofStoreEvent e) { - addedLog.add(e); - } - - /** - * {@inheritDoc} - */ - @Override - public void entriesRemoved(SideProofStoreEvent e) { - removedLog.add(e); - } - - /** - * Compares the log with the given events and clears the log. - * - * @param expectedEvents The expected {@link SideProofStoreEvent}s. - */ - public void assertAddedLog(SideProofStoreEvent... expectedEvents) { - assertLog(addedLog, expectedEvents); - } - - /** - * Compares the log with the given events and clears the log. - * - * @param expectedEvents The expected {@link SideProofStoreEvent}s. - */ - public void assertRemovedLog(SideProofStoreEvent... expectedEvents) { - assertLog(removedLog, expectedEvents); - } - - /** - * Compares the log with the given events and clears the log. - * - * @param log The logged events. - * @param expectedEvents The expected {@link SideProofStoreEvent}s. - */ - protected void assertLog(List log, - SideProofStoreEvent... expectedEvents) { - assertEquals(expectedEvents.length, log.size()); - for (int i = 0; i < log.size(); i++) { - SideProofStoreEvent currentLog = log.get(i); - assertEquals(expectedEvents[i].getSource(), currentLog.getSource()); - assertEquals(expectedEvents[i].getEntries().length, currentLog.getEntries().length); - for (int j = 0; j < expectedEvents[i].getEntries().length; j++) { - assertEquals(expectedEvents[i].getEntries()[j], currentLog.getEntries()[j]); - } - } - log.clear(); - } - } - - /** - * Tests {@link SideProofStore#isEnabled()} and {@link SideProofStore#setEnabled(boolean)} - * together with the thrown events and the event management. - */ - @Test - public void testEnabledState() { - LoggingPropertyChangeListener listener = new LoggingPropertyChangeListener(); - boolean originalEnabled = SideProofStore.DEFAULT_INSTANCE.isEnabled(); - try { - // Setup initial disabled state - SideProofStore.DEFAULT_INSTANCE.setEnabled(false); - SideProofStore.DEFAULT_INSTANCE.addPropertyChangeListener(SideProofStore.PROP_ENABLED, - listener); - // Test initial disabled state - Assertions.assertFalse(SideProofStore.DEFAULT_INSTANCE.isEnabled()); - listener.assertLog(); - // Set disabled again - SideProofStore.DEFAULT_INSTANCE.setEnabled(false); - Assertions.assertFalse(SideProofStore.DEFAULT_INSTANCE.isEnabled()); - listener.assertLog(); - // Change to enabled - SideProofStore.DEFAULT_INSTANCE.setEnabled(true); - Assertions.assertTrue(SideProofStore.DEFAULT_INSTANCE.isEnabled()); - listener.assertLog(new PropertyChangeEvent(SideProofStore.DEFAULT_INSTANCE, - SideProofStore.PROP_ENABLED, false, true)); - // Set enabled again - SideProofStore.DEFAULT_INSTANCE.setEnabled(true); - Assertions.assertTrue(SideProofStore.DEFAULT_INSTANCE.isEnabled()); - listener.assertLog(); - // Change to dissabled - SideProofStore.DEFAULT_INSTANCE.setEnabled(false); - Assertions.assertFalse(SideProofStore.DEFAULT_INSTANCE.isEnabled()); - listener.assertLog(new PropertyChangeEvent(SideProofStore.DEFAULT_INSTANCE, - SideProofStore.PROP_ENABLED, true, false)); - } finally { - SideProofStore.DEFAULT_INSTANCE - .removePropertyChangeListener(SideProofStore.PROP_ENABLED, listener); - SideProofStore.DEFAULT_INSTANCE.setEnabled(originalEnabled); - } - } - - /** - * A logging {@link PropertyChangeListener}. - * - * @author Martin Hentschel - */ - private static class LoggingPropertyChangeListener implements PropertyChangeListener { - /** - * The log. - */ - private final List log = new LinkedList<>(); - - /** - * {@inheritDoc} - */ - @Override - public void propertyChange(PropertyChangeEvent evt) { - log.add(evt); - } - - /** - * Compares the log with the given events and clears the log. - * - * @param expectedEvents The expected {@link PropertyChangeEvent}s. - */ - public void assertLog(PropertyChangeEvent... expectedEvents) { - assertEquals(expectedEvents.length, log.size()); - for (int i = 0; i < log.size(); i++) { - PropertyChangeEvent currentLog = log.get(i); - assertEquals(expectedEvents[i].getSource(), currentLog.getSource()); - assertEquals(expectedEvents[i].getPropertyName(), currentLog.getPropertyName()); - assertEquals(expectedEvents[i].getOldValue(), currentLog.getOldValue()); - assertEquals(expectedEvents[i].getNewValue(), currentLog.getNewValue()); - } - log.clear(); - } - } -} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestSymbolicExecutionUtil.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestSymbolicExecutionUtil.java deleted file mode 100644 index f8d4fa7f734..00000000000 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/util/TestSymbolicExecutionUtil.java +++ /dev/null @@ -1,166 +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.symbolic_execution.testcase.util; - -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; - -import de.uka.ilkd.key.control.KeYEnvironment; -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.expression.literal.IntLiteral; -import de.uka.ilkd.key.ldt.IntegerLDT; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.TermBuilder; -import de.uka.ilkd.key.logic.op.LogicVariable; -import de.uka.ilkd.key.proof.io.ProblemLoaderException; -import de.uka.ilkd.key.settings.ProofSettings; -import de.uka.ilkd.key.symbolic_execution.testcase.AbstractSymbolicExecutionTestCase; -import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; - -import org.key_project.logic.Name; -import org.key_project.logic.sort.Sort; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.MethodOrderer; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -/** - * Tests for {@link SymbolicExecutionUtil} - * - * @author Martin Hentschel - */ -@TestMethodOrder(MethodOrderer.MethodName.class) -public class TestSymbolicExecutionUtil extends AbstractSymbolicExecutionTestCase { - /** - * Tests {@link SymbolicExecutionUtil#improveReadability(JTerm, Services)} - */ - @Test - public void test1ImproveReadability() throws ProblemLoaderException { - Path location = testCaseDirectory.resolve( - "readability/InnerAndAnonymousTypeTest/InnerAndAnonymousTypeTest.java") - .toAbsolutePath(); - assertTrue(Files.exists(location), "Could not find required resource: " + location); - - KeYEnvironment environment = KeYEnvironment.load(location, null, null, null); - Services services = environment.getServices(); - IntegerLDT integerLDT = services.getTypeConverter().getIntegerLDT(); - Sort intSort = integerLDT.targetSort(); - final TermBuilder TB = services.getTermBuilder(); - // Create test terms - JTerm a = TB.var(new LogicVariable(new Name("a"), intSort)); - JTerm b = TB.var(new LogicVariable(new Name("b"), intSort)); - JTerm aleqb = TB.leq(a, b); - JTerm altb = TB.lt(a, b); - JTerm agtb = TB.gt(a, b); - JTerm ageqb = TB.geq(a, b); - JTerm notAleqb = TB.not(aleqb); - JTerm notAltb = TB.not(altb); - JTerm notAgtb = TB.not(agtb); - JTerm notAgeqb = TB.not(ageqb); - JTerm onePlusB = TB.add(TB.one(), b); - JTerm bPlusOne = TB.add(b, TB.one()); - JTerm altOnePlusB = TB.lt(a, onePlusB); - JTerm altBPlusOne = TB.lt(a, bPlusOne); - JTerm ageqOnePlusB = TB.geq(a, onePlusB); - JTerm ageqBPlusOne = TB.geq(a, bPlusOne); - JTerm minusOne = services.getTypeConverter().getIntegerLDT() - .translateLiteral(new IntLiteral(-1), services); - JTerm minusOnePlusB = TB.add(minusOne, b); - JTerm bPlusMinusOne = TB.add(b, minusOne); - JTerm bMinusOne = TB.func(integerLDT.getSub(), b, TB.one()); - JTerm aleqMinusOnePlusB = TB.leq(a, minusOnePlusB); - JTerm aleqBPlusMinusOne = TB.leq(a, bPlusMinusOne); - JTerm aleqBMinusOne = TB.leq(a, bMinusOne); - JTerm agtMinusOnePlusB = TB.gt(a, minusOnePlusB); - JTerm agtBPlusMinusOne = TB.gt(a, bPlusMinusOne); - JTerm agtBMinusOne = TB.gt(a, bMinusOne); - // Test null - Assertions.assertNull(SymbolicExecutionUtil.improveReadability(null, services)); - assertTerm(notAleqb, SymbolicExecutionUtil.improveReadability(notAleqb, null)); - // Test simple ! <, ! <=, ! >, ! >= improvements - assertTerm(agtb, SymbolicExecutionUtil.improveReadability(notAleqb, services)); - assertTerm(ageqb, SymbolicExecutionUtil.improveReadability(notAltb, services)); - assertTerm(aleqb, SymbolicExecutionUtil.improveReadability(notAgtb, services)); - assertTerm(altb, SymbolicExecutionUtil.improveReadability(notAgeqb, services)); - // Test < 1 +, < + 1 - assertTerm(aleqb, SymbolicExecutionUtil.improveReadability(altOnePlusB, services)); - assertTerm(aleqb, SymbolicExecutionUtil.improveReadability(altBPlusOne, services)); - // Test >= 1 +, >= + 1 - assertTerm(agtb, SymbolicExecutionUtil.improveReadability(ageqOnePlusB, services)); - assertTerm(agtb, SymbolicExecutionUtil.improveReadability(ageqBPlusOne, services)); - // Test <= -1 +, <= + -1 - assertTerm(altb, SymbolicExecutionUtil.improveReadability(aleqMinusOnePlusB, services)); - assertTerm(altb, SymbolicExecutionUtil.improveReadability(aleqBPlusMinusOne, services)); - assertTerm(altb, SymbolicExecutionUtil.improveReadability(aleqBMinusOne, services)); - // Test > -1 +, > + -1 - assertTerm(ageqb, SymbolicExecutionUtil.improveReadability(agtMinusOnePlusB, services)); - assertTerm(ageqb, SymbolicExecutionUtil.improveReadability(agtBPlusMinusOne, services)); - assertTerm(ageqb, SymbolicExecutionUtil.improveReadability(agtBMinusOne, services)); - // Test combined - assertTerm(agtb, SymbolicExecutionUtil.improveReadability(TB.not(altOnePlusB), services)); - assertTerm(aleqb, SymbolicExecutionUtil.improveReadability(TB.not(ageqOnePlusB), services)); - assertTerm(ageqb, - SymbolicExecutionUtil.improveReadability(TB.not(aleqBPlusMinusOne), services)); - assertTerm(altb, SymbolicExecutionUtil.improveReadability(TB.not(agtBMinusOne), services)); - // Test complex term - JTerm complex = TB.and(altOnePlusB, TB.or(ageqBPlusOne, agtMinusOnePlusB)); - JTerm expectedComplex = TB.and(aleqb, TB.or(agtb, ageqb)); - assertTerm(expectedComplex, SymbolicExecutionUtil.improveReadability(complex, services)); - environment.dispose(); - } - - /** - * Tests {@link SymbolicExecutionUtil#getChoiceSetting(String)} and - * {@link SymbolicExecutionUtil#setChoiceSetting(String, String)} and - * {@link SymbolicExecutionUtil#isChoiceSettingInitialised()}. - */ - @Test - public void test2GetAndSetChoiceSetting() { - String originalValue = null; - try { - // weigl: disable, no clue why the choice settings should be initialised - // assertTrue(SymbolicExecutionUtil.isChoiceSettingInitialised()); - // Store default choice settings - Map defaultSettings = - ProofSettings.DEFAULT_SETTINGS.getChoiceSettings().getDefaultChoices(); - // weigl: disable, no clue why the choice settings should be initialised - // assertFalse(defaultSettings.isEmpty()); - // Test initial value - originalValue = SymbolicExecutionUtil - .getChoiceSetting(SymbolicExecutionUtil.CHOICE_SETTING_RUNTIME_EXCEPTIONS); - assertTrue(SymbolicExecutionUtil.CHOICE_SETTING_RUNTIME_EXCEPTIONS_VALUE_ALLOW - .equals(originalValue) - || SymbolicExecutionUtil.CHOICE_SETTING_RUNTIME_EXCEPTIONS_VALUE_BAN - .equals(originalValue)); - // Change value and make sure that it has changed - String newValue = SymbolicExecutionUtil.CHOICE_SETTING_RUNTIME_EXCEPTIONS_VALUE_ALLOW - .equals(originalValue) - ? SymbolicExecutionUtil.CHOICE_SETTING_RUNTIME_EXCEPTIONS_VALUE_BAN - : SymbolicExecutionUtil.CHOICE_SETTING_RUNTIME_EXCEPTIONS_VALUE_ALLOW; - SymbolicExecutionUtil.setChoiceSetting( - SymbolicExecutionUtil.CHOICE_SETTING_RUNTIME_EXCEPTIONS, newValue); - Assertions.assertEquals(newValue, SymbolicExecutionUtil - .getChoiceSetting(SymbolicExecutionUtil.CHOICE_SETTING_RUNTIME_EXCEPTIONS)); - // Make sure that all other settings are unchanged. - Map changedSettings = - ProofSettings.DEFAULT_SETTINGS.getChoiceSettings().getDefaultChoices(); - - Map expectedSettings = new HashMap<>(); - expectedSettings.putAll(defaultSettings); - expectedSettings.put(SymbolicExecutionUtil.CHOICE_SETTING_RUNTIME_EXCEPTIONS, newValue); - - Assertions.assertEquals(expectedSettings, changedSettings); - } finally { - if (originalValue != null) { - SymbolicExecutionUtil.setChoiceSetting( - SymbolicExecutionUtil.CHOICE_SETTING_RUNTIME_EXCEPTIONS, originalValue); - } - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/readability/InnerAndAnonymousTypeTest/InnerAndAnonymousTypeTest.java b/key.core.symbolic_execution/src/test/resources/testcase/readability/InnerAndAnonymousTypeTest/InnerAndAnonymousTypeTest.java deleted file mode 100644 index 8d80afb4512..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/readability/InnerAndAnonymousTypeTest/InnerAndAnonymousTypeTest.java +++ /dev/null @@ -1,72 +0,0 @@ - -public class InnerAndAnonymousTypeTest { - /*@ - @ ensures true; - @*/ - public int main() { - IGetter getter = new IGetter() { - public int getValue() { - return 0; - } - }; - return getter.getValue() + - InnerInterface.VALUE + - InnerInterface.InnerInterfaceInterface.VALUE + - InnerInterface.InnerInterfaceClass.VALUE + - InnerClass.VALUE + - InnerClass.InnerClassInterface.VALUE + - InnerClass.InnerClassClass.VALUE + - InnerEnum.VALUE + - InnerEnum.InnerEnumClass.VALUE + - InnerEnum.InnerEnumInterface.VALUE; -// InnerEnum.InnerEnumEnum.VALUE; - } - - public interface IGetter { - public int getValue(); - } - - public class InnerInterface { - public static final int VALUE = 1; - - public class InnerInterfaceInterface { - public static final int VALUE = 2; - } - - public class InnerInterfaceClass { - public static final int VALUE = 3; - } - } - - public class InnerClass { - public static final int VALUE = 4; - - public class InnerClassInterface { - public static final int VALUE = 5; - } - - public class InnerClassClass { - public static final int VALUE = 6; - } - } - - public enum InnerEnum { - INNER_LITERAL; - - public static final int VALUE = 7; - - public class InnerEnumInterface { - public static final int VALUE = 8; - } - - public class InnerEnumClass { - public static final int VALUE = 9; - } - -// public enum InnerEnumEnum { -// INNER_ENUM_LITERAL; -// -// public static final int VALUE = 10; -// } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/readability/InnerAndAnonymousTypeTest/model/InnerAndAnonymousTypeTest.java b/key.core.symbolic_execution/src/test/resources/testcase/readability/InnerAndAnonymousTypeTest/model/InnerAndAnonymousTypeTest.java deleted file mode 100644 index deecda1d167..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/readability/InnerAndAnonymousTypeTest/model/InnerAndAnonymousTypeTest.java +++ /dev/null @@ -1,73 +0,0 @@ -package model; - -public class InnerAndAnonymousTypeTest { - /*@ - @ ensures true; - @*/ - public int main() { - IGetter getter = new IGetter() { - public int getValue() { - return 0; - } - }; - return getter.getValue() + - InnerInterface.VALUE + - InnerInterface.InnerInterfaceInterface.VALUE + - InnerInterface.InnerInterfaceClass.VALUE + - InnerClass.VALUE + - InnerClass.InnerClassInterface.VALUE + - InnerClass.InnerClassClass.VALUE + - InnerEnum.VALUE + - InnerEnum.InnerEnumClass.VALUE + - InnerEnum.InnerEnumInterface.VALUE; -// InnerEnum.InnerEnumEnum.VALUE; - } - - public interface IGetter { - public int getValue(); - } - - public class InnerInterface { - public static final int VALUE = 1; - - public class InnerInterfaceInterface { - public static final int VALUE = 2; - } - - public class InnerInterfaceClass { - public static final int VALUE = 3; - } - } - - public class InnerClass { - public static final int VALUE = 4; - - public class InnerClassInterface { - public static final int VALUE = 5; - } - - public class InnerClassClass { - public static final int VALUE = 6; - } - } - - public enum InnerEnum { - INNER_LITERAL; - - public static final int VALUE = 7; - - public class InnerEnumInterface { - public static final int VALUE = 8; - } - - public class InnerEnumClass { - public static final int VALUE = 9; - } - -// public enum InnerEnumEnum { -// INNER_ENUM_LITERAL; -// -// public static final int VALUE = 10; -// } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_array_immediately.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_array_immediately.xml deleted file mode 100644 index 5e09bdb3878..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_array_immediately.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_array_never.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_array_never.xml deleted file mode 100644 index e6e31110ec8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_array_never.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index c0586c5d526..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_main_immediately.xml +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index fa5fd2fdc29..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_main_never.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/test/AliasTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/test/AliasTest.java deleted file mode 100644 index 169bb823e93..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/test/AliasTest.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class AliasTest { - public int array(IntWrapper w, IntWrapper[] array) { - w.value = 1; - array[0].value = 2; - array[1].value = 3; - return w.value + array[0].value + array[1].value; - } - - public int main(IntWrapper a, IntWrapper b) { - a.value = 2; - b.value = 3; - return a.value + b.value; - } - - private static class IntWrapper { - public int value; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/oracle/AllNodeTypesTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/oracle/AllNodeTypesTest.xml deleted file mode 100644 index 4a5be923500..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/oracle/AllNodeTypesTest.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/oracle/AllNodeTypesTest_VerificationProfile.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/oracle/AllNodeTypesTest_VerificationProfile.xml deleted file mode 100644 index 401b4722a8f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/oracle/AllNodeTypesTest_VerificationProfile.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/oracle/AllNodeTypesTest_VerificationProfile_NoOneStepSimplification.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/oracle/AllNodeTypesTest_VerificationProfile_NoOneStepSimplification.xml deleted file mode 100644 index b4d80cd57a7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/oracle/AllNodeTypesTest_VerificationProfile_NoOneStepSimplification.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest.java deleted file mode 100644 index ed8878c0396..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest.java +++ /dev/null @@ -1,33 +0,0 @@ - -public class AllNodeTypesTest { - private int value; - - /*@ normal_behavior - @ ensures true; - @*/ - public static int main(/*@ nullable @*/ AllNodeTypesTest obj) { - obj.value = 1; - obj.value = doubleValue(1); - int result = 0; - /*@ loop_invariant i >= 0 && i <= 1; - @ decreasing 2 - i; - @ assignable \strictly_nothing; - @*/ - for (int i = 0; i == 0; i++) { - result++; - } - result = doubleValue(result); - for (int i = 0; i == 0; i++) { - result++; - } - return result; - } - - /*@ normal_behavior - @ requires x >= 0; - @ ensures \result == x + x; - @*/ - public static int doubleValue(int x) { - return x + x; - } -} 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 deleted file mode 100644 index 6f5b29f7f60..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest.proof +++ /dev/null @@ -1,390 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Tue Jul 25 22:57:12 CEST 2023 -[Choice]DefaultChoices=JavaCard-JavaCard\\:off, Strings-Strings\\:on, assertions-assertions\\:on, bigint-bigint\\:on, floatRules-floatRules\\:strictfpOnly, initialisation-initialisation\\:disableStaticInitialisation, intRules-intRules\\:arithmeticSemanticsIgnoringOF, integerSimplificationRules-integerSimplificationRules\\:full, javaLoopTreatment-javaLoopTreatment\\:efficient, mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off, methodExpansion-methodExpansion\\:noRestriction, modelFields-modelFields\\:showSatisfiability, moreSeqRules-moreSeqRules\\:off, permissions-permissions\\:off, programRules-programRules\\:Java, reach-reach\\:on, runtimeExceptions-runtimeExceptions\\:allow, sequences-sequences\\:on, wdChecks-wdChecks\\:off, wdOperator-wdOperator\\:L -[Labels]UseOriginLabels=true -[SMTSettings]SelectedTaclets= -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[SMTSettings]instantiateHierarchyAssumptions=true -[SMTSettings]integersMaximum=2147483645 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]maxGenericSorts=2 -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[SMTSettings]useUninterpretedMultiplication=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[Strategy]MaximumNumberOfAutomaticApplications=500 -[Strategy]Timeout=-1 -" -} - -\javaSource "."; - -\proofObligation { - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - "contract": "AllNodeTypesTest[AllNodeTypesTest::main(AllNodeTypesTest)].JML normal_behavior operation contract.0", - "name": "AllNodeTypesTest[AllNodeTypesTest::main(AllNodeTypesTest)].JML normal_behavior operation contract.0", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "bubel" ) (keyVersion "0ac6d7f2f89621db5bcd223c76470fdcc857ac4d")) - -(autoModeTime "1605") - -(branch "dummy ID" - (builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_main,savedHeapBefore_main,_objBefore_main")) - (builtin "One Step Simplification" (formula "4")) -(rule "assignment_write_attribute" (formula "4") (term "1")) -(branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "5")) - (rule "replace_known_right" (formula "2") (term "0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "2")) - (builtin "Use Operation Contract" (formula "5") (newnames "heapBefore_doubleValue,result_0,exc_1,heapAfter_doubleValue,anon_heap_doubleValue") (contract "AllNodeTypesTest[AllNodeTypesTest::doubleValue(int)].JML normal_behavior operation contract.0") (modality "diamond")) - (branch "Post (doubleValue)" - (builtin "One Step Simplification" (formula "5")) - (rule "add_literals" (formula "5") (term "1,0,1,1")) - (builtin "One Step Simplification" (formula "7")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "7")) - (rule "assignment_write_attribute" (formula "9") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "applyEq" (formula "9") (term "3,0,1,0") (ifseqformula "7")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "result")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "forInitUnfold" (formula "9") (term "1")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "elim_double_block_5" (formula "9") (term "1")) - (rule "for_to_while" (formula "9") (term "1") (inst "#outerLabel=_label1") (inst "#innerLabel=_label0")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label3") (inst "#innerLabel=_label2")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifSplit" (formula "9")) - (branch "if b true" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_reference_cast_expression_primitive" (formula "9") (term "1") (inst "#v=i_1")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_1")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (rule "translateJavaAddInt" (formula "9") (term "0,0,1")) - (builtin "One Step Simplification" (formula "9")) - (rule "add_zero_left" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_int_cast_expression" (formula "9") (term "1") (inst "#v=i_2")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_2")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (rule "translateJavaAddInt" (formula "9") (term "0,0,1")) - (builtin "One Step Simplification" (formula "9")) - (rule "add_zero_left" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label5") (inst "#innerLabel=_label4")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b_1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_1")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "equal_literals" (formula "9") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifSplit" (formula "9")) - (branch "if b_1 true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if b_1 false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "methodCallWithAssignmentWithinClass" (formula "9") (term "1") (inst "#v0=i_3")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_3")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "methodBodyExpand" (formula "9") (term "1") (newnames "heapBefore_doubleValue_0,savedHeapBefore_doubleValue")) - (builtin "One Step Simplification" (formula "9")) - (rule "returnUnfold" (formula "9") (term "1") (inst "#v0=i_4")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_4")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (rule "translateJavaAddInt" (formula "9") (term "0,0,1")) - (builtin "One Step Simplification" (formula "9")) - (rule "add_literals" (formula "9") (term "0,1,0")) - (rule "methodCallReturn" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "forInitUnfold" (formula "9") (term "1")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_5")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "elim_double_block_5" (formula "9") (term "1")) - (rule "for_to_while" (formula "9") (term "1") (inst "#outerLabel=_label7") (inst "#innerLabel=_label6")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label9") (inst "#innerLabel=_label8")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b_2")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_2")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifSplit" (formula "9")) - (branch "if b_2 true" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_reference_cast_expression_primitive" (formula "9") (term "1") (inst "#v=i_6")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_6")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (rule "translateJavaAddInt" (formula "9") (term "0,0,1")) - (builtin "One Step Simplification" (formula "9")) - (rule "add_literals" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_int_cast_expression" (formula "9") (term "1") (inst "#v=i_7")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_7")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (rule "translateJavaAddInt" (formula "9") (term "0,0,1")) - (builtin "One Step Simplification" (formula "9")) - (rule "add_zero_left" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label11") (inst "#innerLabel=_label10")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b_3")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_3")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "equal_literals" (formula "9") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifSplit" (formula "9")) - (branch "if b_3 true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if b_3 false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "methodCallReturn" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "tryEmpty" (formula "9") (term "1")) - (rule "emptyModality" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (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" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "if b false" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Exceptional Post (doubleValue)" - (builtin "One Step Simplification" (formula "5")) - (rule "add_literals" (formula "5") (term "1,0,1,1")) - (builtin "One Step Simplification" (formula "7")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "8")) - (rule "notLeft" (formula "6")) - (rule "close" (formula "9") (ifseqformula "8")) - ) - (branch "Pre (doubleValue)" - (builtin "One Step Simplification" (formula "5")) - (rule "wellFormedStorePrimitive" (formula "5") (term "1")) - (rule "qeq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "5")) - ) -) -(branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1")) - (rule "replace_known_left" (formula "3") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "true_left" (formula "3")) - (rule "applyEq" (formula "4") (term "0,0,0") (ifseqformula "1")) - (rule "throwUnfold" (formula "4") (term "1") (inst "#v0=n")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n")) - (builtin "Use Operation Contract" (formula "4") (newnames "heapBefore_NullPointerException,self,exc_0,heapAfter_NullPointerException,anon_heap_NullPointerException") (contract "java.lang.NullPointerException[java.lang.NullPointerException::NullPointerException()].JML normal_behavior operation contract.0") (modality "diamond")) - (branch "Post (NullPointerException)" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "6")) - (rule "andLeft" (formula "5")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "6") (term "1,1,0,1,0") (ifseqformula "5")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "8")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "7")) - (rule "notLeft" (formula "6")) - (rule "notLeft" (formula "6")) - (rule "replace_known_right" (formula "6") (term "0") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "6")) - (rule "pullOutSelect" (formula "9") (term "0") (inst "selectSK=java_lang_Throwable_cause_0")) - (rule "simplifySelectOfAnonEQ" (formula "9") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "14")) (ifInst "" (formula "13"))) - (rule "applyEqReverse" (formula "10") (term "0") (ifseqformula "9")) - (rule "hideAuxiliaryEq" (formula "9")) - (rule "pullOutSelect" (formula "8") (term "0") (inst "selectSK=java_lang_Throwable_message_0")) - (rule "simplifySelectOfAnonEQ" (formula "8") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "14")) (ifInst "" (formula "13"))) - (rule "applyEqReverse" (formula "9") (term "0") (ifseqformula "8")) - (rule "hideAuxiliaryEq" (formula "8")) - (rule "commuteUnion" (formula "5") (term "1,0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "8") (term "0") (ifseqformula "4")) - (rule "replace_known_left" (formula "8") (term "0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (rule "onlyCreatedObjectsAreReferenced" (formula "9") (term "0") (ifseqformula "4")) - (rule "replace_known_left" (formula "9") (term "0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "methodCallParamThrow" (formula "14") (term "1")) - (rule "tryCatchThrow" (formula "14") (term "1")) - (rule "ifElseUnfold" (formula "14") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x")) - (rule "equality_comparison_simple" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "replace_known_right" (formula "14") (term "0,0,1,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "14")) - (rule "ifElseSplit" (formula "14")) - (branch "if x true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "ifElseSplit" (formula "14")) - (branch "if n instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (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)<>, ( 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"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Exceptional Post (NullPointerException)" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "6")) - (rule "andLeft" (formula "5")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "6") (term "1,0,0") (ifseqformula "5")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "6") (term "1,1,0,1,0") (ifseqformula "5")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "8")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "8")) - (rule "andLeft" (formula "10")) - (rule "notLeft" (formula "6")) - (rule "close" (formula "12") (ifseqformula "11")) - ) - (branch "Pre (NullPointerException)" - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "2"))) - (rule "closeTrue" (formula "4")) - ) -) -) -} 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 deleted file mode 100644 index 6354511bb0c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile.proof +++ /dev/null @@ -1,441 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Tue Jul 25 22:57:42 CEST 2023 -[Choice]DefaultChoices=JavaCard-JavaCard\\:off, Strings-Strings\\:on, assertions-assertions\\:on, bigint-bigint\\:on, floatRules-floatRules\\:strictfpOnly, initialisation-initialisation\\:disableStaticInitialisation, intRules-intRules\\:arithmeticSemanticsIgnoringOF, integerSimplificationRules-integerSimplificationRules\\:full, javaLoopTreatment-javaLoopTreatment\\:efficient, mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off, methodExpansion-methodExpansion\\:noRestriction, modelFields-modelFields\\:showSatisfiability, moreSeqRules-moreSeqRules\\:off, permissions-permissions\\:off, programRules-programRules\\:Java, reach-reach\\:on, runtimeExceptions-runtimeExceptions\\:allow, sequences-sequences\\:on, wdChecks-wdChecks\\:off, wdOperator-wdOperator\\:L -[Labels]UseOriginLabels=true -[SMTSettings]SelectedTaclets= -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[SMTSettings]instantiateHierarchyAssumptions=true -[SMTSettings]integersMaximum=2147483645 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]maxGenericSorts=2 -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[SMTSettings]useUninterpretedMultiplication=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[Strategy]ActiveStrategy=JavaCardDLStrategy -[Strategy]MaximumNumberOfAutomaticApplications=500 -[Strategy]Timeout=-1 -" -} - -\javaSource "."; - -\proofObligation { - "addSymbolicExecutionLabel": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - "contract": "AllNodeTypesTest[AllNodeTypesTest::main(AllNodeTypesTest)].JML normal_behavior operation contract.0", - "name": "AllNodeTypesTest[AllNodeTypesTest::main(AllNodeTypesTest)].JML normal_behavior operation contract.0", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "4" (keyUser "bubel" ) (keyVersion "0ac6d7f2f89621db5bcd223c76470fdcc857ac4d")) - -(autoModeTime "2114") - -(branch "dummy ID" - (builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_main,savedHeapBefore_main,_objBefore_main")) - (builtin "One Step Simplification" (formula "4")) -(rule "assignment_write_attribute" (formula "4") (term "1")) -(branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4")) - (rule "replace_known_right" (formula "2") (term "0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "2")) - (rule "eval_order_access4" (formula "5") (term "1") (inst "#v1=x") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "a")) - (rule "assignment" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x")) - (builtin "Use Operation Contract" (formula "5") (newnames "heapBefore_doubleValue,result_0,exc_0,heapAfter_doubleValue,anon_heap_doubleValue") (contract "AllNodeTypesTest[AllNodeTypesTest::doubleValue(int)].JML normal_behavior operation contract.0") (modality "diamond")) - (branch "Post (doubleValue)" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "7")) - (rule "add_literals" (formula "5") (term "1,0,1,1")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "7")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "assignment_write_attribute" (formula "9") (term "1")) - (branch "Normal Execution (a != null)" - (builtin "One Step Simplification" (formula "10")) - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8"))) - (rule "false_right" (formula "9")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "result")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "applyEq" (formula "9") (term "3,0,1,0,0") (ifseqformula "7")) - (rule "for_to_while" (formula "9") (term "1") (inst "#outerLabel=_label1") (inst "#innerLabel=_label0")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "elim_double_block_3" (formula "9") (term "1")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label3") (inst "#innerLabel=_label2")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifSplit" (formula "9")) - (branch "if b true" - (builtin "One Step Simplification" (formula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_int_cast_expression" (formula "9") (term "1") (inst "#v=i_1")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_1")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaAddInt" (formula "9") (term "0,1,0")) - (rule "add_zero_left" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_int_cast_expression" (formula "9") (term "1") (inst "#v=i_2")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_2")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaAddInt" (formula "9") (term "0,1,0")) - (rule "add_zero_left" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "elim_double_block_3" (formula "9") (term "1")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label5") (inst "#innerLabel=_label4")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b_1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_1")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "equal_literals" (formula "9") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifSplit" (formula "9")) - (branch "if b_1 true" - (builtin "One Step Simplification" (formula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if b_1 false" - (builtin "One Step Simplification" (formula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "methodCallWithAssignmentWithinClass" (formula "9") (term "1") (inst "#v0=i_3")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_3")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "methodBodyExpand" (formula "9") (term "1") (newnames "heapBefore_doubleValue_0,savedHeapBefore_doubleValue")) - (builtin "One Step Simplification" (formula "9")) - (rule "returnUnfold" (formula "9") (term "1") (inst "#v0=i_4")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_4")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaAddInt" (formula "9") (term "0,1,0")) - (rule "add_literals" (formula "9") (term "0,1,0")) - (rule "methodCallReturn" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "for_to_while" (formula "9") (term "1") (inst "#outerLabel=_label7") (inst "#innerLabel=_label6")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_5")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "elim_double_block_3" (formula "9") (term "1")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label9") (inst "#innerLabel=_label8")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b_2")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_2")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifSplit" (formula "9")) - (branch "if b_2 true" - (builtin "One Step Simplification" (formula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_int_cast_expression" (formula "9") (term "1") (inst "#v=i_6")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_6")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaAddInt" (formula "9") (term "0,1,0")) - (rule "add_literals" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_int_cast_expression" (formula "9") (term "1") (inst "#v=i_7")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_7")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaAddInt" (formula "9") (term "0,1,0")) - (rule "add_zero_left" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "elim_double_block_3" (formula "9") (term "1")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label11") (inst "#innerLabel=_label10")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b_3")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_3")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "equal_literals" (formula "9") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifSplit" (formula "9")) - (branch "if b_3 true" - (builtin "One Step Simplification" (formula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if b_3 false" - (builtin "One Step Simplification" (formula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "methodCallReturn" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "tryEmpty" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "emptyModality" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "closeTrue" (formula "9")) - ) - ) - (branch "if b_2 false" - (builtin "One Step Simplification" (formula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "if b false" - (builtin "One Step Simplification" (formula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Exceptional Post (doubleValue)" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "5")) - (rule "add_literals" (formula "5") (term "1,0,1,1")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "8")) - (rule "notLeft" (formula "6")) - (rule "close" (formula "9") (ifseqformula "8")) - ) - (branch "Pre (doubleValue)" - (builtin "One Step Simplification" (formula "5")) - (rule "wellFormedStorePrimitive" (formula "5") (term "1")) - (rule "qeq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "5")) - ) -) -(branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1")) - (rule "replace_known_left" (formula "3") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "true_left" (formula "3")) - (rule "applyEq" (formula "4") (term "0,0,0") (ifseqformula "1")) - (rule "throwUnfold" (formula "4") (term "1") (inst "#v0=n")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n")) - (rule "instanceCreationAssignment" (formula "4") (term "1") (inst "#v0=n_1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n_1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "4") (term "1") (inst "#v0=n_2")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n_2")) - (rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_,savedHeapBefore_")) - (builtin "One Step Simplification" (formula "4")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "__NEW__")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "4") (term "1") (inst "#v0=n_3")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n_3")) - (rule "allocateInstance" (formula "4")) - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3"))) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "2")) - (rule "notLeft" (formula "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_,savedHeapBefore_")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallWithinClass" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_,savedHeapBefore_")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_,savedHeapBefore_")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore__0,savedHeapBefore__0")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore__1,savedHeapBefore__1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore__2,savedHeapBefore__2")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "7") (term "1")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_,savedHeapBefore_")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore__0,savedHeapBefore__0")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore__1,savedHeapBefore__1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore__2,savedHeapBefore__2")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore__3,savedHeapBefore__3")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute" (formula "7") (term "1")) - (branch "Normal Execution (n_1 != null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5"))) - (rule "false_right" (formula "7")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallParamThrow" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "tryCatchThrow" (formula "7") (term "1")) - (rule "ifElseUnfold" (formula "7") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_11")) - (rule "equality_comparison_simple" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "replace_known_right" (formula "7") (term "0,0,1,0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "7")) - (rule "ifElseSplit" (formula "7")) - (branch "if x_11 true" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_11 false" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "ifElseSplit" (formula "7")) - (branch "if n instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "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)]\")>>, ( 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"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Null Reference (n_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) -) -) -} 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 deleted file mode 100644 index 7f1887f8a11..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile_NoOneStepSimplification.proof +++ /dev/null @@ -1,782 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Tue Jul 25 22:58:04 CEST 2023 -[Choice]DefaultChoices=JavaCard-JavaCard\\:off, Strings-Strings\\:on, assertions-assertions\\:on, bigint-bigint\\:on, floatRules-floatRules\\:strictfpOnly, initialisation-initialisation\\:disableStaticInitialisation, intRules-intRules\\:arithmeticSemanticsIgnoringOF, integerSimplificationRules-integerSimplificationRules\\:full, javaLoopTreatment-javaLoopTreatment\\:efficient, mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off, methodExpansion-methodExpansion\\:noRestriction, modelFields-modelFields\\:showSatisfiability, moreSeqRules-moreSeqRules\\:off, permissions-permissions\\:off, programRules-programRules\\:Java, reach-reach\\:on, runtimeExceptions-runtimeExceptions\\:allow, sequences-sequences\\:on, wdChecks-wdChecks\\:off, wdOperator-wdOperator\\:L -[Labels]UseOriginLabels=true -[SMTSettings]SelectedTaclets= -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[SMTSettings]instantiateHierarchyAssumptions=true -[SMTSettings]integersMaximum=2147483645 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]maxGenericSorts=2 -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[SMTSettings]useUninterpretedMultiplication=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[StrategyProperty]OSS_OPTIONS_KEY=OSS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[Strategy]ActiveStrategy=JavaCardDLStrategy -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[Strategy]Timeout=-1 -" -} - -\javaSource "."; - -\proofObligation { - "addSymbolicExecutionLabel": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - "contract": "AllNodeTypesTest[AllNodeTypesTest::main(AllNodeTypesTest)].JML normal_behavior operation contract.0", - "name": "AllNodeTypesTest[AllNodeTypesTest::main(AllNodeTypesTest)].JML normal_behavior operation contract.0", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "4" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "5" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "6" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "7" (keyUser "bubel" ) (keyVersion "0ac6d7f2f89621db5bcd223c76470fdcc857ac4d")) - -(autoModeTime "4929") - -(branch "dummy ID" -(rule "elementOfAllLocs" (formula "1") (term "0,0,0,0,1,0,1,1") (newnames "heapAtPre,o,f")) -(rule "concrete_or_1" (formula "1") (term "0,0,0,1,0,1,1")) -(rule "concrete_or_1" (formula "1") (term "0,0,1,0,1,1")) -(rule "simplifyUpdate2" (formula "1") (term "1")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "assignment" (formula "4") (term "1")) -(rule "sequentialToParallel2" (formula "4")) -(rule "simplifyUpdate3" (formula "4") (term "1,0")) -(rule "all_unused" (formula "4") (term "0,1,0,1")) -(rule "all_unused" (formula "4") (term "1,0,1")) -(rule "concrete_and_3" (formula "4") (term "0,1")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_main,savedHeapBefore_main,_objBefore_main")) -(rule "simplifyUpdate2" (formula "4") (term "1")) -(rule "assignment_write_attribute" (formula "4") (term "1")) -(branch "Normal Execution (_obj != null)" - (rule "simplifyUpdate2" (formula "4")) - (rule "sequentialToParallel2" (formula "5")) - (rule "simplifyUpdate3" (formula "5") (term "1,0")) - (rule "applyOnElementary" (formula "5") (term "1,0")) - (rule "applyOnRigidFormula" (formula "4")) - (rule "simplifyUpdate1" (formula "4") (term "1")) - (rule "applyOnPV" (formula "4") (term "0")) - (rule "replace_known_right" (formula "2") (term "0") (ifseqformula "4")) - (rule "concrete_or_2" (formula "2")) - (rule "applyOnRigidTerm" (formula "5") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "5") (term "0,0,1,0")) - (rule "applyOnPV" (formula "5") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "5") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "5") (term "3,0,1,0")) - (rule "eval_order_access4" (formula "5") (term "1") (inst "#v0=a") (inst "#v1=x")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "a")) - (rule "assignment" (formula "5") (term "1")) - (rule "sequentialToParallel2" (formula "5")) - (rule "simplifyUpdate2" (formula "5")) - (rule "simplifyUpdate3" (formula "5") (term "1,0")) - (rule "applyOnElementary" (formula "5") (term "1,0")) - (rule "applyOnPV" (formula "5") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x")) - (builtin "Use Operation Contract" (formula "5") (newnames "heapBefore_doubleValue,result_0,exc_0,heapAfter_doubleValue,anon_heap_doubleValue") (contract "AllNodeTypesTest[AllNodeTypesTest::doubleValue(int)].JML normal_behavior operation contract.0") (modality "diamond")) - (branch "Post (doubleValue)" - (rule "expandInInt" (formula "5") (term "1,0,1,1,1,1")) - (rule "concrete_and_3" (formula "5") (term "0,1,1,1,1")) - (rule "add_literals" (formula "5") (term "1,0,1,1,1,1,1")) - (rule "simplifyUpdate2" (formula "5")) - (rule "simplifyUpdate2" (formula "5") (term "1")) - (rule "simplifyUpdate2" (formula "5") (term "1,1")) - (rule "andLeft" (formula "5")) - (rule "simplifyUpdate2" (formula "6")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "7")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnRigidFormula" (formula "5")) - (rule "simplifyUpdate1" (formula "5") (term "1")) - (rule "applyOnRigidTerm" (formula "5") (term "0")) - (rule "simplifyUpdate1" (formula "5") (term "2,0")) - (rule "simplifyUpdate1" (formula "5") (term "1,0")) - (rule "applyOnPV" (formula "5") (term "0,0")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "assignment_write_attribute" (formula "9") (term "1")) - (branch "Normal Execution (a != null)" - (rule "simplifyUpdate2" (formula "9")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "applyOnRigidFormula" (formula "9")) - (rule "simplifyUpdate1" (formula "9") (term "1")) - (rule "applyOnPV" (formula "9") (term "0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "3,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "0,0,1,0")) - (rule "applyOnPV" (formula "9") (term "3,0,1,0")) - (rule "applyOnPV" (formula "9") (term "1,0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,1,0")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "result")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyEq" (formula "9") (term "3,0,1,0,0") (ifseqformula "7")) - (rule "for_to_while" (formula "9") (term "1") (inst "#outerLabel=_label1") (inst "#innerLabel=_label0")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "elim_double_block_3" (formula "9") (term "1")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label3") (inst "#innerLabel=_label2")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,0,1,0")) - (rule "eqClose" (formula "9") (term "0,0,1,0")) - (rule "ifthenelse_true" (formula "9") (term "0,1,0")) - (rule "ifSplit" (formula "9")) - (branch "if b true" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "10")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "boolean_equal" (formula "1")) - (rule "true_left" (formula "1")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_int_cast_expression" (formula "9") (term "1") (inst "#v=i_1")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_1")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (rule "translateJavaAddInt" (formula "9") (term "0,0,1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "polySimp_addComm0" (formula "9") (term "1,0,1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "applyOnPV" (formula "9") (term "1,0,1,0")) - (rule "add_zero_right" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnPV" (formula "9") (term "0,1,0")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_int_cast_expression" (formula "9") (term "1") (inst "#v=i_2")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_2")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (rule "translateJavaAddInt" (formula "9") (term "0,0,1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "polySimp_addComm0" (formula "9") (term "1,0,1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "applyOnPV" (formula "9") (term "1,0,1,0")) - (rule "add_zero_right" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnPV" (formula "9") (term "0,1,0")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "elim_double_block_3" (formula "9") (term "1")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label5") (inst "#innerLabel=_label4")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b_1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_1")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,0,1,0")) - (rule "equal_literals" (formula "9") (term "0,0,1,0")) - (rule "ifthenelse_false" (formula "9") (term "0,1,0")) - (rule "ifSplit" (formula "9")) - (branch "if b_1 true" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "10")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "boolean_not_equal_2" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if b_1 false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "8")) - (rule "simplifyUpdate1" (formula "8") (term "1")) - (rule "applyOnPV" (formula "8") (term "0")) - (rule "boolean_not_equal_2" (formula "8")) - (rule "false_right" (formula "8")) - (rule "methodCallWithAssignmentWithinClass" (formula "9") (term "1") (inst "#v0=i_3")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_3")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_1")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnPV" (formula "9") (term "0,1,0")) - (rule "methodBodyExpand" (formula "9") (term "1") (newnames "heapBefore_doubleValue_0,savedHeapBefore_doubleValue")) - (rule "simplifyUpdate2" (formula "9") (term "1")) - (rule "returnUnfold" (formula "9") (term "1") (inst "#v0=i_4")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_4")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (rule "translateJavaAddInt" (formula "9") (term "0,0,1")) - (rule "polySimp_pullOutFactor3" (formula "9") (term "0,0,1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,1,0")) - (rule "mul_literals" (formula "9") (term "0,1,0")) - (rule "methodCallReturn" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnPV" (formula "9") (term "0,1,0")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnPV" (formula "9") (term "0,1,0")) - (rule "for_to_while" (formula "9") (term "1") (inst "#outerLabel=_label7") (inst "#innerLabel=_label6")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_5")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "elim_double_block_3" (formula "9") (term "1")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label9") (inst "#innerLabel=_label8")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b_2")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_2")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,0,1,0")) - (rule "eqClose" (formula "9") (term "0,0,1,0")) - (rule "ifthenelse_true" (formula "9") (term "0,1,0")) - (rule "ifSplit" (formula "9")) - (branch "if b_2 true" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "10")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "boolean_equal" (formula "1")) - (rule "true_left" (formula "1")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_int_cast_expression" (formula "9") (term "1") (inst "#v=i_6")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_6")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (rule "translateJavaAddInt" (formula "9") (term "0,0,1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "polySimp_addComm0" (formula "9") (term "1,0,1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "applyOnPV" (formula "9") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "0,0,1,0")) - (rule "add_literals" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnPV" (formula "9") (term "0,1,0")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "postincrement" (formula "9") (term "1")) - (rule "compound_int_cast_expression" (formula "9") (term "1") (inst "#v=i_7")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_7")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (rule "translateJavaAddInt" (formula "9") (term "0,0,1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "polySimp_addComm0" (formula "9") (term "1,0,1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "applyOnPV" (formula "9") (term "1,0,1,0")) - (rule "add_zero_right" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnPV" (formula "9") (term "0,1,0")) - (rule "blockEmpty" (formula "9") (term "1")) - (rule "elim_double_block_3" (formula "9") (term "1")) - (rule "loopUnwind" (formula "9") (term "1") (inst "#outerLabel=_label11") (inst "#innerLabel=_label10")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=b_3")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_3")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,0,1,0")) - (rule "equal_literals" (formula "9") (term "0,0,1,0")) - (rule "ifthenelse_false" (formula "9") (term "0,1,0")) - (rule "ifSplit" (formula "9")) - (branch "if b_3 true" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "10")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "boolean_not_equal_2" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if b_3 false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "8")) - (rule "simplifyUpdate1" (formula "8") (term "1")) - (rule "applyOnPV" (formula "8") (term "0")) - (rule "boolean_not_equal_2" (formula "8")) - (rule "false_right" (formula "8")) - (rule "methodCallReturn" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (rule "simplifyUpdate2" (formula "9") (term "1")) - (rule "simplifyUpdate2" (formula "9")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "tryEmpty" (formula "9") (term "1")) - (rule "simplifyUpdate2" (formula "9")) - (rule "emptyModality" (formula "9") (term "1")) - (rule "applyOnRigidFormula" (formula "9")) - (rule "simplifyUpdate1" (formula "9") (term "1")) - (rule "applyOnPV" (formula "9") (term "0")) - (rule "eqClose" (formula "9")) - (rule "closeTrue" (formula "9")) - ) - ) - (branch "if b_2 false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "8")) - (rule "simplifyUpdate1" (formula "8") (term "1")) - (rule "applyOnPV" (formula "8") (term "0")) - (rule "boolean_equal" (formula "8")) - (rule "closeTrue" (formula "8")) - ) - ) - ) - (branch "if b false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "8")) - (rule "simplifyUpdate1" (formula "8") (term "1")) - (rule "applyOnPV" (formula "8") (term "0")) - (rule "boolean_equal" (formula "8")) - (rule "closeTrue" (formula "8")) - ) - ) - (branch "Null Reference (a = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "10")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "close" (formula "9") (ifseqformula "1")) - ) - ) - (branch "Exceptional Post (doubleValue)" - (rule "simplifyUpdate2" (formula "5")) - (rule "add_literals" (formula "5") (term "1,0,1,1,1,1,1")) - (rule "simplifyUpdate2" (formula "5") (term "1")) - (rule "andLeft" (formula "5")) - (rule "sequentialToParallel2" (formula "8")) - (rule "simplifyUpdate2" (formula "8")) - (rule "simplifyUpdate3" (formula "8") (term "1,0")) - (rule "sequentialToParallel2" (formula "6")) - (rule "simplifyUpdate2" (formula "6")) - (rule "simplifyUpdate3" (formula "6") (term "0")) - (rule "andLeft" (formula "6")) - (rule "simplifyUpdate2" (formula "7")) - (rule "andLeft" (formula "6")) - (rule "simplifyUpdate2" (formula "6")) - (rule "andLeft" (formula "8")) - (rule "notLeft" (formula "6")) - (rule "close" (formula "9") (ifseqformula "8")) - ) - (branch "Pre (doubleValue)" - (rule "expandInInt" (formula "5") (term "1,1,1,1")) - (rule "concrete_and_3" (formula "5") (term "1,1,1")) - (rule "qeq_literals" (formula "5") (term "0,1,1")) - (rule "concrete_and_1" (formula "5") (term "1,1")) - (rule "simplifyUpdate2" (formula "5")) - (rule "simplifyUpdate2" (formula "5") (term "1")) - (rule "applyOnRigidFormula" (formula "5")) - (rule "applyOnPV" (formula "5") (term "0")) - (rule "wellFormedStorePrimitive" (formula "5")) - (rule "close" (formula "5") (ifseqformula "1")) - ) -) -(branch "Null Reference (_obj = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "replace_known_left" (formula "3") (term "0") (ifseqformula "1")) - (rule "concrete_or_1" (formula "3")) - (rule "true_left" (formula "3")) - (rule "applyEq" (formula "4") (term "0,0,0") (ifseqformula "1")) - (rule "throwUnfold" (formula "4") (term "1") (inst "#v0=n")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n")) - (rule "instanceCreationAssignment" (formula "4") (term "1") (inst "#v0=n_1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n_1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "4") (term "1") (inst "#v0=n_2")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n_2")) - (rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) - (rule "simplifyUpdate2" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "__NEW__")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "4") (term "1") (inst "#v0=n_3")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n_3")) - (rule "allocateInstance" (formula "4")) - (rule "false_to_not_true" (formula "1") (term "1,1,0,1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "4")) - (rule "concrete_impl_1" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_,savedHeapBefore_")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "applyOnElementary" (formula "7") (term "1,0")) - (rule "applyOnRigidTerm" (formula "7") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "3,0,1,0")) - (rule "applyOnPV" (formula "7") (term "0,0,1,0")) - (rule "applyOnPV" (formula "7") (term "1,0,1,0")) - (rule "methodCallWithinClass" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepare_1,savedHeapBefore_$prepare_1")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepare_2,savedHeapBefore_$prepare_2")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "applyOnElementary" (formula "7") (term "1,0")) - (rule "applyOnRigidTerm" (formula "7") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "3,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0,1,0")) - (rule "applyOnPV" (formula "7") (term "0,0,1,0")) - (rule "applyOnPV" (formula "7") (term "1,0,1,0")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "applyOnElementary" (formula "7") (term "1,0")) - (rule "applyOnRigidTerm" (formula "7") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "3,0,1,0")) - (rule "applyOnPV" (formula "7") (term "0,0,1,0")) - (rule "applyOnPV" (formula "7") (term "1,0,1,0")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "7") (term "1")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "applyOnElementary" (formula "7") (term "1,0")) - (rule "applyOnPV" (formula "7") (term "0,1,0")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "applyOnElementary" (formula "7") (term "1,0")) - (rule "applyOnPV" (formula "7") (term "0,1,0")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init_3,savedHeapBefore_$init_3")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "applyOnElementary" (formula "7") (term "1,0")) - (rule "applyOnRigidTerm" (formula "7") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "3,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0,1,0")) - (rule "applyOnPV" (formula "7") (term "0,0,1,0")) - (rule "applyOnPV" (formula "7") (term "1,0,1,0")) - (rule "dropEffectlessStores" (formula "7") (term "0,1,0")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "applyOnElementary" (formula "7") (term "1,0")) - (rule "applyOnRigidTerm" (formula "7") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "3,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0,1,0")) - (rule "applyOnPV" (formula "7") (term "0,0,1,0")) - (rule "applyOnPV" (formula "7") (term "1,0,1,0")) - (rule "dropEffectlessStores" (formula "7") (term "0,1,0")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute" (formula "7") (term "1")) - (branch "Normal Execution (n_1 != null)" - (rule "simplifyUpdate2" (formula "7")) - (rule "sequentialToParallel2" (formula "8")) - (rule "simplifyUpdate2" (formula "8")) - (rule "simplifyUpdate3" (formula "8") (term "1,0")) - (rule "applyOnElementary" (formula "8") (term "1,0")) - (rule "applyOnRigidFormula" (formula "7")) - (rule "simplifyUpdate1" (formula "7") (term "1")) - (rule "applyOnPV" (formula "7") (term "0")) - (rule "applyOnRigidTerm" (formula "7") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "3,0,1,0")) - (rule "applyOnPV" (formula "7") (term "0,0,1,0")) - (rule "applyOnPV" (formula "7") (term "1,0,1,0")) - (rule "dropEffectlessStores" (formula "7") (term "0,1,0")) - (rule "assignment" (formula "7") (term "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "applyOnElementary" (formula "7") (term "1,0")) - (rule "applyOnPV" (formula "7") (term "0,1,0")) - (rule "methodCallParamThrow" (formula "7") (term "1")) - (rule "simplifyUpdate2" (formula "7")) - (rule "tryCatchThrow" (formula "7") (term "1")) - (rule "ifElseUnfold" (formula "7") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_11")) - (rule "equality_comparison_simple" (formula "7") (term "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "applyOnElementary" (formula "7") (term "1,0")) - (rule "applyOnRigidTerm" (formula "7") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "7") (term "0,0,1,0")) - (rule "applyOnPV" (formula "7") (term "0,0,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0,0,1,0")) - (rule "replace_known_right" (formula "7") (term "0,0,1,0") (ifseqformula "6")) - (rule "ifthenelse_false" (formula "7") (term "0,1,0")) - (rule "ifElseSplit" (formula "7")) - (branch "if x_11 true" - (rule "simplifyUpdate2" (formula "8")) - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "boolean_not_equal_2" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_11 false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "8")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "5")) - (rule "applyOnPV" (formula "5") (term "0")) - (rule "simplifyUpdate1" (formula "5") (term "1")) - (rule "boolean_not_equal_2" (formula "5")) - (rule "false_right" (formula "5")) - (rule "ifElseSplit" (formula "7")) - (branch "if n instanceof java.lang.Throwable true" - (rule "instanceof_static_type" (formula "1") (term "2,0,1")) - (rule "ifthenelse_concrete4" (formula "1") (term "1")) - (rule "boolean_not_equal_2" (formula "1") (term "1,1")) - (rule "concrete_or_4" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "5")) - (rule "applyOnPV" (formula "5") (term "0")) - (rule "simplifyUpdate1" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "7") (term "1")) - (rule "instanceof_static_type" (formula "1") (term "0,1,1")) - (rule "boolean_equal" (formula "1") (term "1,1")) - (rule "concrete_or_3" (formula "1") (term "1")) - (rule "true_left" (formula "1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "applyOnElementary" (formula "7") (term "1,0")) - (rule "applyOnPV" (formula "7") (term "0,1,0")) - (rule "assignment" (formula "7") (term "1")) - (rule "simplifyUpdate2" (formula "7")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "0")) - (rule "applyOnElementary" (formula "7") (term "0")) - (rule "applyOnPV" (formula "7") (term "0,0")) - (rule "emptyModality" (formula "7") (term "1")) - (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<> ==> ( 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")) - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "ifthenelse_concrete4" (formula "1") (term "0,1")) - (rule "boolean_not_equal_2" (formula "1") (term "1,0,1")) - (rule "concrete_or_4" (formula "1") (term "0,1")) - (rule "double_not" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "close" (formula "7") (ifseqformula "1")) - ) - ) - ) - (branch "Null Reference (n_1 = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "close" (formula "7") (ifseqformula "1")) - ) -) -) -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/anotherInstanceContractTest/oracle/AnotherInstanceContractTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/anotherInstanceContractTest/oracle/AnotherInstanceContractTest.xml deleted file mode 100644 index 65105c7ebb8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/anotherInstanceContractTest/oracle/AnotherInstanceContractTest.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/anotherInstanceContractTest/test/AnotherInstanceContractTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/anotherInstanceContractTest/test/AnotherInstanceContractTest.java deleted file mode 100644 index 85143c56c41..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/anotherInstanceContractTest/test/AnotherInstanceContractTest.java +++ /dev/null @@ -1,18 +0,0 @@ - -public class AnotherInstanceContractTest { - public static int main(int x, AnotherInstanceContractTest obj) { - return obj.magic(x); - } - - /*@ normal_behavior - @ requires x >= 10; - @ ensures \result == 10; - @ also - @ normal_behavior - @ requires x < -22; - @ ensures \result == -22; - @*/ - public int magic(int x) { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/anotherStaticContractTest/oracle/AnotherStaticContractTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/anotherStaticContractTest/oracle/AnotherStaticContractTest.xml deleted file mode 100644 index 8d970000dbe..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/anotherStaticContractTest/oracle/AnotherStaticContractTest.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/anotherStaticContractTest/test/AnotherStaticContractTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/anotherStaticContractTest/test/AnotherStaticContractTest.java deleted file mode 100644 index 367b477e01f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/anotherStaticContractTest/test/AnotherStaticContractTest.java +++ /dev/null @@ -1,27 +0,0 @@ - -public class AnotherStaticContractTest { - public static int main(int x) { - return magic(x); - } - - /*@ normal_behavior - @ requires x >= 10; - @ ensures \result == 10; - @ also - @ normal_behavior - @ requires x < -22; - @ ensures \result == -22; - @ also - @ exceptional_behavior - @ requires x == 4; - @ also - @ requires x == -3; - @ ensures \result == -3; - @ also - @ behavior - @ ensures \result == 4711; - @*/ - public static int magic(int x) { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/assumesUserInputTest/oracle/AssumesUserInputTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/assumesUserInputTest/oracle/AssumesUserInputTest.xml deleted file mode 100644 index 14304fa6a4f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/assumesUserInputTest/oracle/AssumesUserInputTest.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/assumesUserInputTest/test/AssumesUserInputTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/assumesUserInputTest/test/AssumesUserInputTest.java deleted file mode 100644 index cbfa58ba969..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/assumesUserInputTest/test/AssumesUserInputTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class AssumesUserInputTest { - /*@ normal_behavior - @ ensures \result == x || \result == y; - @*/ - public static int min(int x, int y, int z) { - if (x < y) { - return x; - } - else { - return y; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/assumesUserInputTest/test/AssumesUserInputTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/assumesUserInputTest/test/AssumesUserInputTest.proof deleted file mode 100644 index beaa3a48728..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/assumesUserInputTest/test/AssumesUserInputTest.proof +++ /dev/null @@ -1,195 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Thu Jan 22 14:33:50 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\rules { - assumesTestTaclet { - \schemaVar \formula aExists, bNotExists, cNotExists, dNotExists; - \assumes (bNotExists, cNotExists ==> dNotExists) - \find (aExists) - \replacewith (aExists) - }; -} - -\proofObligation { - "name": "AssumesUserInputTest[AssumesUserInputTest::min(int,int,int)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "AssumesUserInputTest[AssumesUserInputTest::min(int,int,int)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "624") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,0,1")) -(rule "eqSymm" (formula "3") (term "0,0,0,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_min,savedHeapBefore_min")) -(builtin "One Step Simplification" (formula "3")) -(rule "ifElseUnfold" (formula "3") (term "1") (inst "#boolv=x")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "less_than_comparison_simple" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "ifElseSplit" (formula "3")) -(branch "if x_1 true" - (rule "assumesTestTaclet" (formula "4") (ifdirectformula "geq(x, Z(1(#)))") (ifdirectformula "geq(y, Z(2(2(#))))") (ifdirectformula "geq(z, Z(3(3(3(#)))))") (userinteraction)) - (branch "Case 1" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_notGeq" (formula "4") (term "1")) - (rule "mul_literals" (formula "4") (term "1,0,0,1")) - (rule "add_literals" (formula "4") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "4") (term "1")) - (rule "mul_literals" (formula "4") (term "1,1")) - (rule "blockReturn" (formula "5") (term "1")) - (rule "methodCallReturn" (formula "5") (term "1")) - (rule "assignment" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "methodCallEmpty" (formula "5") (term "1")) - (rule "tryEmpty" (formula "5") (term "1")) - (rule "emptyModality" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "cut_direct" (formula "4") (term "0,0")) - (branch "CUT: x >= 1 TRUE" - (builtin "One Step Simplification" (formula "5")) - (rule "cut_direct" (formula "5") (term "0")) - (branch "CUT: y >= 22 TRUE" - (builtin "One Step Simplification" (formula "6")) - (rule "inEqSimp_leqRight" (formula "6")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (opengoal " ") - ) - (branch "CUT: y >= 22 FALSE" - (builtin "One Step Simplification" (formula "6")) - (rule "false_right" (formula "6")) - (rule "inEqSimp_geqRight" (formula "5")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "inEqSimp_exactShadow3" (formula "3") (ifseqformula "1")) - (rule "polySimp_rightDist" (formula "3") (term "0,0")) - (rule "mul_literals" (formula "3") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "3") (term "0")) - (rule "add_literals" (formula "3") (term "0,0")) - (rule "inEqSimp_sepNegMonomial1" (formula "3")) - (rule "polySimp_mulLiterals" (formula "3") (term "0")) - (rule "polySimp_elimOne" (formula "3") (term "0")) - (opengoal " ") - ) - ) - (branch "CUT: x >= 1 FALSE" - (builtin "One Step Simplification" (formula "5")) - (rule "false_right" (formula "5")) - (rule "inEqSimp_geqRight" (formula "4")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (opengoal " ") - ) - ) - (branch "Case 2" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "7")) - (rule "inEqSimp_geqRight" (formula "6")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "inEqSimp_ltToLeq" (formula "4")) - (rule "polySimp_mulComm0" (formula "4") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "4") (term "0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "inEqSimp_sepNegMonomial0" (formula "4")) - (rule "polySimp_mulLiterals" (formula "4") (term "0")) - (rule "polySimp_elimOne" (formula "4") (term "0")) - (rule "blockReturn" (formula "7") (term "1")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) -) -(branch "if x_1 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_ltRight" (formula "3")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0")) - (rule "polySimp_addComm0" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial1" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "blockReturn" (formula "4") (term "1")) - (rule "methodCallReturn" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (opengoal " ") -) -) - -} 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 deleted file mode 100644 index d1f54e26c2d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableEverything/oracle/BlockContractModifiableEverything.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableEverything/test/BlockContractModifiableEverything.java b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableEverything/test/BlockContractModifiableEverything.java deleted file mode 100644 index 738e953f0f4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableEverything/test/BlockContractModifiableEverything.java +++ /dev/null @@ -1,26 +0,0 @@ - -public class BlockContractModifiableEverything { - public static int x; - - public static int y; - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int main() { - x = 2; - y = 3; - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - { - x = -2; - y = -3; - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableEverything/test/BlockContractModifiableEverything.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableEverything/test/BlockContractModifiableEverything.proof deleted file mode 100644 index 4a684b3d7a9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableEverything/test/BlockContractModifiableEverything.proof +++ /dev/null @@ -1,173 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 30 16:07:42 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractModifiableEverything[BlockContractModifiableEverything::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "BlockContractModifiableEverything[BlockContractModifiableEverything::main()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "657") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(builtin "Block Contract (Internal)" (formula "3") (newnames "anon_heap,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "3")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "activeUseStaticFieldWriteAccess" (formula "4") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_4")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment_write_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "activeUseStaticFieldWriteAccess" (formula "4") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_5")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment_write_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "elementOfSetMinus" (formula "4") (term "0,0,0,0,1,0,1")) - (builtin "One Step Simplification" (formula "4")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "blockEmptyLabel" (formula "4") (term "1")) - (rule "blockEmpty" (formula "4") (term "1")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "closeTrue" (formula "4")) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "close" (formula "3") (ifseqformula "1")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "replace_known_left" (formula "5") (term "0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "true_left" (formula "5")) - (rule "ifUnfold" (formula "5") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_2")) - (rule "inequality_comparison_simple" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "replace_known_left" (formula "5") (term "0,0,1,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "ifSplit" (formula "5")) - (branch "if x_2 true" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_2 false" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockEmpty" (formula "5") (term "1")) - (rule "returnUnfold" (formula "5") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_3")) - (rule "activeUseStaticFieldReadAccess" (formula "5") (term "1")) - (rule "assignment_read_static_attribute" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "pullOutSelect" (formula "5") (term "0,1,0") (inst "selectSK=BlockContractModifiableEverything_x_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "elementOfSetMinus" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "6") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "5") (term "1")) - (rule "assignment" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "methodCallEmpty" (formula "5") (term "1")) - (rule "tryEmpty" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "emptyModality" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "closeTrue" (formula "5")) - ) -) -) - -} 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 deleted file mode 100644 index 8c858c53975..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableLocationNotRequested/oracle/BlockContractModifiableLocationNotRequested.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableLocationNotRequested/test/BlockContractModifiableLocationNotRequested.java b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableLocationNotRequested/test/BlockContractModifiableLocationNotRequested.java deleted file mode 100644 index 02f4f17b4b3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableLocationNotRequested/test/BlockContractModifiableLocationNotRequested.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class BlockContractModifiableLocationNotRequested { - public static int x; - - public static int y; - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int main() { - x = 2; - y = 3; - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable y; - @*/ - { - y = -3; - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableLocationNotRequested/test/BlockContractModifiableLocationNotRequested.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableLocationNotRequested/test/BlockContractModifiableLocationNotRequested.proof deleted file mode 100644 index a72f618cb1d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableLocationNotRequested/test/BlockContractModifiableLocationNotRequested.proof +++ /dev/null @@ -1,198 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 30 16:39:35 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractModifiableLocationNotRequested[BlockContractModifiableLocationNotRequested::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "BlockContractModifiableLocationNotRequested[BlockContractModifiableLocationNotRequested::main()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "285") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(builtin "Block Contract (Internal)" (formula "3") (newnames "anon_heap,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) - (rule "elementOfSingleton" (formula "4") (term "0,0,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "activeUseStaticFieldWriteAccess" (formula "4") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_4")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment_write_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "blockEmptyLabel" (formula "4") (term "1")) - (rule "blockEmpty" (formula "4") (term "1")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "allRight" (formula "4") (inst "sk=f_0")) - (rule "allRight" (formula "4") (inst "sk=o_0")) - (rule "orRight" (formula "4")) - (rule "orRight" (formula "4")) - (rule "eqSymm" (formula "6")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1")) - (rule "pullOutSelect" (formula "6") (term "1") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "pullOutSelect" (formula "7") (term "0") (inst "selectSK=f_0_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "replaceKnownSelect_taclet0_1" (formula "1") (term "2,0")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "8") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "closeTrue" (formula "8")) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "close" (formula "3") (ifseqformula "1")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "replace_known_left" (formula "5") (term "0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "true_left" (formula "5")) - (rule "ifUnfold" (formula "5") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_2")) - (rule "inequality_comparison_simple" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "replace_known_left" (formula "5") (term "0,0,1,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "ifSplit" (formula "5")) - (branch "if x_2 true" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_2 false" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockEmpty" (formula "5") (term "1")) - (rule "returnUnfold" (formula "5") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_3")) - (rule "activeUseStaticFieldReadAccess" (formula "5") (term "1")) - (rule "assignment_read_static_attribute" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "pullOutSelect" (formula "5") (term "0,1,0") (inst "selectSK=BlockContractModifiableLocationNotRequested_x_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "6") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "5") (term "1")) - (rule "assignment" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "methodCallEmpty" (formula "5") (term "1")) - (rule "tryEmpty" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "emptyModality" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "closeTrue" (formula "5")) - ) -) -) - -} 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 deleted file mode 100644 index 8aa5cbd14b7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableRequestedLocation/oracle/BlockContractModifiableRequestedLocation.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableRequestedLocation/test/BlockContractModifiableRequestedLocation.java b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableRequestedLocation/test/BlockContractModifiableRequestedLocation.java deleted file mode 100644 index 9fd28452517..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableRequestedLocation/test/BlockContractModifiableRequestedLocation.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class BlockContractModifiableRequestedLocation { - public static int x; - - public static int y; - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int main() { - x = 2; - y = 3; - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable x; - @*/ - { - x = -2; - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableRequestedLocation/test/BlockContractModifiableRequestedLocation.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableRequestedLocation/test/BlockContractModifiableRequestedLocation.proof deleted file mode 100644 index 1020268d01b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableRequestedLocation/test/BlockContractModifiableRequestedLocation.proof +++ /dev/null @@ -1,201 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 30 16:36:39 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractModifiableRequestedLocation[BlockContractModifiableRequestedLocation::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "BlockContractModifiableRequestedLocation[BlockContractModifiableRequestedLocation::main()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "605") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(builtin "Block Contract (Internal)" (formula "3") (newnames "anon_heap,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) - (rule "elementOfSingleton" (formula "4") (term "0,0,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "activeUseStaticFieldWriteAccess" (formula "4") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_4")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment_write_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "blockEmptyLabel" (formula "4") (term "1")) - (rule "blockEmpty" (formula "4") (term "1")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "allRight" (formula "4") (inst "sk=f_0")) - (rule "allRight" (formula "4") (inst "sk=o_0")) - (rule "orRight" (formula "4")) - (rule "orRight" (formula "4")) - (rule "eqSymm" (formula "6")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1")) - (rule "pullOutSelect" (formula "6") (term "1") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "pullOutSelect" (formula "7") (term "0") (inst "selectSK=f_0_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "pullOutSelect" (formula "2") (term "2,0") (inst "selectSK=f_0_2")) - (rule "simplifySelectOfStore" (formula "2")) - (builtin "One Step Simplification" (formula "2")) - (rule "castDel" (formula "2") (term "1,0")) - (rule "eqSymm" (formula "2") (term "1,0,0")) - (rule "eqSymm" (formula "2") (term "0,0,0")) - (rule "replace_known_right" (formula "2") (term "0,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "2")) - (rule "applyEqReverse" (formula "3") (term "2,0") (ifseqformula "2")) - (rule "hideAuxiliaryEq" (formula "2")) - (rule "applyEq" (formula "2") (term "0") (ifseqformula "1")) - (rule "close" (formula "8") (ifseqformula "2")) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "close" (formula "3") (ifseqformula "1")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "replace_known_left" (formula "5") (term "0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "true_left" (formula "5")) - (rule "ifUnfold" (formula "5") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_2")) - (rule "inequality_comparison_simple" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "replace_known_left" (formula "5") (term "0,0,1,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "ifSplit" (formula "5")) - (branch "if x_2 true" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_2 false" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockEmpty" (formula "5") (term "1")) - (rule "returnUnfold" (formula "5") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_3")) - (rule "activeUseStaticFieldReadAccess" (formula "5") (term "1")) - (rule "assignment_read_static_attribute" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "pullOutSelect" (formula "5") (term "0,1,0") (inst "selectSK=BlockContractModifiableRequestedLocation_x_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "6") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "5") (term "1")) - (rule "assignment" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "methodCallEmpty" (formula "5") (term "1")) - (rule "tryEmpty" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "emptyModality" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "closeTrue" (formula "5")) - ) -) -) - -} 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 deleted file mode 100644 index da0132d901c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractParamRemaned/oracle/BlockContractParamRemaned.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractParamRemaned/test/BlockContractParamRemaned.java b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractParamRemaned/test/BlockContractParamRemaned.java deleted file mode 100644 index 3e8599f7a13..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractParamRemaned/test/BlockContractParamRemaned.java +++ /dev/null @@ -1,30 +0,0 @@ - -public class BlockContractParamRemaned { - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int main(int x, int y) { - return magic(x, y); - } - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int magic(int x, int y) { - x = 2; - y = 3; - /*@ normal_behavior - @ requires x == 2; - @ ensures x == -2; - @ assignable x; - @*/ - { - x = -2; - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractParamRemaned/test/BlockContractParamRemaned.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractParamRemaned/test/BlockContractParamRemaned.proof deleted file mode 100644 index c6b6189c84d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractParamRemaned/test/BlockContractParamRemaned.proof +++ /dev/null @@ -1,156 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Fri Mar 23 15:01:02 CET 2018 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_NONCLOSE -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractParamRemaned[BlockContractParamRemaned::main(int,int)].JML normal_behavior operation contract.0", - "contract": "BlockContractParamRemaned[BlockContractParamRemaned::main(int,int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "101") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "x,y,result,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "returnUnfold" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "methodCallWithAssignmentWithinClass" (formula "3") (term "1") (inst "#v0=x_2")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_2")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_3")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "y_1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(builtin "Block Contract (Internal)" (formula "3") (newnames "anon_heap,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,x_Before_BLOCK,o,f,anon_x_3")) -(branch "Validity" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "1"))) - (rule "true_left" (formula "3")) - (rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "3") (term "1")) - (rule "variableDeclaration" (formula "3") (term "1") (newnames "exc_0_1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "tryEmpty" (formula "3") (term "1")) - (rule "blockEmptyLabel" (formula "3") (term "1")) - (rule "blockEmpty" (formula "3") (term "1")) - (rule "methodCallEmpty" (formula "3") (term "1")) - (rule "emptyModality" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "closeTrue" (formula "3")) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "3")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "4")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "replace_known_left" (formula "6") (term "0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "6")) - (rule "true_left" (formula "6")) - (rule "applyEq" (formula "6") (term "0,0,1,0") (ifseqformula "4")) - (rule "ifUnfold" (formula "6") (term "1") (inst "#boolv=x_3")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_4")) - (rule "inequality_comparison_simple" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "replace_known_left" (formula "6") (term "0,0,1,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "6")) - (rule "ifSplit" (formula "6")) - (branch "if x_4 true" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_4 false" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockEmpty" (formula "6") (term "1")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "blockEmpty" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "closeTrue" (formula "6")) - ) -) -) - -} 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 deleted file mode 100644 index 751d7e6a50d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index d556d2e69cf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified_symbolicExecution.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/test/BlockContractPreconditionNotVerified.java b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/test/BlockContractPreconditionNotVerified.java deleted file mode 100644 index 535bfe5c3fb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/test/BlockContractPreconditionNotVerified.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class BlockContractPreconditionNotVerified { - /*@ normal_behavior - @ requires x == 2; - @ ensures true; - @ assignable \everything; - @*/ - public static int main(int x) { - return magic(x); - } - - public static int magic(int x) { - /*@ return_behavior - @ requires x == 4711; - @ returns \result == -2; - @ assignable \strictly_nothing; - @*/ - { - if (x == 2) { - return -4711; - } - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/test/BlockContractPreconditionNotVerified.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/test/BlockContractPreconditionNotVerified.proof deleted file mode 100644 index 9108a91bc3d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/test/BlockContractPreconditionNotVerified.proof +++ /dev/null @@ -1,134 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Fri Mar 23 14:11:53 CET 2018 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_NONCLOSE -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractPreconditionNotVerified[BlockContractPreconditionNotVerified::main(int)].JML normal_behavior operation contract.0", - "contract": "BlockContractPreconditionNotVerified[BlockContractPreconditionNotVerified::main(int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "57") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "x,result,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "applyEq" (formula "4") (term "0,1,0,0") (ifseqformula "3")) -(rule "elementOfSetMinus" (formula "4") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "4")) -(rule "returnUnfold" (formula "4") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "4") (term "1")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_1")) -(rule "methodCallWithAssignmentWithinClass" (formula "4") (term "1") (inst "#v0=x_2")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_2")) -(rule "variableDeclarationAssign" (formula "4") (term "1")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_3")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) -(builtin "One Step Simplification" (formula "4")) -(builtin "Block Contract (Internal)" (formula "4") (newnames "returned,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" - (opengoal " ") -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "equal_literals" (formula "4")) - (rule "false_right" (formula "4")) - (opengoal " ") -) -(branch "Usage" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "replace_known_left" (formula "7") (term "0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "7")) - (rule "true_left" (formula "7")) - (rule "replace_known_left" (formula "6") (term "0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "6")) - (rule "replace_known_left" (formula "7") (term "1,1,0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "4")) (ifInst "" (formula "5")) (ifInst "" (formula "4")) (ifInst "" (formula "5")) (ifInst "" (formula "4"))) - (rule "true_left" (formula "7")) - (rule "ifSplit" (formula "7")) - (branch "if returned true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "true_left" (formula "1")) - (rule "blockReturn" (formula "7") (term "1")) - (rule "methodCallReturn" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "applyEq" (formula "7") (term "0,1,0") (ifseqformula "6")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "closeTrue" (formula "7")) - ) - (branch "if returned false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "1")) - ) -) -) - -} 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 deleted file mode 100644 index 05e0f8b4be3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractThisTest/oracle/BlockContractThisTest.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractThisTest/test/BlockContractThisTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractThisTest/test/BlockContractThisTest.java deleted file mode 100644 index f173c3c27f3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractThisTest/test/BlockContractThisTest.java +++ /dev/null @@ -1,34 +0,0 @@ - -public class BlockContractThisTest { - private int x; - - private int y; - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public int main(BlockContractThisTest a) { - return a.magic(); - } - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public int magic() { - x = 2; - y = 3; - /*@ normal_behavior - @ requires x == 2; - @ ensures x == -2; - @ assignable x; - @*/ - { - x = -2; - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractThisTest/test/BlockContractThisTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractThisTest/test/BlockContractThisTest.proof deleted file mode 100644 index 3e5b62fdd6c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractThisTest/test/BlockContractThisTest.proof +++ /dev/null @@ -1,240 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Fri Mar 23 14:11:48 CET 2018 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_NONCLOSE -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractThisTest[BlockContractThisTest::magic()].JML normal_behavior operation contract.0", - "contract": "BlockContractThisTest[BlockContractThisTest::magic()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "michael" ) (keyVersion "bc848068abcbd8bf2e4880be7d34b939b322cf14")) - -(autoModeTime "523") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "self,result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "eqSymm" (formula "7") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "7") (term "1")) -(builtin "One Step Simplification" (formula "7")) -(rule "elementOfSetMinus" (formula "7") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "7")) -(rule "Class_invariant_axiom_for_BlockContractThisTest" (formula "5") (inst "sk=sk_0") (ifseqformula "3")) -(branch "Use Axiom" -(rule "true_left" (formula "5")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) -(builtin "One Step Simplification" (formula "6")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(builtin "Block Contract (Internal)" (formula "6") (newnames "anonOut_heap,result#0,exc#1,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" -(builtin "One Step Simplification" (formula "5") (ifInst "" (formula "4")) (ifInst "" (formula "3")) (ifInst "" (formula "6"))) -(builtin "One Step Simplification" (formula "7")) -(rule "andLeft" (formula "5")) -(rule "andLeft" (formula "5")) -(rule "eqSymm" (formula "9") (term "1,0,0,1,0,1")) -(rule "elementOfSingleton" (formula "9") (term "0,0,0,0,1,0,1")) -(rule "dismissNonSelectedField" (formula "7") (term "0")) -(rule "dismissNonSelectedField" (formula "5") (term "0")) -(rule "dismissNonSelectedField" (formula "7") (term "0")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "exc#1_1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "assignment_write_attribute_this" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "pullOutSelect" (formula "5") (term "0") (inst "selectSK=BlockContractThisTest_x_0")) -(rule "simplifySelectOfStore" (formula "5")) -(builtin "One Step Simplification" (formula "5")) -(rule "castDel" (formula "5") (term "0")) -(rule "applyEqReverse" (formula "6") (term "0") (ifseqformula "5")) -(builtin "One Step Simplification" (formula "6")) -(rule "true_left" (formula "6")) -(rule "hideAuxiliaryEq" (formula "5")) -(rule "tryEmpty" (formula "7") (term "1")) -(rule "blockEmptyLabel" (formula "7") (term "1")) -(rule "blockEmpty" (formula "7") (term "1")) -(rule "methodCallEmpty" (formula "7") (term "1")) -(rule "emptyModality" (formula "7") (term "1")) -(builtin "One Step Simplification" (formula "7")) -(rule "eqSymm" (formula "7") (term "1,0,0,1")) -(rule "dismissNonSelectedField" (formula "7") (term "0,0,1,1,0,0,0,1")) -(rule "dismissNonSelectedField" (formula "7") (term "0,0,1,1,0,0,0,1")) -(rule "pullOutSelect" (formula "7") (term "0,0") (inst "selectSK=BlockContractThisTest_x_1")) -(rule "simplifySelectOfStore" (formula "1")) -(builtin "One Step Simplification" (formula "1")) -(rule "castDel" (formula "1") (term "0")) -(rule "applyEqReverse" (formula "8") (term "0,0") (ifseqformula "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "allRight" (formula "8") (inst "sk=f_0")) -(rule "allRight" (formula "8") (inst "sk=o_0")) -(rule "orRight" (formula "8")) -(rule "orRight" (formula "8")) -(rule "hideAuxiliaryEq" (formula "1")) -(rule "pullOutSelect" (formula "9") (term "1") (inst "selectSK=f_0_0")) -(rule "simplifySelectOfStore" (formula "1")) -(builtin "One Step Simplification" (formula "1")) -(rule "castDel" (formula "1") (term "1,0")) -(rule "eqSymm" (formula "1") (term "0,0,0")) -(rule "eqSymm" (formula "1") (term "1,0,0")) -(rule "pullOutSelect" (formula "10") (term "0") (inst "selectSK=f_0_1")) -(rule "simplifySelectOfStore" (formula "1")) -(builtin "One Step Simplification" (formula "1")) -(rule "castDel" (formula "1") (term "1,0")) -(rule "eqSymm" (formula "1") (term "0,0,0")) -(rule "eqSymm" (formula "1") (term "1,0,0")) -(rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "9")) -(builtin "One Step Simplification" (formula "1")) -(rule "simplifySelectOfStore" (formula "1")) -(builtin "One Step Simplification" (formula "1")) -(rule "castDel" (formula "1") (term "1,0")) -(rule "eqSymm" (formula "1") (term "0,0,0")) -(rule "eqSymm" (formula "1") (term "1,0,0")) -(rule "pullOutSelect" (formula "2") (term "2,0") (inst "selectSK=f_0_2")) -(rule "simplifySelectOfStore" (formula "2")) -(builtin "One Step Simplification" (formula "2")) -(rule "castDel" (formula "2") (term "1,0")) -(rule "eqSymm" (formula "2") (term "1,0,0")) -(rule "eqSymm" (formula "2") (term "0,0,0")) -(rule "replace_known_right" (formula "2") (term "0,0") (ifseqformula "10")) -(builtin "One Step Simplification" (formula "2")) -(rule "applyEqReverse" (formula "3") (term "2,0") (ifseqformula "2")) -(rule "hideAuxiliaryEq" (formula "2")) -(rule "applyEq" (formula "2") (term "0") (ifseqformula "1")) -(rule "close" (formula "11") (ifseqformula "2")) -) -(branch "Precondition" -(builtin "One Step Simplification" (formula "6") (ifInst "" (formula "4")) (ifInst "" (formula "3")) (ifInst "" (formula "5"))) -(rule "wellFormedStorePrimitive" (formula "6") (term "1,0")) -(rule "wellFormedStorePrimitive" (formula "6") (term "1,0")) -(rule "replace_known_left" (formula "6") (term "1,0") (ifseqformula "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "dismissNonSelectedField" (formula "6") (term "0,1")) -(rule "dismissNonSelectedField" (formula "6") (term "0,0")) -(rule "dismissNonSelectedField" (formula "6") (term "0,1")) -(rule "replace_known_left" (formula "6") (term "1") (ifseqformula "2")) -(builtin "One Step Simplification" (formula "6")) -(rule "pullOutSelect" (formula "6") (term "0") (inst "selectSK=BlockContractThisTest_x_0")) -(rule "simplifySelectOfStore" (formula "1")) -(builtin "One Step Simplification" (formula "1")) -(rule "castDel" (formula "1") (term "0")) -(rule "applyEqReverse" (formula "7") (term "0") (ifseqformula "1")) -(builtin "One Step Simplification" (formula "7")) -(rule "closeTrue" (formula "7")) -) -(branch "Usage" -(builtin "One Step Simplification" (formula "5")) -(builtin "One Step Simplification" (formula "7")) -(rule "andLeft" (formula "5")) -(rule "andLeft" (formula "5")) -(rule "andLeft" (formula "5")) -(rule "replace_known_left" (formula "8") (term "0") (ifseqformula "5")) -(builtin "One Step Simplification" (formula "8")) -(rule "true_left" (formula "8")) -(rule "pullOutSelect" (formula "6") (term "0") (inst "selectSK=BlockContractThisTest_x_0")) -(rule "simplifySelectOfAnon" (formula "6")) -(builtin "One Step Simplification" (formula "6") (ifInst "" (formula "9"))) -(rule "dismissNonSelectedField" (formula "6") (term "2,0")) -(rule "elementOfSingleton" (formula "6") (term "0,0,0")) -(builtin "One Step Simplification" (formula "6")) -(rule "applyEqReverse" (formula "7") (term "0") (ifseqformula "6")) -(rule "hideAuxiliaryEq" (formula "6")) -(rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=x")) -(rule "variableDeclaration" (formula "9") (term "1") (newnames "x")) -(rule "inequality_comparison_simple" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "replace_known_left" (formula "9") (term "0,0,1,0") (ifseqformula "5")) -(builtin "One Step Simplification" (formula "9")) -(rule "ifSplit" (formula "9")) -(branch "if x true" -(builtin "One Step Simplification" (formula "10")) -(builtin "One Step Simplification" (formula "1")) -(rule "closeFalse" (formula "1")) -) -(branch "if x false" -(builtin "One Step Simplification" (formula "10")) -(builtin "One Step Simplification" (formula "1")) -(rule "true_left" (formula "1")) -(rule "blockEmpty" (formula "9") (term "1")) -(rule "returnUnfold" (formula "9") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "9") (term "1")) -(rule "variableDeclaration" (formula "9") (term "1") (newnames "x_1")) -(rule "assignment_read_attribute_this" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "replaceKnownSelect_taclet20_0" (formula "9") (term "0,1,0")) -(rule "replaceKnownAuxiliaryConstant_taclet20_1" (formula "9") (term "0,1,0")) -(rule "applyEq" (formula "9") (term "0,1,0") (ifseqformula "6")) -(rule "methodCallReturn" (formula "9") (term "1")) -(rule "assignment" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "methodCallEmpty" (formula "9") (term "1")) -(rule "tryEmpty" (formula "9") (term "1")) -(rule "emptyModality" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "Class_invariant_axiom_for_BlockContractThisTest" (formula "9") (inst "sk=sk_1") (ifseqformula "3")) -(branch "Use Axiom" -(rule "closeTrue" (formula "9")) -) -(branch "Show Axiom Satisfiability" -(builtin "One Step Simplification" (formula "9")) -(rule "closeTrue" (formula "9")) -) -) -) -) -(branch "Show Axiom Satisfiability" -(builtin "One Step Simplification" (formula "6")) -(rule "closeTrue" (formula "6")) -) -) - -} 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 deleted file mode 100644 index 3f1e30be08e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractVarRenamedLater/oracle/BlockContractVarRenamedLater.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractVarRenamedLater/test/BlockContractVarRenamedLater.java b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractVarRenamedLater/test/BlockContractVarRenamedLater.java deleted file mode 100644 index 90f31ba3dc4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractVarRenamedLater/test/BlockContractVarRenamedLater.java +++ /dev/null @@ -1,29 +0,0 @@ - -public class BlockContractVarRenamedLater { - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int main() { - { - int x = 0; // x in KeY - } - { - int x = 1; // x_1 in KeY - } - { - int x = 2; // x_2 in KeY - int y = 3; - /*@ normal_behavior - @ requires x == 2; - @ ensures x == -2; - @ assignable x; - @*/ - { - x = -2; - } - return x; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractVarRenamedLater/test/BlockContractVarRenamedLater.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractVarRenamedLater/test/BlockContractVarRenamedLater.proof deleted file mode 100644 index 5688f88d4ef..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractVarRenamedLater/test/BlockContractVarRenamedLater.proof +++ /dev/null @@ -1,147 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Fri Mar 23 14:11:43 CET 2018 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_NONCLOSE -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractVarRenamedLater[BlockContractVarRenamedLater::main()].JML normal_behavior operation contract.0", - "contract": "BlockContractVarRenamedLater[BlockContractVarRenamedLater::main()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "77") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "blockEmpty" (formula "3") (term "1")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "blockEmpty" (formula "3") (term "1")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_2")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "y")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(builtin "Block Contract (Internal)" (formula "3") (newnames "anon_heap,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,x_Before_BLOCK,o,f,anon_x_2")) -(branch "Validity" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "1"))) - (rule "true_left" (formula "3")) - (rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "3") (term "1")) - (rule "variableDeclaration" (formula "3") (term "1") (newnames "exc_0_1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "tryEmpty" (formula "3") (term "1")) - (rule "blockEmptyLabel" (formula "3") (term "1")) - (rule "blockEmpty" (formula "3") (term "1")) - (rule "methodCallEmpty" (formula "3") (term "1")) - (rule "emptyModality" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "closeTrue" (formula "3")) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "3")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "4")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "replace_known_left" (formula "6") (term "0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "6")) - (rule "true_left" (formula "6")) - (rule "applyEq" (formula "6") (term "0,0,1,0") (ifseqformula "4")) - (rule "ifUnfold" (formula "6") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_3")) - (rule "inequality_comparison_simple" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "replace_known_left" (formula "6") (term "0,0,1,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "6")) - (rule "ifSplit" (formula "6")) - (branch "if x_3 true" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_3 false" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockEmpty" (formula "6") (term "1")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "closeTrue" (formula "6")) - ) -) -) - -} 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 deleted file mode 100644 index 79225d7174b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/oracle/BlockContractWithException.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 6b978d8bb82..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/oracle/BlockContractWithException_symbolicExecution.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/test/BlockContractWithException.java b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/test/BlockContractWithException.java deleted file mode 100644 index 9484bbb7594..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/test/BlockContractWithException.java +++ /dev/null @@ -1,26 +0,0 @@ - -public class BlockContractWithException { - /*@ exceptional_behavior - @ requires x == 2; - @ signals (NullPointerException e) true; - @ assignable \nothing; - @*/ - public static int main(int x) { - return magic(x); - } - - public static int magic(int x) { - /*@ exceptional_behavior - @ requires x == 2; - @ signals_only NullPointerException; - @ signals (NullPointerException e) true; - @ assignable \nothing; - @*/ - { - if (x == 2) { - throw new NullPointerException(); - } - } - return x; - } -} 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 deleted file mode 100644 index a4a9045cad8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/test/BlockContractWithException.proof +++ /dev/null @@ -1,550 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jul 18 10:58:28 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , moreSeqRules-moreSeqRules\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , sequences-sequences\\:on , integerSimplificationRules-integerSimplificationRules\\:full , runtimeExceptions-runtimeExceptions\\:allow , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , wdOperator-wdOperator\\:L , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractWithException[BlockContractWithException::main(int)].JML exceptional_behavior operation contract.0", - "contract": "BlockContractWithException[BlockContractWithException::main(int)].JML exceptional_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "2359") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "x,result,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "applyEq" (formula "4") (term "0,1,0,0") (ifseqformula "3")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "4")) -(rule "returnUnfold" (formula "4") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "4") (term "1")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_1")) -(rule "methodCallWithAssignmentWithinClass" (formula "4") (term "1") (inst "#v0=x_2")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_2")) -(rule "variableDeclarationAssign" (formula "4") (term "1")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_3")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) -(builtin "One Step Simplification" (formula "4")) -(builtin "Block Contract (Internal)" (formula "4") (newnames "anon_heap,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "true_left" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "ifUnfold" (formula "4") (term "1") (inst "#boolv=x_4")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_6")) - (rule "equality_comparison_simple" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "ifSplit" (formula "4")) - (branch "if x_6 true" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockThrow" (formula "4") (term "1")) - (rule "throwUnfold" (formula "4") (term "1") (inst "#v0=n")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n")) - (rule "instanceCreationAssignment" (formula "4") (term "1") (inst "#v0=n_1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n_1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "4") (term "1") (inst "#v0=n_2")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n_2")) - (rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) - (builtin "One Step Simplification" (formula "4")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "__NEW__")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "4") (term "1") (inst "#v0=n_3")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "n_3")) - (rule "allocateInstance" (formula "4")) - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_,savedHeapBefore_")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallWithinClass" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepare_1,savedHeapBefore_$prepare_1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepare_2,savedHeapBefore_$prepare_2")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "7") (term "1")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init_3,savedHeapBefore_$init_3")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute" (formula "7") (term "1")) - (branch "Normal Execution (n_1 != null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "6"))) - (rule "false_right" (formula "7")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "tryCatchThrow" (formula "7") (term "1")) - (rule "unusedLabel" (formula "7") (term "1")) - (rule "ifElseUnfold" (formula "7") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_7")) - (rule "equality_comparison_simple" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "replace_known_right" (formula "7") (term "0,0,1,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "7")) - (rule "ifElseSplit" (formula "7")) - (branch "if x_7 true" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_7 false" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "ifElseSplit" (formula "7")) - (branch "if n instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "e_1")) - (rule "delete_unnecessary_cast" (formula "7") (term "1")) - (branch "Normal Execution (n instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "6")) (ifInst "" (formula "6"))) - (rule "allRight" (formula "7") (inst "sk=f_2")) - (rule "allRight" (formula "7") (inst "sk=o_2")) - (rule "orRight" (formula "7")) - (rule "eqSymm" (formula "8")) - (rule "pullOutSelect" (formula "8") (term "0") (inst "selectSK=f_2_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "9")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_2_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_2_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_2_3")) - (rule "simplifySelectOfCreate" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,1,0,0,0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "commute_and" (formula "4") (term "0,0")) - (rule "commute_and" (formula "3") (term "0,0")) - (rule "commute_and" (formula "2") (term "0,0")) - (rule "commute_and" (formula "1") (term "0,0")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_2 = java.lang.Object::#$created & o_2 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "4") (term "2,0") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "5") (term "1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "5")) - (rule "replace_known_left" (formula "4") (term "1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "4")) - (rule "replace_known_left" (formula "3") (term "1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "3")) - (rule "applyEqRigid" (formula "5") (term "0,0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "applyEqReverse" (formula "13") (term "1") (ifseqformula "5")) - (rule "hideAuxiliaryEq" (formula "5")) - (rule "applyEqRigid" (formula "3") (term "0,0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "applyEqReverse" (formula "4") (term "2,0") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "applyEq" (formula "10") (term "0,0,0") (ifseqformula "2")) - (rule "replace_known_right" (formula "10") (term "0,0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "10")) - (rule "notRight" (formula "10")) - (rule "applyEq" (formula "11") (term "2,0") (ifseqformula "2")) - (rule "narrowSelectType" (formula "11") (term "0") (ifseqformula "6")) - (rule "eqSymm" (formula "11")) - (rule "applyEqRigid" (formula "4") (term "0,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "4")) - (rule "applyEqReverse" (formula "11") (term "0") (ifseqformula "4")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "eqSymm" (formula "10")) - (rule "close" (formula "10") (ifseqformula "1")) - ) - (branch "f_2 = java.lang.Object::#$created & o_2 = n_3 FALSE" - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_2 = java.lang.Throwable::$cause & o_2 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "4") (term "2,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "2"))) - (rule "applyEqReverse" (formula "5") (term "2,0") (ifseqformula "4")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "3") (term "1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "3")) - (rule "replace_known_left" (formula "8") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "8")) - (rule "applyEq" (formula "11") (term "0,0,0") (ifseqformula "2")) - (rule "replace_known_right" (formula "11") (term "0,0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "11")) - (rule "notRight" (formula "11")) - (rule "applyEq" (formula "12") (term "1,0") (ifseqformula "3")) - (rule "applyEq" (formula "12") (term "2,0") (ifseqformula "2")) - (rule "narrowSelectType" (formula "12") (term "0") (ifseqformula "6")) - (rule "eqSymm" (formula "12")) - (rule "applyEq" (formula "4") (term "0,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "4")) - (rule "applyEqReverse" (formula "12") (term "0") (ifseqformula "4")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "eqSymm" (formula "11")) - (rule "applyEq" (formula "8") (term "0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "3")) - (rule "close" (formula "8") (ifseqformula "1")) - ) - (branch "f_2 = java.lang.Throwable::$cause & o_2 = n_3 FALSE" - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_2 = java.lang.Throwable::$message & o_2 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "4") (term "2,0") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "3") (term "1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "3")) - (rule "replace_known_left" (formula "9") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "9")) - (rule "replace_known_left" (formula "8") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "8")) - (rule "applyEqRigid" (formula "13") (term "2,0") (ifseqformula "1")) - (rule "narrowSelectType" (formula "13") (term "0") (ifseqformula "5")) - (rule "eqSymm" (formula "13")) - (rule "applyEq" (formula "12") (term "1,0,0,1") (ifseqformula "2")) - (rule "replace_known_right" (formula "12") (term "0,1") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "12")) - (rule "notRight" (formula "12")) - (rule "applyEqRigid" (formula "4") (term "0,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "4")) - (rule "applyEqReverse" (formula "13") (term "0") (ifseqformula "4")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "eqSymm" (formula "12")) - (rule "applyEq" (formula "9") (term "0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "9")) - (rule "false_right" (formula "9")) - (rule "applyEq" (formula "8") (term "0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (rule "applyEqRigid" (formula "3") (term "0") (ifseqformula "1")) - (rule "eqSymm" (formula "3")) - (rule "close" (formula "9") (ifseqformula "3")) - ) - (branch "f_2 = java.lang.Throwable::$message & o_2 = n_3 FALSE" - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_2 = java.lang.Object::#$initialized & o_2 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "14") (term "1") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "9") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "9")) - (rule "replace_known_left" (formula "7") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "7")) - (rule "replace_known_left" (formula "8") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "8")) - (rule "applyEqRigid" (formula "9") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "false_right" (formula "9")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "false_right" (formula "7")) - (rule "applyEq" (formula "10") (term "1,0,0,1") (ifseqformula "2")) - (rule "replace_known_right" (formula "10") (term "0,1") (ifseqformula "8")) - (builtin "One Step Simplification" (formula "10")) - (rule "notRight" (formula "10")) - (rule "applyEq" (formula "11") (term "1,0") (ifseqformula "3")) - (rule "applyEqRigid" (formula "11") (term "2,0") (ifseqformula "2")) - (rule "narrowSelectType" (formula "11") (term "0") (ifseqformula "5")) - (rule "applyEq" (formula "8") (term "0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (rule "applyEq" (formula "3") (term "0") (ifseqformula "1")) - (rule "eqSymm" (formula "3")) - (rule "close" (formula "9") (ifseqformula "3")) - ) - (branch "f_2 = java.lang.Object::#$initialized & o_2 = n_3 FALSE" - (rule "close" (formula "13") (ifseqformula "1")) - ) - ) - ) - ) - ) - (branch "ClassCastException (!(n instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "7")) - (rule "closeTrue" (formula "7")) - ) - ) - (branch "if n instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Null Reference (n_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_6 false" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "4")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "notLeft" (formula "4")) - (rule "replace_known_right" (formula "4") (term "0,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "4")) - (rule "replace_known_right" (formula "6") (term "0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "6")) - (rule "ifUnfold" (formula "8") (term "1") (inst "#boolv=x_3")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_4")) - (rule "inequality_comparison_simple" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "replace_known_right" (formula "8") (term "0,0,1,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "8")) - (rule "ifSplit" (formula "8")) - (branch "if x_4 true" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockThrow" (formula "8") (term "1")) - (rule "methodCallParamThrow" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "blockThrow" (formula "8") (term "1")) - (rule "methodCallParamThrow" (formula "8") (term "1")) - (rule "tryCatchThrow" (formula "8") (term "1")) - (rule "ifElseUnfold" (formula "8") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_5")) - (rule "equality_comparison_simple" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "replace_known_right" (formula "8") (term "0,0,1,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "8")) - (rule "ifElseSplit" (formula "8")) - (branch "if x_5 true" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_5 false" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "ifElseSplit" (formula "8")) - (branch "if exc_0 instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "8") (term "1")) - (branch "Normal Execution (exc_0 instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "7"))) - (rule "instanceof_not_compatible_5" (formula "8") (term "0,0") (ifseqformula "4")) - (rule "eqSymm" (formula "8") (term "1,0,0,1")) - (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: 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")) - (branch "CUT: java.lang.RuntimeException::instance(exc_0) = TRUE TRUE" - (builtin "One Step Simplification" (formula "9")) - (rule "allRight" (formula "9") (inst "sk=f_1")) - (rule "allRight" (formula "9") (inst "sk=o_1")) - (rule "orRight" (formula "9")) - (rule "pullOutSelect" (formula "10") (term "0") (inst "selectSK=f_1_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "applyEqReverse" (formula "11") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "closeTrue" (formula "11")) - ) - (branch "CUT: java.lang.RuntimeException::instance(exc_0) = TRUE FALSE" - (rule "closeTypeSwitched" (formula "8") (ifseqformula "4")) - ) - ) - (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" - (builtin "One Step Simplification" (formula "10")) - (rule "allRight" (formula "10") (inst "sk=f_0")) - (rule "allRight" (formula "10") (inst "sk=o_0")) - (rule "orRight" (formula "10")) - (rule "pullOutSelect" (formula "11") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "applyEqReverse" (formula "12") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "closeTrue" (formula "12")) - ) - (branch "CUT: java.lang.RuntimeException::instance(exc_0) = TRUE FALSE" - (rule "closeTypeSwitched" (formula "9") (ifseqformula "4")) - ) - ) - ) - (branch "ClassCastException (!(exc_0 instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "8")) - (rule "closeTrue" (formula "8")) - ) - ) - (branch "if exc_0 instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "if x_4 false" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -) - -} 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 deleted file mode 100644 index 4f84ad5928d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index b25491d7ec6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified_symbolicExecution.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/test/BlockContractWithExceptionPostconditionNotVerified.java b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/test/BlockContractWithExceptionPostconditionNotVerified.java deleted file mode 100644 index e996d954474..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/test/BlockContractWithExceptionPostconditionNotVerified.java +++ /dev/null @@ -1,26 +0,0 @@ - -public class BlockContractWithExceptionPostconditionNotVerified { - /*@ exceptional_behavior - @ requires x == 2; - @ signals (NullPointerException e) true; - @ assignable \nothing; - @*/ - public static int main(int x) { - return magic(x); - } - - public static int magic(int x) { - /*@ exceptional_behavior - @ requires x == 2; - @ signals_only NullPointerException; - @ signals (NullPointerException e) true; - @ assignable \nothing; - @*/ - { - if (x == 2) { - throw new RuntimeException(); - } - } - return x; - } -} 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 deleted file mode 100644 index 6afe07f0bf4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/test/BlockContractWithExceptionPostconditionNotVerified.proof +++ /dev/null @@ -1,372 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jul 18 10:58:31 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , moreSeqRules-moreSeqRules\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , sequences-sequences\\:on , integerSimplificationRules-integerSimplificationRules\\:full , runtimeExceptions-runtimeExceptions\\:allow , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , wdOperator-wdOperator\\:L , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractWithExceptionPostconditionNotVerified[BlockContractWithExceptionPostconditionNotVerified::main(int)].JML exceptional_behavior operation contract.0", - "contract": "BlockContractWithExceptionPostconditionNotVerified[BlockContractWithExceptionPostconditionNotVerified::main(int)].JML exceptional_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1734") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "x,result,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "applyEq" (formula "4") (term "0,1,0,0") (ifseqformula "3")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "4")) -(rule "returnUnfold" (formula "4") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "4") (term "1")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_1")) -(rule "methodCallWithAssignmentWithinClass" (formula "4") (term "1") (inst "#v0=x_2")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_2")) -(rule "variableDeclarationAssign" (formula "4") (term "1")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_3")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) -(builtin "One Step Simplification" (formula "4")) -(builtin "Block Contract (Internal)" (formula "4") (newnames "anon_heap,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "true_left" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "ifUnfold" (formula "4") (term "1") (inst "#boolv=x_4")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_6")) - (rule "equality_comparison_simple" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "ifSplit" (formula "4")) - (branch "if x_6 true" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockThrow" (formula "4") (term "1")) - (rule "throwUnfold" (formula "4") (term "1") (inst "#v0=r")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "r")) - (rule "instanceCreationAssignment" (formula "4") (term "1") (inst "#v0=r_1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "r_1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "4") (term "1") (inst "#v0=r_2")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "r_2")) - (rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) - (builtin "One Step Simplification" (formula "4")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "__NEW__")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "4") (term "1") (inst "#v0=r_3")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "r_3")) - (rule "allocateInstance" (formula "4")) - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_,savedHeapBefore_")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallWithinClass" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$prepare_1,savedHeapBefore_$prepare_1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "7") (term "1")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallSuper" (formula "7") (term "1")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment_write_attribute" (formula "7") (term "1")) - (branch "Normal Execution (r_1 != null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "6"))) - (rule "false_right" (formula "7")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "tryCatchThrow" (formula "7") (term "1")) - (rule "unusedLabel" (formula "7") (term "1")) - (rule "ifElseUnfold" (formula "7") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_7")) - (rule "equality_comparison_simple" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "replace_known_right" (formula "7") (term "0,0,1,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "7")) - (rule "ifElseSplit" (formula "7")) - (branch "if x_7 true" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_7 false" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "ifElseSplit" (formula "7")) - (branch "if r instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "e_1")) - (rule "delete_unnecessary_cast" (formula "7") (term "1")) - (branch "Normal Execution (r instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "6")) (ifInst "" (formula "6"))) - (rule "eqSymm" (formula "7") (term "1,0,0,1")) - (rule "instanceof_known_dynamic_type_2" (formula "7") (term "0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "false_right" (formula "7")) - (opengoal " ") - ) - (branch "ClassCastException (!(r instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "7")) - (rule "closeTrue" (formula "7")) - ) - ) - (branch "if r instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Null Reference (r_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_6 false" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "4")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "notLeft" (formula "4")) - (rule "replace_known_right" (formula "4") (term "0,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "4")) - (rule "replace_known_right" (formula "6") (term "0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "6")) - (rule "ifUnfold" (formula "8") (term "1") (inst "#boolv=x_3")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_4")) - (rule "inequality_comparison_simple" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "replace_known_right" (formula "8") (term "0,0,1,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "8")) - (rule "ifSplit" (formula "8")) - (branch "if x_4 true" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockThrow" (formula "8") (term "1")) - (rule "methodCallParamThrow" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "blockThrow" (formula "8") (term "1")) - (rule "methodCallParamThrow" (formula "8") (term "1")) - (rule "tryCatchThrow" (formula "8") (term "1")) - (rule "ifElseUnfold" (formula "8") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_5")) - (rule "equality_comparison_simple" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "replace_known_right" (formula "8") (term "0,0,1,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "8")) - (rule "ifElseSplit" (formula "8")) - (branch "if x_5 true" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_5 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "1")) - (rule "ifElseSplit" (formula "8")) - (branch "if exc_0 instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "8") (term "1")) - (branch "Normal Execution (exc_0 instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "7"))) - (rule "instanceof_not_compatible_5" (formula "8") (term "0,0") (ifseqformula "4")) - (rule "eqSymm" (formula "8") (term "1,0,0,1")) - (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: 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")) - (branch "CUT: java.lang.RuntimeException::instance(exc_0) = TRUE TRUE" - (builtin "One Step Simplification" (formula "9")) - (rule "allRight" (formula "9") (inst "sk=f_1")) - (rule "allRight" (formula "9") (inst "sk=o_1")) - (rule "orRight" (formula "9")) - (rule "pullOutSelect" (formula "10") (term "0") (inst "selectSK=f_1_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "applyEqReverse" (formula "11") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "closeTrue" (formula "11")) - ) - (branch "CUT: java.lang.RuntimeException::instance(exc_0) = TRUE FALSE" - (rule "closeTypeSwitched" (formula "8") (ifseqformula "4")) - ) - ) - (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" - (builtin "One Step Simplification" (formula "10")) - (rule "allRight" (formula "10") (inst "sk=f_0")) - (rule "allRight" (formula "10") (inst "sk=o_0")) - (rule "orRight" (formula "10")) - (rule "pullOutSelect" (formula "11") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "applyEqReverse" (formula "12") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "closeTrue" (formula "12")) - ) - (branch "CUT: java.lang.RuntimeException::instance(exc_0) = TRUE FALSE" - (rule "closeTypeSwitched" (formula "9") (ifseqformula "4")) - ) - ) - ) - (branch "ClassCastException (!(exc_0 instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "8")) - (rule "closeTrue" (formula "8")) - ) - ) - (branch "if exc_0 instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "if x_4 false" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -) - -} 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 deleted file mode 100644 index 42d028169e8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/oracle/BlockContractWithReturn.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 2cedc29a719..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/oracle/BlockContractWithReturn_symbolicExecution.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/test/BlockContractWithReturn.java b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/test/BlockContractWithReturn.java deleted file mode 100644 index 639bc9ae796..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/test/BlockContractWithReturn.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class BlockContractWithReturn { - /*@ normal_behavior - @ requires x == 2; - @ ensures \result == -2; - @ assignable \everything; - @*/ - public static int main(int x) { - return magic(x); - } - - public static int magic(int x) { - /*@ return_behavior - @ requires x == 2; - @ returns \result == -2; - @ assignable \strictly_nothing; - @*/ - { - if (x == 2) { - return -2; - } - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/test/BlockContractWithReturn.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/test/BlockContractWithReturn.proof deleted file mode 100644 index 8f51c9285d4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/test/BlockContractWithReturn.proof +++ /dev/null @@ -1,173 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Fri Mar 23 14:09:27 CET 2018 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_NONCLOSE -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractWithReturn[BlockContractWithReturn::main(int)].JML normal_behavior operation contract.0", - "contract": "BlockContractWithReturn[BlockContractWithReturn::main(int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "120") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "x,result,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "applyEq" (formula "4") (term "0,1,0,0") (ifseqformula "3")) -(rule "elementOfSetMinus" (formula "4") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "4")) -(rule "returnUnfold" (formula "4") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "4") (term "1")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_1")) -(rule "methodCallWithAssignmentWithinClass" (formula "4") (term "1") (inst "#v0=x_2")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_2")) -(rule "variableDeclarationAssign" (formula "4") (term "1")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_3")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) -(builtin "One Step Simplification" (formula "4")) -(builtin "Block Contract (Internal)" (formula "4") (newnames "returned,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "true_left" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "returned_1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "result_0_1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "exc_0_1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "ifUnfold" (formula "4") (term "1") (inst "#boolv=x_4")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_4")) - (rule "equality_comparison_simple" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "ifSplit" (formula "4")) - (branch "if x_4 true" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "tryBreakLabel" (formula "4") (term "1")) - (rule "break" (formula "4") (term "1")) - (rule "blockEmpty" (formula "4") (term "1")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "closeTrue" (formula "4")) - ) - (branch "if x_4 false" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "4")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "replace_known_left" (formula "7") (term "0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "7")) - (rule "true_left" (formula "7")) - (rule "replace_known_left" (formula "6") (term "0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "6")) - (rule "replace_known_left" (formula "7") (term "0,0,0,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5")) (ifInst "" (formula "4")) (ifInst "" (formula "5")) (ifInst "" (formula "5")) (ifInst "" (formula "4"))) - (rule "true_left" (formula "7")) - (rule "ifSplit" (formula "7")) - (branch "if returned true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "true_left" (formula "1")) - (rule "blockReturn" (formula "7") (term "1")) - (rule "methodCallReturn" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "applyEq" (formula "7") (term "0,1,0") (ifseqformula "6")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "closeTrue" (formula "7")) - ) - (branch "if returned false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "1")) - ) -) -) - -} 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 deleted file mode 100644 index 01f92bd2bb1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 2ebaaec9392..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified_symbolicExecution.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/test/BlockContractWithReturnPostconditionNotVerified.java b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/test/BlockContractWithReturnPostconditionNotVerified.java deleted file mode 100644 index 0d4f23b998c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/test/BlockContractWithReturnPostconditionNotVerified.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class BlockContractWithReturnPostconditionNotVerified { - /*@ normal_behavior - @ requires x == 2; - @ ensures \result == -2; - @ assignable \everything; - @*/ - public static int main(int x) { - return magic(x); - } - - public static int magic(int x) { - /*@ return_behavior - @ requires x == 2; - @ returns \result == -2; - @ assignable \strictly_nothing; - @*/ - { - if (x == 2) { - return -4711; - } - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/test/BlockContractWithReturnPostconditionNotVerified.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/test/BlockContractWithReturnPostconditionNotVerified.proof deleted file mode 100644 index 949e03929fe..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/test/BlockContractWithReturnPostconditionNotVerified.proof +++ /dev/null @@ -1,180 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Mar 23 14:08:06 CET 2018 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_DELAYED -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_NONCLOSE -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractWithReturnPostconditionNotVerified[BlockContractWithReturnPostconditionNotVerified::main(int)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "BlockContractWithReturnPostconditionNotVerified[BlockContractWithReturnPostconditionNotVerified::main(int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "618") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "x,result,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "applyEq" (formula "4") (term "0,1,0,0") (ifseqformula "3")) -(rule "elementOfSetMinus" (formula "4") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "4")) -(rule "returnUnfold" (formula "4") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "4") (term "1")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_1")) -(rule "methodCallWithAssignmentWithinClass" (formula "4") (term "1") (inst "#v0=x_2")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_2")) -(rule "variableDeclarationAssign" (formula "4") (term "1")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x_3")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) -(builtin "One Step Simplification" (formula "4")) -(builtin "Block Contract (Internal)" (formula "4") (newnames "returned,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "true_left" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "returned_1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "result_0_1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "exc_0_1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "ifUnfold" (formula "4") (term "1") (inst "#boolv=x_4")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_4")) - (rule "equality_comparison_simple" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "ifSplit" (formula "4")) - (branch "if x_4 true" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "tryBreakLabel" (formula "4") (term "1")) - (rule "break" (formula "4") (term "1")) - (rule "blockEmpty" (formula "4") (term "1")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "equal_literals" (formula "4")) - (rule "false_right" (formula "4")) - (opengoal " ") - ) - (branch "if x_4 false" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "4")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "replace_known_left" (formula "7") (term "0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "7")) - (rule "true_left" (formula "7")) - (rule "replace_known_left" (formula "6") (term "0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "6")) - (rule "replace_known_left" (formula "7") (term "0,0,0,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5")) (ifInst "" (formula "4")) (ifInst "" (formula "5")) (ifInst "" (formula "5")) (ifInst "" (formula "4"))) - (rule "true_left" (formula "7")) - (rule "ifSplit" (formula "7")) - (branch "if returned true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "true_left" (formula "1")) - (rule "blockReturn" (formula "7") (term "1")) - (rule "methodCallReturn" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "applyEq" (formula "7") (term "0,1,0") (ifseqformula "6")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "blockEmpty" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "closeTrue" (formula "7")) - ) - (branch "if returned false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "1")) - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_ifNoBlock.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_ifNoBlock.xml deleted file mode 100644 index cb9d0e65e0c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_ifNoBlock.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_min.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_min.xml deleted file mode 100644 index 83f0b50de91..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_min.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_nestedIf.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_nestedIf.xml deleted file mode 100644 index bc29fe9d029..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_nestedIf.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyElse.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyElse.xml deleted file mode 100644 index 7f29c054127..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyElse.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyEmptyThen.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyEmptyThen.xml deleted file mode 100644 index d8bc7075f03..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyEmptyThen.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyThen.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyThen.xml deleted file mode 100644 index 52e2887529b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_onlyThen.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_recursive.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_recursive.xml deleted file mode 100644 index b8fc8d7bf43..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_recursive.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_simpleBlock.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_simpleBlock.xml deleted file mode 100644 index c7ab41f49e4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_simpleBlock.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_switchTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_switchTest.xml deleted file mode 100644 index a7090f9932c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/oracle/BranchStatementBlockTest_switchTest.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/test/BranchStatementBlockTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/test/BranchStatementBlockTest.java deleted file mode 100644 index f865150bebc..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/branchStatementBlockTest/test/BranchStatementBlockTest.java +++ /dev/null @@ -1,87 +0,0 @@ - -public class BranchStatementBlockTest { - public static int recursiveMain() { - return recursiveDecrease(3); - } - - public static int recursiveDecrease(int x) { - if (x > 0) { - return recursiveDecrease(x - 1); - } - else { - return x; - } - } - - public static int onlyEmptyThen() { - if (2 == 2) { - } - return 42; - } - - public static int switchTest(int x) { - switch (x) { - case 1 : {return 1;} - case 2 : - case 3 : return 23; - case 4 : int helper4 = 4; return helper4; - case 5 : {int helper5 = 5; return helper5;} - default : return -4711; - } - } - - public static int onlyElse() { - if (2 == 3) { - return 2; - } - else { - return -4711; - } - } - - public static int onlyThen() { - if (2 == 2) { - return 2; - } - else { - return -4711; - } - } - - public static int ifNoBlock(int x, int y) { - if (x < y) return x; - else return y; - } - - public static int simpleBlock() { - int x = 2; - { - x++; - x--; - } - { - x++; - } - return x; - } - - public static int nestedIf(int x, int y, int z) { - if (x < y) { - if (y < z) { - return x; - } - } - return -1; - } - - public static int min(int x, int y) { - int result; - if (x < y) { - return x; - } - else { - result = y; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/complexConstructorTest/oracle/ComplexConstructorTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/complexConstructorTest/oracle/ComplexConstructorTest.xml deleted file mode 100644 index e5607338451..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/complexConstructorTest/oracle/ComplexConstructorTest.xml +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/complexConstructorTest/test/ComplexConstructorTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/complexConstructorTest/test/ComplexConstructorTest.java deleted file mode 100644 index 00d70fde098..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/complexConstructorTest/test/ComplexConstructorTest.java +++ /dev/null @@ -1,62 +0,0 @@ - -public class ComplexConstructorTest { - public static int main() { - DefaultConstructor dc = new DefaultConstructor(); - ExplicitConstructor ec = new ExplicitConstructor(); - ExplicitConstructorWithSuper ecws = new ExplicitConstructorWithSuper(); - A a = new A(); - A aCustom = new A(12); - B b = new B(); - B bCustomB = new B(true); - B bCustomIB = new B(11, true); - return dc.x + ec.x + ecws.x + a.a + aCustom.a + b.a + b.a + bCustomB.a + bCustomIB.a; - } -} - -class DefaultConstructor { - public int x; -} - -class ExplicitConstructor { - public int x; - - public ExplicitConstructor() { - } -} - -class ExplicitConstructorWithSuper { - public int x; - - public ExplicitConstructorWithSuper() { - super(); - } -} - -class A { - public int a; - - public A() { - this(42); - } - - public A(int a) { - this.a = a; - } -} - -class B extends A { - public boolean b; - - public B() { - this(false); - } - - public B(boolean b) { - this.b = b; - } - - public B(int a, boolean b) { - super(a); - this.b = b; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/complexFlatSteps/oracle/ComplexFlatSteps.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/complexFlatSteps/oracle/ComplexFlatSteps.xml deleted file mode 100644 index e33913f4f47..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/complexFlatSteps/oracle/ComplexFlatSteps.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/complexFlatSteps/test/ComplexFlatSteps.java b/key.core.symbolic_execution/src/test/resources/testcase/set/complexFlatSteps/test/ComplexFlatSteps.java deleted file mode 100644 index 813408ef473..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/complexFlatSteps/test/ComplexFlatSteps.java +++ /dev/null @@ -1,20 +0,0 @@ - -public class ComplexFlatSteps { - /* Start - * self.doSomething() - * int x = 1 + 2; - * int y = 2 * 4 * 9; - * int z = 3 * (4 / (2 - 3)); - * return - * - */ - - /*@ requires true; - @ ensures true; - @*/ - public void doSomething() { - int x = 1 + 2; - int y = 2 * 4 * 9; - int z = 3 * (4 / (2 - 3)); - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/Branch0InBranchPrunedIf.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/Branch0InBranchPrunedIf.xml deleted file mode 100644 index 586b5d825cb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/Branch0InBranchPrunedIf.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/Branch1InBranchPrunedIf.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/Branch1InBranchPrunedIf.xml deleted file mode 100644 index 586b5d825cb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/Branch1InBranchPrunedIf.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/BranchPrunedIf.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/BranchPrunedIf.xml deleted file mode 100644 index cacf3e0d5dd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/BranchPrunedIf.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/ComplexIf.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/ComplexIf.xml deleted file mode 100644 index f2df85d6a36..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/ComplexIf.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/PrunedIf.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/PrunedIf.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/oracle/PrunedIf.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/test/ComplexIf.java b/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/test/ComplexIf.java deleted file mode 100644 index 4803364589b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/complexIf/test/ComplexIf.java +++ /dev/null @@ -1,32 +0,0 @@ - -public class ComplexIf { - /* Start - * self.min(_i_i, _j_j) - * int result; - * if (i < j && i != j) - * => BC: _j_j >= 1 + _i_i - * result = i; - * return result; - * return _i_i - * - * => BC: _j_j <= _i_i - * result = j; - * return result; - * return _j_j - * - */ - - /*@ requires true; - @ ensures true; - @*/ - public int min(int i, int j) { - int result; - if (i < j && i != j) { - result = i; - } - else { - result = j; - } - return result; - } -} 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 deleted file mode 100644 index 2e7702a6472..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/conditionalVariables/oracle/Number.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/conditionalVariables/test/Number.java b/key.core.symbolic_execution/src/test/resources/testcase/set/conditionalVariables/test/Number.java deleted file mode 100644 index bc94895d0b8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/conditionalVariables/test/Number.java +++ /dev/null @@ -1,12 +0,0 @@ -public class Number { - private int content; - - public boolean equals(Number n) { - if (content == n.content) { - return true; - } - else { - return false; - } - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/oracle/ArrayCreationTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/oracle/ArrayCreationTest.xml deleted file mode 100644 index fb656d7eada..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/oracle/ArrayCreationTest.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/oracle/testArrayCreationTest_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/oracle/testArrayCreationTest_current0.xml deleted file mode 100644 index e96f4b88e4a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/oracle/testArrayCreationTest_current0.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/oracle/testArrayCreationTest_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/oracle/testArrayCreationTest_initial0.xml deleted file mode 100644 index f347797b511..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/oracle/testArrayCreationTest_initial0.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/test/ArrayCreationTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/test/ArrayCreationTest.java deleted file mode 100644 index b55b04e16bf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayCreationTest/test/ArrayCreationTest.java +++ /dev/null @@ -1,12 +0,0 @@ -public class ArrayCreationTest { - private static int[] array; - - //@ requires n >= 4; - public static int[] compute(int n) { - array = new int[n]; - array[0] = 100; - array[1] = array[2]; - array[3] = array[0]; - return array; - } -} 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 deleted file mode 100644 index 0624b9d15e8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/oracle/ArrayIndexReadAccess.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/oracle/testArrayIndexReadAccess_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/oracle/testArrayIndexReadAccess_current0.xml deleted file mode 100644 index fa16381e805..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/oracle/testArrayIndexReadAccess_current0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/oracle/testArrayIndexReadAccess_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/oracle/testArrayIndexReadAccess_initial0.xml deleted file mode 100644 index 126f0916c54..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/oracle/testArrayIndexReadAccess_initial0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/test/ArrayIndexReadAccess.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/test/ArrayIndexReadAccess.java deleted file mode 100644 index c8a30920d3a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/test/ArrayIndexReadAccess.java +++ /dev/null @@ -1,21 +0,0 @@ - -public class ArrayIndexReadAccess { - public static int compute(int[] array) { - if (array != null) { - if (array.length == 1) { - if (array[0] == 42) { - return 42; - } - else { - return -300; - } - } - else { - return -200; - } - } - else { - return -100; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/oracle/ArrayIndexWriteAccess.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/oracle/ArrayIndexWriteAccess.xml deleted file mode 100644 index 966660a5e9e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/oracle/ArrayIndexWriteAccess.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/oracle/testArrayIndexWriteAccess_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/oracle/testArrayIndexWriteAccess_current0.xml deleted file mode 100644 index 47bd0a10b07..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/oracle/testArrayIndexWriteAccess_current0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - 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 deleted file mode 100644 index ecc555b881d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/oracle/testArrayIndexWriteAccess_initial0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/test/ArrayIndexWriteAccess.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/test/ArrayIndexWriteAccess.java deleted file mode 100644 index a35524a58ea..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/test/ArrayIndexWriteAccess.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class ArrayIndexWriteAccess { - public static int compute(int[] array) { - if (array != null) { - if (array.length == 1) { - array[0] = 42; - return array[0]; - } - else { - return -200; - } - } - else { - return -100; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/ArrayInstanceCreationTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/ArrayInstanceCreationTest.xml deleted file mode 100644 index ada24ac65bd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/ArrayInstanceCreationTest.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_current0.xml deleted file mode 100644 index e6c9eaf9cd6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_current0.xml +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_current1.xml deleted file mode 100644 index 759a4839369..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_current1.xml +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_initial0.xml deleted file mode 100644 index eafeee6f76a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_initial0.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_initial1.xml deleted file mode 100644 index a3148c6cf94..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/oracle/testArrayInstanceCreationTest_initial1.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/test/ArrayInstanceCreationTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/test/ArrayInstanceCreationTest.java deleted file mode 100644 index e055650b022..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayInstanceCreationTest/test/ArrayInstanceCreationTest.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class ArrayInstanceCreationTest { - public static int[] classArray; - - public int[] instanceArray; - - public ArrayInstanceCreationTest next; - - public int compute() { - ArrayInstanceCreationTest.classArray = new int[] {1}; - instanceArray = new int[] {2}; - if (next != null) { - next.instanceArray = new int[] {3}; - int[] localArray = {4, 5}; -// return classArray[0] + instanceArray[0] + next.instanceArray[0] + localArray[0] + localArray[1]; - return localArray[0] + localArray[1]; - } - else { - return -100; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/AssociationSourceIsNotRepresentativeTermOfEquivalenceClass.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/AssociationSourceIsNotRepresentativeTermOfEquivalenceClass.xml deleted file mode 100644 index be03af439d9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/AssociationSourceIsNotRepresentativeTermOfEquivalenceClass.xml +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_current0.xml deleted file mode 100644 index ca0b8ed57b3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_current0.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_current1.xml deleted file mode 100644 index f92b6b22c48..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_current1.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_current2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_current2.xml deleted file mode 100644 index 7c534ef7019..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_current2.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_initial0.xml deleted file mode 100644 index 1a0295966dd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_initial0.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_initial1.xml deleted file mode 100644 index cf50a150d4c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_initial1.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_initial2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_initial2.xml deleted file mode 100644 index 4e7afaafff0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/oracle/testAssociationSourceIsNotRepresentativeTermOfEquivalenceClass_initial2.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/test/AssociationSourceIsNotRepresentativeTermOfEquivalenceClass.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/test/AssociationSourceIsNotRepresentativeTermOfEquivalenceClass.java deleted file mode 100644 index d7825b3cc25..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorAssociationSourceIsNotRepresentativeTermOfEquivalenceClass/test/AssociationSourceIsNotRepresentativeTermOfEquivalenceClass.java +++ /dev/null @@ -1,50 +0,0 @@ -package algorithm; - -public class AssociationSourceIsNotRepresentativeTermOfEquivalenceClass { - protected Node root; - - // precondition: current != null && current.right != null - private Node compute(Node current) { - Node newParent = current.right; - Node oldLeft = newParent.left; - newParent.left = current; - newParent.height = 0; - current.height = 0; - current.right = oldLeft; - if (oldLeft != null) { - oldLeft.parent = current.right; // Correct oldLeft.parent = current; - } - if (current.parent == null) { - root = newParent; - newParent.parent = null; - } - else { - current.parent.right = newParent; - newParent.parent = current.parent; - } - current.parent = newParent; - return current; - } - - - protected static class Node { - protected int value; - - protected int height; - - protected Node left; - - protected Node right; - - protected Node parent; - - protected Node(Node parent, int value) { - this.value = value; - this.parent = parent; - } - - public String toString() { - return value + " with height " + height; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/oracle/EmptyArrayCreationTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/oracle/EmptyArrayCreationTest.xml deleted file mode 100644 index 2026c3500b3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/oracle/EmptyArrayCreationTest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/oracle/testEmptyArrayCreationTest_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/oracle/testEmptyArrayCreationTest_current0.xml deleted file mode 100644 index 062993a7b62..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/oracle/testEmptyArrayCreationTest_current0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/oracle/testEmptyArrayCreationTest_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/oracle/testEmptyArrayCreationTest_initial0.xml deleted file mode 100644 index da1f223323d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/oracle/testEmptyArrayCreationTest_initial0.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/test/EmptyArrayCreationTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/test/EmptyArrayCreationTest.java deleted file mode 100644 index 53639e73dfa..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyArrayCreationTest/test/EmptyArrayCreationTest.java +++ /dev/null @@ -1,9 +0,0 @@ -public class EmptyArrayCreationTest { - private int[] array; - - //@ requires n == 0; - public static int[] compute(EmptyArrayCreationTest obj, int n) { - obj.array = new int[n]; - return obj.array; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/EmptyPathConditionAndNoUpdates.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/EmptyPathConditionAndNoUpdates.xml deleted file mode 100644 index c47c8275f75..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/EmptyPathConditionAndNoUpdates.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_current0.xml deleted file mode 100644 index dbbab2f7a36..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_current0.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_current1.xml deleted file mode 100644 index 4ca65582128..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_current1.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_initial0.xml deleted file mode 100644 index 8ea94796889..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_initial0.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_initial1.xml deleted file mode 100644 index 0bfa3b26fec..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/oracle/testEmptyPathConditionAndNoUpdates_initial1.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/test/EmptyPathConditionAndNoUpdates.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/test/EmptyPathConditionAndNoUpdates.java deleted file mode 100644 index 7881cdb1650..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorEmptyPathConditionAndNoUpdates/test/EmptyPathConditionAndNoUpdates.java +++ /dev/null @@ -1,8 +0,0 @@ - -public class EmptyPathConditionAndNoUpdates { - private int x; - - public static int compute(EmptyPathConditionAndNoUpdates obj) { - return obj.x; - } -} 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 deleted file mode 100644 index 0906c51aed9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_current0.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 39a41cce320..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_current1.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 5a6bd034df8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_initial0.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 94dc8bd043c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_initial1.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/test/ExistsQuantifierTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/test/ExistsQuantifierTest.java deleted file mode 100644 index eebd32431cf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/test/ExistsQuantifierTest.java +++ /dev/null @@ -1,13 +0,0 @@ - -public class ExistsQuantifierTest { - /*@ - @ invariant (\exists ExistsQuantifierTest p; p.id == this.id ==> p == this); - @*/ - private /*@ spec_public @*/ int id; - - /*@ normal_behavior - @ ensures true; - @*/ - public void compute() { - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/test/ExistsQuantifierTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/test/ExistsQuantifierTest.proof deleted file mode 100644 index 5ada012d310..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/test/ExistsQuantifierTest.proof +++ /dev/null @@ -1,172 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Mar 18 11:12:58 CET 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ExistsQuantifierTest[ExistsQuantifierTest::compute()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "ExistsQuantifierTest[ExistsQuantifierTest::compute()].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "133844838") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "self,exc,heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "Class_invariant_axiom_for_ExistsQuantifierTest" (formula "5") (inst "p=p") (inst "sk=sk_0") (ifseqformula "3")) -(branch "Use Axiom" - (rule "exLeft" (formula "5") (inst "sk=p_0")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "5")) - (rule "notLeft" (formula "6")) - (rule "eqSymm" (formula "6") (term "0")) - (rule "eqSymm" (formula "6") (term "1")) - (rule "replace_known_right" (formula "5") (term "0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "5")) - (rule "assignment" (formula "9")) - (rule "methodBodyExpand" (formula "9") (term "1") (newnames "heapBefore_compute,savedHeapBefore_compute")) - (builtin "One Step Simplification" (formula "9")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "tryEmpty" (formula "9") (term "1")) - (rule "emptyModality" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "Class_invariant_axiom_for_ExistsQuantifierTest" (formula "9") (term "0") (inst "p=p") (inst "sk=sk_1") (ifseqformula "3")) - (branch "Use Axiom" - (rule "nnf_imp2or" (formula "9") (term "1,0,0")) - (rule "cut_direct" (formula "6") (term "1")) - (branch "CUT: self = p_0 TRUE" - (builtin "One Step Simplification" (formula "7")) - (rule "true_left" (formula "7")) - (rule "applyEq" (formula "9") (term "1,1,0,0,1,0,0") (ifseqformula "6")) - (rule "applyEq" (formula "8") (term "0") (ifseqformula "6")) - (rule "applyEq" (formula "2") (term "1,0") (ifseqformula "6")) - (rule "applyEq" (formula "7") (term "1,1,1,0,0") (ifseqformula "5")) - (rule "applyEq" (formula "2") (term "0,0") (ifseqformula "5")) - (rule "cut_direct" (formula "7") (term "1")) - (branch "CUT: SETAccumulate(heap, null) TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "nnf_ex2all" (formula "8")) - (rule "nnf_notAnd" (formula "1") (term "0")) - (rule "nnf_notAnd" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "nnf_notOr" (formula "1") (term "1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "nnf_notOr" (formula "1") (term "0,0,0")) - (rule "commute_or" (formula "1") (term "0,0")) - (rule "commute_and" (formula "1") (term "1,0")) - (rule "cnf_rightDist" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "commute_or" (formula "1") (term "0,0")) - (rule "cnf_rightDist" (formula "1") (term "0")) - (rule "distr_forallAnd" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0,0,1,0")) - (rule "castDel" (formula "1") (term "0,0,0")) - (rule "andLeft" (formula "1")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - (branch "CUT: SETAccumulate(heap, null) FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (opengoal " ") - ) - ) - (branch "CUT: self = p_0 FALSE" - (builtin "One Step Simplification" (formula "6")) - (rule "notLeft" (formula "6")) - (rule "cut_direct" (formula "10") (term "1")) - (branch "CUT: SETAccumulate(heap, null) TRUE" - (builtin "One Step Simplification" (formula "11")) - (rule "nnf_ex2all" (formula "11")) - (rule "nnf_notAnd" (formula "1") (term "0")) - (rule "nnf_notAnd" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "nnf_notOr" (formula "1") (term "1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "nnf_notOr" (formula "1") (term "0,0,0")) - (rule "commute_or" (formula "1") (term "0,0")) - (rule "commute_and" (formula "1") (term "1,0")) - (rule "cnf_rightDist" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "commute_or" (formula "1") (term "0,0")) - (rule "cnf_rightDist" (formula "1") (term "0")) - (rule "distr_forallAnd" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0,0,0")) - (rule "castDel" (formula "1") (term "1,0,0,1,0")) - (rule "andLeft" (formula "1")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "1")) - ) - (branch "CUT: SETAccumulate(heap, null) FALSE" - (builtin "One Step Simplification" (formula "11")) - (rule "false_right" (formula "11")) - (opengoal " ") - ) - ) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "9")) - (rule "closeTrue" (formula "9")) - ) -) -(branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "6")) - (rule "closeTrue" (formula "6")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/InstanceCreationTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/InstanceCreationTest.xml deleted file mode 100644 index 043a0c12e29..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/InstanceCreationTest.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_current0.xml deleted file mode 100644 index 29fe69fc407..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_current0.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_current1.xml deleted file mode 100644 index 2b2edcdf29e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_current1.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_initial0.xml deleted file mode 100644 index d127d44997e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_initial0.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_initial1.xml deleted file mode 100644 index 80c81dcdd73..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_initial1.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_current0.xml deleted file mode 100644 index 62677d860f0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_current0.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_current1.xml deleted file mode 100644 index 6d65ddcab54..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_current1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_initial0.xml deleted file mode 100644 index 01da3361028..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_initial0.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_initial1.xml deleted file mode 100644 index 68b1a53bc02..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/oracle/testInstanceCreationTest_onReturnNode_initial1.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/test/InstanceCreationTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/test/InstanceCreationTest.java deleted file mode 100644 index 10068fe3c5d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorInstanceCreationTest/test/InstanceCreationTest.java +++ /dev/null @@ -1,30 +0,0 @@ - -public class InstanceCreationTest { - private InstanceCreationTest next; - - private static InstanceCreationTestWrapper classWrapper; - - private InstanceCreationTestWrapper instanceWrapper; - - public int compute() { - InstanceCreationTest.classWrapper = new InstanceCreationTestWrapper(1); - instanceWrapper = new InstanceCreationTestWrapper(2); - if (next != null) { - next.instanceWrapper = new InstanceCreationTestWrapper(3); - InstanceCreationTestWrapper localWrapper = new InstanceCreationTestWrapper(4); - return InstanceCreationTest.classWrapper.value + instanceWrapper.value + next.instanceWrapper.value + localWrapper.value; - } - else { - return -100; - } - } -} - -class InstanceCreationTestWrapper { - public int value; - - public InstanceCreationTestWrapper(int value) { - super(); - this.value = value; - } -} \ No newline at end of file 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 deleted file mode 100644 index ba0b85b6ef1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/oracle/IsInstanceTest.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/oracle/testIntegerConditionTest_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/oracle/testIntegerConditionTest_current0.xml deleted file mode 100644 index 9abffe63781..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/oracle/testIntegerConditionTest_current0.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/oracle/testIntegerConditionTest_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/oracle/testIntegerConditionTest_initial0.xml deleted file mode 100644 index 63d9fcb1ff1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/oracle/testIntegerConditionTest_initial0.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/test/IntegerConditionTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/test/IntegerConditionTest.java deleted file mode 100644 index e2e2de22569..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/test/IntegerConditionTest.java +++ /dev/null @@ -1,26 +0,0 @@ - -public class IntegerConditionTest { - private int x; - - public static int y; - - public int compute(int a) { - if (x == 1) { - int z = a + 1; - if (z == 2) { - if (IntegerConditionTest.y == 3) { - return 42; - } - else { - return -300; - } - } - else { - return -200; - } - } - else { - return -100; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/IsInstanceTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/IsInstanceTest.xml deleted file mode 100644 index 43fedb7bf41..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/IsInstanceTest.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_current0.xml deleted file mode 100644 index 28c1ba8fea3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_current0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_current1.xml deleted file mode 100644 index 15b2f8842a6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_current1.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_initial0.xml deleted file mode 100644 index 255ab3930d1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_initial0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_initial1.xml deleted file mode 100644 index cd753653982..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/oracle/testIsInstanceTest_initial1.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/test/IsInstanceTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/test/IsInstanceTest.java deleted file mode 100644 index 2544e0c6470..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsInstanceTest/test/IsInstanceTest.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class IsInstanceTest { - private static final IsInstanceTest A = new IsInstanceTest(); - private static final IsInstanceTest B = new IsInstanceTest(); - - /*@ requires true; - @ ensures true; - @*/ - public static int compute(IsInstanceTest obj) { - if (obj == IsInstanceTest.A) { - return 1; - } - else { - return 0; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/oracle/NullInEquivalenceClass.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/oracle/NullInEquivalenceClass.xml deleted file mode 100644 index 94d2808d5bb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/oracle/NullInEquivalenceClass.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/oracle/testIsNullTest_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/oracle/testIsNullTest_current0.xml deleted file mode 100644 index 91cccfc0580..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/oracle/testIsNullTest_current0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/oracle/testIsNullTest_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/oracle/testIsNullTest_initial0.xml deleted file mode 100644 index 6734ae53cb1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/oracle/testIsNullTest_initial0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/test/IsNullTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/test/IsNullTest.java deleted file mode 100644 index afb78975aeb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIsNullTest/test/IsNullTest.java +++ /dev/null @@ -1,11 +0,0 @@ - -public class IsNullTest { - public static int compute(IsNullTest obj) { - if (obj == null) { - return 1; - } - else { - return 0; - } - } -} 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 deleted file mode 100644 index c2d7553bf48..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/MultiArrayIndexReadWriteAccess.xml +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/testMultiArrayIndexReadWriteAccess_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/testMultiArrayIndexReadWriteAccess_current0.xml deleted file mode 100644 index 30b2a7a8604..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/testMultiArrayIndexReadWriteAccess_current0.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/testMultiArrayIndexReadWriteAccess_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/testMultiArrayIndexReadWriteAccess_initial0.xml deleted file mode 100644 index 73881c006f5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/testMultiArrayIndexReadWriteAccess_initial0.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/test/MultiArrayIndexReadWriteAccess.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/test/MultiArrayIndexReadWriteAccess.java deleted file mode 100644 index dcbb9e6cb2a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/test/MultiArrayIndexReadWriteAccess.java +++ /dev/null @@ -1,27 +0,0 @@ - -public class MultiArrayIndexReadWriteAccess { - public static int compute(int[][] array) { - if (array != null) { - if (array.length == 1) { - if (array[0].length == 1) { - if (array[0][0] == 42) { - array[0][0] = 5; - return array[0][0]; - } - else { - return -400; - } - } - else { - return -300; - } - } - else { - return -200; - } - } - else { - return -100; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/StaticMember.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/StaticMember.xml deleted file mode 100644 index 2cbc423f974..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/StaticMember.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 2bbc56d3e26..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_current0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - 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 deleted file mode 100644 index 33eae0eada2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_current1.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - 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 deleted file mode 100644 index baf30b6f977..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_initial0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - 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 deleted file mode 100644 index ad6d2d5677f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_initial1.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/test/MyInteger.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/test/MyInteger.java deleted file mode 100644 index 638c7e6b739..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/test/MyInteger.java +++ /dev/null @@ -1,12 +0,0 @@ -public class MyInteger { - public int value; - - /*@ normal_behavior - @ requires summand != null; - @ ensures value == \old(value) + summand.value; - @ assignable value; - @*/ - public void compute(MyInteger summand) { - value += summand.value; - } -} 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 deleted file mode 100644 index e7d7dadd918..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/oracle/ObjectArrayIndexReadAccess.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/oracle/testObjectArrayIndexReadAccess_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/oracle/testObjectArrayIndexReadAccess_current0.xml deleted file mode 100644 index c8009afb954..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/oracle/testObjectArrayIndexReadAccess_current0.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/oracle/testObjectArrayIndexReadAccess_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/oracle/testObjectArrayIndexReadAccess_initial0.xml deleted file mode 100644 index f2114fd9b8a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/oracle/testObjectArrayIndexReadAccess_initial0.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/test/ObjectArrayIndexReadAccess.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/test/ObjectArrayIndexReadAccess.java deleted file mode 100644 index ea31970adb8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/test/ObjectArrayIndexReadAccess.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class ObjectArrayIndexReadAccess { - public static int compute(IntWrapper[] array) { - if (array != null) { - if (array.length == 1) { - if (array[0].value == 42) { - return 42; - } - else { - return -300; - } - } - else { - return -200; - } - } - else { - return -100; - } - } -} - -class IntWrapper { - public int value; -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/oracle/ObjectArrayIndexWriteAccess.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/oracle/ObjectArrayIndexWriteAccess.xml deleted file mode 100644 index 18773f12a82..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/oracle/ObjectArrayIndexWriteAccess.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/oracle/testObjectArrayIndexWriteAccess_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/oracle/testObjectArrayIndexWriteAccess_current0.xml deleted file mode 100644 index baf18e23129..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/oracle/testObjectArrayIndexWriteAccess_current0.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/oracle/testObjectArrayIndexWriteAccess_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/oracle/testObjectArrayIndexWriteAccess_initial0.xml deleted file mode 100644 index b664bfe3027..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/oracle/testObjectArrayIndexWriteAccess_initial0.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/test/ObjectArrayIndexWriteAccess.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/test/ObjectArrayIndexWriteAccess.java deleted file mode 100644 index 32c6261ce12..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexWriteAccess/test/ObjectArrayIndexWriteAccess.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class ObjectArrayIndexWriteAccess { - public static int compute(ObjectIntWrapper[] array) { - if (array != null) { - if (array.length == 1) { - array[0] = new ObjectIntWrapper(42); - return array[0].value; - } - else { - return -200; - } - } - else { - return -100; - } - } -} - -class ObjectIntWrapper { - public int value; - - public ObjectIntWrapper(int value) { - this.value = value; - } -} \ No newline at end of file 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 deleted file mode 100644 index fb8eb4e1cf4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/oracle/ObjectConditionTest.xml +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/oracle/testObjectConditionTest_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/oracle/testObjectConditionTest_current0.xml deleted file mode 100644 index fbea85347b9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/oracle/testObjectConditionTest_current0.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/oracle/testObjectConditionTestt_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/oracle/testObjectConditionTestt_initial0.xml deleted file mode 100644 index adab454ea13..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/oracle/testObjectConditionTestt_initial0.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/test/ObjectConditionTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/test/ObjectConditionTest.java deleted file mode 100644 index 53e4a8016f2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/test/ObjectConditionTest.java +++ /dev/null @@ -1,42 +0,0 @@ - -public class ObjectConditionTest { - private int x; - - private ObjectConditionTest next; - - public static ObjectConditionTest instance; - - public int compute(int a) { - if (x == 1) { - if (next.x == 2) { - if (next.next.x == 3) { - if (ObjectConditionTest.instance.x == 4) { - if (ObjectConditionTest.instance.next.x == 5) { - if (ObjectConditionTest.instance.next.next.x == 6) { - return 42; - } - else { - return -600; - } - } - else { - return -500; - } - } - else { - return -400; - } - } - else { - return -300; - } - } - else { - return -200; - } - } - else { - return -100; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/OneAssignmentTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/OneAssignmentTest.xml deleted file mode 100644 index ced67973e2e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/OneAssignmentTest.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current0.xml deleted file mode 100644 index 7e8e7548e74..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current0.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current1.xml deleted file mode 100644 index 47fa3da16d9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current1.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current2.xml deleted file mode 100644 index 78e7ef3d259..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current2.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current3.xml deleted file mode 100644 index 28a96b9d91c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current3.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current4.xml deleted file mode 100644 index 227b9c2069f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_current4.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial0.xml deleted file mode 100644 index 2648dc29271..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial0.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial1.xml deleted file mode 100644 index deb34f49157..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial1.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial2.xml deleted file mode 100644 index d74cf4e6dd2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial2.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial3.xml deleted file mode 100644 index 830da7b605e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial3.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial4.xml deleted file mode 100644 index 7c7a1549186..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/oracle/testOneAssignmentTest_initial4.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/test/OneAssignmentTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/test/OneAssignmentTest.java deleted file mode 100644 index 75f904b3da1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorOneAssignmentTest/test/OneAssignmentTest.java +++ /dev/null @@ -1,23 +0,0 @@ - -public class OneAssignmentTest { - private OneAssignmentTestValueWrapper y; - - private OneAssignmentTestValueWrapper first; - - private OneAssignmentTestValueWrapper second; - - /*@ requires x != null; - @ ensures true; - @*/ - public int compute(/*@ nullable @*/ OneAssignmentTestValueWrapper x) { - OneAssignmentTestValueWrapper tempX = x; - OneAssignmentTestValueWrapper tempY = y; - first = x; - second = y; - return first.value + second.value + tempX.value + tempY.value; - } -} - -class OneAssignmentTestValueWrapper { - public int value; -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/oracle/SimpleArrayCreation.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/oracle/SimpleArrayCreation.xml deleted file mode 100644 index 44e9d33f005..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/oracle/SimpleArrayCreation.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/oracle/testSimpleArrayCreation_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/oracle/testSimpleArrayCreation_current0.xml deleted file mode 100644 index 955c26085a4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/oracle/testSimpleArrayCreation_current0.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/oracle/testSimpleArrayCreation_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/oracle/testSimpleArrayCreation_initial0.xml deleted file mode 100644 index 9224cdcffb2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/oracle/testSimpleArrayCreation_initial0.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/test/SimpleArrayCreation.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/test/SimpleArrayCreation.java deleted file mode 100644 index e1b0f33e10c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayCreation/test/SimpleArrayCreation.java +++ /dev/null @@ -1,7 +0,0 @@ - -public class SimpleArrayCreation { - public static int compute() { - int[] array = new int[] {1, 2}; - return array[0] + array[1]; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/oracle/SimpleArrayLength.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/oracle/SimpleArrayLength.xml deleted file mode 100644 index 6926d04a823..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/oracle/SimpleArrayLength.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/oracle/testSimpleArrayLength_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/oracle/testSimpleArrayLength_current0.xml deleted file mode 100644 index 41206a890ee..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/oracle/testSimpleArrayLength_current0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/oracle/testSimpleArrayLength_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/oracle/testSimpleArrayLength_initial0.xml deleted file mode 100644 index cd80d9f5bba..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/oracle/testSimpleArrayLength_initial0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/test/SimpleArrayLength.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/test/SimpleArrayLength.java deleted file mode 100644 index 08744cc75f3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleArrayLength/test/SimpleArrayLength.java +++ /dev/null @@ -1,11 +0,0 @@ - -public class SimpleArrayLength { - public int compute(Object[] array) { - if (array.length == 1) { - return 42; - } - else { - return -100; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/SimpleLinkedArrays.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/SimpleLinkedArrays.xml deleted file mode 100644 index 9dcba2413c2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/SimpleLinkedArrays.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current0.xml deleted file mode 100644 index f515b9eb2d4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current0.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current1.xml deleted file mode 100644 index b1b3a6b9e9e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current1.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current2.xml deleted file mode 100644 index 15cc94686b2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current2.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current3.xml deleted file mode 100644 index 2fa5b9a7679..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current3.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current4.xml deleted file mode 100644 index 98c69924e01..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_current4.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 524df5a448d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial0.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index bf985a0cccf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial1.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index cbdf5c083e2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial2.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 3fa24f4bcce..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial3.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 9c47f2c3e41..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial4.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/test/SimpleLinkedArrays.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/test/SimpleLinkedArrays.java deleted file mode 100644 index cedb7a20785..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/test/SimpleLinkedArrays.java +++ /dev/null @@ -1,16 +0,0 @@ - -public class SimpleLinkedArrays { - private int value; - - private SimpleLinkedArrays[] next; - - /*@ requires x != null & x.next != null & x.next[0].next != null & x.next.length == 1 & x.next[0].next.length == 1; - @ ensures true; - @*/ - public static int compute(SimpleLinkedArrays x) { - x.value = 1; - x.next[0].value = 2; - x.next[0].next[0].value = 3; - return x.value + x.next[0].value + x.next[0].next[0].value + x.next.length; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/SimpleLinkedOjbects.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/SimpleLinkedOjbects.xml deleted file mode 100644 index 6beac035696..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/SimpleLinkedOjbects.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/SimpleLinkedOjbectsPreCondition.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/SimpleLinkedOjbectsPreCondition.xml deleted file mode 100644 index b885660b296..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/SimpleLinkedOjbectsPreCondition.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current0.xml deleted file mode 100644 index 4effd08d301..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current0.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current1.xml deleted file mode 100644 index 5914f457dcb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current1.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current2.xml deleted file mode 100644 index 29bacd98568..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current2.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current3.xml deleted file mode 100644 index d192b739db8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_current3.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index e0c9bf851ef..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial0.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index b2da182b246..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 409855a42d5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial2.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 2639e5790e1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial3.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current0.xml deleted file mode 100644 index 4effd08d301..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current0.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current1.xml deleted file mode 100644 index 5914f457dcb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current1.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current2.xml deleted file mode 100644 index 29bacd98568..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current2.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current3.xml deleted file mode 100644 index d192b739db8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_current3.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index e0c9bf851ef..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial0.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index b2da182b246..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 409855a42d5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial2.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 2639e5790e1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial3.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/test/SimpleLinkedOjbects.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/test/SimpleLinkedOjbects.java deleted file mode 100644 index 7cfd3e47f91..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/test/SimpleLinkedOjbects.java +++ /dev/null @@ -1,35 +0,0 @@ - -public class SimpleLinkedOjbects { - private int value; - - private SimpleLinkedOjbects next; - - /*@ requires x != null & x.next != null & x.next.next != null; - @ ensures true; - @*/ - public static int compute(SimpleLinkedOjbects x) { - x.value = 1; - x.next.value = 2; - x.next.next.value = 3; - return x.value + x.next.value + x.next.next.value; - } - -// public static void main(String[] args) { -// SimpleLinkedOjbects first = new SimpleLinkedOjbects(); -// SimpleLinkedOjbects second = new SimpleLinkedOjbects(); -// SimpleLinkedOjbects third = new SimpleLinkedOjbects(); -// // Scenario 1, first.next = first -// first.next = first; -// System.out.println(compute(first) + "(first.next = first)"); -// // Scenario 2, first.next = second AND second.next = second -// first.next = second; -// second.next = second; -// System.out.println(compute(first) + "(first.next = second & second.next = next)"); -// // Scenario 3, first.next = second AND second.next = first -// second.next = first; -// System.out.println(compute(first) + "(first.next = second & second.next = first)"); -// // Scenario 4, first.next = second AND second.next = third -// second.next = third; -// System.out.println(compute(first) + "(first.next = second & second.next = third)"); -// } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/SimpleLinkedOjbectsDeletion.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/SimpleLinkedOjbectsDeletion.xml deleted file mode 100644 index c512a906e77..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/SimpleLinkedOjbectsDeletion.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/SimpleLinkedOjbectsDeletionPreCondition.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/SimpleLinkedOjbectsDeletionPreCondition.xml deleted file mode 100644 index 3f8573e62a4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/SimpleLinkedOjbectsDeletionPreCondition.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current0.xml deleted file mode 100644 index 302917b07ae..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current0.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current1.xml deleted file mode 100644 index 7635fc2a8ab..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current1.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current2.xml deleted file mode 100644 index beae05bbd45..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current2.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current3.xml deleted file mode 100644 index 46c18c0a523..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_current3.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial0.xml deleted file mode 100644 index d7a4c21339b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial0.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial1.xml deleted file mode 100644 index 6bebc6eca84..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial1.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial2.xml deleted file mode 100644 index 68aab4f05a5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial2.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial3.xml deleted file mode 100644 index 2c1a9cff9aa..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletionPreCondition_initial3.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current0.xml deleted file mode 100644 index 302917b07ae..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current0.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current1.xml deleted file mode 100644 index 7635fc2a8ab..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current1.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current2.xml deleted file mode 100644 index beae05bbd45..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current2.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current3.xml deleted file mode 100644 index 46c18c0a523..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_current3.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial0.xml deleted file mode 100644 index d7a4c21339b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial0.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial1.xml deleted file mode 100644 index 6bebc6eca84..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial1.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial2.xml deleted file mode 100644 index 68aab4f05a5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial2.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial3.xml deleted file mode 100644 index 2c1a9cff9aa..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/oracle/testSimpleLinkedOjbectsDeletion_initial3.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/test/SimpleLinkedOjbectsDeletion.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/test/SimpleLinkedOjbectsDeletion.java deleted file mode 100644 index f0fe52e1bf0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsDeletion/test/SimpleLinkedOjbectsDeletion.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class SimpleLinkedOjbectsDeletion { - private int value; - - private SimpleLinkedOjbectsDeletion next; - - /*@ requires x != null & x.next != null & x.next.next != null; - @ ensures true; - @*/ - public static int compute(SimpleLinkedOjbectsDeletion x) { - x.value = 1; - x.next.value = 2; - x.next.next.value = 3; - x.next = x.next.next; - return x.value + x.next.value; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/SimpleLinkedOjbectsInsertion.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/SimpleLinkedOjbectsInsertion.xml deleted file mode 100644 index c6d27fb8ca7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/SimpleLinkedOjbectsInsertion.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current0.xml deleted file mode 100644 index eda3a08a514..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current0.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current1.xml deleted file mode 100644 index 24a1006f49c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current1.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current2.xml deleted file mode 100644 index b456ce1733a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current2.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current3.xml deleted file mode 100644 index 3fb285100b5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_current3.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial0.xml deleted file mode 100644 index 027da926a23..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial0.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial1.xml deleted file mode 100644 index 7bea17c6df7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial1.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial2.xml deleted file mode 100644 index 597ee7267bd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial2.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial3.xml deleted file mode 100644 index 60d800167e6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/oracle/testSimpleLinkedOjbectsInsertion_initial3.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/test/SimpleLinkedOjbectsInsertion.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/test/SimpleLinkedOjbectsInsertion.java deleted file mode 100644 index 74e291ac7e2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInsertion/test/SimpleLinkedOjbectsInsertion.java +++ /dev/null @@ -1,29 +0,0 @@ - -public class SimpleLinkedOjbectsInsertion { - private int value; - - private SimpleLinkedOjbectsInsertion next; - - /*@ requires x != null & x.next != null & x.next.next != null; - @ ensures true; - @*/ - public static int compute(SimpleLinkedOjbectsInsertion x) { - x.value = 1; - x.next.value = 2; - x.next.next.value = 3; - SimpleLinkedOjbectsInsertion y = new SimpleLinkedOjbectsInsertion(); - y.value = 4; - y.next = x.next; - x.next = y; - return x.value + x.next.value + x.next.next.value + x.next.next.next.value; - } - -// public static void main(String[] args) { -// SimpleLinkedOjbectsInsertion first = new SimpleLinkedOjbectsInsertion(); -// SimpleLinkedOjbectsInsertion second = new SimpleLinkedOjbectsInsertion(); -// SimpleLinkedOjbectsInsertion third = new SimpleLinkedOjbectsInsertion(); -// first.next = second; -// second.next = third; -// System.out.println(compute(first)); -// } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/SimpleLinkedOjbectsInstanceVariable.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/SimpleLinkedOjbectsInstanceVariable.xml deleted file mode 100644 index d32a671d176..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/SimpleLinkedOjbectsInstanceVariable.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current0.xml deleted file mode 100644 index 9a1521aaaf9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current0.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current1.xml deleted file mode 100644 index 96b99fccbb6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current1.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current2.xml deleted file mode 100644 index 67b64ada087..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current2.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current3.xml deleted file mode 100644 index 69440ada771..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_current3.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index aa00bf9d1c0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial0.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 3686eed295f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 7f0a6cda064..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial2.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 22a8936061e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial3.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/test/SimpleLinkedOjbectsInstanceVariable.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/test/SimpleLinkedOjbectsInstanceVariable.java deleted file mode 100644 index 667601d05eb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/test/SimpleLinkedOjbectsInstanceVariable.java +++ /dev/null @@ -1,16 +0,0 @@ - -public class SimpleLinkedOjbectsInstanceVariable { - private int value; - - private SimpleLinkedOjbectsInstanceVariable next; - - /*@ requires this.next != null & this.next.next != null; - @ ensures true; - @*/ - public int compute() { - this.value = 1; - this.next.value = 2; - this.next.next.value = 3; - return this.value + this.next.value + this.next.next.value; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsWithAdditionalInstances/test/SimpleLinkedOjbectsWithAdditionalInstances.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsWithAdditionalInstances/test/SimpleLinkedOjbectsWithAdditionalInstances.java deleted file mode 100644 index 8b342bbf095..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsWithAdditionalInstances/test/SimpleLinkedOjbectsWithAdditionalInstances.java +++ /dev/null @@ -1,21 +0,0 @@ - -public class SimpleLinkedOjbectsWithAdditionalInstances { - private int value; - - private SimpleLinkedOjbectsWithAdditionalInstances next; - - /*@ requires x != null & x.next != null & x.next.next != null & a != null & a.x == 42 & b != null; - @ ensures true; - @*/ - public static int compute(IntWrapper a, SimpleLinkedOjbectsWithAdditionalInstances x, IntWrapper b) { - x.value = 1; - x.next.value = 2; - x.next.next.value = 3; - b.x = 99; - return x.value + x.next.value + x.next.next.value + a.x + b.x; - } - - public static class IntWrapper { - public int x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/SimpleStaticAttributes.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/SimpleStaticAttributes.xml deleted file mode 100644 index f701952ab45..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/SimpleStaticAttributes.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_current0.xml deleted file mode 100644 index 56b305b967c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_current0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_current1.xml deleted file mode 100644 index 5c24cb8070e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_current1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_initial0.xml deleted file mode 100644 index 6d9fc7dbf77..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_initial0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_initial1.xml deleted file mode 100644 index fa8aef77a26..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/oracle/testSimpleStaticAttributes_initial1.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/test/SimpleStaticAttributes.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/test/SimpleStaticAttributes.java deleted file mode 100644 index db0270a5bd4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleStaticAttributes/test/SimpleStaticAttributes.java +++ /dev/null @@ -1,27 +0,0 @@ - -public class SimpleStaticAttributes { - private int x; - - private static SimpleStaticAttributes instance; - - public static final SimpleStaticAttributes finalInstance = new SimpleStaticAttributes(41); - - public static int staticInt; - - public static final int finalStaticint = 42; - - public SimpleStaticAttributes(int x) { - this.x = x; - } - - public static int compute(SimpleStaticAttributes newInstance) { - SimpleStaticAttributes.staticInt = 1; - if (SimpleStaticAttributes.finalStaticint == 42 && SimpleStaticAttributes.staticInt == 1) { - SimpleStaticAttributes.instance = newInstance; - return SimpleStaticAttributes.instance.x + SimpleStaticAttributes.finalInstance.x + SimpleStaticAttributes.staticInt + SimpleStaticAttributes.finalStaticint; - } - else { - return -1; - } - } -} 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 deleted file mode 100644 index 5426a0c67d7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/StaticMember.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 8673a3b0a10..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_current0.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index e767ff08acc..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_current1.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 824fd0833ac..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_initial0.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index a6a1b520413..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_initial1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/test/NextLevel.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/test/NextLevel.java deleted file mode 100644 index 05bb7e5437a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/test/NextLevel.java +++ /dev/null @@ -1,12 +0,0 @@ -public class NextLevel { - public static int m; - public int n; - public NextLevel(int m,int n){ - this.m=m; - this.n=n; - } - public NextLevel(){ - m=0; - n=0; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/test/Refer.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/test/Refer.java deleted file mode 100644 index 632616511de..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/test/Refer.java +++ /dev/null @@ -1,20 +0,0 @@ -public class Refer { - public int x; - public int y; - public NextLevel nl; - public Refer(){ - x=0; - y=0; - nl=new NextLevel(); - } - public Refer(int x,int y){ - - this.x=x; - this.y=y; - } - - public int sum(){ - return x+y+nl.m+nl.n; - } - -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/test/StaticMember.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/test/StaticMember.java deleted file mode 100644 index 98bdba5e3b7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/test/StaticMember.java +++ /dev/null @@ -1,22 +0,0 @@ -public class StaticMember { - private int h; - public int l; - static Refer r =new Refer(); - public static int s; - /*! l | h ; - s | h ; - !*/ - /*@ ensures true; - @*/ - public void compute(int k){ - if(h*2 > k){ - l=r.nl.m + r.x; - s=h; - }else{ - l=s; - s = h+1; - } - //change static value - r.nl.m=1; - } -} \ No newline at end of file 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 deleted file mode 100644 index 0dfe0364128..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/StaticMember.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 63882fb7fc5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/testVariableArrayIndex_current0.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 8a719919300..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/testVariableArrayIndex_initial0.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/test/VariableArrayIndex.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/test/VariableArrayIndex.java deleted file mode 100644 index f0f0cfd8cd9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/test/VariableArrayIndex.java +++ /dev/null @@ -1,10 +0,0 @@ -public class VariableArrayIndex { - private int[] array; - private int index; - - // array != null && array.length >= 1 && index >= 0 && index < array.length - public int compute() { - array[index] = 42; - return array[index]; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/ConfigurationExtractorWithOperationContractsTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/ConfigurationExtractorWithOperationContractsTest.xml deleted file mode 100644 index d0769bc602d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/ConfigurationExtractorWithOperationContractsTest.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_current0.xml deleted file mode 100644 index 33758cdf4d6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_current0.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_current1.xml deleted file mode 100644 index 11e675aa453..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_current1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 3fa06a969f6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_initial0.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 9031b6ebe17..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_initial1.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/test/ConfigurationExtractorWithOperationContractsTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/test/ConfigurationExtractorWithOperationContractsTest.java deleted file mode 100644 index d57a5fb3a8d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/test/ConfigurationExtractorWithOperationContractsTest.java +++ /dev/null @@ -1,20 +0,0 @@ -public class ConfigurationExtractorWithOperationContractsTest { - public static int compute(IntWrapper x, IntWrapper y) { - x.value = 2; - y.value = 3; - int add = sub(x, y); - return add; - } - - /*@ normal_behavior - @ ensures \result == x.value + y.value; - @ assignable \strictly_nothing; - @ */ - public static int sub(IntWrapper x, IntWrapper y) { - throw new RuntimeException(); - } - - private static class IntWrapper { - public int value; - } -} 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 deleted file mode 100644 index 27ba842801f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsAfterUsedLoopInvariant/oracle/E_Loop.xml +++ /dev/null @@ -1,511 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsAfterUsedLoopInvariant/test/E_Loop.java b/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsAfterUsedLoopInvariant/test/E_Loop.java deleted file mode 100644 index 546c867c6e4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsAfterUsedLoopInvariant/test/E_Loop.java +++ /dev/null @@ -1,18 +0,0 @@ -public class E_Loop { - private int high; - public int low; - /*@ requires high>0; - @*/ - public void calculate(){ - low = 0; - int i = 0; - /*@ loop_invariant i<= high+1 && (low*2 == i*(i-1)); - @decreases high-i+1; - @assignable low; - @*/ - while(i<=high){ - low = low + i; - i = i+1; - } - } -} 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 deleted file mode 100644 index 1065fb7d834..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsOfAppliedMethodContract/oracle/MethodContract.xml +++ /dev/null @@ -1,534 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsOfAppliedMethodContract/test/MethodContract.java b/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsOfAppliedMethodContract/test/MethodContract.java deleted file mode 100644 index 7ed84937a7c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsOfAppliedMethodContract/test/MethodContract.java +++ /dev/null @@ -1,22 +0,0 @@ -public class MethodContract { - private int h1, h2; - public int l; - - /*@ public normal_behavior - @ requires x>=0 && y>0; - @ ensures (\exists int k; ((y*k + \result) == x)); - @*/ - private int mod(int x, int y) { - if (x <= y) - return x; - else - return mod(x - y, y); - } - - public void magic(int m) { - if (m > 10) - l = mod(h1, h2); - else - l = 6; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/doWhileFalseTest/oracle/DoWhileFalseTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/doWhileFalseTest/oracle/DoWhileFalseTest.xml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/doWhileFalseTest/test/DoWhileFalseTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/doWhileFalseTest/test/DoWhileFalseTest.java deleted file mode 100644 index a193be48894..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/doWhileFalseTest/test/DoWhileFalseTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class DoWhileFalseTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int result = 0; - do { - result ++; - } - while (false); - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/doWhileTest/oracle/DoWhileTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/doWhileTest/oracle/DoWhileTest.xml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/doWhileTest/test/DoWhileTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/doWhileTest/test/DoWhileTest.java deleted file mode 100644 index 8dd528d7fa6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/doWhileTest/test/DoWhileTest.java +++ /dev/null @@ -1,30 +0,0 @@ - -public class DoWhileTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int result = 0; - int i = 0; - do { - result ++; - i++; - } - while (i < 3); - return result; - } - - /*@ requires true; - @ ensures true; - @*/ - public int mainVariable(int count) { - int result = 0; - int i = 0; - do { - result ++; - i++; - } - while (i < count); - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfDifferentVariables/oracle/ElseIfDifferentVariables.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfDifferentVariables/oracle/ElseIfDifferentVariables.xml deleted file mode 100644 index 0b713d540d3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfDifferentVariables/oracle/ElseIfDifferentVariables.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfDifferentVariables/test/ElseIfDifferentVariables.java b/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfDifferentVariables/test/ElseIfDifferentVariables.java deleted file mode 100644 index da5c07c7b85..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfDifferentVariables/test/ElseIfDifferentVariables.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class ElseIfDifferentVariables { - public int main(boolean a, boolean b) { - if (a) { - return 1; - } - else if (b) { - return 2; - } - else { - return 3; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfTest/oracle/ElseIfTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfTest/oracle/ElseIfTest.xml deleted file mode 100644 index 707f34f4021..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfTest/oracle/ElseIfTest.xml +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfTest/oracle/ElseIfTestMergedBranchConditions.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfTest/oracle/ElseIfTestMergedBranchConditions.xml deleted file mode 100644 index 27666b4ce58..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfTest/oracle/ElseIfTestMergedBranchConditions.xml +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfTest/test/ElseIfTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfTest/test/ElseIfTest.java deleted file mode 100644 index 211a5b06b88..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/elseIfTest/test/ElseIfTest.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class ElseIfTest { - /*@ requires true; - @ ensures true; - @*/ - public int elseIf(int x) { - int a; - if (x == 0) { - a = 1; - } - else if (x == 1 || x == 2 || x == 3) { - if (x == 1 || x == 2) { - a = -1; - } - a = x * x; - } - else if (x == 4) { - return 42; - } - else { - a = x; - } - return a; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/emptyBlockTest/oracle/EmptyBlockTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/emptyBlockTest/oracle/EmptyBlockTest.xml deleted file mode 100644 index 0d19290af28..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/emptyBlockTest/oracle/EmptyBlockTest.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/emptyBlockTest/test/EmptyBlockTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/emptyBlockTest/test/EmptyBlockTest.java deleted file mode 100644 index 099ca19afef..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/emptyBlockTest/test/EmptyBlockTest.java +++ /dev/null @@ -1,20 +0,0 @@ - -public class EmptyBlockTest { - public static int emptyBlocks() { - if (true) { - } - label1: break label1; - label2: { - break label2; - } - label3: { - } - label4 : ; - ; - { - } - ;;;;; - {{{}}{}}{} - return 0; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - 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 deleted file mode 100644 index 2f8c0c43b73..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_2.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index ee980b3ad3a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_3.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 053b36da43f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_4.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/test/ClassCastAndNullpointerExceptions.java b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/test/ClassCastAndNullpointerExceptions.java deleted file mode 100644 index 44654f92148..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/test/ClassCastAndNullpointerExceptions.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class ClassCastAndNullpointerExceptions { - - private ClassCastAndNullpointerExceptions next; - - private int x; - - ClassCastAndNullpointerExceptions castable; - - public int main() { - ClassCastInherit castInto = (ClassCastInherit)castable; - if(x>0){ - try{ - castInto = (ClassCastInherit)castable; - return next.x; - } - catch(Exception e){ - return x; - } - } - next.next.x=0; - next.next.next.x=0; - return next.next.next.next.x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/test/ClassCastInherit.java b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/test/ClassCastInherit.java deleted file mode 100644 index a7a0e61dc00..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/test/ClassCastInherit.java +++ /dev/null @@ -1,4 +0,0 @@ - -public class ClassCastInherit extends ClassCastAndNullpointerExceptions { - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - 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 deleted file mode 100644 index f049a60d673..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_2.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index a883889a2c4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_3.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 87aa6d8c656..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_4.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/test/ClassCastAndNullpointerExceptions.java b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/test/ClassCastAndNullpointerExceptions.java deleted file mode 100644 index 90044ba4573..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/test/ClassCastAndNullpointerExceptions.java +++ /dev/null @@ -1,24 +0,0 @@ - -public class ClassCastAndNullpointerExceptions { - - private ClassCastAndNullpointerExceptions next; - - private int x; - - ClassCastAndNullpointerExceptions castable; - - public int main() { - ClassCastInherit castInto = (ClassCastInherit)castable; - if(x>0){ - try{ - return next.x; - } - catch(NullPointerException e){ - return x; - } - } - next.next.x=0; - next.next.next.x=0; - return next.next.next.next.x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/test/ClassCastInherit.java b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/test/ClassCastInherit.java deleted file mode 100644 index a7a0e61dc00..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/test/ClassCastInherit.java +++ /dev/null @@ -1,4 +0,0 @@ - -public class ClassCastInherit extends ClassCastAndNullpointerExceptions { - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - 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 deleted file mode 100644 index 6d6fb281f8e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_2.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 576e7b198c8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_3.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 67fd9134451..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_4.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index a474f58f67d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_5.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index a9bec01b99b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_6.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index a9bec01b99b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_7.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/test/ClassCastAndNullpointerExceptions.java b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/test/ClassCastAndNullpointerExceptions.java deleted file mode 100644 index 90044ba4573..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/test/ClassCastAndNullpointerExceptions.java +++ /dev/null @@ -1,24 +0,0 @@ - -public class ClassCastAndNullpointerExceptions { - - private ClassCastAndNullpointerExceptions next; - - private int x; - - ClassCastAndNullpointerExceptions castable; - - public int main() { - ClassCastInherit castInto = (ClassCastInherit)castable; - if(x>0){ - try{ - return next.x; - } - catch(NullPointerException e){ - return x; - } - } - next.next.x=0; - next.next.next.x=0; - return next.next.next.next.x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/test/ClassCastInherit.java b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/test/ClassCastInherit.java deleted file mode 100644 index a7a0e61dc00..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/test/ClassCastInherit.java +++ /dev/null @@ -1,4 +0,0 @@ - -public class ClassCastInherit extends ClassCastAndNullpointerExceptions { - -} 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 deleted file mode 100644 index e38a9032087..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTest/oracle/ExceptionalMethodReturnTest.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTest/test/ExceptionalMethodReturnTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTest/test/ExceptionalMethodReturnTest.java deleted file mode 100644 index 421ff569cf7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTest/test/ExceptionalMethodReturnTest.java +++ /dev/null @@ -1,23 +0,0 @@ - -public class ExceptionalMethodReturnTest { - public static int main(IntWrapper x) { - try { - return first(x); - } - catch (Exception e) { - return 42; - } - } - - public static int first(IntWrapper x) { - return second(x); - } - - public static int second(IntWrapper x) { - return x.value; - } - - private static class IntWrapper { - public int value; - } -} 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 deleted file mode 100644 index 6b124798bd2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTestWithLoop/oracle/Loop.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTestWithLoop/test/Loop.java b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTestWithLoop/test/Loop.java deleted file mode 100644 index fd566637148..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTestWithLoop/test/Loop.java +++ /dev/null @@ -1,14 +0,0 @@ -public class Loop { - private int content; - - public void magic(Loop l) { - int x = 3; - while(x > 0) { - x--; - if(content == l.content && x < 1) - return; - } - - int j = 3; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/existingContractTest/oracle/ExistingContractTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/existingContractTest/oracle/ExistingContractTest.xml deleted file mode 100644 index e2bb0c2e796..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/existingContractTest/oracle/ExistingContractTest.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/existingContractTest/test/ExistingContractTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/existingContractTest/test/ExistingContractTest.java deleted file mode 100644 index 3cde9522e96..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/existingContractTest/test/ExistingContractTest.java +++ /dev/null @@ -1,11 +0,0 @@ - -public class ExistingContractTest { - /*@ - @ ensures \result == value * 2; - @*/ - public int doubleValue(int value) { - int first = value; - int second = value; - return first + second; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/fixedRecursiveMethodCallTest/oracle/FixedRecursiveMethodCallTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/fixedRecursiveMethodCallTest/oracle/FixedRecursiveMethodCallTest.xml deleted file mode 100644 index c0593af9dbb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/fixedRecursiveMethodCallTest/oracle/FixedRecursiveMethodCallTest.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/fixedRecursiveMethodCallTest/test/FixedRecursiveMethodCallTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/fixedRecursiveMethodCallTest/test/FixedRecursiveMethodCallTest.java deleted file mode 100644 index 7bdcea40942..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/fixedRecursiveMethodCallTest/test/FixedRecursiveMethodCallTest.java +++ /dev/null @@ -1,13 +0,0 @@ - -public class FixedRecursiveMethodCallTest { - public static int decreaseValue() { - return decrease(3); - } - - public static int decrease(int n) { - if (n >= 1) { - return decrease(n - 1); - } - return n; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/forEachTest/oracle/ForEachTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/forEachTest/oracle/ForEachTest.xml deleted file mode 100644 index 9de5c2da2d7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/forEachTest/oracle/ForEachTest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/forEachTest/test/ForEachTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/forEachTest/test/ForEachTest.java deleted file mode 100644 index 40ce4b9d584..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/forEachTest/test/ForEachTest.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class ForEachTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int[] array = new int[3]; - int result = 0; - for (int element : array) { - result ++; - } - return result; - } - - /*@ requires true; - @ ensures true; - @*/ - public int mainVariable(int[] array) { - int result = 0; - for (int element : array) { - result ++; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/forFalseTest/oracle/ForFalseTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/forFalseTest/oracle/ForFalseTest.xml deleted file mode 100644 index fa2045932de..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/forFalseTest/oracle/ForFalseTest.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/forFalseTest/test/ForFalseTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/forFalseTest/test/ForFalseTest.java deleted file mode 100644 index 1acf64bfaf7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/forFalseTest/test/ForFalseTest.java +++ /dev/null @@ -1,13 +0,0 @@ - -public class ForFalseTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int result = 0; - for (int i = 0; false; i++) { - result ++; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/forTest/oracle/ForTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/forTest/oracle/ForTest.xml deleted file mode 100644 index 6bed019864b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/forTest/oracle/ForTest.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/forTest/test/ForTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/forTest/test/ForTest.java deleted file mode 100644 index 89258611bdb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/forTest/test/ForTest.java +++ /dev/null @@ -1,24 +0,0 @@ - -public class ForTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int result = 0; - for (int i = 0; i < 3; i++) { - result ++; - } - return result; - } - - /*@ requires true; - @ ensures true; - @*/ - public int mainVariable(int count) { - int result = 0; - for (int i = 0; i < count; i++) { - result ++; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/oracle/TheClass_complicatedMethod.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/oracle/TheClass_complicatedMethod.xml deleted file mode 100644 index 4ff2e6bc05f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/oracle/TheClass_complicatedMethod.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/oracle/TheInnerClass_complicatedInnerMethod.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/oracle/TheInnerClass_complicatedInnerMethod.xml deleted file mode 100644 index 249cc28c11b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/oracle/TheInnerClass_complicatedInnerMethod.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/test/my/packageName/TestProgramMethodSubsetPO9033468379300181045.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/test/my/packageName/TestProgramMethodSubsetPO9033468379300181045.proof deleted file mode 100644 index 917c857a351..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/test/my/packageName/TestProgramMethodSubsetPO9033468379300181045.proof +++ /dev/null @@ -1,189 +0,0 @@ -\settings { -"#Proof-Settings-Config-File -#Thu Oct 04 18:18:29 CEST 2012 -[SMTSettings]maxGenericSorts=2 -[SMTSettings]instantiateHierarchyAssumptions=true -[SMTSettings]UseBuiltUniqueness=false -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON -[Strategy]Timeout=-1 -[StrategyProperty]RETREAT_MODE_OPTIONS_KEY=RETREAT_MODE_NONE -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,JavaCard-JavaCard\\:on , assertions-assertions\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , initialisation-initialisation\\:disableStaticInitialisation , runtimeExceptions-runtimeExceptions\\:allow -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_NONE -[View]HideIntermediateProofsteps=true -[View]HideClosedSubtrees=false -[General]UseOCL=false -[Strategy]ActiveStrategy=DebuggerStrategy -[View]ShowWholeTaclet=false -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]integersMinimum=-2147483645 -[General]StupidMode=true -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF -[General]OneStepSimplification=true -[General]UseJML=true -[SMTSettings]integersMaximum=2147483645 -[General]DnDDirectionSensitive=true -[View]FontIndex=2 -[View]UseSystemLookAndFeel=false -[SMTSettings]useUninterpretedMultiplication=true -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[View]MaxTooltipLines=40 -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[SMTSettings]SelectedTaclets= -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_NONE -[SMTSettings]explicitTypeHierarchy=false -" -} - -\javaSource ""; - -\proofObligation { - "name": "complicatedInnerMethod", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "my.packageName.TheClass.TheInnerClass#complicatedInnerMethod(my.packageName.TheClass, int, boolean, java.lang.String, java.lang.Object[], my.packageName.sub.AnotherClass)", - } - -\proof { -(keyLog "0" (keyUser "IStudent" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "78") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "5")) -(rule "notLeft" (formula "2")) -(rule "assignment" (formula "9")) -(rule "methodBodyExpand" (formula "9") (term "1") (newnames "heapBefore_complicatedInnerMethod")) -(builtin "One Step Simplification" (formula "9")) -(rule "methodCallReturn" (formula "9") (term "1")) -(rule "assignment" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "methodCallEmpty" (formula "9") (term "1")) -(rule "tryEmpty" (formula "9") (term "1")) -(rule "emptyModality" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "orLeft" (formula "7")) -(branch "ac.$created = TRUE" - (rule "orLeft" (formula "6")) - (branch "o.$created = TRUE" - (rule "orLeft" (formula "4")) - (branch "z.$created = TRUE" - (rule "orLeft" (formula "5")) - (branch "x.$created = TRUE" - (opengoal " ") - ) - (branch "x = null" - (rule "applyEq" (formula "9") (term "5") (ifseqformula "5")) - (opengoal " ") - ) - ) - (branch "z = null" - (rule "applyEq" (formula "9") (term "2") (ifseqformula "4")) - (rule "orLeft" (formula "5")) - (branch "x.$created = TRUE" - (opengoal " ") - ) - (branch "x = null" - (rule "applyEq" (formula "9") (term "5") (ifseqformula "5")) - (opengoal " ") - ) - ) - ) - (branch "o = null" - (rule "applyEq" (formula "9") (term "6") (ifseqformula "6")) - (rule "orLeft" (formula "4")) - (branch "z.$created = TRUE" - (rule "orLeft" (formula "5")) - (branch "x.$created = TRUE" - (opengoal " ") - ) - (branch "x = null" - (rule "applyEq" (formula "9") (term "5") (ifseqformula "5")) - (opengoal " ") - ) - ) - (branch "z = null" - (rule "applyEq" (formula "9") (term "2") (ifseqformula "4")) - (rule "orLeft" (formula "5")) - (branch "x.$created = TRUE" - (opengoal " ") - ) - (branch "x = null" - (rule "applyEq" (formula "9") (term "5") (ifseqformula "5")) - (opengoal " ") - ) - ) - ) -) -(branch "ac = null" - (rule "applyEq" (formula "9") (term "7") (ifseqformula "7")) - (rule "orLeft" (formula "6")) - (branch "o.$created = TRUE" - (rule "orLeft" (formula "4")) - (branch "z.$created = TRUE" - (rule "orLeft" (formula "5")) - (branch "x.$created = TRUE" - (opengoal " ") - ) - (branch "x = null" - (rule "applyEq" (formula "9") (term "5") (ifseqformula "5")) - (opengoal " ") - ) - ) - (branch "z = null" - (rule "applyEq" (formula "9") (term "2") (ifseqformula "4")) - (rule "orLeft" (formula "5")) - (branch "x.$created = TRUE" - (opengoal " ") - ) - (branch "x = null" - (rule "applyEq" (formula "9") (term "5") (ifseqformula "5")) - (opengoal " ") - ) - ) - ) - (branch "o = null" - (rule "applyEq" (formula "9") (term "6") (ifseqformula "6")) - (rule "orLeft" (formula "4")) - (branch "z.$created = TRUE" - (rule "orLeft" (formula "5")) - (branch "x.$created = TRUE" - (opengoal " ") - ) - (branch "x = null" - (rule "applyEq" (formula "9") (term "5") (ifseqformula "5")) - (opengoal " ") - ) - ) - (branch "z = null" - (rule "applyEq" (formula "9") (term "2") (ifseqformula "4")) - (rule "orLeft" (formula "5")) - (branch "x.$created = TRUE" - (opengoal " ") - ) - (branch "x = null" - (rule "applyEq" (formula "9") (term "5") (ifseqformula "5")) - (opengoal " ") - ) - ) - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/test/my/packageName/TheClass.java b/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/test/my/packageName/TheClass.java deleted file mode 100644 index 589c517a793..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/test/my/packageName/TheClass.java +++ /dev/null @@ -1,19 +0,0 @@ -package my.packageName; - -import my.packageName.sub.AnotherClass; - - -public class TheClass { - /*@ requires true; - @ ensures true; - @*/ - public int complicatedMethod(TheInnerClass i, int a, boolean b, String x, Object[] o, AnotherClass ac, AnotherClass[] acArray) { - return 42; - } - - public class TheInnerClass { - public int complicatedInnerMethod(TheClass z, int a, boolean b, String x, Object[] o, AnotherClass ac) { - return 42; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/test/my/packageName/sub/AnotherClass.java b/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/test/my/packageName/sub/AnotherClass.java deleted file mode 100644 index e90a81d4ce1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/fullqualifiedTypeNamesTest/test/my/packageName/sub/AnotherClass.java +++ /dev/null @@ -1,5 +0,0 @@ -package my.packageName.sub; - -public class AnotherClass { - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalDoWhileTest/oracle/FunctionalDoWhileTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/functionalDoWhileTest/oracle/FunctionalDoWhileTest.xml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalDoWhileTest/test/FunctionalDoWhileTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/functionalDoWhileTest/test/FunctionalDoWhileTest.java deleted file mode 100644 index d945e42b3e5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalDoWhileTest/test/FunctionalDoWhileTest.java +++ /dev/null @@ -1,20 +0,0 @@ - -public class FunctionalDoWhileTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int result = 0; - int i = 0; - do { - result ++; - i++; - } - while (invert(i) > -3); - return result; - } - - public int invert(int i) { - return i * -1; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalForTest/oracle/FunctionalForTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/functionalForTest/oracle/FunctionalForTest.xml deleted file mode 100644 index 98f60ade7f9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalForTest/oracle/FunctionalForTest.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalForTest/test/FunctionalForTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/functionalForTest/test/FunctionalForTest.java deleted file mode 100644 index 91f8717cead..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalForTest/test/FunctionalForTest.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class FunctionalForTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int result = 0; - for (int i = 0; invert(i) > -3; i++) { - result ++; - } - return result; - } - - public int invert(int i) { - return i * -1; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalIf/oracle/FunctionalIf.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/functionalIf/oracle/FunctionalIf.xml deleted file mode 100644 index ec3b9844544..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalIf/oracle/FunctionalIf.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalIf/test/FunctionalIf.java b/key.core.symbolic_execution/src/test/resources/testcase/set/functionalIf/test/FunctionalIf.java deleted file mode 100644 index 92bc134b204..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalIf/test/FunctionalIf.java +++ /dev/null @@ -1,42 +0,0 @@ - -public class FunctionalIf { - /* Start - * self.min(_i_i, _j_j) - * int result; - * if (confert(i) < convert(j)) - * self.invert(_i_i) @FunctinalIfParameter - * return a * -1; - * return _i_i * -1 @ return of method invert - * self.invert(_j_j) @FunctinalIfParameter - * return a * -1; - * return _j_j * -1 @ return of method invert - * => BC: _j_j >= 1 + _i_i - * result = i; - * return result; - * return _i_i - * - * => BC: _j_j <= _i_i - * result = j; - * return result; - * return _j_j - * - */ - - /*@ requires true; - @ ensures true; - @*/ - public int min(int i, int j) { - int result; - if (invert(i) < invert(j)) { - result = i; - } - else { - result = j; - } - return result; - } - - public int invert(int a) { - return a * -1; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalWhileTest/oracle/FunctionalWhileTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/functionalWhileTest/oracle/FunctionalWhileTest.xml deleted file mode 100644 index dfccd8cfbde..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalWhileTest/oracle/FunctionalWhileTest.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalWhileTest/test/FunctionalWhileTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/functionalWhileTest/test/FunctionalWhileTest.java deleted file mode 100644 index 7105dd6d89c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/functionalWhileTest/test/FunctionalWhileTest.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class FunctionalWhileTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int result = 0; - int i = 0; - while (invert(i) > -3) { - result ++; - i++; - } - return result; - } - - public int invert(int i) { - return i * -1; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/identicalTermsDuringProof/oracle/IdenticalTermsDuringProof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/identicalTermsDuringProof/oracle/IdenticalTermsDuringProof.xml deleted file mode 100644 index 5615167e7ab..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/identicalTermsDuringProof/oracle/IdenticalTermsDuringProof.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/identicalTermsDuringProof/test/IdenticalTermsDuringProof.java b/key.core.symbolic_execution/src/test/resources/testcase/set/identicalTermsDuringProof/test/IdenticalTermsDuringProof.java deleted file mode 100644 index 4050dbc6b2d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/identicalTermsDuringProof/test/IdenticalTermsDuringProof.java +++ /dev/null @@ -1,13 +0,0 @@ -public class IdenticalTermsDuringProof { - public static int mid(final int x, final int y, final int z) { - int mid = z; - if (y < z) { - if (x <= y) { - mid = y; - } - } else { - mid = y; - } - return mid; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainBooleanResultUnspecifiedUnused.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainBooleanResultUnspecifiedUnused.xml deleted file mode 100644 index e49698ca789..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainBooleanResultUnspecifiedUnused.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainBooleanResultUnused.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainBooleanResultUnused.xml deleted file mode 100644 index 48ffc8a4d5b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainBooleanResultUnused.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainConstructor.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainConstructor.xml deleted file mode 100644 index 49ccf942ab8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainConstructor.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptional.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptional.xml deleted file mode 100644 index 26286014a2f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptional.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptionalConstructor.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptionalConstructor.xml deleted file mode 100644 index 59fc0c6d4d7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptionalConstructor.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptionalUnused.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptionalUnused.xml deleted file mode 100644 index 32fe130b384..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptionalUnused.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptionalVoid.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptionalVoid.xml deleted file mode 100644 index 7a55f8ba13a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainExceptionalVoid.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainNoArgs.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainNoArgs.xml deleted file mode 100644 index a22f479ddef..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainNoArgs.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainOnObject.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainOnObject.xml deleted file mode 100644 index 55e13e339bc..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainOnObject.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainResult.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainResult.xml deleted file mode 100644 index 3243b0a03bf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainResult.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainResultNotSpecified.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainResultNotSpecified.xml deleted file mode 100644 index 3bdbab1c789..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainResultNotSpecified.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainVoidMethod.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainVoidMethod.xml deleted file mode 100644 index 269296bf78c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/oracle/InstanceContractTest_mainVoidMethod.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/test/InstanceContractTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/test/InstanceContractTest.java deleted file mode 100644 index 0537d8ef083..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceContractTest/test/InstanceContractTest.java +++ /dev/null @@ -1,141 +0,0 @@ - -public class InstanceContractTest { - private int value; - - public int mainVoidMethod() { - voidMethod(); - return value; - } - - /*@ normal_behavior - @ ensures value == 42; - @*/ - public void voidMethod() { - value = 42; - } - - public int mainNoArgs() { - return noArgs(); - } - - /*@ normal_behavior - @ ensures \result == 42; - @*/ - public int noArgs() { - return 42; - } - - public int mainResult(int x) { - return result(x); - } - - /*@ normal_behavior - @ requires x >= 0; - @ ensures \result == x * x; - @*/ - public int result(int x) { - return x*x; - } - - - - public int mainResultNotSpecified(int x) { - return result(x); - } - - /*@ normal_behavior - @ requires x >= 0; - @ ensures true; - @*/ - public int resultNotSpecified(int x) { - return x*x; - } - - public void mainExceptionalVoid(boolean x) throws Exception { - exceptionalVoid(x); - } - - /*@ exceptional_behavior - @ signals_only Exception; - @ signals (Exception) true; - @*/ - public void exceptionalVoid(boolean x) throws Exception { - throw new Exception(); - } - - public void mainExceptionalUnused(boolean x) throws Exception { - exceptional(x); - } - - public boolean mainExceptional(boolean x) throws Exception { - return exceptional(x); - } - - /*@ exceptional_behavior - @ signals_only Exception; - @ signals (Exception) true; - @*/ - public boolean exceptional(boolean x) throws Exception { - throw new Exception(); - } - - public void mainBooleanResultUnused(boolean x) { - booleanResult(x); - } - - /*@ normal_behavior - @ ensures \result == !x; - @*/ - public boolean booleanResult(boolean x) { - return !x; - } - - public void mainBooleanResultUnspecifiedUnused(boolean x) { - booleanResultUnspecified(x); - } - - /*@ normal_behavior - @ ensures true; - @*/ - public boolean booleanResultUnspecified(boolean x) { - return !x; - } - - public void mainExceptionalConstructor() throws Exception { - new IntWrapper(); - } - - public int mainConstructor() { - IntWrapper w = new IntWrapper(42); - return w.value; - } - - public int mainOnObject(IntWrapper x) { - return x.getValue(); - } - - public static class IntWrapper { - public int value; - - /*@ exceptional_behavior - @ signals_only Exception; - @ signals (Exception e) true; - @*/ - public IntWrapper() throws Exception { - } - - /*@ normal_behavior - @ ensures this.value == value; - @*/ - public IntWrapper(int value) { - this.value = value; - } - - /*@ normal_behavior - @ ensures \result == value; - @*/ - public int getValue() { - return value; - } - } -} 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 deleted file mode 100644 index 2bca5d4aa76..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceOfNotInEndlessLoop/oracle/Number.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceOfNotInEndlessLoop/test/Number.java b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceOfNotInEndlessLoop/test/Number.java deleted file mode 100644 index 1348e65badd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceOfNotInEndlessLoop/test/Number.java +++ /dev/null @@ -1,21 +0,0 @@ -public class Number { - private int content; - - /*@ normal_behavior - @ requires true; - @ ensures true; - @*/ - public boolean equals(Object n) { - if (n instanceof Number) { - if (content == ((Number) n).content) { - return true; - } - else { - return false; - } - } - else { - return false; - } - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_10.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_10.xml deleted file mode 100644 index dad67cee2aa..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_10.xml +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_11.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_11.xml deleted file mode 100644 index 8378f1f98c0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_11.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_12.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_12.xml deleted file mode 100644 index 08fcc549b03..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_12.xml +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_2.xml deleted file mode 100644 index 489a21e9b2e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_2.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_3.xml deleted file mode 100644 index 93eb1772b5e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_3.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_4.xml deleted file mode 100644 index 6cdac9d6a25..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_4.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_5.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_5.xml deleted file mode 100644 index c7211706cb2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_5.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_6.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_6.xml deleted file mode 100644 index 4aaf2181435..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_6.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_7.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_7.xml deleted file mode 100644 index f39b3ffb08f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_7.xml +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_8.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_8.xml deleted file mode 100644 index 2027bd44796..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_8.xml +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_9.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_9.xml deleted file mode 100644 index c260b1cf93b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/oracle/GlobalAccessesAndModifications_9.xml +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/test/GlobalAccessesAndModifications.java b/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/test/GlobalAccessesAndModifications.java deleted file mode 100644 index 9aa96b7c35b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/javaWatchpointsWithHitCountTest/test/GlobalAccessesAndModifications.java +++ /dev/null @@ -1,43 +0,0 @@ - -public class GlobalAccessesAndModifications { - - public int access; - - public int modification; - - public int accessAndModification; - - public void main(){ - for(int i = 0; i<2; i++){ - doAccessesAndModifications(); - } - } - - public void doAccessesAndModifications(){ - modification=5; - - int x = access; - - x = someAccessMethod(access); - - x = someInternalAccessMethod(access).doNothing(); - - accessAndModification=accessAndModification; - - accessAndModification = someAccessMethod(accessAndModification); - - accessAndModification = someInternalAccessMethod(accessAndModification).doNothing(); - } - - public int someAccessMethod(int access){ - return 5; - } - - public GlobalAccessesAndModifications someInternalAccessMethod(int x){ - return new GlobalAccessesAndModifications(); - } - - public int doNothing(){ - return 5; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/oracle/JoinTestAfterAssignment.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/oracle/JoinTestAfterAssignment.xml deleted file mode 100644 index 58cd3349de2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/oracle/JoinTestAfterAssignment.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/oracle/JoinTestAfterBranchCondition.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/oracle/JoinTestAfterBranchCondition.xml deleted file mode 100644 index 58cd3349de2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/oracle/JoinTestAfterBranchCondition.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/oracle/JoinTestAfterBranchConditionWithWeakeningGoalNotVerified.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/oracle/JoinTestAfterBranchConditionWithWeakeningGoalNotVerified.xml deleted file mode 100644 index 12e91eda7b6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/oracle/JoinTestAfterBranchConditionWithWeakeningGoalNotVerified.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTest.java deleted file mode 100644 index 99fa2ece102..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTest.java +++ /dev/null @@ -1,14 +0,0 @@ -public class JoinTest { - /*@ normal_behavior - @ ensures \result >= 0; - @ assignable \strictly_nothing; - @*/ - public static int zero(int value) { - if (value < 0) { - value = value * -1; - } - //@ merge_point; - int result = value; - return result; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterAssignment.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterAssignment.proof deleted file mode 100644 index fd5cb648b12..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterAssignment.proof +++ /dev/null @@ -1,130 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Fri Apr 07 16:04:13 CEST 2017 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,initialisation-initialisation\\:disableStaticInitialisation , wdChecks-wdChecks\\:off , reach-reach\\:on , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , Strings-Strings\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:allow , wdOperator-wdOperator\\:L , JavaCard-JavaCard\\:off , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , modelFields-modelFields\\:showSatisfiability , assertions-assertions\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , bigint-bigint\\:on , programRules-programRules\\:Java -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "contract": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "dscheurer" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "dscheurer" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "dscheurer" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1044") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "value,result,exc,heapAtPre,o,f") (userinteraction)) -(rule "andLeft" (formula "1") (userinteraction)) -(rule "andLeft" (formula "1") (userinteraction)) -(rule "assignment" (formula "4") (term "1") (userinteraction)) -(rule "methodBodyExpand" (formula "4") (term "1,1") (newnames "heapBefore_zero,savedHeapBefore_zero") (userinteraction)) -(rule "ifUnfold" (formula "4") (term "1,1,1") (inst "#boolv=x") (userinteraction)) -(rule "variableDeclaration" (formula "4") (term "1,1,1") (newnames "x_1") (userinteraction)) -(rule "less_than_comparison_simple" (formula "4") (term "1,1,1") (userinteraction)) -(builtin "One Step Simplification" (formula "2")) -(builtin "One Step Simplification" (formula "4")) -(rule "true_left" (formula "2")) -(rule "eqSymm" (formula "3") (term "0,0,1,0,1")) -(rule "inEqSimp_ltToLeq" (formula "3") (term "0,0,1,1,0")) -(rule "times_zero_1" (formula "3") (term "1,0,0,0,0,1,1,0")) -(rule "add_zero_right" (formula "3") (term "0,0,0,0,1,1,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "3") (term "0,0,1,1,0")) -(rule "mul_literals" (formula "3") (term "1,0,0,1,1,0")) -(rule "ifSplit" (formula "3")) -(branch "if x_1 true" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "1")) - (rule "assignmentMultiplicationInt" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "translateJavaMulInt" (formula "4") (term "0,1,0")) - (rule "blockEmpty" (formula "4") (term "1")) - (builtin "MergeRule" (formula "4") (mergeProc "MergeByIfThenElse") (nrMergePartners "1") (mergeId "58")) - (rule "deleteMergePoint" (formula "3") (term "1")) - (rule "variableDeclarationAssign" (formula "3") (term "1")) - (rule "variableDeclaration" (formula "3") (term "1") (newnames "result_1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "methodCallReturn" (formula "3") (term "1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "methodCallEmpty" (formula "3") (term "1")) - (rule "tryEmpty" (formula "3") (term "1")) - (rule "emptyModality" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "inEqSimp_geqRight" (formula "3")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "value <= -1 TRUE" - (rule "inEqSimp_homoInEq0" (formula "2")) - (rule "polySimp_mulLiterals" (formula "2") (term "1,0")) - (rule "polySimp_elimOne" (formula "2") (term "1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_contradInEq0" (formula "2") (ifseqformula "1")) - (rule "qeq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "closeFalse" (formula "2")) - ) - (branch "value <= -1 FALSE" - (rule "close" (formula "4") (ifseqformula "1")) - ) -) -(branch "if x_1 false" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_leqRight" (formula "3")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (builtin "CloseAfterMerge" (formula "4") (mergeNode "58")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchCondition.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchCondition.proof deleted file mode 100644 index d13ad1a0289..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchCondition.proof +++ /dev/null @@ -1,130 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Apr 07 16:28:34 CEST 2017 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,initialisation-initialisation\\:disableStaticInitialisation , wdChecks-wdChecks\\:off , reach-reach\\:on , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , Strings-Strings\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:allow , wdOperator-wdOperator\\:L , JavaCard-JavaCard\\:off , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , modelFields-modelFields\\:showSatisfiability , assertions-assertions\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , bigint-bigint\\:on , programRules-programRules\\:Java -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "dscheurer" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "602") - -(branch "dummy ID" -(rule "assignment" (formula "1") (term "1,1") (newnames "value,result,exc,heapAtPre,o,f") (userinteraction)) -(rule "methodBodyExpand" (formula "1") (term "1,1,1") (newnames "heapBefore_zero,savedHeapBefore_zero") (userinteraction)) -(rule "ifUnfold" (formula "1") (term "1,1,1,1") (inst "#boolv=x") (userinteraction)) -(rule "variableDeclaration" (formula "1") (term "1,1,1,1") (newnames "x") (userinteraction)) -(rule "less_than_comparison_simple" (formula "1") (term "1,1,1,1") (userinteraction)) -(rule "impRight" (formula "1") (userinteraction)) -(builtin "One Step Simplification" (formula "2")) -(rule "ifSplit" (formula "2") (userinteraction)) -(branch "if x true" - (rule "assignmentMultiplicationInt" (formula "3") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "3")) - (rule "blockEmpty" (formula "3") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "2")) - (builtin "One Step Simplification" (formula "1")) - (rule "translateJavaMulInt" (formula "3") (term "0,1,0")) - (rule "andLeft" (formula "2")) - (rule "eqSymm" (formula "4") (term "0,0,1,0,1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (builtin "MergeRule" (formula "4") (mergeProc "MergeByIfThenElse") (nrMergePartners "1") (mergeId "29")) - (rule "deleteMergePoint" (formula "3") (term "1")) - (rule "variableDeclarationAssign" (formula "3") (term "1")) - (rule "variableDeclaration" (formula "3") (term "1") (newnames "result_1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "inEqSimp_sepPosMonomial0" (formula "3") (term "0,0,1,0")) - (rule "mul_literals" (formula "3") (term "1,0,0,1,0")) - (rule "methodCallReturn" (formula "3") (term "1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "methodCallEmpty" (formula "3") (term "1")) - (rule "tryEmpty" (formula "3") (term "1")) - (rule "emptyModality" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "inEqSimp_geqRight" (formula "3")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "value <= -1 TRUE" - (rule "inEqSimp_homoInEq0" (formula "2")) - (rule "polySimp_mulLiterals" (formula "2") (term "1,0")) - (rule "polySimp_elimOne" (formula "2") (term "1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_contradInEq0" (formula "2") (ifseqformula "1")) - (rule "qeq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "closeFalse" (formula "2")) - ) - (branch "value <= -1 FALSE" - (rule "close" (formula "4") (ifseqformula "1")) - ) -) -(branch "if x false" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "1")) - (rule "andLeft" (formula "2")) - (rule "notLeft" (formula "1")) - (rule "eqSymm" (formula "4") (term "0,0,1,0,1")) - (rule "inEqSimp_ltRight" (formula "3")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (builtin "CloseAfterMerge" (formula "4") (mergeNode "29")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoal.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoal.proof deleted file mode 100644 index 82bc5ea2e6d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoal.proof +++ /dev/null @@ -1,149 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Apr 07 16:37:34 CEST 2017 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,initialisation-initialisation\\:disableStaticInitialisation , wdChecks-wdChecks\\:off , reach-reach\\:on , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , Strings-Strings\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:on , runtimeExceptions-runtimeExceptions\\:allow , wdOperator-wdOperator\\:L , JavaCard-JavaCard\\:off , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , modelFields-modelFields\\:showSatisfiability , assertions-assertions\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , bigint-bigint\\:on , programRules-programRules\\:Java -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "4" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "5" (keyUser "dscheurer" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "528") - -(branch "dummy ID" -(rule "assignment" (formula "1") (term "1,1") (newnames "value,result,exc,heapAtPre,o,f") (userinteraction)) -(rule "methodBodyExpand" (formula "1") (term "1,1,1") (newnames "heapBefore_zero,savedHeapBefore_zero") (userinteraction)) -(rule "ifUnfold" (formula "1") (term "1,1,1,1") (inst "#boolv=x") (userinteraction)) -(rule "variableDeclaration" (formula "1") (term "1,1,1,1") (newnames "x") (userinteraction)) -(rule "less_than_comparison_simple" (formula "1") (term "1,1,1,1") (userinteraction)) -(rule "impRight" (formula "1") (userinteraction)) -(builtin "One Step Simplification" (formula "2")) -(rule "ifSplit" (formula "2") (userinteraction)) -(branch "if x true" - (rule "assignmentMultiplicationInt" (formula "3") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "3")) - (rule "blockEmpty" (formula "3") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "2")) - (builtin "One Step Simplification" (formula "1")) - (rule "translateJavaMulInt" (formula "3") (term "0,1,0")) - (rule "andLeft" (formula "2")) - (rule "eqSymm" (formula "4") (term "0,0,1,0,1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (builtin "MergeRule" (formula "4") (mergeProc "MergeByIfThenElse") (nrMergePartners "1") (mergeId "29")) - (rule "deleteMergePoint" (formula "3") (term "1")) - (rule "variableDeclarationAssign" (formula "3") (term "1")) - (rule "variableDeclaration" (formula "3") (term "1") (newnames "result_1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "inEqSimp_sepPosMonomial0" (formula "3") (term "0,0,1,0")) - (rule "mul_literals" (formula "3") (term "1,0,0,1,0")) - (rule "methodCallReturn" (formula "3") (term "1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "methodCallEmpty" (formula "3") (term "1")) - (rule "tryEmpty" (formula "3") (term "1")) - (rule "emptyModality" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "inEqSimp_geqRight" (formula "3")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "value <= -1 TRUE" - (rule "inEqSimp_homoInEq0" (formula "2")) - (rule "polySimp_mulLiterals" (formula "2") (term "1,0")) - (rule "polySimp_elimOne" (formula "2") (term "1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_contradInEq0" (formula "2") (ifseqformula "1")) - (rule "qeq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "closeFalse" (formula "2")) - ) - (branch "value <= -1 FALSE" - (rule "close" (formula "4") (ifseqformula "1")) - ) -) -(branch "if x false" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "1")) - (rule "andLeft" (formula "2")) - (rule "notLeft" (formula "1")) - (rule "eqSymm" (formula "4") (term "0,0,1,0,1")) - (rule "inEqSimp_ltRight" (formula "3")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (builtin "CloseAfterMerge" (formula "4") (newnames "P") (mergeNode "29")) - (branch "Merged node is weakening" - (builtin "One Step Simplification" (formula "1")) - (rule "impRight" (formula "1")) - (rule "impRight" (formula "2")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "2")) - (rule "replace_known_left" (formula "4") (term "0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "3"))) - (rule "inEqSimp_sepPosMonomial0" (formula "4") (term "0,3")) - (rule "mul_literals" (formula "4") (term "1,0,3")) - (rule "inEqSimp_contradInEq1" (formula "4") (term "0,3") (ifseqformula "1")) - (rule "qeq_literals" (formula "4") (term "0,0,3")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "4")) - ) - (branch "Merged with node 29" - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoalAndSubgoals.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoalAndSubgoals.proof deleted file mode 100644 index ec082093779..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoalAndSubgoals.proof +++ /dev/null @@ -1,150 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Apr 07 16:38:26 CEST 2017 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,initialisation-initialisation\\:disableStaticInitialisation , wdChecks-wdChecks\\:off , reach-reach\\:on , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , Strings-Strings\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:on , runtimeExceptions-runtimeExceptions\\:allow , wdOperator-wdOperator\\:L , JavaCard-JavaCard\\:off , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , modelFields-modelFields\\:showSatisfiability , assertions-assertions\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , bigint-bigint\\:on , programRules-programRules\\:Java -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "4" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "5" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "6" (keyUser "dscheurer" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "607") - -(branch "dummy ID" -(rule "assignment" (formula "1") (term "1,1") (newnames "value,result,exc,heapAtPre,o,f") (userinteraction)) -(rule "methodBodyExpand" (formula "1") (term "1,1,1") (newnames "heapBefore_zero,savedHeapBefore_zero") (userinteraction)) -(rule "ifUnfold" (formula "1") (term "1,1,1,1") (inst "#boolv=x") (userinteraction)) -(rule "variableDeclaration" (formula "1") (term "1,1,1,1") (newnames "x") (userinteraction)) -(rule "less_than_comparison_simple" (formula "1") (term "1,1,1,1") (userinteraction)) -(rule "impRight" (formula "1") (userinteraction)) -(builtin "One Step Simplification" (formula "2")) -(rule "ifSplit" (formula "2") (userinteraction)) -(branch "if x true" - (rule "assignmentMultiplicationInt" (formula "3") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "3")) - (rule "blockEmpty" (formula "3") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "2")) - (builtin "One Step Simplification" (formula "1")) - (rule "translateJavaMulInt" (formula "3") (term "0,1,0")) - (rule "andLeft" (formula "2")) - (rule "eqSymm" (formula "4") (term "0,0,1,0,1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (builtin "MergeRule" (formula "4") (mergeProc "MergeByIfThenElse") (nrMergePartners "1") (mergeId "29")) - (rule "deleteMergePoint" (formula "3") (term "1")) - (rule "variableDeclarationAssign" (formula "3") (term "1")) - (rule "variableDeclaration" (formula "3") (term "1") (newnames "result_1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "inEqSimp_sepPosMonomial0" (formula "3") (term "0,0,1,0")) - (rule "mul_literals" (formula "3") (term "1,0,0,1,0")) - (rule "methodCallReturn" (formula "3") (term "1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "methodCallEmpty" (formula "3") (term "1")) - (rule "tryEmpty" (formula "3") (term "1")) - (rule "emptyModality" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "inEqSimp_geqRight" (formula "3")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "value <= -1 TRUE" - (rule "inEqSimp_homoInEq0" (formula "2")) - (rule "polySimp_mulLiterals" (formula "2") (term "1,0")) - (rule "polySimp_elimOne" (formula "2") (term "1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_contradInEq0" (formula "2") (ifseqformula "1")) - (rule "qeq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "closeFalse" (formula "2")) - ) - (branch "value <= -1 FALSE" - (rule "close" (formula "4") (ifseqformula "1")) - ) -) -(branch "if x false" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "1")) - (rule "andLeft" (formula "2")) - (rule "notLeft" (formula "1")) - (rule "eqSymm" (formula "4") (term "0,0,1,0,1")) - (rule "inEqSimp_ltRight" (formula "3")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (builtin "CloseAfterMerge" (formula "4") (newnames "P") (mergeNode "29")) - (branch "Merged node is weakening" - (builtin "One Step Simplification" (formula "1")) - (rule "impRight" (formula "1")) - (rule "impRight" (formula "2")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "2")) - (rule "replace_known_left" (formula "4") (term "0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "3"))) - (rule "inEqSimp_sepPosMonomial0" (formula "4") (term "0,3")) - (rule "mul_literals" (formula "4") (term "1,0,3")) - (rule "inEqSimp_contradInEq1" (formula "4") (term "0,3") (ifseqformula "1")) - (rule "qeq_literals" (formula "4") (term "0,0,3")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "4")) - ) - (branch "Merged with node 29" - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoalNotVerified.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoalNotVerified.proof deleted file mode 100644 index 4cca643eea6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/joinTest/test/JoinTestAfterBranchConditionWithWeakeningGoalNotVerified.proof +++ /dev/null @@ -1,110 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Apr 07 16:42:20 CEST 2017 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,initialisation-initialisation\\:disableStaticInitialisation , wdChecks-wdChecks\\:off , reach-reach\\:on , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , Strings-Strings\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:on , runtimeExceptions-runtimeExceptions\\:allow , wdOperator-wdOperator\\:L , JavaCard-JavaCard\\:off , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , modelFields-modelFields\\:showSatisfiability , assertions-assertions\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , bigint-bigint\\:on , programRules-programRules\\:Java -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "4" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "5" (keyUser "dscheurer" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "359") - -(branch "dummy ID" -(rule "assignment" (formula "1") (term "1,1") (newnames "value,result,exc,heapAtPre,o,f") (userinteraction)) -(rule "methodBodyExpand" (formula "1") (term "1,1,1") (newnames "heapBefore_zero,savedHeapBefore_zero") (userinteraction)) -(rule "ifUnfold" (formula "1") (term "1,1,1,1") (inst "#boolv=x") (userinteraction)) -(rule "variableDeclaration" (formula "1") (term "1,1,1,1") (newnames "x") (userinteraction)) -(rule "less_than_comparison_simple" (formula "1") (term "1,1,1,1") (userinteraction)) -(rule "impRight" (formula "1") (userinteraction)) -(builtin "One Step Simplification" (formula "2")) -(rule "ifSplit" (formula "2") (userinteraction)) -(branch "if x true" - (rule "assignmentMultiplicationInt" (formula "3") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "3")) - (rule "blockEmpty" (formula "3") (term "1") (userinteraction)) - (builtin "MergeRule" (formula "3") (mergeProc "MergeByIfThenElse") (nrMergePartners "1") (mergeId "12") (userinteraction)) - (rule "deleteMergePoint" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "2")) - (builtin "One Step Simplification" (formula "4")) - (rule "true_left" (formula "2")) - (rule "translateJavaMulInt" (formula "3") (term "1,0,0,0,0")) - (rule "eqSymm" (formula "3") (term "0,0,1,0,1")) - (rule "inEqSimp_ltToLeq" (formula "3") (term "0,0,0,0,0")) - (rule "times_zero_1" (formula "3") (term "1,0,0,0,0,0,0,0")) - (rule "add_zero_right" (formula "3") (term "0,0,0,0,0,0,0")) - (rule "variableDeclarationAssign" (formula "3") (term "1")) - (rule "variableDeclaration" (formula "3") (term "1") (newnames "result_1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "inEqSimp_sepPosMonomial0" (formula "3") (term "0,0,1,0")) - (rule "mul_literals" (formula "3") (term "1,0,0,1,0")) - (rule "methodCallReturn" (formula "3") (term "1")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "methodCallEmpty" (formula "3") (term "1")) - (rule "tryEmpty" (formula "3") (term "1")) - (rule "emptyModality" (formula "3") (term "1")) - (opengoal " ") -) -(branch "if x false" - (builtin "One Step Simplification" (formula "3")) - (builtin "CloseAfterMerge" (formula "3") (newnames "P") (mergeNode "12") (userinteraction)) - (branch "Merged node is weakening" - (opengoal " ") - ) - (branch "Merged with node 12" - (opengoal " ") - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_2.xml deleted file mode 100644 index 72d7a28556b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_2.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - 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 deleted file mode 100644 index 19e8ea7be3d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_3.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 01d6425635c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_4.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 6cd983eeb09..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_5.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 70246553c0f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_6.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 6e93d3810e2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_7.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/test/GlobalVariablesOnSatisfiable.java b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/test/GlobalVariablesOnSatisfiable.java deleted file mode 100644 index 1748a8f75db..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/test/GlobalVariablesOnSatisfiable.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class GlobalVariablesOnSatisfiable { - - private static int x_global; - - private static void doSomething() { - if(x_global>=0){ - main(x_global); - }else{ - main(x_global); - } - } - - private static int main(int x) { - if (x >= 0) { - return 42; - } - else { - return -4711; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_2.xml deleted file mode 100644 index 17070de92d8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_3.xml deleted file mode 100644 index 0d52e14872a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_3.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_4.xml deleted file mode 100644 index 8f7098da56a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/oracle/GlobalVariablesOnTrue_4.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/test/GlobalVariablesOnTrue.java b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/test/GlobalVariablesOnTrue.java deleted file mode 100644 index bd9d6db47b5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnTrueWithHitCount/test/GlobalVariablesOnTrue.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class GlobalVariablesOnTrue { - - private static int x_global; - - private static void doSomething() { - x_global=17; - main(x_global); - x_global=-1; - main(x_global); - - } - - private static int main(int x) { - if (x >= 0) { - return 42; - } - else { - return -4711; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_2.xml deleted file mode 100644 index ede97c79f14..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_2.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - 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 deleted file mode 100644 index 48ff853ab7a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_3.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - 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 deleted file mode 100644 index fbcbb89656a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_4.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index ac3cd6ef698..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_5.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 8003027d376..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_6.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index c71f90ab492..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_7.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/test/MethodsOnSatisfiable.java b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/test/MethodsOnSatisfiable.java deleted file mode 100644 index d7981b417e4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/test/MethodsOnSatisfiable.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class MethodsOnSatisfiable { - - private static int x_global; - - private static void doSomething() { - if(x_global>=0){ - main(x_global); - }else{ - main(x_global); - } - } - - private static int main(int x) { - if (x >= 0) { - return 42; - } - else { - return -4711; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/labelTest/oracle/LabelTest_doubled.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/labelTest/oracle/LabelTest_doubled.xml deleted file mode 100644 index 1e08e9223a7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/labelTest/oracle/LabelTest_doubled.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/labelTest/oracle/LabelTest_lost.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/labelTest/oracle/LabelTest_lost.xml deleted file mode 100644 index e25453bc8e6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/labelTest/oracle/LabelTest_lost.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/labelTest/test/LabelTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/labelTest/test/LabelTest.java deleted file mode 100644 index bf3acaad408..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/labelTest/test/LabelTest.java +++ /dev/null @@ -1,20 +0,0 @@ - -public class LabelTest { - public static int lost() { - int i = 3; - labeledBlock: { - i++; - labeledStatement: i = i + 1; - i--; - } - return i; - } - - public static int doubled() { - labeledBlock: { - int i = 0; - i++; - return i; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_10.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_10.xml deleted file mode 100644 index 1e649666018..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_10.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_11.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_11.xml deleted file mode 100644 index e90fe5480a8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_11.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_12.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_12.xml deleted file mode 100644 index b2aca1015dd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_12.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_2.xml deleted file mode 100644 index da8571598b2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_2.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_3.xml deleted file mode 100644 index 8c1f37062f0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_3.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_4.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_4.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_5.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_5.xml deleted file mode 100644 index d1554790fdb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_5.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_6.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_6.xml deleted file mode 100644 index 7b9c1c67faa..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_6.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_7.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_7.xml deleted file mode 100644 index 6be6f55a0f0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_7.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_8.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_8.xml deleted file mode 100644 index ca9ab2a44c5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_8.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_9.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_9.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_9.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/test/SimpleConditionExample.java b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/test/SimpleConditionExample.java deleted file mode 100644 index 1847531fca5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithConditionsTest/test/SimpleConditionExample.java +++ /dev/null @@ -1,34 +0,0 @@ - -public class SimpleConditionExample { - - private int z; - - public void main() { - z = 3; - while (z >= 0) { - z--; // Breakpoint with y == 1 - } - } - - public static int somethingMain() { - int a = 2; - int b = 3; - return something(a, b); - } - - public static int something(int a, int b) { - return a + b; - } - - public static int somethingLocalMain() { - int y = 42; - int x = somethingLocal(y); - return somethingLocal(x); - } - - public static int somethingLocal(int x) { - int y = x*x; - return y; - } - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_2.xml deleted file mode 100644 index 5a619199da9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_2.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_3.xml deleted file mode 100644 index 31a13bde9a1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_3.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_4.xml deleted file mode 100644 index 8fa9ed08949..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_4.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_5.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_5.xml deleted file mode 100644 index d5cd3cb39c7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_5.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_6.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_6.xml deleted file mode 100644 index f3e1a79b2c6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_6.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_7.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_7.xml deleted file mode 100644 index 70487cee660..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_7.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_8.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_8.xml deleted file mode 100644 index a6e307e1cc2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/oracle/BreakpointStop_8.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/test/BreakpointStopCallee.java b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/test/BreakpointStopCallee.java deleted file mode 100644 index fb8e6121e82..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/test/BreakpointStopCallee.java +++ /dev/null @@ -1,11 +0,0 @@ - -public class BreakpointStopCallee { - - private int x; - - public int main(int a) { - x=a+4; - return a*x; - } - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/test/BreakpointStopCallerAndLoop.java b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/test/BreakpointStopCallerAndLoop.java deleted file mode 100644 index 020831bb3fd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithHitcountTest/test/BreakpointStopCallerAndLoop.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class BreakpointStopCallerAndLoop { - - private BreakpointStopCallee callee; - - private int x; - - public int loop(){ - for(int i=0;i<=3;i++){ - x++; - } - return x; - } - - public int main(int a) { - a++; - x = callee.main(a); - x++; - loop(); - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/oracle/ArrayUtil_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/oracle/ArrayUtil_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/oracle/ArrayUtil_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/oracle/ArrayUtil_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/oracle/ArrayUtil_2.xml deleted file mode 100644 index 29eea345a51..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/oracle/ArrayUtil_2.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/oracle/ArrayUtil_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/oracle/ArrayUtil_3.xml deleted file mode 100644 index 68c92b5957a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/oracle/ArrayUtil_3.xml +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/test/ArrayUtil.java b/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/test/ArrayUtil.java deleted file mode 100644 index 9ce8150ed58..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/lineBreakpointsWithLoopInvariantTest/test/ArrayUtil.java +++ /dev/null @@ -1,27 +0,0 @@ -public class ArrayUtil { - /*@ normal_behavior - @ ensures \result >= 0 && \result < array.length - @ ==> array[\result] == toSearch; - @ ensures \result >= 0 && \result < array.length - @ ==> (\forall int i; i >= 0 && i < \result; - @ array[i] != toSearch); - @ ensures \result == -1 - @ <==> (\forall int i; i >= 0 && i < array.length; - @ array[i] != toSearch); - @ assignable \strictly_nothing; - @*/ - public static int indexOf(Object[] array, Object toSearch) { - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length; - @ loop_invariant (\forall int j; j >= 0 && j < i; - @ array[j] != toSearch); - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (i < array.length) { - if (toSearch == array[i]) { return i; } - i++; - } - return 0; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/oracle/LoopIterationTest_loopMultipleTimes.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/oracle/LoopIterationTest_loopMultipleTimes.xml deleted file mode 100644 index 700f0923104..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/oracle/LoopIterationTest_loopMultipleTimes.xml +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/oracle/LoopIterationTest_main.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/oracle/LoopIterationTest_main.xml deleted file mode 100644 index 276cce551ed..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/oracle/LoopIterationTest_main.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/oracle/LoopIterationTest_mainWorks.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/oracle/LoopIterationTest_mainWorks.xml deleted file mode 100644 index 70e2f8775d4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/oracle/LoopIterationTest_mainWorks.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/test/LoopIterationTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/test/LoopIterationTest.java deleted file mode 100644 index d20aefecb98..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/loopIterationTest/test/LoopIterationTest.java +++ /dev/null @@ -1,33 +0,0 @@ - -public class LoopIterationTest { - public void loopMultipleTimes() { - doLoop(); - doLoop(); - } - - public void doLoop() { - int i = 0; - while(i < 3) { - i += innerLoop(); - } - } - - public int innerLoop() { - return 1; - } - - public void main() { - int i = 0; - while(i < 3) { - i++; - } - } - - public void mainWorks() { - int i = 0; - while (i < 3) { - i++; - } - int j; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/loopStatementBlockTest/oracle/LoopStatementBlockTest_nestedLoop.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/loopStatementBlockTest/oracle/LoopStatementBlockTest_nestedLoop.xml deleted file mode 100644 index f3dd50ceb77..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/loopStatementBlockTest/oracle/LoopStatementBlockTest_nestedLoop.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/loopStatementBlockTest/oracle/LoopStatementBlockTest_simpleLoop.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/loopStatementBlockTest/oracle/LoopStatementBlockTest_simpleLoop.xml deleted file mode 100644 index bc8a9e7f006..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/loopStatementBlockTest/oracle/LoopStatementBlockTest_simpleLoop.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/loopStatementBlockTest/test/LoopStatementBlockTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/loopStatementBlockTest/test/LoopStatementBlockTest.java deleted file mode 100644 index cd62403b323..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/loopStatementBlockTest/test/LoopStatementBlockTest.java +++ /dev/null @@ -1,20 +0,0 @@ - -public class LoopStatementBlockTest { - public static int nestedLoop() { - int[] x = new int[] {2, 2}; - for (int i = 0; i < x.length; i++) { - while (x[i] > 0) { - x[i]--; - } - } - return 0; - } - - public static int simpleLoop() { - int x = 3; - while (x > 0) { - x--; - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/magic42/oracle/Magic42.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/magic42/oracle/Magic42.xml deleted file mode 100644 index 72d1e8c54f7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/magic42/oracle/Magic42.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/magic42/test/Magic42.java b/key.core.symbolic_execution/src/test/resources/testcase/set/magic42/test/Magic42.java deleted file mode 100644 index c1aa0242cf9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/magic42/test/Magic42.java +++ /dev/null @@ -1,20 +0,0 @@ -public class Magic42 { - public static int compute(int xValue) { - int y = computeHelp(xValue); - int res = 0; - while (y % 2 != 0) { - if (res % 2 == 0) { - res = 2 * res + (y % 2); - y = y / 2; - } else { - res = 2 * res; - } - } - return res * 2; - } - - public static int computeHelp(int x) { - int y = (x >= 0 ? x : -x) / 2000; - return 320 * y + 7; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/magic42/test/Magic42.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/magic42/test/Magic42.proof deleted file mode 100644 index ba2184c9c45..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/magic42/test/Magic42.proof +++ /dev/null @@ -1,3142 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:noRestriction", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:allow", - "sequences" : "sequences:on", - "soundDefaultContracts" : "soundDefaultContracts:on", - "wdChecks" : "wdChecks:off", - "wdOperator" : "wdOperator:L" - }, - "Labels" : { - "UseOriginLabels" : true - }, - "NewSMT" : { - - }, - "SMTSettings" : { - "SelectedTaclets" : [ - - ], - "UseBuiltUniqueness" : false, - "explicitTypeHierarchy" : false, - "instantiateHierarchyAssumptions" : true, - "integersMaximum" : 2147483645, - "integersMinimum" : -2147483645, - "invariantForall" : false, - "maxGenericSorts" : 2, - "useConstantsForBigOrSmallIntegers" : true, - "useUninterpretedMultiplication" : true - }, - "Strategy" : { - "ActiveStrategy" : "Symbolic Execution Strategy", - "MaximumNumberOfAutomaticApplications" : 10000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_EXPAND", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", - "DEP_OPTIONS_KEY" : "DEP_OFF", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_EXPAND", - "METHOD_OPTIONS_KEY" : "METHOD_EXPAND", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_INSTANTIATE", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_RESTRICTED", - "SPLITTING_OPTIONS_KEY" : "SPLITTING_DELAYED", - "STOPMODE_OPTIONS_KEY" : "STOPMODE_DEFAULT", - "SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY" : "SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER", - "SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY" : "SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF", - "USER_TACLETS_OPTIONS_KEY1" : "USER_TACLETS_OFF", - "USER_TACLETS_OPTIONS_KEY2" : "USER_TACLETS_OFF", - "USER_TACLETS_OPTIONS_KEY3" : "USER_TACLETS_OFF", - "VBT_PHASE" : "VBT_SYM_EX" - } - } - } - -\javaSource "."; - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method" : "Magic42#compute(int)", - "name" : "compute(int)" - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "bubel" ) (keyVersion "568dbaf2107ef587f3f83796b2cb00c12b1ce5bc")) - -(autoModeTime "4655") - -(branch "dummy ID" - (builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "impRight" (formula "1")) -(rule "assignment" (formula "2")) -(rule "methodBodyExpand" (formula "2") (term "1") (newnames "heapBefore_compute,savedHeapBefore_compute")) - (builtin "One Step Simplification" (formula "2")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "y")) -(rule "methodCallWithAssignmentWithinClass" (formula "2") (term "1") (newnames "x#0") (inst "#v0=x")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x_1")) -(rule "assignment" (formula "2") (term "1")) - (builtin "One Step Simplification" (formula "2")) -(rule "methodBodyExpand" (formula "2") (term "1") (newnames "heapBefore_computeHelp,savedHeapBefore_computeHelp")) - (builtin "One Step Simplification" (formula "2")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "y_1")) -(rule "compound_division_1" (formula "2") (term "1") (inst "#v=x_2")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x_2")) -(rule "remove_parentheses_right" (formula "2") (term "1")) -(rule "condition" (formula "2") (term "1")) -(rule "ifElseUnfold" (formula "2") (term "1") (inst "#boolv=x_3")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x_3")) -(rule "greater_equal_than_comparison_simple" (formula "2") (term "1")) - (builtin "One Step Simplification" (formula "2")) -(rule "ifElseSplit" (formula "2")) -(branch "if x_3 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "assignment" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "blockEmpty" (formula "3") (term "1")) - (rule "assignmentDivisionInt" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "translateJavaDivInt" (formula "3") (term "0,1,0,1")) - (rule "equal_literals" (formula "3") (term "0,0")) - (builtin "One Step Simplification" (formula "3")) - (rule "jdiv_axiom" (formula "3") (term "0,1,0")) - (rule "eqSymm" (formula "1")) - (rule "replace_known_left" (formula "1") (term "0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "1")) - (rule "eqSymm" (formula "1")) - (rule "applyEq" (formula "4") (term "0,1,0") (ifseqformula "1")) - (rule "div_axiom" (formula "1") (term "1") (inst "quotient=quotient_1")) - (rule "equal_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "1,1,1,1")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "polySimp_addComm1" (formula "3") (term "1")) - (rule "add_literals" (formula "3") (term "0,1")) - (rule "inEqSimp_commuteLeq" (formula "2")) - (rule "inEqSimp_homoInEq1" (formula "3")) - (rule "polySimp_mulLiterals" (formula "3") (term "1,0")) - (rule "polySimp_addComm1" (formula "3") (term "0")) - (rule "applyEq" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "applyEq" (formula "4") (term "1") (ifseqformula "1")) - (rule "inEqSimp_sepPosMonomial0" (formula "3")) - (rule "polySimp_mulComm0" (formula "3") (term "1")) - (rule "polySimp_rightDist" (formula "3") (term "1")) - (rule "mul_literals" (formula "3") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "3") (term "1,1")) - (rule "inEqSimp_exactShadow3" (formula "5") (ifseqformula "3")) - (rule "times_zero_1" (formula "5") (term "0,0")) - (rule "add_zero_left" (formula "5") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "5")) - (rule "mul_literals" (formula "5") (term "1")) - (rule "elimGcdGeq_antec" (formula "5") (inst "elimGcd=Z(0(0(0(2(#)))))") (inst "elimGcdLeftDiv=quotient_1") (inst "elimGcdRightDiv=Z(0(#))")) - (rule "mul_literals" (formula "5") (term "0,1,0,0,0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "5") (term "1,0,1,0")) - (rule "leq_literals" (formula "5") (term "0,0")) - (builtin "One Step Simplification" (formula "5")) - (rule "times_zero_1" (formula "5") (term "1,0,0,0,0,0")) - (rule "add_zero_right" (formula "5") (term "0,0,0,0,0")) - (rule "add_literals" (formula "5") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "5") (term "0,0")) - (rule "add_literals" (formula "5") (term "1,1,0,0")) - (rule "times_zero_1" (formula "5") (term "1,0,0")) - (rule "add_zero_right" (formula "5") (term "0,0")) - (rule "leq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "returnUnfold" (formula "8") (term "1") (inst "#v0=x_1")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_6")) - (rule "compound_addition_1" (formula "8") (term "1") (inst "#v=x_7")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_7")) - (rule "assignmentMultiplicationInt" (formula "8") (term "1")) - (rule "translateJavaMulInt" (formula "8") (term "0,0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_mulComm0" (formula "8") (term "0,1,0")) - (rule "assignmentAdditionInt" (formula "8") (term "1")) - (rule "translateJavaAddInt" (formula "8") (term "0,0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_addComm0" (formula "8") (term "0,1,0")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "blockEmpty" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "res_1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "loopUnwind" (formula "8") (term "1") (inst "#innerLabel=_label2") (inst "#outerLabel=_label3")) - (rule "ifUnfold" (formula "8") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_8")) - (rule "compound_inequality_comparison_1" (formula "8") (term "1") (inst "#v0=x_9")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_9")) - (rule "assignmentModulo" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "translateJavaMod" (formula "8") (term "0,1,0,1")) - (rule "equal_literals" (formula "8") (term "0,0")) - (builtin "One Step Simplification" (formula "8")) - (rule "inequality_comparison_simple" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "ifSplit" (formula "8")) - (branch "if x_8 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "8") (term "0")) - (rule "polySimp_mulLiterals" (formula "8") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "8")) - (rule "polySimp_mulLiterals" (formula "8") (term "0")) - (rule "elimGcdEq" (formula "8") (inst "elimGcd=Z(2(#))") (inst "elimGcdLeftDiv=jdiv(add(Z(7(#)), mul(quotient_1, Z(0(2(3(#)))))), - Z(2(#)))") (inst "elimGcdRightDiv=add(Z(3(#)), mul(quotient_1, Z(0(6(1(#))))))")) - (builtin "One Step Simplification" (formula "8")) - (rule "mul_literals" (formula "8") (term "0,1,0,1,0")) - (rule "add_literals" (formula "8") (term "1,0,0")) - (rule "mul_literals" (formula "8") (term "0,1,0,0,0")) - (rule "mul_literals" (formula "8") (term "0,1,0,0,1")) - (rule "polySimp_rightDist" (formula "8") (term "1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "8") (term "1,1,0,1,0")) - (rule "mul_literals" (formula "8") (term "0,1,0,1,0")) - (rule "polySimp_rightDist" (formula "8") (term "1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "8") (term "1,1,0,0,0")) - (rule "mul_literals" (formula "8") (term "0,1,0,0,0")) - (rule "polySimp_rightDist" (formula "8") (term "1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "8") (term "1,1,0,0,1")) - (rule "mul_literals" (formula "8") (term "0,1,0,0,1")) - (rule "polySimp_addAssoc" (formula "8") (term "0,1,0")) - (rule "polySimp_addComm1" (formula "8") (term "0,0,1,0")) - (rule "add_literals" (formula "8") (term "0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "8") (term "0,1,0")) - (rule "add_literals" (formula "8") (term "1,1,0,1,0")) - (rule "times_zero_1" (formula "8") (term "1,0,1,0")) - (rule "add_zero_right" (formula "8") (term "0,1,0")) - (rule "qeq_literals" (formula "8") (term "1,0")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_addAssoc" (formula "8") (term "0,0")) - (rule "polySimp_addComm1" (formula "8") (term "0,0,0")) - (rule "add_literals" (formula "8") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "8") (term "0,0")) - (rule "add_literals" (formula "8") (term "1,1,0,0")) - (rule "times_zero_1" (formula "8") (term "1,0,0")) - (rule "add_zero_right" (formula "8") (term "0,0")) - (rule "leq_literals" (formula "8") (term "0")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_addAssoc" (formula "8") (term "0,0")) - (rule "polySimp_addComm1" (formula "8") (term "0,0,0")) - (rule "add_literals" (formula "8") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "8") (term "0,0")) - (rule "add_literals" (formula "8") (term "1,1,0,0")) - (rule "times_zero_1" (formula "8") (term "1,0,0")) - (rule "add_zero_right" (formula "8") (term "0,0")) - (rule "equal_literals" (formula "8") (term "0")) - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (rule "ifElseUnfold" (formula "8") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_14")) - (rule "compound_equality_comparison_1" (formula "8") (term "1") (inst "#v0=x_15")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_15")) - (rule "assignmentModulo" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "translateJavaMod" (formula "8") (term "0,1,0,1")) - (rule "equal_literals" (formula "8") (term "0,0")) - (builtin "One Step Simplification" (formula "8")) - (rule "jdiv_axiom" (formula "4") (term "0")) - (rule "eqSymm" (formula "4")) - (rule "replace_known_left" (formula "4") (term "0,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "4")) - (rule "eqSymm" (formula "4")) - (rule "applyEq" (formula "4") (term "0") (ifseqformula "5")) - (rule "eqSymm" (formula "4")) - (rule "div_axiom" (formula "1") (term "0") (inst "quotient=quotient_0")) - (rule "mul_literals" (formula "1") (term "1,1,1,1,1")) - (rule "qeq_literals" (formula "1") (term "0,1,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "equal_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "polySimp_addComm1" (formula "3") (term "1")) - (rule "add_literals" (formula "3") (term "0,1")) - (rule "inEqSimp_commuteLeq" (formula "2")) - (rule "inEqSimp_homoInEq1" (formula "3")) - (rule "polySimp_mulLiterals" (formula "3") (term "1,0")) - (rule "polySimp_addComm1" (formula "3") (term "0")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "4")) - (rule "applyEqRigid" (formula "11") (term "0,1,0,1,0,0,0") (ifseqformula "1")) - (rule "applyEqRigid" (formula "8") (term "0") (ifseqformula "1")) - (rule "applyEq" (formula "6") (term "0,1,1") (ifseqformula "1")) - (rule "applyEqRigid" (formula "5") (term "0,1") (ifseqformula "1")) - (rule "applyEqRigid" (formula "4") (term "1") (ifseqformula "1")) - (rule "applyEqRigid" (formula "6") (term "1") (ifseqformula "1")) - (rule "inEqSimp_sepPosMonomial0" (formula "3")) - (rule "polySimp_mulComm0" (formula "3") (term "1")) - (rule "polySimp_rightDist" (formula "3") (term "1")) - (rule "polySimp_mulLiterals" (formula "3") (term "1,1")) - (rule "mul_literals" (formula "3") (term "0,1")) - (rule "inEqSimp_exactShadow3" (formula "7") (ifseqformula "4")) - (rule "times_zero_1" (formula "7") (term "0,0")) - (rule "add_zero_left" (formula "7") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "7")) - (rule "mul_literals" (formula "7") (term "1")) - (rule "inEqSimp_subsumption6" (formula "7") (ifseqformula "6")) - (rule "times_zero_1" (formula "7") (term "1,1,0")) - (rule "greater_literals" (formula "7") (term "0,0")) - (builtin "One Step Simplification" (formula "7")) - (rule "leq_literals" (formula "7") (term "0")) - (builtin "One Step Simplification" (formula "7")) - (rule "true_left" (formula "7")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifElseSplit" (formula "9")) - (branch "if x_14 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "1")) - (rule "compound_addition_2" (formula "9") (term "1") (inst "#v1=i_1") (inst "#v0=i")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i")) - (rule "assignmentMultiplicationInt" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaMulInt" (formula "9") (term "0,1,0")) - (rule "times_zero_1" (formula "9") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_1")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentModulo" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaMod" (formula "9") (term "0,1,0,1")) - (rule "equal_literals" (formula "9") (term "0,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaAddInt" (formula "9") (term "0,1,0")) - (rule "add_zero_left" (formula "9") (term "0,1,0")) - (rule "assignmentDivisionInt" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaDivInt" (formula "9") (term "0,1,0,1")) - (rule "equal_literals" (formula "9") (term "0,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "jdiv_axiom" (formula "9") (term "0,1,0")) - (rule "eqSymm" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0,2,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,2,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,0")) - (rule "mul_literals" (formula "1") (term "0,0,0,2,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1") (term "0,0")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "inEqSimp_subsumption6" (formula "1") (term "0,0") (ifseqformula "7")) - (rule "greater_literals" (formula "1") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "eqSymm" (formula "1")) - (rule "applyEqRigid" (formula "10") (term "0,1,0") (ifseqformula "1")) - (rule "polyDiv_pullOut" (formula "10") (term "0,1,0") (inst "polyDivCoeff=mul(quotient_0, Z(0(6(1(#)))))")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0,2,0,1,0")) - (rule "equal_literals" (formula "10") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0,0,1,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0,0,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0,0,1,0")) - (rule "add_zero_right" (formula "10") (term "0,0,0,1,0")) - (rule "div_literals" (formula "10") (term "0,0,1,0")) - (rule "polyDiv_pullOut" (formula "1") (term "1") (inst "polyDivCoeff=mul(quotient_0, Z(0(6(1(#)))))")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "div_literals" (formula "1") (term "0,1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "loopUnwind" (formula "10") (term "1") (inst "#outerLabel=_label11") (inst "#innerLabel=_label10")) - (rule "ifUnfold" (formula "10") (term "1") (inst "#boolv=b")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "b")) - (rule "compound_inequality_comparison_1" (formula "10") (term "1") (inst "#v0=i_2")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_2")) - (rule "assignmentModulo" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMod" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "inequality_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifSplit" (formula "10")) - (branch "if y % 2 != 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "10") (term "0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "10")) - (rule "polySimp_mulLiterals" (formula "10") (term "0")) - (rule "elimGcdEq" (formula "10") (inst "elimGcdRightDiv=add(Z(1(#)), mul(quotient_0, Z(0(8(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(3(#)), mul(quotient_0, Z(0(6(1(#)))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "10")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,1")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,1,0")) - (rule "add_literals" (formula "10") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0,1")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0,1")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,1,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,1,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0,1")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0,1")) - (rule "add_literals" (formula "10") (term "0,0,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0,1")) - (rule "add_literals" (formula "10") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "10") (term "1,0,0,1")) - (rule "add_zero_right" (formula "10") (term "0,0,1")) - (rule "equal_literals" (formula "10") (term "0,1")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_addAssoc" (formula "10") (term "0,1,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,1,0")) - (rule "add_literals" (formula "10") (term "0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,1,0")) - (rule "add_literals" (formula "10") (term "1,1,0,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0,1,0")) - (rule "add_zero_right" (formula "10") (term "0,1,0")) - (rule "qeq_literals" (formula "10") (term "1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0")) - (rule "add_literals" (formula "10") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0")) - (rule "leq_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "false_right" (formula "10")) - (rule "ifElseUnfold" (formula "10") (term "1") (inst "#boolv=b_1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "b_1")) - (rule "compound_equality_comparison_1" (formula "10") (term "1") (inst "#v0=i_3")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_3")) - (rule "assignmentModulo" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMod" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "equality_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifElseSplit" (formula "10")) - (branch "if res_1 % 2 == 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "jmod_axiom" (formula "1") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0")) - (rule "applyEq" (formula "1") (term "0,1,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "1") (term "0,1,0")) - (rule "qeq_literals" (formula "1") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "div_literals" (formula "1") (term "0,1,0")) - (rule "times_zero_2" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "equal_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if res_1 % 2 == 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "10") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0")) - (rule "applyEq" (formula "10") (term "0,1,0,0") (ifseqformula "1")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0")) - (rule "add_literals" (formula "10") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0")) - (rule "jmod_axiom" (formula "10") (term "0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "10") (term "0,1,0")) - (rule "div_literals" (formula "10") (term "1,0,1,0")) - (rule "qeq_literals" (formula "10") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "times_zero_2" (formula "10") (term "1,0")) - (rule "add_zero_right" (formula "10") (term "0")) - (rule "equal_literals" (formula "10")) - (rule "false_right" (formula "10")) - (rule "assignmentMultiplicationInt" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMulInt" (formula "10") (term "0,1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "0,1,0")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "loopUnwind" (formula "10") (term "1") (inst "#outerLabel=_label13") (inst "#innerLabel=_label12")) - (rule "ifUnfold" (formula "10") (term "1") (inst "#boolv=b_2")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "b_2")) - (rule "compound_inequality_comparison_1" (formula "10") (term "1") (inst "#v0=i_4")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_4")) - (rule "assignmentModulo" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMod" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "inequality_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifSplit" (formula "10")) - (branch "if y % 2 != 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "10") (term "0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "10")) - (rule "polySimp_mulLiterals" (formula "10") (term "0")) - (rule "elimGcdEq" (formula "10") (inst "elimGcdRightDiv=add(Z(1(#)), mul(quotient_0, Z(0(8(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(3(#)), mul(quotient_0, Z(0(6(1(#)))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "10")) - (rule "mul_literals" (formula "10") (term "0,1,0,1,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,0")) - (rule "add_literals" (formula "10") (term "1,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,1")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,1,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,1,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0,1")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0,1")) - (rule "polySimp_addAssoc" (formula "10") (term "0,1,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,1,0")) - (rule "add_literals" (formula "10") (term "0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,1,0")) - (rule "add_literals" (formula "10") (term "1,1,0,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0,1,0")) - (rule "add_zero_right" (formula "10") (term "0,1,0")) - (rule "qeq_literals" (formula "10") (term "1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0")) - (rule "add_literals" (formula "10") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0")) - (rule "leq_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0")) - (rule "add_literals" (formula "10") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0")) - (rule "equal_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "false_right" (formula "10")) - (rule "ifElseUnfold" (formula "10") (term "1") (inst "#boolv=b_3")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "b_3")) - (rule "compound_equality_comparison_1" (formula "10") (term "1") (inst "#v0=i_5")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_5")) - (rule "assignmentModulo" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMod" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "equality_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifElseSplit" (formula "10")) - (branch "if res_1 % 2 == 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "jmod_axiom" (formula "1") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,0")) - (rule "mul_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "applyEqRigid" (formula "1") (term "0,1,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "1") (term "0,1,0")) - (rule "qeq_literals" (formula "1") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "div_literals" (formula "1") (term "0,1,0")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "elim_double_block_2" (formula "10") (term "1")) - (rule "compound_addition_2" (formula "10") (term "1") (inst "#v1=i_7") (inst "#v0=i_6")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_6")) - (rule "assignmentMultiplicationInt" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMulInt" (formula "10") (term "0,1,0")) - (rule "polySimp_mulAssoc" (formula "10") (term "0,1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_7")) - (rule "remove_parentheses_right" (formula "10") (term "1")) - (rule "assignmentModulo" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMod" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignmentAdditionInt" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaAddInt" (formula "10") (term "0,1,0")) - (rule "assignmentDivisionInt" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaDivInt" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "jdiv_axiom" (formula "10") (term "0,1,0")) - (rule "eqSymm" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0,2,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,2,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,0")) - (rule "mul_literals" (formula "1") (term "0,0,0,2,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1") (term "0,0")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "inEqSimp_subsumption6" (formula "1") (term "0,0") (ifseqformula "8")) - (rule "greater_literals" (formula "1") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "eqSymm" (formula "1")) - (rule "applyEq" (formula "11") (term "0,1,0") (ifseqformula "1")) - (rule "polyDiv_pullOut" (formula "11") (term "0,1,0") (inst "polyDivCoeff=mul(quotient_0, Z(0(8(#))))")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,2,0,1,0")) - (rule "equal_literals" (formula "11") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,0,1,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0,0,1,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0,1,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0,1,0")) - (rule "div_literals" (formula "11") (term "0,0,1,0")) - (rule "polyDiv_pullOut" (formula "1") (term "1") (inst "polyDivCoeff=mul(quotient_0, Z(0(8(#))))")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "div_literals" (formula "1") (term "0,1")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "loopUnwind" (formula "11") (term "1") (inst "#outerLabel=_label15") (inst "#innerLabel=_label14")) - (rule "ifUnfold" (formula "11") (term "1") (inst "#boolv=b_4")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_4")) - (rule "compound_inequality_comparison_1" (formula "11") (term "1") (inst "#v0=i_8")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_8")) - (rule "assignmentModulo" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMod" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "inequality_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifSplit" (formula "11")) - (branch "if y % 2 != 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "11") (term "0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "11")) - (rule "polySimp_mulLiterals" (formula "11") (term "0")) - (rule "elimGcdEq" (formula "11") (inst "elimGcdRightDiv=add(Z(0(#)), mul(quotient_0, Z(0(4(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(1(#)), mul(quotient_0, Z(0(8(#))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "11")) - (rule "add_zero_left" (formula "11") (term "1,1,1")) - (rule "mul_literals" (formula "11") (term "0,1,0,1,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,1")) - (rule "add_zero_left" (formula "11") (term "1,1,0,0,1")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,0")) - (rule "add_zero_left" (formula "11") (term "1,1,0,0,0")) - (rule "add_literals" (formula "11") (term "1,0,0")) - (rule "add_zero_left" (formula "11") (term "1,1,0,1,0")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0,1")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,1")) - (rule "add_literals" (formula "11") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "11") (term "1,0,0,1")) - (rule "add_zero_right" (formula "11") (term "0,0,1")) - (rule "equal_literals" (formula "11") (term "0,1")) - (builtin "One Step Simplification" (formula "11")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0")) - (rule "leq_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "qeq_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "false_right" (formula "11")) - (rule "ifElseUnfold" (formula "11") (term "1") (inst "#boolv=b_5")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_5")) - (rule "compound_equality_comparison_1" (formula "11") (term "1") (inst "#v0=i_9")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_9")) - (rule "assignmentModulo" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMod" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "equality_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifElseSplit" (formula "11")) - (branch "if res_1 % 2 == 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "jmod_axiom" (formula "1") (term "0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0,0")) - (rule "applyEq" (formula "1") (term "0,1,0,0,0") (ifseqformula "3")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "jmod_axiom" (formula "1") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "applyEqRigid" (formula "1") (term "0,1,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "1") (term "0,1,0")) - (rule "qeq_literals" (formula "1") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "div_literals" (formula "1") (term "0,1,0")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "equal_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if res_1 % 2 == 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "11") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) - (rule "polySimp_addComm0" (formula "11") (term "0,0")) - (rule "applyEqRigid" (formula "11") (term "0,1,0,0,0") (ifseqformula "1")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0")) - (rule "jmod_axiom" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,1,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,1,0,0")) - (rule "mul_literals" (formula "11") (term "0,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0")) - (rule "applyEq" (formula "11") (term "0,1,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "jmod_axiom" (formula "11") (term "0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "11") (term "0,1,0")) - (rule "mul_literals" (formula "11") (term "0,0,2,0,1,0")) - (rule "qeq_literals" (formula "11") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "div_literals" (formula "11") (term "0,1,0")) - (rule "mul_literals" (formula "11") (term "1,0")) - (rule "add_literals" (formula "11") (term "0")) - (rule "equal_literals" (formula "11")) - (rule "false_right" (formula "11")) - (rule "assignmentMultiplicationInt" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMulInt" (formula "11") (term "0,1,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,1,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "0,0,1,0")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "loopUnwind" (formula "11") (term "1") (inst "#outerLabel=_label17") (inst "#innerLabel=_label16")) - (rule "ifUnfold" (formula "11") (term "1") (inst "#boolv=b_6")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_6")) - (rule "compound_inequality_comparison_1" (formula "11") (term "1") (inst "#v0=i_10")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_10")) - (rule "assignmentModulo" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMod" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "inequality_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifSplit" (formula "11")) - (branch "if y % 2 != 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "11") (term "0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "11")) - (rule "polySimp_mulLiterals" (formula "11") (term "0")) - (rule "elimGcdEq" (formula "11") (inst "elimGcdRightDiv=add(Z(0(#)), mul(quotient_0, Z(0(4(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(1(#)), mul(quotient_0, Z(0(8(#))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "11")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,0")) - (rule "add_zero_left" (formula "11") (term "1,1,0,0,0")) - (rule "add_literals" (formula "11") (term "1,0,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,1,0")) - (rule "add_zero_left" (formula "11") (term "1,1,0,1,0")) - (rule "add_zero_left" (formula "11") (term "1,1,1")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,1")) - (rule "add_zero_left" (formula "11") (term "1,1,0,0,1")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0")) - (rule "leq_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "qeq_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "equal_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "false_right" (formula "11")) - (rule "ifElseUnfold" (formula "11") (term "1") (inst "#boolv=b_7")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_7")) - (rule "compound_equality_comparison_1" (formula "11") (term "1") (inst "#v0=i_11")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_11")) - (rule "assignmentModulo" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMod" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "equality_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifElseSplit" (formula "11")) - (branch "if res_1 % 2 == 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "jmod_axiom" (formula "1") (term "0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0,0")) - (rule "applyEqRigid" (formula "1") (term "0,1,0,0,0") (ifseqformula "3")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "jmod_axiom" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,1,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,1,0,0")) - (rule "mul_literals" (formula "1") (term "0,0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "applyEqRigid" (formula "1") (term "0,1,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "1") (term "0,1,0")) - (rule "div_literals" (formula "1") (term "1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,0,2,0,1,0")) - (rule "qeq_literals" (formula "1") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "compound_addition_2" (formula "11") (term "1") (inst "#v1=i_13") (inst "#v0=i_12")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_12")) - (rule "assignmentMultiplicationInt" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMulInt" (formula "11") (term "0,1,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,1,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,1,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "0,0,1,0")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_13")) - (rule "remove_parentheses_right" (formula "11") (term "1")) - (rule "assignmentModulo" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMod" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "assignmentAdditionInt" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaAddInt" (formula "11") (term "0,1,0")) - (rule "assignmentDivisionInt" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaDivInt" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "jdiv_axiom" (formula "11") (term "0,1,0")) - (rule "eqSymm" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0,2,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,2,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,0")) - (rule "mul_literals" (formula "1") (term "0,0,0,2,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1") (term "0,0")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "inEqSimp_subsumption6" (formula "1") (term "0,0") (ifseqformula "9")) - (rule "greater_literals" (formula "1") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "eqSymm" (formula "1")) - (rule "applyEqRigid" (formula "12") (term "0,1,0") (ifseqformula "1")) - (rule "polyDiv_pullOut" (formula "12") (term "0,1,0") (inst "polyDivCoeff=mul(quotient_0, Z(0(4(#))))")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0,0,2,0,1,0")) - (rule "equal_literals" (formula "12") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "12")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "12") (term "0,0,0,1,0")) - (rule "add_literals" (formula "12") (term "1,1,0,0,0,1,0")) - (rule "times_zero_1" (formula "12") (term "1,0,0,0,1,0")) - (rule "add_zero_right" (formula "12") (term "0,0,0,1,0")) - (rule "div_literals" (formula "12") (term "0,0,1,0")) - (rule "add_zero_left" (formula "12") (term "0,1,0")) - (rule "polyDiv_pullOut" (formula "1") (term "1") (inst "polyDivCoeff=mul(quotient_0, Z(0(4(#))))")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "div_literals" (formula "1") (term "0,1")) - (rule "add_zero_left" (formula "1") (term "1")) - (rule "blockEmpty" (formula "12") (term "1")) - (rule "loopUnwind" (formula "12") (term "1") (inst "#outerLabel=_label19") (inst "#innerLabel=_label18")) - (rule "ifUnfold" (formula "12") (term "1") (inst "#boolv=b_8")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "b_8")) - (rule "compound_inequality_comparison_1" (formula "12") (term "1") (inst "#v0=i_14")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "i_14")) - (rule "assignmentModulo" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "translateJavaMod" (formula "12") (term "0,1,0,1")) - (rule "equal_literals" (formula "12") (term "0,0")) - (builtin "One Step Simplification" (formula "12")) - (rule "inequality_comparison_simple" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "ifSplit" (formula "12")) - (branch "if y % 2 != 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "12") (term "0")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "12")) - (rule "polySimp_mulLiterals" (formula "12") (term "0")) - (rule "elimGcdEq" (formula "12") (inst "elimGcdRightDiv=mul(quotient_0, Z(0(2(#))))") (inst "elimGcdLeftDiv=jdiv(mul(quotient_0, Z(0(4(#)))), Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "12")) - (rule "mul_literals" (formula "12") (term "0,1,0,0,0")) - (rule "mul_literals" (formula "12") (term "0,1,0,0,1")) - (rule "mul_literals" (formula "12") (term "0,1,0,1,0")) - (rule "add_literals" (formula "12") (term "1,0,0")) - (rule "polySimp_mulAssoc" (formula "12") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "12") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0,0,0")) - (rule "polySimp_pullOutFactor0" (formula "12") (term "0,0,0")) - (rule "add_literals" (formula "12") (term "1,0,0,0")) - (rule "times_zero_1" (formula "12") (term "0,0,0")) - (rule "leq_literals" (formula "12") (term "0,0")) - (builtin "One Step Simplification" (formula "12")) - (rule "polySimp_mulAssoc" (formula "12") (term "1,0,0,1")) - (rule "polySimp_mulComm0" (formula "12") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0" (formula "12") (term "0,0,1")) - (rule "add_literals" (formula "12") (term "1,0,0,1")) - (rule "times_zero_1" (formula "12") (term "0,0,1")) - (builtin "One Step Simplification" (formula "12")) - (rule "polySimp_mulAssoc" (formula "12") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "12") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0,0")) - (rule "polySimp_pullOutFactor0" (formula "12") (term "0,0")) - (rule "add_literals" (formula "12") (term "1,0,0")) - (rule "times_zero_1" (formula "12") (term "0,0")) - (rule "qeq_literals" (formula "12") (term "0")) - (builtin "One Step Simplification" (formula "12")) - (rule "ifElseUnfold" (formula "13") (term "1") (inst "#boolv=b_9")) - (rule "jdiv_axiom" (formula "12") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "0,0,2,1")) - (rule "eqSymm" (formula "1")) - (rule "inEqSimp_subsumption6" (formula "1") (term "0,0") (ifseqformula "10")) - (rule "greater_literals" (formula "1") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "eqSymm" (formula "1")) - (rule "applyEq" (formula "13") (term "0") (ifseqformula "1")) - (rule "polyDiv_pullOut" (formula "13") (term "0") (inst "polyDivCoeff=mul(quotient_0, Z(0(2(#))))")) - (rule "equal_literals" (formula "13") (term "0,0")) - (builtin "One Step Simplification" (formula "13")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,0,0,0")) - (rule "polySimp_pullOutFactor0" (formula "13") (term "0,0,0")) - (rule "add_literals" (formula "13") (term "1,0,0,0")) - (rule "times_zero_1" (formula "13") (term "0,0,0")) - (rule "div_literals" (formula "13") (term "0,0")) - (rule "add_zero_left" (formula "13") (term "0")) - (builtin "One Step Simplification" (formula "13")) - (rule "closeTrue" (formula "13")) - ) - (branch "if y % 2 != 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcdRightDiv=mul(quotient_0, Z(0(2(#))))") (inst "elimGcdLeftDiv=jdiv(mul(quotient_0, Z(0(4(#)))), Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0,1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "0,0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,1,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,1,0")) - (rule "polySimp_pullOutFactor0" (formula "1") (term "0,1,0")) - (rule "add_literals" (formula "1") (term "1,0,1,0")) - (rule "times_zero_1" (formula "1") (term "0,1,0")) - (rule "qeq_literals" (formula "1") (term "1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0")) - (rule "polySimp_pullOutFactor0" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "leq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "jdiv_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "0,0,2,1")) - (rule "eqSymm" (formula "1")) - (rule "applyEq" (formula "1") (term "1") (ifseqformula "2")) - (rule "inEqSimp_subsumption6" (formula "1") (term "0,0") (ifseqformula "11")) - (rule "greater_literals" (formula "1") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polyDiv_pullOut" (formula "1") (term "0") (inst "polyDivCoeff=mul(quotient_0, Z(0(2(#))))")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,0")) - (rule "equal_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "polySimp_homoEq" (formula "1")) - (rule "polySimp_pullOutFactor0" (formula "1") (term "0,0,0,1,0")) - (rule "add_literals" (formula "1") (term "1,0,0,0,1,0")) - (rule "times_zero_1" (formula "1") (term "0,0,0,1,0")) - (rule "div_literals" (formula "1") (term "0,0,1,0")) - (rule "add_zero_left" (formula "1") (term "0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_pullOutFactor0" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,0")) - (rule "times_zero_1" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockEmpty" (formula "13") (term "1")) - (rule "returnUnfold" (formula "13") (term "1") (inst "#v0=i_15")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "i_15")) - (rule "assignmentMultiplicationInt" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "translateJavaMulInt" (formula "13") (term "0,1,0")) - (rule "polySimp_mulComm0" (formula "13") (term "0,1,0")) - (rule "polySimp_rightDist" (formula "13") (term "0,1,0")) - (rule "polySimp_rightDist" (formula "13") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,0,0,1,0")) - (rule "polySimp_mulComm0" (formula "13") (term "0,0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "13") (term "0,0,0,1,0")) - (rule "methodCallReturn" (formula "13") (term "1")) - (rule "assignment" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "methodCallEmpty" (formula "13") (term "1")) - (rule "tryEmpty" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "emptyModality" (formula "13")) - (rule "closeTrue" (formula "13")) - ) - ) - (branch "if res_1 % 2 == 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "11") (term "0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0,0")) - (rule "mul_literals" (formula "11") (term "0,0,0,0,0")) - (rule "applyEq" (formula "11") (term "0,1,0,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0")) - (rule "jmod_axiom" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,1,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,1,0,0")) - (rule "mul_literals" (formula "11") (term "0,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0")) - (rule "applyEq" (formula "11") (term "0,1,0,0") (ifseqformula "1")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "jmod_axiom" (formula "11") (term "0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "11") (term "0,1,0")) - (rule "mul_literals" (formula "11") (term "0,0,2,0,1,0")) - (rule "qeq_literals" (formula "11") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "div_literals" (formula "11") (term "0,1,0")) - (rule "mul_literals" (formula "11") (term "1,0")) - (rule "add_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "closeTrue" (formula "11")) - ) - ) - (branch "if y % 2 != 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcdRightDiv=add(Z(0(#)), mul(quotient_0, Z(0(4(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(1(#)), mul(quotient_0, Z(0(8(#))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "add_zero_left" (formula "1") (term "1,1,0,0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "add_zero_left" (formula "1") (term "1,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "add_zero_left" (formula "1") (term "1,1,0,0,1")) - (rule "add_zero_left" (formula "1") (term "1,1,1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0,1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "if y % 2 != 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcdRightDiv=add(Z(0(#)), mul(quotient_0, Z(0(4(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(1(#)), mul(quotient_0, Z(0(8(#))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "add_zero_left" (formula "1") (term "1,1,0,0,1")) - (rule "add_zero_left" (formula "1") (term "1,1,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "add_zero_left" (formula "1") (term "1,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "add_zero_left" (formula "1") (term "1,1,0,0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0,1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,1,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,1,0")) - (rule "add_literals" (formula "1") (term "1,1,0,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0,1,0")) - (rule "add_zero_right" (formula "1") (term "0,1,0")) - (rule "qeq_literals" (formula "1") (term "1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "leq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if res_1 % 2 == 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "10") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "10") (term "0,0")) - (rule "polySimp_rightDist" (formula "10") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0,0")) - (rule "mul_literals" (formula "10") (term "0,0,0,0")) - (rule "applyEqRigid" (formula "10") (term "0,1,0,0") (ifseqformula "1")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0")) - (rule "add_literals" (formula "10") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0")) - (rule "jmod_axiom" (formula "10") (term "0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "10") (term "0,1,0")) - (rule "mul_literals" (formula "10") (term "0,0,2,0,1,0")) - (rule "qeq_literals" (formula "10") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "div_literals" (formula "10") (term "0,1,0")) - (rule "mul_literals" (formula "10") (term "1,0")) - (rule "add_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "closeTrue" (formula "10")) - ) - ) - (branch "if y % 2 != 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcdRightDiv=add(Z(1(#)), mul(quotient_0, Z(0(8(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(3(#)), mul(quotient_0, Z(0(6(1(#)))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "equal_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "if y % 2 != 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcdRightDiv=add(Z(1(#)), mul(quotient_0, Z(0(8(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(3(#)), mul(quotient_0, Z(0(6(1(#)))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,1")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,1")) - (rule "add_literals" (formula "1") (term "0,0,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_14 false" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_8 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcd=Z(2(#))") (inst "elimGcdLeftDiv=jdiv(add(Z(7(#)), mul(quotient_1, Z(0(2(3(#)))))), - Z(2(#)))") (inst "elimGcdRightDiv=add(Z(3(#)), mul(quotient_1, Z(0(6(1(#))))))")) - (builtin "One Step Simplification" (formula "1")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,1,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,1,0")) - (rule "add_literals" (formula "1") (term "0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,1,0")) - (rule "add_literals" (formula "1") (term "1,1,0,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0,1,0")) - (rule "add_literals" (formula "1") (term "0,1,0")) - (rule "qeq_literals" (formula "1") (term "1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "leq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "equal_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "if x_3 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "2")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "unaryMinusInt" (formula "3") (term "1")) - (rule "translateJavaUnaryMinusInt" (formula "3") (term "0,0,1")) - (builtin "One Step Simplification" (formula "3")) - (rule "polySimp_elimNeg" (formula "3") (term "0,1,0")) - (rule "blockEmpty" (formula "3") (term "1")) - (rule "assignmentDivisionInt" (formula "3") (term "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "translateJavaDivInt" (formula "3") (term "0,1,0,1")) - (rule "equal_literals" (formula "3") (term "0,0")) - (builtin "One Step Simplification" (formula "3")) - (rule "jdiv_axiom" (formula "3") (term "0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "0,0,2,1")) - (rule "eqSymm" (formula "1")) - (rule "polySimp_elimOne" (formula "1") (term "0,0,2,0")) - (rule "inEqSimp_invertInEq1" (formula "1") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "0,0,0")) - (rule "times_zero_2" (formula "1") (term "1,0,0")) - (rule "polySimp_elimOne" (formula "1") (term "0,0,0")) - (rule "inEqSimp_subsumption0" (formula "1") (term "0,0") (ifseqformula "2")) - (rule "leq_literals" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "eqSymm" (formula "1")) - (rule "applyEq" (formula "4") (term "0,1,0") (ifseqformula "1")) - (rule "div_axiom" (formula "1") (term "1") (inst "quotient=quotient_0")) - (rule "equal_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "1,1,1,1")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "polySimp_addComm1" (formula "3") (term "1")) - (rule "add_literals" (formula "3") (term "0,1")) - (rule "inEqSimp_commuteLeq" (formula "2")) - (rule "inEqSimp_homoInEq1" (formula "3")) - (rule "polySimp_mulLiterals" (formula "3") (term "1,0")) - (rule "polySimp_addComm1" (formula "3") (term "0")) - (rule "inEqSimp_homoInEq1" (formula "2")) - (rule "polySimp_mulLiterals" (formula "2") (term "1,0")) - (rule "polySimp_elimOne" (formula "2") (term "1,0")) - (rule "applyEq" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "applyEq" (formula "4") (term "1") (ifseqformula "1")) - (rule "inEqSimp_sepNegMonomial0" (formula "3")) - (rule "polySimp_mulLiterals" (formula "3") (term "0")) - (rule "polySimp_elimOne" (formula "3") (term "0")) - (rule "inEqSimp_sepPosMonomial0" (formula "2")) - (rule "polySimp_mulLiterals" (formula "2") (term "1")) - (rule "inEqSimp_exactShadow3" (formula "3") (ifseqformula "5")) - (rule "polySimp_rightDist" (formula "3") (term "0,0")) - (rule "mul_literals" (formula "3") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "3") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "3") (term "0")) - (rule "add_literals" (formula "3") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "3")) - (rule "mul_literals" (formula "3") (term "1")) - (rule "elimGcdGeq_antec" (formula "3") (inst "elimGcd=Z(0(0(0(2(#)))))") (inst "elimGcdLeftDiv=quotient_0") (inst "elimGcdRightDiv=Z(0(#))")) - (rule "leq_literals" (formula "3") (term "0,0")) - (builtin "One Step Simplification" (formula "3")) - (rule "polySimp_mulLiterals" (formula "3") (term "1,0,0")) - (rule "mul_literals" (formula "3") (term "0,1,0,0,0,0,0")) - (rule "times_zero_1" (formula "3") (term "1,0,0,0,0,0")) - (rule "polySimp_addLiterals" (formula "3") (term "0,0,0,0")) - (rule "add_literals" (formula "3") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "3") (term "0,0")) - (rule "add_literals" (formula "3") (term "1,1,0,0")) - (rule "times_zero_1" (formula "3") (term "1,0,0")) - (rule "add_zero_right" (formula "3") (term "0,0")) - (rule "leq_literals" (formula "3") (term "0")) - (builtin "One Step Simplification" (formula "3")) - (rule "returnUnfold" (formula "8") (term "1") (inst "#v0=x_1")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_4")) - (rule "compound_addition_1" (formula "8") (term "1") (inst "#v=x_5")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_5")) - (rule "assignmentMultiplicationInt" (formula "8") (term "1")) - (rule "translateJavaMulInt" (formula "8") (term "0,0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_mulComm0" (formula "8") (term "0,1,0")) - (rule "assignmentAdditionInt" (formula "8") (term "1")) - (rule "translateJavaAddInt" (formula "8") (term "0,0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_addComm0" (formula "8") (term "0,1,0")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "blockEmpty" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "res")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "loopUnwind" (formula "8") (term "1") (inst "#innerLabel=_label0") (inst "#outerLabel=_label1")) - (rule "ifUnfold" (formula "8") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_10")) - (rule "compound_inequality_comparison_1" (formula "8") (term "1") (inst "#v0=x_11")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_11")) - (rule "assignmentModulo" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "translateJavaMod" (formula "8") (term "0,1,0,1")) - (rule "equal_literals" (formula "8") (term "0,0")) - (builtin "One Step Simplification" (formula "8")) - (rule "inequality_comparison_simple" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "ifSplit" (formula "8")) - (branch "if x_10 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "8") (term "0")) - (rule "polySimp_mulLiterals" (formula "8") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "8")) - (rule "polySimp_mulLiterals" (formula "8") (term "0")) - (rule "elimGcdEq" (formula "8") (inst "elimGcd=Z(2(#))") (inst "elimGcdLeftDiv=jdiv(add(Z(7(#)), mul(quotient_0, Z(0(2(3(#)))))), - Z(2(#)))") (inst "elimGcdRightDiv=add(Z(3(#)), mul(quotient_0, Z(0(6(1(#))))))")) - (builtin "One Step Simplification" (formula "8")) - (rule "mul_literals" (formula "8") (term "0,1,0,1,0")) - (rule "add_literals" (formula "8") (term "1,0,0")) - (rule "mul_literals" (formula "8") (term "0,1,0,0,0")) - (rule "mul_literals" (formula "8") (term "0,1,0,0,1")) - (rule "polySimp_rightDist" (formula "8") (term "1,0,1,0")) - (rule "mul_literals" (formula "8") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "8") (term "1,1,0,1,0")) - (rule "polySimp_rightDist" (formula "8") (term "1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "8") (term "1,1,0,0,0")) - (rule "mul_literals" (formula "8") (term "0,1,0,0,0")) - (rule "polySimp_rightDist" (formula "8") (term "1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "8") (term "1,1,0,0,1")) - (rule "mul_literals" (formula "8") (term "0,1,0,0,1")) - (rule "polySimp_addAssoc" (formula "8") (term "0,1,0")) - (rule "polySimp_addComm1" (formula "8") (term "0,0,1,0")) - (rule "add_literals" (formula "8") (term "0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "8") (term "0,1,0")) - (rule "add_literals" (formula "8") (term "1,1,0,1,0")) - (rule "times_zero_1" (formula "8") (term "1,0,1,0")) - (rule "add_zero_right" (formula "8") (term "0,1,0")) - (rule "qeq_literals" (formula "8") (term "1,0")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_addAssoc" (formula "8") (term "0,0,1")) - (rule "polySimp_addComm1" (formula "8") (term "0,0,0,1")) - (rule "add_literals" (formula "8") (term "0,0,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "8") (term "0,0,1")) - (rule "add_literals" (formula "8") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "8") (term "1,0,0,1")) - (rule "add_literals" (formula "8") (term "0,0,1")) - (rule "equal_literals" (formula "8") (term "0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_addAssoc" (formula "8") (term "0,0")) - (rule "polySimp_addComm1" (formula "8") (term "0,0,0")) - (rule "add_literals" (formula "8") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "8") (term "0,0")) - (rule "add_literals" (formula "8") (term "1,1,0,0")) - (rule "times_zero_1" (formula "8") (term "1,0,0")) - (rule "add_zero_right" (formula "8") (term "0,0")) - (rule "leq_literals" (formula "8") (term "0")) - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (rule "ifElseUnfold" (formula "8") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_12")) - (rule "compound_equality_comparison_1" (formula "8") (term "1") (inst "#v0=x_13")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_13")) - (rule "assignmentModulo" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "translateJavaMod" (formula "8") (term "0,1,0,1")) - (rule "equal_literals" (formula "8") (term "0,0")) - (builtin "One Step Simplification" (formula "8")) - (rule "div_axiom" (formula "1") (term "0") (inst "quotient=quotient_1")) - (rule "mul_literals" (formula "1") (term "1,1,1,1,1")) - (rule "qeq_literals" (formula "1") (term "0,1,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "equal_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "polySimp_addComm1" (formula "3") (term "1")) - (rule "add_literals" (formula "3") (term "0,1")) - (rule "inEqSimp_commuteLeq" (formula "2")) - (rule "inEqSimp_homoInEq1" (formula "3")) - (rule "polySimp_mulLiterals" (formula "3") (term "1,0")) - (rule "polySimp_addComm1" (formula "3") (term "0")) - (rule "inEqSimp_homoInEq1" (formula "2")) - (rule "polySimp_mulLiterals" (formula "2") (term "1,0")) - (rule "polySimp_elimOne" (formula "2") (term "1,0")) - (rule "applyEq" (formula "4") (term "0") (ifseqformula "1")) - (rule "eqSymm" (formula "4")) - (rule "applyEqRigid" (formula "11") (term "0,1,0,1,0,0,0") (ifseqformula "4")) - (rule "applyEq" (formula "7") (term "0,1,1") (ifseqformula "4")) - (rule "applyEqRigid" (formula "6") (term "0") (ifseqformula "4")) - (rule "applyEq" (formula "5") (term "0,1") (ifseqformula "4")) - (rule "applyEq" (formula "8") (term "1") (ifseqformula "4")) - (rule "inEqSimp_sepNegMonomial0" (formula "3")) - (rule "polySimp_mulLiterals" (formula "3") (term "0")) - (rule "polySimp_elimOne" (formula "3") (term "0")) - (rule "inEqSimp_sepPosMonomial0" (formula "2")) - (rule "polySimp_mulLiterals" (formula "2") (term "1")) - (rule "inEqSimp_exactShadow3" (formula "5") (ifseqformula "7")) - (rule "polySimp_rightDist" (formula "5") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "5") (term "1,0,0")) - (rule "mul_literals" (formula "5") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "5") (term "0")) - (rule "add_literals" (formula "5") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "5")) - (rule "mul_literals" (formula "5") (term "1")) - (rule "inEqSimp_subsumption6" (formula "5") (ifseqformula "4")) - (rule "times_zero_1" (formula "5") (term "1,1,0")) - (rule "greater_literals" (formula "5") (term "0,0")) - (builtin "One Step Simplification" (formula "5")) - (rule "leq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "true_left" (formula "5")) - (rule "jdiv_axiom" (formula "6") (term "0")) - (rule "polySimp_mulLiterals" (formula "6") (term "0,0,2,1")) - (rule "eqSymm" (formula "6")) - (rule "polySimp_elimOne" (formula "6") (term "0,0,2,0")) - (rule "applyEq" (formula "6") (term "1,0") (ifseqformula "1")) - (rule "applyEq" (formula "6") (term "1") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "6")) - (rule "polySimp_homoEq" (formula "6") (term "1")) - (rule "polySimp_mulLiterals" (formula "6") (term "1,0,1")) - (rule "polySimp_elimOne" (formula "6") (term "1,0,1")) - (rule "polySimp_sepPosMonomial" (formula "6") (term "1")) - (rule "inEqSimp_invertInEq1" (formula "6") (term "0")) - (rule "times_zero_2" (formula "6") (term "1,0")) - (rule "polySimp_mulLiterals" (formula "6") (term "0,0")) - (rule "polySimp_elimOne" (formula "6") (term "0,0")) - (rule "inEqSimp_subsumption0" (formula "6") (term "0") (ifseqformula "8")) - (rule "leq_literals" (formula "6") (term "0,0")) - (builtin "One Step Simplification" (formula "6")) - (rule "true_left" (formula "6")) - (rule "equality_comparison_simple" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifElseSplit" (formula "9")) - (branch "if x_12 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "1")) - (rule "compound_addition_2" (formula "9") (term "1") (inst "#v1=i_1") (inst "#v0=i")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i")) - (rule "assignmentMultiplicationInt" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaMulInt" (formula "9") (term "0,1,0")) - (rule "times_zero_1" (formula "9") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "i_1")) - (rule "remove_parentheses_right" (formula "9") (term "1")) - (rule "assignmentModulo" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaMod" (formula "9") (term "0,1,0,1")) - (rule "equal_literals" (formula "9") (term "0,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaAddInt" (formula "9") (term "0,1,0")) - (rule "add_zero_left" (formula "9") (term "0,1,0")) - (rule "assignmentDivisionInt" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "translateJavaDivInt" (formula "9") (term "0,1,0,1")) - (rule "equal_literals" (formula "9") (term "0,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "jdiv_axiom" (formula "9") (term "0,1,0")) - (rule "eqSymm" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0,2,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,2,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,0")) - (rule "mul_literals" (formula "1") (term "0,0,0,2,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1") (term "0,0")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "inEqSimp_subsumption6" (formula "1") (term "0,0") (ifseqformula "5")) - (rule "greater_literals" (formula "1") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "eqSymm" (formula "1")) - (rule "applyEqRigid" (formula "10") (term "0,1,0") (ifseqformula "1")) - (rule "polyDiv_pullOut" (formula "10") (term "0,1,0") (inst "polyDivCoeff=mul(quotient_1, Z(0(6(1(#)))))")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0,2,0,1,0")) - (rule "equal_literals" (formula "10") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0,0,1,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0,0,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0,0,1,0")) - (rule "add_zero_right" (formula "10") (term "0,0,0,1,0")) - (rule "div_literals" (formula "10") (term "0,0,1,0")) - (rule "polyDiv_pullOut" (formula "1") (term "1") (inst "polyDivCoeff=mul(quotient_1, Z(0(6(1(#)))))")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "div_literals" (formula "1") (term "0,1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "loopUnwind" (formula "10") (term "1") (inst "#outerLabel=_label1") (inst "#innerLabel=_label0")) - (rule "ifUnfold" (formula "10") (term "1") (inst "#boolv=b")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "b")) - (rule "compound_inequality_comparison_1" (formula "10") (term "1") (inst "#v0=i_2")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_2")) - (rule "assignmentModulo" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMod" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "inequality_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifSplit" (formula "10")) - (branch "if y % 2 != 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "10") (term "0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "10")) - (rule "polySimp_mulLiterals" (formula "10") (term "0")) - (rule "elimGcdEq" (formula "10") (inst "elimGcdRightDiv=add(Z(1(#)), mul(quotient_1, Z(0(8(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(3(#)), mul(quotient_1, Z(0(6(1(#)))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "10")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,1")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,1,0")) - (rule "add_literals" (formula "10") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0,1")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0,1")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,1,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,1,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0,1")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0,1")) - (rule "add_literals" (formula "10") (term "0,0,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0,1")) - (rule "add_literals" (formula "10") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "10") (term "1,0,0,1")) - (rule "add_zero_right" (formula "10") (term "0,0,1")) - (rule "equal_literals" (formula "10") (term "0,1")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_addAssoc" (formula "10") (term "0,1,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,1,0")) - (rule "add_literals" (formula "10") (term "0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,1,0")) - (rule "add_literals" (formula "10") (term "1,1,0,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0,1,0")) - (rule "add_zero_right" (formula "10") (term "0,1,0")) - (rule "qeq_literals" (formula "10") (term "1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0")) - (rule "add_literals" (formula "10") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0")) - (rule "leq_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "false_right" (formula "10")) - (rule "ifElseUnfold" (formula "10") (term "1") (inst "#boolv=b_1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "b_1")) - (rule "compound_equality_comparison_1" (formula "10") (term "1") (inst "#v0=i_3")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_3")) - (rule "assignmentModulo" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMod" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "equality_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifElseSplit" (formula "10")) - (branch "if res % 2 == 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "jmod_axiom" (formula "1") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0")) - (rule "applyEqRigid" (formula "1") (term "0,1,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "1") (term "0,1,0")) - (rule "qeq_literals" (formula "1") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "div_literals" (formula "1") (term "0,1,0")) - (rule "times_zero_2" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "equal_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if res % 2 == 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "10") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0")) - (rule "applyEqRigid" (formula "10") (term "0,1,0,0") (ifseqformula "1")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0")) - (rule "add_literals" (formula "10") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0")) - (rule "jmod_axiom" (formula "10") (term "0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "10") (term "0,1,0")) - (rule "qeq_literals" (formula "10") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "div_literals" (formula "10") (term "0,1,0")) - (rule "mul_literals" (formula "10") (term "1,0")) - (rule "add_zero_right" (formula "10") (term "0")) - (rule "equal_literals" (formula "10")) - (rule "false_right" (formula "10")) - (rule "assignmentMultiplicationInt" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMulInt" (formula "10") (term "0,1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "0,1,0")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "loopUnwind" (formula "10") (term "1") (inst "#outerLabel=_label3") (inst "#innerLabel=_label2")) - (rule "ifUnfold" (formula "10") (term "1") (inst "#boolv=b_2")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "b_2")) - (rule "compound_inequality_comparison_1" (formula "10") (term "1") (inst "#v0=i_4")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_4")) - (rule "assignmentModulo" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMod" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "inequality_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifSplit" (formula "10")) - (branch "if y % 2 != 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "10") (term "0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "10")) - (rule "polySimp_mulLiterals" (formula "10") (term "0")) - (rule "elimGcdEq" (formula "10") (inst "elimGcdRightDiv=add(Z(1(#)), mul(quotient_1, Z(0(8(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(3(#)), mul(quotient_1, Z(0(6(1(#)))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "10")) - (rule "mul_literals" (formula "10") (term "0,1,0,1,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,0")) - (rule "add_literals" (formula "10") (term "1,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,1")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,1,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,1,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0,1")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0,1")) - (rule "polySimp_addAssoc" (formula "10") (term "0,1,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,1,0")) - (rule "add_literals" (formula "10") (term "0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,1,0")) - (rule "add_literals" (formula "10") (term "1,1,0,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0,1,0")) - (rule "add_zero_right" (formula "10") (term "0,1,0")) - (rule "qeq_literals" (formula "10") (term "1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0")) - (rule "add_literals" (formula "10") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0")) - (rule "leq_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0")) - (rule "add_literals" (formula "10") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0")) - (rule "equal_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "false_right" (formula "10")) - (rule "ifElseUnfold" (formula "10") (term "1") (inst "#boolv=b_3")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "b_3")) - (rule "compound_equality_comparison_1" (formula "10") (term "1") (inst "#v0=i_5")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_5")) - (rule "assignmentModulo" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMod" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "equality_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifElseSplit" (formula "10")) - (branch "if res % 2 == 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "jmod_axiom" (formula "1") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,0")) - (rule "mul_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "applyEqRigid" (formula "1") (term "0,1,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "1") (term "0,1,0")) - (rule "qeq_literals" (formula "1") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "div_literals" (formula "1") (term "0,1,0")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "compound_addition_2" (formula "10") (term "1") (inst "#v1=i_7") (inst "#v0=i_6")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_6")) - (rule "assignmentMultiplicationInt" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMulInt" (formula "10") (term "0,1,0")) - (rule "polySimp_mulAssoc" (formula "10") (term "0,1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_7")) - (rule "remove_parentheses_right" (formula "10") (term "1")) - (rule "assignmentModulo" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaMod" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignmentAdditionInt" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaAddInt" (formula "10") (term "0,1,0")) - (rule "assignmentDivisionInt" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "translateJavaDivInt" (formula "10") (term "0,1,0,1")) - (rule "equal_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "jdiv_axiom" (formula "10") (term "0,1,0")) - (rule "eqSymm" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0,2,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,2,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,0")) - (rule "mul_literals" (formula "1") (term "0,0,0,2,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1") (term "0,0")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "inEqSimp_subsumption6" (formula "1") (term "0,0") (ifseqformula "6")) - (rule "times_zero_1" (formula "1") (term "1,1,0,0,0")) - (rule "greater_literals" (formula "1") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "leq_literals" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "eqSymm" (formula "1")) - (rule "applyEqRigid" (formula "11") (term "0,1,0") (ifseqformula "1")) - (rule "polyDiv_pullOut" (formula "11") (term "0,1,0") (inst "polyDivCoeff=mul(quotient_1, Z(0(8(#))))")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,2,0,1,0")) - (rule "equal_literals" (formula "11") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,0,1,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0,0,1,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0,1,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0,1,0")) - (rule "div_literals" (formula "11") (term "0,0,1,0")) - (rule "polyDiv_pullOut" (formula "1") (term "1") (inst "polyDivCoeff=mul(quotient_1, Z(0(8(#))))")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "div_literals" (formula "1") (term "0,1")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "loopUnwind" (formula "11") (term "1") (inst "#outerLabel=_label5") (inst "#innerLabel=_label4")) - (rule "ifUnfold" (formula "11") (term "1") (inst "#boolv=b_4")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_4")) - (rule "compound_inequality_comparison_1" (formula "11") (term "1") (inst "#v0=i_8")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_8")) - (rule "assignmentModulo" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMod" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "inequality_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifSplit" (formula "11")) - (branch "if y % 2 != 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "11") (term "0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "11")) - (rule "polySimp_mulLiterals" (formula "11") (term "0")) - (rule "elimGcdEq" (formula "11") (inst "elimGcdRightDiv=add(Z(0(#)), mul(quotient_1, Z(0(4(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(1(#)), mul(quotient_1, Z(0(8(#))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "11")) - (rule "add_zero_left" (formula "11") (term "1,1,1")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,1")) - (rule "add_zero_left" (formula "11") (term "1,1,0,0,1")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,0")) - (rule "add_zero_left" (formula "11") (term "1,1,0,0,0")) - (rule "add_literals" (formula "11") (term "1,0,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,1,0")) - (rule "add_zero_left" (formula "11") (term "1,1,0,1,0")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0,1")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,1")) - (rule "add_literals" (formula "11") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "11") (term "1,0,0,1")) - (rule "add_zero_right" (formula "11") (term "0,0,1")) - (rule "equal_literals" (formula "11") (term "0,1")) - (builtin "One Step Simplification" (formula "11")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0")) - (rule "leq_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "qeq_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "false_right" (formula "11")) - (rule "ifElseUnfold" (formula "11") (term "1") (inst "#boolv=b_5")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_5")) - (rule "compound_equality_comparison_1" (formula "11") (term "1") (inst "#v0=i_9")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_9")) - (rule "assignmentModulo" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMod" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "equality_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifElseSplit" (formula "11")) - (branch "if res % 2 == 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "jmod_axiom" (formula "1") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "polySimp_addComm0" (formula "1") (term "0,0")) - (rule "applyEqRigid" (formula "1") (term "0,1,0,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "jmod_axiom" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,1,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,1,0,0")) - (rule "mul_literals" (formula "1") (term "0,0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "applyEqRigid" (formula "1") (term "0,1,0,0") (ifseqformula "3")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "1") (term "0,1,0")) - (rule "qeq_literals" (formula "1") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "div_literals" (formula "1") (term "0,1,0")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "equal_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if res % 2 == 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "11") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) - (rule "polySimp_addComm0" (formula "11") (term "0,0")) - (rule "applyEqRigid" (formula "11") (term "0,1,0,0,0") (ifseqformula "1")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0")) - (rule "jmod_axiom" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,1,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,1,0,0")) - (rule "mul_literals" (formula "11") (term "0,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0")) - (rule "applyEq" (formula "11") (term "0,1,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "jmod_axiom" (formula "11") (term "0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "11") (term "0,1,0")) - (rule "qeq_literals" (formula "11") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "div_literals" (formula "11") (term "0,1,0")) - (rule "mul_literals" (formula "11") (term "1,0")) - (rule "add_literals" (formula "11") (term "0")) - (rule "equal_literals" (formula "11")) - (rule "false_right" (formula "11")) - (rule "assignmentMultiplicationInt" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMulInt" (formula "11") (term "0,1,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,1,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "0,0,1,0")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "loopUnwind" (formula "11") (term "1") (inst "#outerLabel=_label7") (inst "#innerLabel=_label6")) - (rule "ifUnfold" (formula "11") (term "1") (inst "#boolv=b_6")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_6")) - (rule "compound_inequality_comparison_1" (formula "11") (term "1") (inst "#v0=i_10")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_10")) - (rule "assignmentModulo" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMod" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "inequality_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifSplit" (formula "11")) - (branch "if y % 2 != 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "11") (term "0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "11")) - (rule "polySimp_mulLiterals" (formula "11") (term "0")) - (rule "elimGcdEq" (formula "11") (inst "elimGcdRightDiv=add(Z(0(#)), mul(quotient_1, Z(0(4(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(1(#)), mul(quotient_1, Z(0(8(#))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "11")) - (rule "mul_literals" (formula "11") (term "0,1,0,1,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,0")) - (rule "add_zero_left" (formula "11") (term "1,1,0,0,0")) - (rule "add_zero_left" (formula "11") (term "1,1,0,1,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,1")) - (rule "add_literals" (formula "11") (term "1,0,0")) - (rule "add_zero_left" (formula "11") (term "1,1,1")) - (rule "add_zero_left" (formula "11") (term "1,1,0,0,1")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0")) - (rule "leq_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "qeq_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "polySimp_mulAssoc" (formula "11") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "equal_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "false_right" (formula "11")) - (rule "ifElseUnfold" (formula "11") (term "1") (inst "#boolv=b_7")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_7")) - (rule "compound_equality_comparison_1" (formula "11") (term "1") (inst "#v0=i_11")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_11")) - (rule "assignmentModulo" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMod" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "equality_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifElseSplit" (formula "11")) - (branch "if res % 2 == 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "jmod_axiom" (formula "1") (term "0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0,0")) - (rule "applyEqRigid" (formula "1") (term "0,1,0,0,0") (ifseqformula "3")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "jmod_axiom" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,1,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,1,0,0")) - (rule "mul_literals" (formula "1") (term "0,0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "applyEq" (formula "1") (term "0,1,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "1") (term "0,1,0")) - (rule "div_literals" (formula "1") (term "1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,0,2,0,1,0")) - (rule "qeq_literals" (formula "1") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "elim_double_block_2" (formula "11") (term "1")) - (rule "compound_addition_2" (formula "11") (term "1") (inst "#v1=i_13") (inst "#v0=i_12")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_12")) - (rule "assignmentMultiplicationInt" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMulInt" (formula "11") (term "0,1,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,1,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,1,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "0,0,1,0")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "i_13")) - (rule "remove_parentheses_right" (formula "11") (term "1")) - (rule "assignmentModulo" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaMod" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "assignmentAdditionInt" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaAddInt" (formula "11") (term "0,1,0")) - (rule "assignmentDivisionInt" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaDivInt" (formula "11") (term "0,1,0,1")) - (rule "equal_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "jdiv_axiom" (formula "11") (term "0,1,0")) - (rule "eqSymm" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0,2,0")) - (rule "polySimp_rightDist" (formula "1") (term "0,0,2,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,0")) - (rule "mul_literals" (formula "1") (term "0,0,0,2,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1") (term "0,0")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "inEqSimp_subsumption6" (formula "1") (term "0,0") (ifseqformula "7")) - (rule "times_zero_1" (formula "1") (term "1,1,0,0,0")) - (rule "greater_literals" (formula "1") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "leq_literals" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "eqSymm" (formula "1")) - (rule "applyEqRigid" (formula "12") (term "0,1,0") (ifseqformula "1")) - (rule "polyDiv_pullOut" (formula "12") (term "0,1,0") (inst "polyDivCoeff=mul(quotient_1, Z(0(4(#))))")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0,0,2,0,1,0")) - (rule "equal_literals" (formula "12") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "12")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0,0,0,1,0")) - (rule "polySimp_pullOutFactor0b" (formula "12") (term "0,0,0,1,0")) - (rule "add_literals" (formula "12") (term "1,1,0,0,0,1,0")) - (rule "times_zero_1" (formula "12") (term "1,0,0,0,1,0")) - (rule "add_zero_right" (formula "12") (term "0,0,0,1,0")) - (rule "div_literals" (formula "12") (term "0,0,1,0")) - (rule "add_zero_left" (formula "12") (term "0,1,0")) - (rule "polyDiv_pullOut" (formula "1") (term "1") (inst "polyDivCoeff=mul(quotient_1, Z(0(4(#))))")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "div_literals" (formula "1") (term "0,1")) - (rule "add_zero_left" (formula "1") (term "1")) - (rule "blockEmpty" (formula "12") (term "1")) - (rule "loopUnwind" (formula "12") (term "1") (inst "#outerLabel=_label9") (inst "#innerLabel=_label8")) - (rule "ifUnfold" (formula "12") (term "1") (inst "#boolv=b_8")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "b_8")) - (rule "compound_inequality_comparison_1" (formula "12") (term "1") (inst "#v0=i_14")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "i_14")) - (rule "assignmentModulo" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "translateJavaMod" (formula "12") (term "0,1,0,1")) - (rule "equal_literals" (formula "12") (term "0,0")) - (builtin "One Step Simplification" (formula "12")) - (rule "inequality_comparison_simple" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "ifSplit" (formula "12")) - (branch "if y % 2 != 0 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "12") (term "0")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "12")) - (rule "polySimp_mulLiterals" (formula "12") (term "0")) - (rule "elimGcdEq" (formula "12") (inst "elimGcdRightDiv=mul(quotient_1, Z(0(2(#))))") (inst "elimGcdLeftDiv=jdiv(mul(quotient_1, Z(0(4(#)))), Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "12")) - (rule "mul_literals" (formula "12") (term "0,1,0,0,0")) - (rule "mul_literals" (formula "12") (term "0,1,0,0,1")) - (rule "mul_literals" (formula "12") (term "0,1,0,1,0")) - (rule "add_literals" (formula "12") (term "1,0,0")) - (rule "polySimp_mulAssoc" (formula "12") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "12") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0,0,0")) - (rule "polySimp_pullOutFactor0" (formula "12") (term "0,0,0")) - (rule "add_literals" (formula "12") (term "1,0,0,0")) - (rule "times_zero_1" (formula "12") (term "0,0,0")) - (rule "leq_literals" (formula "12") (term "0,0")) - (builtin "One Step Simplification" (formula "12")) - (rule "polySimp_mulAssoc" (formula "12") (term "1,0,0,1")) - (rule "polySimp_mulComm0" (formula "12") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0" (formula "12") (term "0,0,1")) - (rule "add_literals" (formula "12") (term "1,0,0,1")) - (rule "times_zero_1" (formula "12") (term "0,0,1")) - (builtin "One Step Simplification" (formula "12")) - (rule "polySimp_mulAssoc" (formula "12") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "12") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "12") (term "1,0,0")) - (rule "polySimp_pullOutFactor0" (formula "12") (term "0,0")) - (rule "add_literals" (formula "12") (term "1,0,0")) - (rule "times_zero_1" (formula "12") (term "0,0")) - (rule "qeq_literals" (formula "12") (term "0")) - (builtin "One Step Simplification" (formula "12")) - (rule "ifElseUnfold" (formula "13") (term "1") (inst "#boolv=b_9")) - (rule "jdiv_axiom" (formula "12") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "0,0,2,1")) - (rule "eqSymm" (formula "1")) - (rule "inEqSimp_subsumption6" (formula "1") (term "0,0") (ifseqformula "8")) - (rule "greater_literals" (formula "1") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "1,0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "eqSymm" (formula "1")) - (rule "applyEqRigid" (formula "13") (term "0") (ifseqformula "1")) - (rule "polyDiv_pullOut" (formula "13") (term "0") (inst "polyDivCoeff=mul(quotient_1, Z(0(2(#))))")) - (rule "equal_literals" (formula "13") (term "0,0")) - (builtin "One Step Simplification" (formula "13")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,0,0,0")) - (rule "polySimp_homoEq" (formula "13")) - (rule "polySimp_pullOutFactor0" (formula "13") (term "0,0,0,1,0")) - (rule "add_literals" (formula "13") (term "1,0,0,0,1,0")) - (rule "times_zero_1" (formula "13") (term "0,0,0,1,0")) - (rule "div_literals" (formula "13") (term "0,0,1,0")) - (rule "add_zero_left" (formula "13") (term "0,1,0")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,0")) - (rule "polySimp_pullOutFactor0" (formula "13") (term "0")) - (rule "add_literals" (formula "13") (term "1,0")) - (rule "times_zero_1" (formula "13") (term "0")) - (builtin "One Step Simplification" (formula "13")) - (rule "closeTrue" (formula "13")) - ) - (branch "if y % 2 != 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcdRightDiv=mul(quotient_1, Z(0(2(#))))") (inst "elimGcdLeftDiv=jdiv(mul(quotient_1, Z(0(4(#)))), Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0,1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "0,0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "polySimp_pullOutFactor0" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0")) - (rule "polySimp_pullOutFactor0" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "jdiv_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "0,0,2,1")) - (rule "eqSymm" (formula "1")) - (rule "applyEq" (formula "1") (term "1") (ifseqformula "2")) - (rule "inEqSimp_subsumption6" (formula "1") (term "0,0") (ifseqformula "9")) - (rule "times_zero_1" (formula "1") (term "1,1,0,0,0")) - (rule "greater_literals" (formula "1") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "leq_literals" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polyDiv_pullOut" (formula "1") (term "0") (inst "polyDivCoeff=mul(quotient_1, Z(0(2(#))))")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,2,0")) - (rule "equal_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "polySimp_homoEq" (formula "1")) - (rule "polySimp_pullOutFactor0" (formula "1") (term "0,0,0,1,0")) - (rule "add_literals" (formula "1") (term "1,0,0,0,1,0")) - (rule "times_zero_1" (formula "1") (term "0,0,0,1,0")) - (rule "div_literals" (formula "1") (term "0,0,1,0")) - (rule "add_zero_left" (formula "1") (term "0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_pullOutFactor0" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,0")) - (rule "times_zero_1" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockEmpty" (formula "13") (term "1")) - (rule "returnUnfold" (formula "13") (term "1") (inst "#v0=i_15")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "i_15")) - (rule "assignmentMultiplicationInt" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "translateJavaMulInt" (formula "13") (term "0,1,0")) - (rule "polySimp_mulComm0" (formula "13") (term "0,1,0")) - (rule "polySimp_rightDist" (formula "13") (term "0,1,0")) - (rule "polySimp_rightDist" (formula "13") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,0,0,1,0")) - (rule "polySimp_mulComm0" (formula "13") (term "0,0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "13") (term "0,0,0,1,0")) - (rule "methodCallReturn" (formula "13") (term "1")) - (rule "assignment" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "methodCallEmpty" (formula "13") (term "1")) - (rule "tryEmpty" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "emptyModality" (formula "13")) - (rule "closeTrue" (formula "13")) - ) - ) - (branch "if res % 2 == 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "11") (term "0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "0,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,0,0,0")) - (rule "mul_literals" (formula "11") (term "0,0,0,0,0")) - (rule "applyEqRigid" (formula "11") (term "0,1,0,0,0") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0")) - (rule "jmod_axiom" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,1,0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0,1,0,0")) - (rule "mul_literals" (formula "11") (term "0,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0")) - (rule "applyEq" (formula "11") (term "0,1,0,0") (ifseqformula "1")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "jmod_axiom" (formula "11") (term "0")) - (rule "polySimp_mulLiterals" (formula "11") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "11") (term "0,1,0")) - (rule "mul_literals" (formula "11") (term "0,0,2,0,1,0")) - (rule "div_literals" (formula "11") (term "1,0,1,0")) - (rule "qeq_literals" (formula "11") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "mul_literals" (formula "11") (term "1,0")) - (rule "add_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "closeTrue" (formula "11")) - ) - ) - (branch "if y % 2 != 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcdRightDiv=add(Z(0(#)), mul(quotient_1, Z(0(4(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(1(#)), mul(quotient_1, Z(0(8(#))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "add_zero_left" (formula "1") (term "1,1,0,0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "add_zero_left" (formula "1") (term "1,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "add_zero_left" (formula "1") (term "1,1,0,0,1")) - (rule "add_zero_left" (formula "1") (term "1,1,1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0,1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "if y % 2 != 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcdRightDiv=add(Z(0(#)), mul(quotient_1, Z(0(4(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(1(#)), mul(quotient_1, Z(0(8(#))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "add_zero_left" (formula "1") (term "1,1,0,0,1")) - (rule "add_zero_left" (formula "1") (term "1,1,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "add_zero_left" (formula "1") (term "1,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "add_zero_left" (formula "1") (term "1,1,0,0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0,1")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_mulAssoc" (formula "1") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if res % 2 == 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "notLeft" (formula "1")) - (rule "jmod_axiom" (formula "10") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "10") (term "0,0")) - (rule "polySimp_rightDist" (formula "10") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0,0,0")) - (rule "mul_literals" (formula "10") (term "0,0,0,0")) - (rule "applyEqRigid" (formula "10") (term "0,1,0,0") (ifseqformula "1")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0")) - (rule "add_literals" (formula "10") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "10") (term "0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0")) - (rule "jmod_axiom" (formula "10") (term "0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,0")) - (rule "jdiv_axiom_inline" (formula "10") (term "0,1,0")) - (rule "qeq_literals" (formula "10") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "div_literals" (formula "10") (term "0,1,0")) - (rule "mul_literals" (formula "10") (term "1,0")) - (rule "add_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "closeTrue" (formula "10")) - ) - ) - (branch "if y % 2 != 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcdRightDiv=add(Z(1(#)), mul(quotient_1, Z(0(8(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(3(#)), mul(quotient_1, Z(0(6(1(#)))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "equal_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "if y % 2 != 0 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcdRightDiv=add(Z(1(#)), mul(quotient_1, Z(0(8(#)))))") (inst "elimGcdLeftDiv=jdiv(add(Z(3(#)), mul(quotient_1, Z(0(6(1(#)))))), - Z(2(#)))") (inst "elimGcd=Z(2(#))")) - (builtin "One Step Simplification" (formula "1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,1")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,1")) - (rule "add_literals" (formula "1") (term "0,0,0,0,1")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,1")) - (rule "add_literals" (formula "1") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "equal_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_12 false" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_10 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "jmod_axiom" (formula "1") (term "0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,0")) - (rule "polySimp_sepNegMonomial" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "elimGcdEq" (formula "1") (inst "elimGcd=Z(2(#))") (inst "elimGcdLeftDiv=jdiv(add(Z(7(#)), mul(quotient_0, Z(0(2(3(#)))))), - Z(2(#)))") (inst "elimGcdRightDiv=add(Z(3(#)), mul(quotient_0, Z(0(6(1(#))))))")) - (builtin "One Step Simplification" (formula "1")) - (rule "add_literals" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0,1")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,1")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,1,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "polySimp_addAssoc" (formula "1") (term "0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "polySimp_pullOutFactor0b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "equal_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -) -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_10.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_10.xml deleted file mode 100644 index b208a6cec86..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_11.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_11.xml deleted file mode 100644 index 86b25f7b205..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_11.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_12.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_12.xml deleted file mode 100644 index b5aef8fbe2f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_12.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_13.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_13.xml deleted file mode 100644 index 7d67f8a7b37..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_13.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_14.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_14.xml deleted file mode 100644 index 3e647b42bfa..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_14.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_2.xml deleted file mode 100644 index 0c040a810c4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_2.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_3.xml deleted file mode 100644 index 8c1f37062f0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_3.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_4.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_4.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_5.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_5.xml deleted file mode 100644 index 24d5a6c40ff..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_6.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_6.xml deleted file mode 100644 index a97ed4dcb2d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_6.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_7.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_7.xml deleted file mode 100644 index 6be6f55a0f0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_7.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_8.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_8.xml deleted file mode 100644 index ca9ab2a44c5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_8.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_9.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_9.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/oracle/BreakpointStopConditionWithCondition_9.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/test/SimpleConditionExample.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/test/SimpleConditionExample.java deleted file mode 100644 index 68b1ca66873..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithConditionsTest/test/SimpleConditionExample.java +++ /dev/null @@ -1,36 +0,0 @@ - -public class SimpleConditionExample { - - private int z; - - public void main() { - z = 3; - while (z >= 0) { - z--; // Breakpoint with y == 1 - } - } - - public static int somethingMain() { - int a = 2; - int b = 3; - return something(a, b); - } - - public static int something(int a, int b) { - return a + b; - } - - public static int somethingLocalMain() { - int y = 42; - int x = somethingLocal(y); - somethingLocal(x); - return y; - } - - public static int somethingLocal(int x) { - int y = x*x; - x++; - return y; - } - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_2.xml deleted file mode 100644 index 3c2792973ff..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_2.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_3.xml deleted file mode 100644 index a82808661f7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_3.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_4.xml deleted file mode 100644 index fbf3d1b99f3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_4.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_5.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_5.xml deleted file mode 100644 index 4bcc949e746..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_5.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_6.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_6.xml deleted file mode 100644 index aaede3fb69e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_6.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_7.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_7.xml deleted file mode 100644 index 32e99d04a2d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/oracle/MethodBreakpointStop_7.xml +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/test/BreakpointStopCallee.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/test/BreakpointStopCallee.java deleted file mode 100644 index fb8e6121e82..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/test/BreakpointStopCallee.java +++ /dev/null @@ -1,11 +0,0 @@ - -public class BreakpointStopCallee { - - private int x; - - public int main(int a) { - x=a+4; - return a*x; - } - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/test/BreakpointStopCallerAndLoop.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/test/BreakpointStopCallerAndLoop.java deleted file mode 100644 index b8d2bb13d48..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodBreakpointsWithHitcountTest/test/BreakpointStopCallerAndLoop.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class BreakpointStopCallerAndLoop { - - private BreakpointStopCallee callee; - - private int x; - - public int loop(){ - for(int i=0;i<=3;i++){ - x++; - } - return x; - } - - public int main(int a) { - a++; - x = callee.main(a); - x = callee.main(a); - x++; - loop(); - loop(); - loop(); - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObject/oracle/MethodCallOnObject.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObject/oracle/MethodCallOnObject.xml deleted file mode 100644 index f203ce67b1a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObject/oracle/MethodCallOnObject.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObject/test/MethodCallOnObject.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObject/test/MethodCallOnObject.java deleted file mode 100644 index c0d5259f1f5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObject/test/MethodCallOnObject.java +++ /dev/null @@ -1,11 +0,0 @@ - -public class MethodCallOnObject { - public static int main() { - MethodCallOnObject x = new MethodCallOnObject(); - return x.doSomething(); - } - - public int doSomething() { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObjectWithException/oracle/MethodCallOnObjectWithException.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObjectWithException/oracle/MethodCallOnObjectWithException.xml deleted file mode 100644 index cd0e1a140f0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObjectWithException/oracle/MethodCallOnObjectWithException.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObjectWithException/test/MethodCallOnObjectWithException.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObjectWithException/test/MethodCallOnObjectWithException.java deleted file mode 100644 index 9ffcae1e7aa..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallOnObjectWithException/test/MethodCallOnObjectWithException.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class MethodCallOnObjectWithException { - public static int main() { - try { - MethodCallOnObjectWithException x = new MethodCallOnObjectWithException(); - return x.doSomething(); - } - catch (NullPointerException e) { - MethodCallOnObjectWithException y = new MethodCallOnObjectWithException(); - return y.return42(); - } - } - - public int doSomething() { - MethodCallOnObjectWithException x = null; - return x.return42(); - } - - public int return42() { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallParallelTest/oracle/MethodCallParallelTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallParallelTest/oracle/MethodCallParallelTest.xml deleted file mode 100644 index 5dcbe5e35a5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallParallelTest/oracle/MethodCallParallelTest.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallParallelTest/test/MethodCallParallelTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallParallelTest/test/MethodCallParallelTest.java deleted file mode 100644 index 5f62221a2b7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallParallelTest/test/MethodCallParallelTest.java +++ /dev/null @@ -1,27 +0,0 @@ - -public class MethodCallParallelTest { - public int main() { - int a = a(); - int x = x(); - return a * x; - } - - public int a() { - int b1 = b(); - int b2 = b(); - int c = c(); - return b1 + b2 + c; - } - - public int b() { - return c(); - } - - public int c() { - return 42; - } - - public int x() { - return 2; - } -} 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 deleted file mode 100644 index 6d7fa2b70d2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallReturnTests/oracle/MethodCallReturnTests.xml +++ /dev/null @@ -1,925 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallReturnTests/test/MethodCallReturnTests.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallReturnTests/test/MethodCallReturnTests.java deleted file mode 100644 index 46af561f261..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallReturnTests/test/MethodCallReturnTests.java +++ /dev/null @@ -1,50 +0,0 @@ - -public class MethodCallReturnTests { - public static int staticValue; - - private int value; - - public int main() { - noReturn(); - emptyReturn(); - valueReturn(); // Ignore result - int returnedValue1 = valueReturn(); - noReturnStatic(); - emptyReturnStatic(); - valueReturnStatic(); // Ignore result - int returnedValue2 = valueReturnStatic(); - return returnedValue1 + returnedValue2; - } - - public static void noReturnStatic() { - staticValue = 0; - } - - public static void emptyReturnStatic() { - staticValue++; - return; - staticValue = 42; - } - - public static int valueReturnStatic() { - staticValue++; - return staticValue; - staticValue = 4711; - } - - public void noReturn() { - value = 0; - } - - public void emptyReturn() { - value++; - return; - value = 43; - } - - public int valueReturn() { - value++; - return value; - value = 4712; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallStackTest/oracle/MethodCallStackTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallStackTest/oracle/MethodCallStackTest.xml deleted file mode 100644 index c1a21ff5e83..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallStackTest/oracle/MethodCallStackTest.xml +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallStackTest/test/MethodCallStackTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallStackTest/test/MethodCallStackTest.java deleted file mode 100644 index e275d2c4991..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallStackTest/test/MethodCallStackTest.java +++ /dev/null @@ -1,16 +0,0 @@ -public class MethodCallStackTest { - public static boolean magic(int x, int y) { - boolean first = positive(x); - boolean second = positive(y); - return first && second; - } - - public static boolean positive(int x) { - if (x >= 0) { - return true; - } - else { - return false; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodFormatTest/oracle/MethodFormatTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodFormatTest/oracle/MethodFormatTest.xml deleted file mode 100644 index e4dd8bcef0e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodFormatTest/oracle/MethodFormatTest.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodFormatTest/test/MethodFormatTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodFormatTest/test/MethodFormatTest.java deleted file mode 100644 index b540f4191ef..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodFormatTest/test/MethodFormatTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class MethodFormatTest { - public static int main() {return a();} - - public static int a() {return b();} public static int b() { return c(); }public static int c() {return d();} - - public static int d() {return e(); - }public static int e() {return f();} - - public static int f() {return g(); - }public static int g() { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallTest/oracle/MethodHierarchyCallTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallTest/oracle/MethodHierarchyCallTest.xml deleted file mode 100644 index 9f9785ef8c3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallTest/oracle/MethodHierarchyCallTest.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallTest/test/MethodHierarchyCallTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallTest/test/MethodHierarchyCallTest.java deleted file mode 100644 index 386c285b27e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallTest/test/MethodHierarchyCallTest.java +++ /dev/null @@ -1,18 +0,0 @@ - -public class MethodHierarchyCallTest { - public int main() { - return a(); - } - - public int a() { - return b(); - } - - public int b() { - return c(); - } - - public int c() { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallWithExceptionTest/oracle/MethodHierarchyCallWithExceptionTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallWithExceptionTest/oracle/MethodHierarchyCallWithExceptionTest.xml deleted file mode 100644 index a231d4e0512..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallWithExceptionTest/oracle/MethodHierarchyCallWithExceptionTest.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallWithExceptionTest/test/MethodHierarchyCallWithExceptionTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallWithExceptionTest/test/MethodHierarchyCallWithExceptionTest.java deleted file mode 100644 index 25e3288664a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodHierarchyCallWithExceptionTest/test/MethodHierarchyCallWithExceptionTest.java +++ /dev/null @@ -1,27 +0,0 @@ - -public class MethodHierarchyCallWithExceptionTest { - /*@ requires true; - @ ensures true; - @*/ - public void main() { - a(); - } - - public void a() { - try { - b(); - } - catch (RuntimeException e) { - int ae = -1; - } - int a1 = 1; - } - - public void b() { - c(); - } - - public void c() { - throw new RuntimeException(); - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_returnMethod.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_returnMethod.xml deleted file mode 100644 index dba593b4fd3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_returnMethod.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_returnMethod_ParamNotNull.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_returnMethod_ParamNotNull.xml deleted file mode 100644 index a3c52e48f42..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_returnMethod_ParamNotNull.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_voidMethod.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_voidMethod.xml deleted file mode 100644 index bf90f976941..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_voidMethod.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_voidMethod_ParamNotNull.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_voidMethod_ParamNotNull.xml deleted file mode 100644 index 782e02e84d3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/oracle/MethodPOTest_voidMethod_ParamNotNull.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/test/MethodPOTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/test/MethodPOTest.java deleted file mode 100644 index fc415206556..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPOTest/test/MethodPOTest.java +++ /dev/null @@ -1,12 +0,0 @@ - -public class MethodPOTest { - private int x; - - public static void voidMethod(MethodPOTest param) { - int value = param.x; - } - - public static int returnMethod(MethodPOTest param) { - return param.x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_elsebranch.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_elsebranch.xml deleted file mode 100644 index 417de0a83c1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_elsebranch.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_if.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_if.xml deleted file mode 100644 index 5fd11138758..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_if.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_if_surroundingStatements.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_if_surroundingStatements.xml deleted file mode 100644 index 7e22a4a0eed..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_if_surroundingStatements.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_ifbranch.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_ifbranch.xml deleted file mode 100644 index e5faf75751d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_ifbranch.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_noReturn.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_noReturn.xml deleted file mode 100644 index 0a3d72e7d6d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_noReturn.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_noReturn_precondition.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_noReturn_precondition.xml deleted file mode 100644 index 0a3d72e7d6d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_noReturn_precondition.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_withReturn.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_withReturn.xml deleted file mode 100644 index 75a4a136234..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_withReturn.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_withReturn_precondition.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_withReturn_precondition.xml deleted file mode 100644 index 75a4a136234..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_doSomething_withReturn_precondition.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_noReturn.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_noReturn.xml deleted file mode 100644 index c7a41ca9b2a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_noReturn.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_noReturn_precondition.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_noReturn_precondition.xml deleted file mode 100644 index c7a41ca9b2a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_noReturn_precondition.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_withReturn.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_withReturn.xml deleted file mode 100644 index c91984f2884..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_withReturn.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_withReturn_precondition.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_withReturn_precondition.xml deleted file mode 100644 index c91984f2884..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/oracle/MethodPartPOTest_voidMethod_withReturn_precondition.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/test/MethodPartPOTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/test/MethodPartPOTest.java deleted file mode 100644 index 8471187756e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodPartPOTest/test/MethodPartPOTest.java +++ /dev/null @@ -1,39 +0,0 @@ - -public class MethodPartPOTest { - private int field; - - public static final int CONSTANT = 2; - - public void voidMethod(boolean x, int y) { - if (x) { - int a = 2 * y; - } - else { - int b = 3 * y; - return; - } - } - - public int doSomething(int asdf, String a, boolean b) { - int x = 0; - if (asdf < 0) { - x = x * -1; - x += 2; - } - else { - x -= 42; - return x; - } - x = 1 * asdf; - int y = 2 + MethodPartPOTest.CONSTANT + field; - int doubleValue = doubleValue(x); - int z = x + y + doubleValue; - return z; - } - - private int doubleValue(int value) { - int result; - result = value + value; - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedDoWhileTest/oracle/NestedDoWhileTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nestedDoWhileTest/oracle/NestedDoWhileTest.xml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedDoWhileTest/test/NestedDoWhileTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nestedDoWhileTest/test/NestedDoWhileTest.java deleted file mode 100644 index 42714212647..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedDoWhileTest/test/NestedDoWhileTest.java +++ /dev/null @@ -1,26 +0,0 @@ - -public class NestedDoWhileTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int result = 0; - int i = 0; - do { - do { - do { - result ++; - i++; - } - while (i < 2); - result ++; - i++; - } - while (i < 3); - result ++; - i++; - } - while (i < 3); - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedForTest/oracle/NestedForTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nestedForTest/oracle/NestedForTest.xml deleted file mode 100644 index 067a8ab1292..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedForTest/oracle/NestedForTest.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedForTest/test/NestedForTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nestedForTest/test/NestedForTest.java deleted file mode 100644 index 6184e5edb0b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedForTest/test/NestedForTest.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class NestedForTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int result = 0; - for (int i = 0; i < 3; i++) { - for (; i < 3; i++) { - for (; i < 2; i++) { - result ++; - } - result ++; - } - result ++; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedLoopsWithContinue/oracle/NestedLoopsWithContinue.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nestedLoopsWithContinue/oracle/NestedLoopsWithContinue.xml deleted file mode 100644 index 8f166b573e9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedLoopsWithContinue/oracle/NestedLoopsWithContinue.xml +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedLoopsWithContinue/test/NestedLoopsWithContinue.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nestedLoopsWithContinue/test/NestedLoopsWithContinue.java deleted file mode 100644 index fb756a67ce3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedLoopsWithContinue/test/NestedLoopsWithContinue.java +++ /dev/null @@ -1,33 +0,0 @@ - -public class NestedLoopsWithContinue { - /*@ ensures \result == 10; - @*/ - public static int main() { - int[] array = {1, 2, 3, 4}; - return sum(array); - } - - /*@ requires array != null; - @ ensures \result == (\sum int j; 0 <= j && j < array.length; j); - @*/ - public static int sum(int[] array) { - int result = 0; - int i = -1; - outer: while (i < array.length - 1) { - i++; -// /*@ loop_invariant i >= 0 && i <= array.length && result == (\sum int j; 0 <= j && j < i; array[j]); -// @ decreasing array.length - i; -// @ assignable \strictly_nothing; -// @*/ - int j = 0; - while (true) { - result++; - if (j == i) { - continue outer; - } - j++; - } - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedWhileTest/oracle/NestedWhileTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nestedWhileTest/oracle/NestedWhileTest.xml deleted file mode 100644 index b145fcba554..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedWhileTest/oracle/NestedWhileTest.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedWhileTest/test/NestedWhileTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nestedWhileTest/test/NestedWhileTest.java deleted file mode 100644 index 1b6047dcd8e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nestedWhileTest/test/NestedWhileTest.java +++ /dev/null @@ -1,23 +0,0 @@ - -public class NestedWhileTest { - /*@ requires true; - @ ensures true; - @*/ - public int mainNested() { - int result = 0; - int i = 0; - while (i < 3) { - while (i < 3) { - while (i < 2) { - result ++; - i++; - } - result ++; - i++; - } - result ++; - i++; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingArraysIndexOf/oracle/Arrays_hiding_off.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingArraysIndexOf/oracle/Arrays_hiding_off.xml deleted file mode 100644 index c5a778da991..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingArraysIndexOf/oracle/Arrays_hiding_off.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingArraysIndexOf/oracle/Arrays_hiding_side_proof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingArraysIndexOf/oracle/Arrays_hiding_side_proof.xml deleted file mode 100644 index 88c4297b0f2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingArraysIndexOf/oracle/Arrays_hiding_side_proof.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingArraysIndexOf/test/Arrays.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingArraysIndexOf/test/Arrays.java deleted file mode 100644 index 1135d2e18cb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingArraysIndexOf/test/Arrays.java +++ /dev/null @@ -1,26 +0,0 @@ -public class Arrays { - public static int indexOf(Object[] array, Filter filter) { - int acceptedIndex = -1; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length; - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (acceptedIndex < 0 && i < array.length) { - if (filter.accept(array[i])) { - acceptedIndex = i; - } - i++; - } - return acceptedIndex; - } - - public static interface Filter { - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \strictly_nothing; - @*/ - public boolean accept(/*@ nullable @*/ Object object); - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingComplexPrecondition/oracle/ComplexPrecondition_hiding_off.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingComplexPrecondition/oracle/ComplexPrecondition_hiding_off.xml deleted file mode 100644 index 65b9ca076f7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingComplexPrecondition/oracle/ComplexPrecondition_hiding_off.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingComplexPrecondition/oracle/ComplexPrecondition_hiding_side_proof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingComplexPrecondition/oracle/ComplexPrecondition_hiding_side_proof.xml deleted file mode 100644 index 6b7f8a93516..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingComplexPrecondition/oracle/ComplexPrecondition_hiding_side_proof.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingComplexPrecondition/test/ComplexPrecondition.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingComplexPrecondition/test/ComplexPrecondition.java deleted file mode 100644 index cf930e087a5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingComplexPrecondition/test/ComplexPrecondition.java +++ /dev/null @@ -1,47 +0,0 @@ - -public class ComplexPrecondition { - public static int main(int x, int y) { - int magicValue = magic(x, y); - return magicValue; - } - - /*@ normal_behavior - @ requires x >= 0 && y < 0; - @ ensures \result == subFirst(x, y); - @ - @ also - @ - @ normal_behavior - @ requires !(x >= 0 && y < 0); - @ ensures \result == subSecond(x, y); - @*/ - public /*@ pure @*/ static int magic(int x, int y) { - return subFirst(x, y); - } - - /*@ normal_behavior - @ requires x >= 0 && y < 0; - @ ensures \result == 42; - @*/ - public /*@ pure @*/ static int subFirst(int x, int y) { - if (x >= 0 && y < 0) { - return 42; - } - else { - return 0; - } - } - - /*@ normal_behavior - @ requires !(x >= 0 && y < 0); - @ ensures \result == -4711; - @*/ - public /*@ pure @*/ static int subSecond(int x, int y) { - if (!(x >= 0 && y < 0)) { - return -4711; - } - else { - return 0; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/oracle/LoopInvariantWithSplittingQuery_hiding_off.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/oracle/LoopInvariantWithSplittingQuery_hiding_off.xml deleted file mode 100644 index 28db4150035..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/oracle/LoopInvariantWithSplittingQuery_hiding_off.xml +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/oracle/LoopInvariantWithSplittingQuery_hiding_side_proof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/oracle/LoopInvariantWithSplittingQuery_hiding_side_proof.xml deleted file mode 100644 index 2a18f2562da..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/oracle/LoopInvariantWithSplittingQuery_hiding_side_proof.xml +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/test/LoopInvariantWithSplittingQuery.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/test/LoopInvariantWithSplittingQuery.java deleted file mode 100644 index d551f125ee1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingLoopInvariantWithSplittingQuery/test/LoopInvariantWithSplittingQuery.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class LoopInvariantWithSplittingQuery { - public static int main(int x) { - /*@ loop_invariant magic(x) >= 0; - @ decreasing magic(x); - @ assignable \strictly_nothing; - @*/ - while (magic(x) > 0) { - x--; - } - return x; - } - - private static int magic(int x) { - if (x >= 0) { - return x; - } - else { - return -x; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryInPrecondition/oracle/QueryInPrecondition_hiding_off.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryInPrecondition/oracle/QueryInPrecondition_hiding_off.xml deleted file mode 100644 index e052b844b93..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryInPrecondition/oracle/QueryInPrecondition_hiding_off.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryInPrecondition/oracle/QueryInPrecondition_hiding_side_proof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryInPrecondition/oracle/QueryInPrecondition_hiding_side_proof.xml deleted file mode 100644 index dc90dfbbb25..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryInPrecondition/oracle/QueryInPrecondition_hiding_side_proof.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryInPrecondition/test/QueryInPrecondition.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryInPrecondition/test/QueryInPrecondition.java deleted file mode 100644 index a8347f83e84..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryInPrecondition/test/QueryInPrecondition.java +++ /dev/null @@ -1,57 +0,0 @@ - -public class QueryInPrecondition { - public static int main(int x, int y) { - int magicValue = magic(x, y); - return magicValue; - } - - /*@ normal_behavior - @ requires xPre(x) && y < 0; - @ ensures \result == subFirst(x, y); - @ also - @ normal_behavior - @ requires !(xPre(x) && y < 0); - @ ensures \result == subSecond(x, y); - @*/ - public /*@ pure @*/ static int magic(int x, int y) { - return subFirst(x, y); - } - - /*@ normal_behavior - @ requires xPre(x) && y < 0; - @ ensures \result == 42; - @*/ - public /*@ pure @*/ static int subFirst(int x, int y) { - if (x >= 0 && y < 0) { - return 42; - } - else { - return 0; - } - } - - /*@ normal_behavior - @ ensures \result == x >= 0; - @*/ - public /*@ pure @*/ static boolean xPre(int x) { - if (x >= 0) { - return true; - } - else { - return false; - } - } - - /*@ normal_behavior - @ requires !(x >= 0 && y < 0); - @ ensures \result == -4711; - @*/ - public /*@ pure @*/ static int subSecond(int x, int y) { - if (!(x >= 0 && y < 0)) { - return -4711; - } - else { - return 0; - } - } -} 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 deleted file mode 100644 index eb347b80d84..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_off.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 602ef674b7d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_side_proof.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/test/QueryWithFields.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/test/QueryWithFields.java deleted file mode 100644 index 49d4ead0986..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/test/QueryWithFields.java +++ /dev/null @@ -1,48 +0,0 @@ - -public class QueryWithFields { - private int instanceField; - - private static int classField; - - public int main(int x) { - int magicValue = magic(x); - return magicValue; - } - - /*@ normal_behavior - @ ensures \result == subMagic(x); - @*/ - public /*@ pure @*/ int magic(int x) { - return subMagic(x); - } - - /*@ normal_behavior - @ requires x >= 0 && (instanceField == 11 && classField == 66); - @ ensures \result == 421166; - @ - @ also - @ - @ normal_behavior - @ requires x >= 0 && (instanceField != 11 || classField != 66); - @ ensures \result == 42; - @ - @ also - @ - @ normal_behavior - @ requires x < 0; - @ ensures \result == -4711; - @*/ - public /*@ pure @*/ int subMagic(int x) { - if (x >= 0) { - if (instanceField == 11 && classField == 66) { - return 421166; - } - else { - return 42; - } - } - else { - return -4711; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithSideEffects/oracle/QueryWithSideEffects_hiding_off.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithSideEffects/oracle/QueryWithSideEffects_hiding_off.xml deleted file mode 100644 index bfcdbdfd9da..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithSideEffects/oracle/QueryWithSideEffects_hiding_off.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithSideEffects/oracle/QueryWithSideEffects_hiding_side_proof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithSideEffects/oracle/QueryWithSideEffects_hiding_side_proof.xml deleted file mode 100644 index f16f40775fa..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithSideEffects/oracle/QueryWithSideEffects_hiding_side_proof.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithSideEffects/test/QueryWithSideEffects.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithSideEffects/test/QueryWithSideEffects.java deleted file mode 100644 index 6670e8314c6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithSideEffects/test/QueryWithSideEffects.java +++ /dev/null @@ -1,45 +0,0 @@ - -public class QueryWithSideEffects { - private int instanceField; - - private static int classField; - - public int main(int x) { - int magicValue = magic(x); - return magicValue + instanceField + classField; - } - - /*@ normal_behavior - @ ensures \result == subMagic(x); - @ ensures x >= 0 ==> instanceField == 12; - @ ensures x < 0 ==> instanceField == -21; - @ ensures x >= 0 ==> classField == 66; - @ ensures x < 0 ==> classField == -55; - @*/ - public /*@ pure @*/ int magic(int x) { - return subMagic(x); - } - - /*@ normal_behavior - @ requires x >= 0; - @ ensures \result == 42; - @ ensures instanceField == 12; - @ ensures classField == 66; - @ - @ also - @ - @ normal_behavior - @ requires x < 0; - @ ensures \result == -4711; - @ ensures instanceField == -21; - @ ensures classField == -55; - @*/ - public /*@ pure @*/ int subMagic(int x) { - if (x >= 0) { - return 42; - } - else { - return -4711; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleBooleanQuery/oracle/SimpleBooleanQuery_hiding_off.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleBooleanQuery/oracle/SimpleBooleanQuery_hiding_off.xml deleted file mode 100644 index b62a2adebda..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleBooleanQuery/oracle/SimpleBooleanQuery_hiding_off.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleBooleanQuery/oracle/SimpleBooleanQuery_hiding_side_proof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleBooleanQuery/oracle/SimpleBooleanQuery_hiding_side_proof.xml deleted file mode 100644 index 549e036cf29..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleBooleanQuery/oracle/SimpleBooleanQuery_hiding_side_proof.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleBooleanQuery/test/SimpleBooleanQuery.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleBooleanQuery/test/SimpleBooleanQuery.java deleted file mode 100644 index ba324e061d8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleBooleanQuery/test/SimpleBooleanQuery.java +++ /dev/null @@ -1,33 +0,0 @@ - -public class SimpleBooleanQuery { - public static int main(boolean x) { - int magicValue = magic(x); - return magicValue; - } - - /*@ normal_behavior - @ ensures \result == subMagic(x); - @*/ - public /*@ pure @*/ static int magic(boolean x) { - return subMagic(x); - } - - /*@ normal_behavior - @ requires x; - @ ensures \result == 42; - @ - @ also - @ - @ normal_behavior - @ requires !x; - @ ensures \result == -4711; - @*/ - public /*@ pure @*/ static int subMagic(boolean x) { - if (x) { - return 42; - } - else { - return -4711; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_mainWithSymbolicUpdates_hiding_side_proof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_mainWithSymbolicUpdates_hiding_side_proof.xml deleted file mode 100644 index 1e42c40703b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_mainWithSymbolicUpdates_hiding_side_proof.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_mainWithUpdates_hiding_side_proof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_mainWithUpdates_hiding_side_proof.xml deleted file mode 100644 index de32db974d9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_mainWithUpdates_hiding_side_proof.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_main_hiding_off.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_main_hiding_off.xml deleted file mode 100644 index 9f65cc36898..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_main_hiding_off.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_main_hiding_side_proof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_main_hiding_side_proof.xml deleted file mode 100644 index db3b6b17b85..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/oracle/SimpleIntQuery_main_hiding_side_proof.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/test/SimpleIntQuery.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/test/SimpleIntQuery.java deleted file mode 100644 index 0a5b7c0308c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleIntQuery/test/SimpleIntQuery.java +++ /dev/null @@ -1,69 +0,0 @@ - -public class SimpleIntQuery { - public static int main(int x) { - int magicValue = magic(x); - return magicValue; - } - - public static int mainWithUpdates(int x) { - x = 11; - int magicValue = magic(x); - return magicValue; - } - - public static int mainWithSymbolicUpdates(int x) { - x = x + 11; - int magicValue = magic(x); - return magicValue; - } - - /*@ normal_behavior - @ ensures \result == subMagic(x); - @*/ - public /*@ pure @*/ static int magic(int x) { - return subMagic(x); - } - - /*@ normal_behavior - @ requires x >= 0; - @ ensures \result == 42; - @ - @ also - @ - @ normal_behavior - @ requires x < 0; - @ ensures \result == -4711; - @*/ - public /*@ pure @*/ static int subMagic(int x) { - if (x >= 0) { - return 42; - } - else { - return -4711; - } - } - - /*@ normal_behavior - @ requires true; - @ ensures true; - @*/ - public /*@ pure @*/ static boolean preCheck(int x) { - return true; - } - - /*@ normal_behavior - @ requires value != null; - @ ensures true; - @ - @ also - @ - @ exceptional_behavior - @ requires value == null; - @ signals (NullPointerException) true; - @*/ - public static void exceptionTest(/*@ nullable @*/ String value) throws NullPointerException { - if (value.length() == 0) { - return; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleObjectQuery/oracle/SimpleObjectQuery_hiding_off.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleObjectQuery/oracle/SimpleObjectQuery_hiding_off.xml deleted file mode 100644 index b30bf1c377b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleObjectQuery/oracle/SimpleObjectQuery_hiding_off.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleObjectQuery/oracle/SimpleObjectQuery_hiding_side_proof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleObjectQuery/oracle/SimpleObjectQuery_hiding_side_proof.xml deleted file mode 100644 index 122d09b20f8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleObjectQuery/oracle/SimpleObjectQuery_hiding_side_proof.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleObjectQuery/test/SimpleObjectQuery.java b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleObjectQuery/test/SimpleObjectQuery.java deleted file mode 100644 index c5ab3750016..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingSimpleObjectQuery/test/SimpleObjectQuery.java +++ /dev/null @@ -1,35 +0,0 @@ - -public class SimpleObjectQuery { - public static final Object INSTANCE = new Object(); - - public static int main(Object x) { - int magicValue = magic(x); - return magicValue; - } - - /*@ normal_behavior - @ ensures \result == subMagic(x); - @*/ - public /*@ pure @*/ static int magic(Object x) { - return subMagic(x); - } - - /*@ normal_behavior - @ requires x == INSTANCE; - @ ensures \result == 42; - @ - @ also - @ - @ normal_behavior - @ requires x != INSTANCE; - @ ensures \result == -4711; - @*/ - public /*@ pure @*/ static int subMagic(Object x) { - if (x == INSTANCE) { - return 42; - } - else { - return -4711; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/prettyPrint/oracle/PrettyPrintTest_Disabled.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/prettyPrint/oracle/PrettyPrintTest_Disabled.xml deleted file mode 100644 index 65d3604a8fd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/prettyPrint/oracle/PrettyPrintTest_Disabled.xml +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/prettyPrint/oracle/PrettyPrintTest_Enabled.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/prettyPrint/oracle/PrettyPrintTest_Enabled.xml deleted file mode 100644 index 4327dcc34b7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/prettyPrint/oracle/PrettyPrintTest_Enabled.xml +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/prettyPrint/test/PrettyPrintTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/prettyPrint/test/PrettyPrintTest.java deleted file mode 100644 index 12202a5b21f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/prettyPrint/test/PrettyPrintTest.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class PrettyPrintTest { - public static int main(int x) { - if (x >= 0) { - return magic(); - } - else { - /*@ loop_invariant x <= -1; - @ decreasing 0 - x; - @ assignable \strictly_nothing; - @*/ - while (x < -1) { - x++; - } - return -1; - } - } - - /*@ normal_behavior - @ ensures \result == 42; - @*/ - private /*@ pure @*/ static int magic() { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/recursiveFibonacci/oracle/RecursiveFibonacci.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/recursiveFibonacci/oracle/RecursiveFibonacci.xml deleted file mode 100644 index e9d6e11e834..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/recursiveFibonacci/oracle/RecursiveFibonacci.xml +++ /dev/null @@ -1,2884 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/recursiveFibonacci/test/RecursiveFibonacci.java b/key.core.symbolic_execution/src/test/resources/testcase/set/recursiveFibonacci/test/RecursiveFibonacci.java deleted file mode 100644 index 80882190c1a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/recursiveFibonacci/test/RecursiveFibonacci.java +++ /dev/null @@ -1,27 +0,0 @@ - -public class RecursiveFibonacci { - /*@ requires true; - @ ensures true; - @*/ - public int fibonacci10() { - return fibonacci(10); - } - - /*@ requires true; - @ ensures true; - @*/ - public int fibonacci(int n) { - if (n == 0) { - return 0; - } - else if (n == 1) { - return 1; - } - else if (n >= 2) { - return fibonacci(n - 1) + fibonacci(n - 2); - } - else { - throw new IllegalArgumentException("n is negative."); - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleConstructorTest/oracle/SimpleConstructorTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/simpleConstructorTest/oracle/SimpleConstructorTest.xml deleted file mode 100644 index 76cfb59f3bf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleConstructorTest/oracle/SimpleConstructorTest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleConstructorTest/test/SimpleConstructorTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/simpleConstructorTest/test/SimpleConstructorTest.java deleted file mode 100644 index fe4167120f6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleConstructorTest/test/SimpleConstructorTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class SimpleConstructorTest { - private int x; - - public SimpleConstructorTest(int x) { - super(); - this.x = x; - } - - public static int main() { - SimpleConstructorTest obj = new SimpleConstructorTest(42); - return obj.x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleIf/oracle/SimpleIf.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/simpleIf/oracle/SimpleIf.xml deleted file mode 100644 index 50346632a59..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleIf/oracle/SimpleIf.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleIf/oracle/SimpleIf_NoConditionSimplification.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/simpleIf/oracle/SimpleIf_NoConditionSimplification.xml deleted file mode 100644 index efc99d2913f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleIf/oracle/SimpleIf_NoConditionSimplification.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleIf/test/SimpleIf.java b/key.core.symbolic_execution/src/test/resources/testcase/set/simpleIf/test/SimpleIf.java deleted file mode 100644 index 2e3e8ea21f1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleIf/test/SimpleIf.java +++ /dev/null @@ -1,32 +0,0 @@ - -public class SimpleIf { - /* Start - * self.min(_i_i, _j_j) - * int result; - * if (i < j) - * => BC: _j_j >= 1 + _i_i - * result = i; - * return result; - * return _i_i - * - * => BC: _j_j <= _i_i - * result = j; - * return result; - * return _j_j - * - */ - - /*@ requires true; - @ ensures true; - @*/ - public int min(int i, int j) { - int result; - if (i < j) { - result = i; - } - else { - result = j; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleMethodCallStackTest/oracle/SimpleMethodCallStackTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/simpleMethodCallStackTest/oracle/SimpleMethodCallStackTest.xml deleted file mode 100644 index c2193f4cdda..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleMethodCallStackTest/oracle/SimpleMethodCallStackTest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleMethodCallStackTest/test/SimpleMethodCallStackTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/simpleMethodCallStackTest/test/SimpleMethodCallStackTest.java deleted file mode 100644 index e675d834ef2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleMethodCallStackTest/test/SimpleMethodCallStackTest.java +++ /dev/null @@ -1,10 +0,0 @@ -public class SimpleMethodCallStackTest { - public static int magic(int x, int y) { - int tempx = nothing(x); - return tempx; - } - - public static int nothing(int x) { - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleNullPointerSplitTest/oracle/SimpleNullPointerSplitTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/simpleNullPointerSplitTest/oracle/SimpleNullPointerSplitTest.xml deleted file mode 100644 index ef0e8e4c9b9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleNullPointerSplitTest/oracle/SimpleNullPointerSplitTest.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleNullPointerSplitTest/test/SimpleNullPointerSplitTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/simpleNullPointerSplitTest/test/SimpleNullPointerSplitTest.java deleted file mode 100644 index 94972c992ac..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleNullPointerSplitTest/test/SimpleNullPointerSplitTest.java +++ /dev/null @@ -1,8 +0,0 @@ - -public class SimpleNullPointerSplitTest { - private int x; - - public int main(SimpleNullPointerSplitTest instance) { - return instance.x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleStaticContractTest/oracle/SimpleStaticContractTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/simpleStaticContractTest/oracle/SimpleStaticContractTest.xml deleted file mode 100644 index b88927eaa2e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleStaticContractTest/oracle/SimpleStaticContractTest.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleStaticContractTest/test/SimpleStaticContractTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/simpleStaticContractTest/test/SimpleStaticContractTest.java deleted file mode 100644 index f5afa566ba0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/simpleStaticContractTest/test/SimpleStaticContractTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class SimpleStaticContractTest { - public static int main(int x) { - return magic(x); - } - - /*@ normal_behavior - @ requires x >= 10; - @ ensures \result == 10; - @*/ - public static int magic(int x) { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/statementKindTest/oracle/StatementKindTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/statementKindTest/oracle/StatementKindTest.xml deleted file mode 100644 index ffd13edd246..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/statementKindTest/oracle/StatementKindTest.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/statementKindTest/test/StatementKindTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/statementKindTest/test/StatementKindTest.java deleted file mode 100644 index 4bca9045fa6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/statementKindTest/test/StatementKindTest.java +++ /dev/null @@ -1,29 +0,0 @@ - -public class StatementKindTest { - public void main() { - // void method - foo(); - // Declarations - int i; - boolean b = true; - // Assignments - i = 0; - i = i + 1; - i += 2; - i ++; - i --; - i -= 2; - i *= 2; - i /= 2; - i %= 4; - i = get42(); - i = (2 + 4) * 2; - } - - public void foo() { - } - - public int get42() { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/statements/oracle/FlatSteps.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/statements/oracle/FlatSteps.xml deleted file mode 100644 index f17a250f463..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/statements/oracle/FlatSteps.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/statements/test/FlatSteps.java b/key.core.symbolic_execution/src/test/resources/testcase/set/statements/test/FlatSteps.java deleted file mode 100644 index 39e46c4ae3f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/statements/test/FlatSteps.java +++ /dev/null @@ -1,20 +0,0 @@ - -public class FlatSteps { - /* Start - * self.doSomething(_asdf_i, _a_i, _b_i) - * int x = 1; - * int y = 2; - * int z = 3; - * return - * - */ - - /*@ requires true; - @ ensures true; - @*/ - public void doSomething(int asdf, String a, boolean b) { - int x = 1; - int y = 2; - int z = 3; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainBooleanResultUnspecifiedUnused.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainBooleanResultUnspecifiedUnused.xml deleted file mode 100644 index b25f81ed3e0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainBooleanResultUnspecifiedUnused.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainBooleanResultUnused.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainBooleanResultUnused.xml deleted file mode 100644 index 2346a5b40e9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainBooleanResultUnused.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainConstructor.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainConstructor.xml deleted file mode 100644 index 13dd47739e6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainConstructor.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptional.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptional.xml deleted file mode 100644 index 99a5c3f7766..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptional.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptionalConstructor.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptionalConstructor.xml deleted file mode 100644 index c3daffc63db..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptionalConstructor.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptionalUnused.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptionalUnused.xml deleted file mode 100644 index 1d99c3547b9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptionalUnused.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptionalVoid.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptionalVoid.xml deleted file mode 100644 index 2f58ae16b70..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainExceptionalVoid.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainNoArgs.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainNoArgs.xml deleted file mode 100644 index d38ecf4a9f5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainNoArgs.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainOnObject.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainOnObject.xml deleted file mode 100644 index 1b468a5dbbc..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainOnObject.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainResult.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainResult.xml deleted file mode 100644 index 635c0ec617b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainResult.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainResultNotSpecified.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainResultNotSpecified.xml deleted file mode 100644 index e9fa0bab90f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainResultNotSpecified.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainVoidMethod.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainVoidMethod.xml deleted file mode 100644 index 1a252e66ae6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/oracle/StaticContractTest_mainVoidMethod.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/test/StaticContractTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/test/StaticContractTest.java deleted file mode 100644 index 489fcf778d2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticContractTest/test/StaticContractTest.java +++ /dev/null @@ -1,141 +0,0 @@ - -public class StaticContractTest { - private static int value; - - public static int mainVoidMethod() { - voidMethod(); - return value; - } - - /*@ normal_behavior - @ ensures value == 42; - @*/ - public static void voidMethod() { - value = 42; - } - - public static int mainNoArgs() { - return noArgs(); - } - - /*@ normal_behavior - @ ensures \result == 42; - @*/ - public static int noArgs() { - return 42; - } - - public static int mainResult(int x) { - return result(x); - } - - /*@ normal_behavior - @ requires x >= 0; - @ ensures \result == x * x; - @*/ - public static int result(int x) { - return x*x; - } - - - - public static int mainResultNotSpecified(int x) { - return result(x); - } - - /*@ normal_behavior - @ requires x >= 0; - @ ensures true; - @*/ - public static int resultNotSpecified(int x) { - return x*x; - } - - public static void mainExceptionalVoid(boolean x) throws Exception { - exceptionalVoid(x); - } - - /*@ exceptional_behavior - @ signals_only Exception; - @ signals (Exception) true; - @*/ - public static void exceptionalVoid(boolean x) throws Exception { - throw new Exception(); - } - - public static void mainExceptionalUnused(boolean x) throws Exception { - exceptional(x); - } - - public static boolean mainExceptional(boolean x) throws Exception { - return exceptional(x); - } - - /*@ exceptional_behavior - @ signals_only Exception; - @ signals (Exception) true; - @*/ - public static boolean exceptional(boolean x) throws Exception { - throw new Exception(); - } - - public static void mainBooleanResultUnused(boolean x) { - booleanResult(x); - } - - /*@ normal_behavior - @ ensures \result == !x; - @*/ - public static boolean booleanResult(boolean x) { - return !x; - } - - public static void mainBooleanResultUnspecifiedUnused(boolean x) { - booleanResultUnspecified(x); - } - - /*@ normal_behavior - @ ensures true; - @*/ - public static boolean booleanResultUnspecified(boolean x) { - return !x; - } - - public static void mainExceptionalConstructor() throws Exception { - new IntWrapper(); - } - - public static int mainConstructor() { - IntWrapper w = new IntWrapper(42); - return w.value; - } - - public static int mainOnObject(IntWrapper x) { - return x.getValue(); - } - - public static class IntWrapper { - public int value; - - /*@ exceptional_behavior - @ signals_only Exception; - @ signals (Exception e) true; - @*/ - public IntWrapper() throws Exception { - } - - /*@ normal_behavior - @ ensures this.value == value; - @*/ - public IntWrapper(int value) { - this.value = value; - } - - /*@ normal_behavior - @ ensures \result == value; - @*/ - public int getValue() { - return value; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticDefaultContractTest/oracle/StaticDefaultContractTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticDefaultContractTest/oracle/StaticDefaultContractTest.xml deleted file mode 100644 index 6432b8beabf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticDefaultContractTest/oracle/StaticDefaultContractTest.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticDefaultContractTest/test/StaticDefaultContractTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/staticDefaultContractTest/test/StaticDefaultContractTest.java deleted file mode 100644 index c5dcc384455..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticDefaultContractTest/test/StaticDefaultContractTest.java +++ /dev/null @@ -1,13 +0,0 @@ - -public class StaticDefaultContractTest { - public static void main() { - magic(); - } - - /*@ behavior - @ requires true; - @ ensures true; - @*/ - public static void magic() { - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticInstanceFieldChanged/oracle/StaticInstanceFieldChanged.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticInstanceFieldChanged/oracle/StaticInstanceFieldChanged.xml deleted file mode 100644 index 3567e238f20..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticInstanceFieldChanged/oracle/StaticInstanceFieldChanged.xml +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticInstanceFieldChanged/test/StaticInstanceFieldChanged.java b/key.core.symbolic_execution/src/test/resources/testcase/set/staticInstanceFieldChanged/test/StaticInstanceFieldChanged.java deleted file mode 100644 index 45e46d6bd98..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticInstanceFieldChanged/test/StaticInstanceFieldChanged.java +++ /dev/null @@ -1,20 +0,0 @@ - -public class StaticInstanceFieldChanged { - public static DirectValue instance; - public static NextValue nextInstance; - - public int magic() { - nextInstance.dvalue = new DirectValue(); - nextInstance.dvalue.value = 24; - instance.value = 42; - return instance.value + nextInstance.dvalue.value; - } - - private static class DirectValue { - public int value; - } - - private static class NextValue { - public DirectValue dvalue; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticMethodCall/oracle/StaticMethodCall.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/staticMethodCall/oracle/StaticMethodCall.xml deleted file mode 100644 index def1acb56b1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticMethodCall/oracle/StaticMethodCall.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/staticMethodCall/test/StaticMethodCall.java b/key.core.symbolic_execution/src/test/resources/testcase/set/staticMethodCall/test/StaticMethodCall.java deleted file mode 100644 index 02d48292055..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/staticMethodCall/test/StaticMethodCall.java +++ /dev/null @@ -1,45 +0,0 @@ - -public class StaticMethodCall { - /* Start - * main() @ StaticMethodCall - * doSomething(); - * doSomething @ StaticMethodCall - * return @ return of doSomething - * int x = sub() + sub(); - * sub() @ StaticMethodCall - * return subSub() + 2; - * subSub() @ StaticMethodCall - * return 2; - * return 2 @ return of subSub() - * return 4 @ return of sub() - * sub() @ StaticMethodCall - * return subSub() + 2; - * subSub() - * return 2; - * return 2 @ return of subSub() - * return 4 @ return of sub() - * return x; - * return 8 @ return of main() - * - */ - - /*@ requires true; - @ ensures true; - @*/ - public static int main() { - doSomething(); - int x = sub() + sub(); - return x; - } - - public static void doSomething() { - } - - public static int sub() { - return subSub() + 2; - } - - public static int subSub() { - return 2; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_10.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_10.xml deleted file mode 100644 index ce4ebe82b05..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_10.xml +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_11.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_11.xml deleted file mode 100644 index 702cd5ec5c9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_11.xml +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_12.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_12.xml deleted file mode 100644 index 48ace6f3c78..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_12.xml +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_2.xml deleted file mode 100644 index 3c2792973ff..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_2.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_3.xml deleted file mode 100644 index a75ac7d1d27..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_3.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_4.xml deleted file mode 100644 index 453fe4f91bf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_4.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_5.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_5.xml deleted file mode 100644 index 79aefb02910..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_5.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_6.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_6.xml deleted file mode 100644 index b11f27bf63e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_6.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_7.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_7.xml deleted file mode 100644 index 4d551032386..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_7.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_8.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_8.xml deleted file mode 100644 index 6972d14b342..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_8.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_9.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_9.xml deleted file mode 100644 index 347f4fe2afa..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/oracle/StepOverOnTwoBranches_9.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/test/StepOverOnTwoBranches.java b/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/test/StepOverOnTwoBranches.java deleted file mode 100644 index 8fd02644a9c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepOverOnTwoBranches/test/StepOverOnTwoBranches.java +++ /dev/null @@ -1,36 +0,0 @@ - -public class StepOverOnTwoBranches { - public int main(int a) { - if (a == 0) { - int i = 2; - int j = 3; - int x = valueLonger(i); - int y = value(j); - int z = valueLonger(x) + valueLonger(y); - int zz = value(-3) + - value(-4); - return value(z + zz); - } - else { - int i = 2; - int j = 3; - int x = value(i); - int y = valueLonger(j); - int z = value(x) + value(y); - int zz = valueLonger(-3) + - valueLonger(-4); - return valueLonger(z + zz); - } - } - - public int value(int i) { - return i; - } - - - public int valueLonger(int i) { - int j = i; - i = j; - return j; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_1.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_1.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_10.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_10.xml deleted file mode 100644 index 0154d475aa7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_10.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_11.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_11.xml deleted file mode 100644 index eb311bea628..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_11.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_12.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_12.xml deleted file mode 100644 index f114295832b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_12.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_13.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_13.xml deleted file mode 100644 index f7b635ad9f1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_13.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_14.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_14.xml deleted file mode 100644 index 2ba6f02dbf3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_14.xml +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_2.xml deleted file mode 100644 index 3c2792973ff..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_2.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_3.xml deleted file mode 100644 index f82983f35cc..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_3.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_4.xml deleted file mode 100644 index 9916fe92d23..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_4.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_5.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_5.xml deleted file mode 100644 index 925b733f5b9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_5.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_6.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_6.xml deleted file mode 100644 index 6e27bd7910b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_6.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_7.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_7.xml deleted file mode 100644 index 75f7e92e8ad..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_7.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_8.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_8.xml deleted file mode 100644 index 69ea30c92c6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_8.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_9.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_9.xml deleted file mode 100644 index 74bb2436b3e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/oracle/StepReturnTest_9.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/test/StepReturnTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/test/StepReturnTest.java deleted file mode 100644 index 3994ab55022..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/stepReturnTest/test/StepReturnTest.java +++ /dev/null @@ -1,32 +0,0 @@ - -public class StepReturnTest { - public void main(int a) { - firstLevel(a); - firstLevel(a); - a = a * 4; - } - - public void firstLevel(int a) { - secondLevel(a); - secondLevel(a); - } - - public void secondLevel(int a) { - try { - thirdLevel(a); - } - catch (Exception e) { - a = a * 2; - } - } - - public int thirdLevel(int a) { - fourthLevel(a); - int notReachable = 3; - return notReachable; - } - - public void fourthLevel(int a) { - throw new Exception(); - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/switchCaseTest/oracle/SwitchCaseTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/switchCaseTest/oracle/SwitchCaseTest.xml deleted file mode 100644 index fea46c41292..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/switchCaseTest/oracle/SwitchCaseTest.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/switchCaseTest/oracle/SwitchCaseTestMergedBranchConditions.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/switchCaseTest/oracle/SwitchCaseTestMergedBranchConditions.xml deleted file mode 100644 index 1eae395aed9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/switchCaseTest/oracle/SwitchCaseTestMergedBranchConditions.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/switchCaseTest/test/SwitchCaseTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/switchCaseTest/test/SwitchCaseTest.java deleted file mode 100644 index bca417166ff..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/switchCaseTest/test/SwitchCaseTest.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class SwitchCaseTest { - public int switchCase(int x) { - int a; - switch (x) { - case 0 : a = 1; - break; - case 1 : - case 2 : a = -1; - case 3 : a = x * x; - break; - case 4 : return 42; - default : a = x; - } - return a; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_1.xml deleted file mode 100644 index 96052d83b92..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_1.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_2.xml deleted file mode 100644 index 656d597488e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_2.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_3.xml deleted file mode 100644 index d835dae82ff..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_3.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_4.xml deleted file mode 100644 index ddf0db68bd7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_4.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_5.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_5.xml deleted file mode 100644 index f682aa01120..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_5.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_6.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_6.xml deleted file mode 100644 index 9360e274cbc..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/oracle/SymbolicExecutionCompletionsTest_6.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/test/SymbolicExecutionCompletionsTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/test/SymbolicExecutionCompletionsTest.java deleted file mode 100644 index ff1dae19489..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/symbolicExecutionCompletionsTest/test/SymbolicExecutionCompletionsTest.java +++ /dev/null @@ -1,11 +0,0 @@ -public class SymbolicExecutionCompletionsTest { - public static int magic(int x) { - if (x >= 0) { - return x; - } - else { - x++; - return 42; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/throwTest/oracle/ThrowTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/throwTest/oracle/ThrowTest.xml deleted file mode 100644 index e3ea2d65713..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/throwTest/oracle/ThrowTest.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/throwTest/test/ThrowTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/throwTest/test/ThrowTest.java deleted file mode 100644 index 26bc2aba552..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/throwTest/test/ThrowTest.java +++ /dev/null @@ -1,6 +0,0 @@ - -public class ThrowTest { - public void main() { - throw new RuntimeException(); - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/throwVariableTest/oracle/ThrowVariableTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/throwVariableTest/oracle/ThrowVariableTest.xml deleted file mode 100644 index 3e43e7fb11c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/throwVariableTest/oracle/ThrowVariableTest.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/throwVariableTest/test/ThrowVariableTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/throwVariableTest/test/ThrowVariableTest.java deleted file mode 100644 index 66a8a58241a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/throwVariableTest/test/ThrowVariableTest.java +++ /dev/null @@ -1,7 +0,0 @@ - -public class ThrowVariableTest { - public void main() { - IllegalArgumentException e = new IllegalArgumentException(); - throw e; - } -} 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 deleted file mode 100644 index 5e01f25b09d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAddingOfLabeledSubtree/oracle/ImmutableList.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAddingOfLabeledSubtree/test/ImmutableList.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAddingOfLabeledSubtree/test/ImmutableList.java deleted file mode 100644 index 1ec9d0a3224..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAddingOfLabeledSubtree/test/ImmutableList.java +++ /dev/null @@ -1,28 +0,0 @@ - -public class ImmutableList { - private final /*@ nullable @*/ ImmutableList next; - - public ImmutableList(/*@ nullable @*/ ImmutableList next) { - this.next = next; - } - - /*@ normal_behavior - @ requires next != null; - @ requires next.next != null; - @ ensures \result != this; - @ assignable \nothing; - @*/ - public ImmutableList down2() { - ImmutableList current = next; - /*@ loop_invariant i >= 1 && i <= 2; - @ loop_invariant current != null; - @ loop_invariant current != this; - @ decreasing i; - @ assignable i, current; - @*/ - for (int i = 1; i < 2; i++) { - current = current.next; - } - return current; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAddingOfLabeledSubtree/test/ImmutableList.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAddingOfLabeledSubtree/test/ImmutableList.proof deleted file mode 100644 index be9924fb9ad..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAddingOfLabeledSubtree/test/ImmutableList.proof +++ /dev/null @@ -1,327 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 23 14:12:50 CET 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ImmutableList[ImmutableList::down2()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "ImmutableList[ImmutableList::down2()].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "644") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "self,result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "3")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "eqSymm" (formula "9") (term "0,0,0,0,0,0,1")) -(rule "eqSymm" (formula "9") (term "1,0,0,1,0,1")) -(rule "Class_invariant_axiom_for_ImmutableList" (formula "5") (inst "sk=sk_0") (ifseqformula "3")) -(branch "Use Axiom" - (rule "true_left" (formula "5")) - (rule "onlyCreatedObjectsAreReferenced" (formula "7") (term "0") (ifseqformula "1")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "onlyCreatedObjectsAreReferenced" (formula "7") (term "0") (ifseqformula "2")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_down2,savedHeapBefore_down2")) - (builtin "One Step Simplification" (formula "10")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "current")) - (rule "assignment_read_attribute_this" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "for_to_while" (formula "10") (term "1") (inst "#innerLabel=_label0") (inst "#outerLabel=_label1")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (builtin "Loop Invariant" (formula "10") (newnames "variant,b,heapBefore_LOOP,iBefore_LOOP,currentBefore_LOOP,i_0,current_0,heap_After_LOOP,anon_heap_LOOP,o,f")) - (branch "Invariant Initially Valid" - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "3")) (ifInst "" (formula "9"))) - (rule "leq_literals" (formula "10") (term "1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "qeq_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "notRight" (formula "10")) - (rule "applyEq" (formula "2") (term "1,1,0") (ifseqformula "1")) - (rule "applyEq" (formula "8") (term "1,0") (ifseqformula "1")) - (rule "applyEq" (formula "2") (term "1,0") (ifseqformula "1")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "1")) - (rule "onlyCreatedObjectsAreReferenced" (formula "1") (term "0") (ifseqformula "2")) - (rule "applyEq" (formula "1") (term "0,0") (ifseqformula "2")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "2")) - (opengoal " ") - ) - (branch "Body Preserves Invariant" - (builtin "One Step Simplification" (formula "12")) - (builtin "One Step Simplification" (formula "8")) - (rule "impRight" (formula "12")) - (rule "andLeft" (formula "9")) - (rule "andLeft" (formula "9")) - (rule "andLeft" (formula "9")) - (rule "notLeft" (formula "11")) - (rule "andLeft" (formula "9")) - (rule "notLeft" (formula "11")) - (rule "eqSymm" (formula "17") (term "0,1,0,0,0,1,1,0,1")) - (rule "eqSymm" (formula "17") (term "1,0,0,1,0,0,1,1,0,1")) - (rule "eqSymm" (formula "13")) - (rule "replace_known_right" (formula "11") (term "0") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "11")) - (rule "boxToDiamond" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_2")) - (rule "less_than_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "inEqSimp_ltToLeq" (formula "11") (term "0,0,1,0")) - (rule "mul_literals" (formula "11") (term "1,0,0,0,0,1,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "11") (term "0,0,1,0")) - (rule "mul_literals" (formula "11") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "emptyModality" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "notRight" (formula "11")) - (rule "inEqSimp_subsumption0" (formula "10") (ifseqformula "1")) - (rule "leq_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "10")) - (rule "inEqSimp_antiSymm" (formula "9") (ifseqformula "1")) - (rule "applyEqRigid" (formula "10") (term "0") (ifseqformula "9")) - (rule "qeq_literals" (formula "10")) - (rule "true_left" (formula "10")) - (rule "applyEqRigid" (formula "1") (term "0") (ifseqformula "9")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEq" (formula "15") (term "0,1,1,1,0") (ifseqformula "8")) - (rule "applyEq" (formula "15") (term "0,0,0,0,1,1,0") (ifseqformula "8")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "15") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "x")) - (rule "less_than_comparison_simple" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "less_literals" (formula "15") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "15")) - (rule "ifSplit" (formula "15")) - (branch "if x true" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "assignment_read_attribute" (formula "15") (term "1")) - (branch "Normal Execution (current != null)" - (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "10"))) - (rule "false_right" (formula "15")) - (builtin "One Step Simplification" (formula "15")) - (rule "pullOutSelect" (formula "15") (term "0,1,0") (inst "selectSK=ImmutableList_next_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "ifthenelse_negated" (formula "1") (term "0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "1") (term "2,0") (ifseqformula "8")) - (rule "onlyCreatedObjectsAreReferenced" (formula "2") (term "1,0") (ifseqformula "5")) - (rule "blockEmpty" (formula "18") (term "1")) - (rule "postincrement" (formula "18") (term "1")) - (rule "compound_int_cast_expression" (formula "18") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "18") (term "1")) - (rule "variableDeclaration" (formula "18") (term "1") (newnames "x_1")) - (rule "remove_parentheses_right" (formula "18") (term "1")) - (rule "assignmentAdditionInt" (formula "18") (term "1")) - (rule "translateJavaAddInt" (formula "18") (term "0,0,1")) - (builtin "One Step Simplification" (formula "18")) - (rule "add_literals" (formula "18") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "18") (term "1")) - (rule "assignment" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "tryEmpty" (formula "18") (term "1")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "emptyModality" (formula "18") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "18") (newnames "ResultPredicate,ResultPredicate")) - (opengoal " ") - ) - (branch "Null Reference (current = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Use Case" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "12")) - (rule "andLeft" (formula "8")) - (rule "andLeft" (formula "8")) - (rule "andLeft" (formula "8")) - (rule "notLeft" (formula "10")) - (rule "notLeft" (formula "9")) - (rule "andLeft" (formula "8")) - (rule "eqSymm" (formula "12")) - (rule "replace_known_right" (formula "10") (term "0") (ifseqformula "11")) - (builtin "One Step Simplification" (formula "10")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "b_1")) - (rule "less_than_comparison_simple" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "inEqSimp_ltToLeq" (formula "16") (term "0,0,1,0")) - (rule "mul_literals" (formula "16") (term "1,0,0,0,0,1,0")) - (rule "add_literals" (formula "16") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "16") (term "0,0,1,0")) - (rule "mul_literals" (formula "16") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "16") (term "1")) - (rule "emptyModality" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "impRight" (formula "16")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_leqRight" (formula "11")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "inEqSimp_subsumption1" (formula "9") (ifseqformula "1")) - (rule "leq_literals" (formula "9") (term "0")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "inEqSimp_antiSymm" (formula "1") (ifseqformula "9")) - (rule "applyEqRigid" (formula "2") (term "0") (ifseqformula "1")) - (rule "qeq_literals" (formula "2")) - (rule "true_left" (formula "2")) - (rule "applyEqRigid" (formula "9") (term "0") (ifseqformula "1")) - (rule "leq_literals" (formula "9")) - (rule "true_left" (formula "9")) - (rule "blockEmpty" (formula "15") (term "1")) - (rule "methodCallReturn" (formula "15") (term "1")) - (rule "assignment" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "methodCallEmpty" (formula "15") (term "1")) - (rule "tryEmpty" (formula "15") (term "1")) - (rule "emptyModality" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "11")) (ifInst "" (formula "10"))) - (rule "eqSymm" (formula "15") (term "1,0,0,1")) - (rule "Class_invariant_axiom_for_ImmutableList" (formula "15") (term "0,0") (inst "sk=sk_1") (ifseqformula "6")) - (branch "Use Axiom" - (builtin "One Step Simplification" (formula "15")) - (rule "cut_direct" (formula "9") (term "0")) - (branch "CUT: current_0.$created = TRUE TRUE" - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "10")) - (rule "cut_direct" (formula "15") (term "0")) - (branch "CUT: SETAccumulate(heap[anon({}, anon_heap_LOOP<>)], null)<> TRUE" - (builtin "One Step Simplification" (formula "16")) - (rule "allRight" (formula "16") (inst "sk=f_1")) - (rule "allRight" (formula "16") (inst "sk=o_1")) - (rule "orRight" (formula "16")) - (rule "pullOutSelect" (formula "17") (term "0") (inst "selectSK=f_1_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "17"))) - (rule "applyEqReverse" (formula "18") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "closeTrue" (formula "18")) - ) - (branch "CUT: SETAccumulate(heap[anon({}, anon_heap_LOOP<>)], null)<> FALSE" - (builtin "One Step Simplification" (formula "16")) - (rule "false_right" (formula "16")) - (opengoal " ") - ) - ) - (branch "CUT: current_0.$created = TRUE FALSE" - (builtin "One Step Simplification" (formula "9")) - (rule "cut_direct" (formula "16") (term "0")) - (branch "CUT: SETAccumulate(heap[anon({}, anon_heap_LOOP<>)], null)<> TRUE" - (builtin "One Step Simplification" (formula "17")) - (rule "allRight" (formula "17") (inst "sk=f_0")) - (rule "allRight" (formula "17") (inst "sk=o_0")) - (rule "orRight" (formula "17")) - (rule "pullOutSelect" (formula "18") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "18"))) - (rule "applyEqReverse" (formula "19") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "19")) - (rule "closeTrue" (formula "19")) - ) - (branch "CUT: SETAccumulate(heap[anon({}, anon_heap_LOOP<>)], null)<> FALSE" - (builtin "One Step Simplification" (formula "17")) - (rule "false_right" (formula "17")) - (opengoal " ") - ) - ) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "15")) - (rule "closeTrue" (formula "15")) - ) - ) -) -(branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "6")) - (rule "closeTrue" (formula "6")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAnd/oracle/And3_replaceKnown.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAnd/oracle/And3_replaceKnown.xml deleted file mode 100644 index dae69ee34de..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAnd/oracle/And3_replaceKnown.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAnd/test/And.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAnd/test/And.java deleted file mode 100644 index 029012bfdb1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAnd/test/And.java +++ /dev/null @@ -1,9 +0,0 @@ -package truthValueEvaluation; - -public class And { - /*@ normal_behavior - @ ensures (p & q) ==> (q & p); - @*/ - public static void doNothing(boolean p, boolean q) { - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAnd/test/And3_replaceKnown.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAnd/test/And3_replaceKnown.proof deleted file mode 100644 index 4f7838e7f88..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAnd/test/And3_replaceKnown.proof +++ /dev/null @@ -1,76 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Mon Sep 14 10:33:14 CEST 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ".."; - -\proofObligation { - "name": "truthValueEvaluation.And[truthValueEvaluation.And::doNothing(boolean,boolean)].JML normal_behavior operation contract.0", - "contract": "truthValueEvaluation.And[truthValueEvaluation.And::doNothing(boolean,boolean)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "0") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "p,q,exc,heapAtPre,o,f") (userinteraction)) -(rule "assignment" (formula "2") (term "1") (userinteraction)) -(rule "methodBodyExpand" (formula "2") (term "1,1") (newnames "heapBefore_doNothing,savedHeapBefore_doNothing") (userinteraction)) -(rule "methodCallEmpty" (formula "2") (term "1,1,1") (userinteraction)) -(rule "tryEmpty" (formula "2") (term "1,1,1") (userinteraction)) -(rule "emptyModality" (formula "2") (term "1,1,1") (userinteraction)) -(builtin "One Step Simplification" (formula "2")) -(rule "impRight" (formula "2") (userinteraction)) -(rule "andLeft" (formula "1") (userinteraction)) -(rule "andRight" (formula "4") (userinteraction)) -(branch "Case 1" - (rule "replace_known_left" (formula "4") (ifseqformula "2") (userinteraction)) - (rule "closeTrue" (formula "4") (userinteraction)) -) -(branch "Case 2" - (rule "replace_known_right" (formula "1") (ifseqformula "4") (userinteraction)) - (rule "closeFalse" (formula "1") (userinteraction)) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/oracle/ArraySumWhile.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/oracle/ArraySumWhile.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/oracle/ArraySumWhile.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/test/ArraySumWhile.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/test/ArraySumWhile.java deleted file mode 100644 index ae1522a7ba0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/test/ArraySumWhile.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class ArraySumWhile { - /*@ requires array != null; - @ ensures \result == (\sum int j; 0 <= j && j < array.length; array[j]); - @*/ - public static int sum(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == (\sum int j; 0 <= j && j < i; array[j]); - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (i < array.length) { - result += array[i]; - i++; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/test/ArraySumWhile.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/test/ArraySumWhile.proof deleted file mode 100644 index 2ec885204f2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/test/ArraySumWhile.proof +++ /dev/null @@ -1,446 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Thu Jan 29 12:09:31 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , integerSimplificationRules-integerSimplificationRules\\:full , runtimeExceptions-runtimeExceptions\\:allow , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ArraySumWhile[ArraySumWhile::sum([I)].JML operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "ArraySumWhile[ArraySumWhile::sum([I)].JML operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1175") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "translateJavaCastInt" (formula "1") (term "1,1,0,0,0,1,1")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "5") (term "1,0,0,0,1")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "4")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_sum,savedHeapBefore_sum,_arrayBefore_sum")) -(builtin "One Step Simplification" (formula "5")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "result_1")) -(rule "assignment" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "i")) -(rule "assignment" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(builtin "Loop Invariant" (formula "5") (newnames "variant,b,heapBefore_LOOP,iBefore_LOOP,result_1Before_LOOP,i_0,result_1_0,heap_After_LOOP,anon_heap_LOOP,o,f")) -(branch "Invariant Initially Valid" - (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "1"))) - (rule "bsum_lower_equals_upper" (formula "5") (term "0,1,1")) - (rule "translateJavaCastInt" (formula "5") (term "1,1")) - (builtin "One Step Simplification" (formula "5")) - (rule "qeq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "inEqSimp_leqRight" (formula "5")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "inEqSimp_sepNegMonomial1" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "arrayLengthNotNegative" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq0" (formula "1") (ifseqformula "2")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) -) -(branch "Body Preserves Invariant" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "5")) - (rule "translateJavaSubInt" (formula "7") (term "0,1,1,1,0,1")) - (rule "translateJavaSubInt" (formula "7") (term "0,1,0,1,1,0,1,1")) - (rule "translateJavaCastInt" (formula "7") (term "1,1,0,0,0,1,1,0,1,1")) - (rule "translateJavaCastInt" (formula "5") (term "1,1")) - (rule "impRight" (formula "7")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "6")) - (rule "eqSymm" (formula "10") (term "1,0,0,0,1,1,0,1")) - (rule "eqSymm" (formula "10") (term "0,0,1,0,0,1,1,0,1")) - (rule "eqSymm" (formula "8")) - (rule "polySimp_elimSub" (formula "10") (term "0,1,1,1,0")) - (rule "polySimp_elimSub" (formula "10") (term "0,1,0,1,1,0,1")) - (rule "polySimp_addComm0" (formula "10") (term "0,1,1,1,0")) - (rule "polySimp_addComm0" (formula "10") (term "0,1,0,1,1,0,1")) - (rule "inEqSimp_commuteLeq" (formula "10") (term "1,0,0,0,0,1,1,0,1")) - (rule "inEqSimp_commuteLeq" (formula "7")) - (rule "boxToDiamond" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "arrayLengthIsAnInt" (formula "10") (term "1,0,1,1,1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "arrayLengthNotNegative" (formula "10") (term "1,0,1,1,1,0")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_2")) - (rule "compound_less_than_comparison_2" (formula "9") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_2")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_3")) - (rule "assignment_read_length" (formula "9") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "10")) - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "11"))) - (rule "false_right" (formula "9")) - (rule "less_than_comparison_simple" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "inEqSimp_ltToLeq" (formula "9") (term "0,0,0")) - (rule "polySimp_mulComm0" (formula "9") (term "1,0,0,0,0,0")) - (rule "polySimp_addComm1" (formula "9") (term "0,0,0,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "9") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "9") (term "0,0,0,0")) - (rule "polySimp_elimOne" (formula "9") (term "0,0,0,0")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "emptyModality" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "notRight" (formula "9")) - (rule "inEqSimp_subsumption1" (formula "8") (ifseqformula "1")) - (rule "inEqSimp_homoInEq0" (formula "8") (term "0")) - (rule "polySimp_pullOutFactor1b" (formula "8") (term "0,0")) - (rule "add_literals" (formula "8") (term "1,1,0,0")) - (rule "times_zero_1" (formula "8") (term "1,0,0")) - (rule "add_zero_right" (formula "8") (term "0,0")) - (rule "qeq_literals" (formula "8") (term "0")) - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "10") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_4")) - (rule "compound_less_than_comparison_2" (formula "10") (term "1") (inst "#v1=x_6") (inst "#v0=x_5")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_5")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_6")) - (rule "assignment_read_length" (formula "10") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "9"))) - (rule "false_right" (formula "10")) - (builtin "One Step Simplification" (formula "10")) - (rule "less_than_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifSplit" (formula "10")) - (branch "if x_4 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "compound_assignment_op_plus" (formula "10") (term "1")) - (rule "compound_int_cast_expression" (formula "10") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_7")) - (rule "remove_parentheses_right" (formula "10") (term "1")) - (rule "compound_addition_2" (formula "10") (term "1") (inst "#v1=x_9") (inst "#v0=x_8")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_8")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_9")) - (rule "remove_parentheses_right" (formula "10") (term "1")) - (rule "assignment_array2" (formula "10") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "9"))) - (builtin "One Step Simplification" (formula "11")) - (rule "orRight" (formula "10")) - (rule "inEqSimp_leqRight" (formula "10")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_ltRight" (formula "11")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "assignmentAdditionInt" (formula "10") (term "1")) - (rule "translateJavaAddInt" (formula "10") (term "0,0,1")) - (builtin "One Step Simplification" (formula "10")) - (rule "widening_identity_cast_5" (formula "10") (term "1")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "postincrement" (formula "10") (term "1")) - (rule "compound_int_cast_expression" (formula "10") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_10")) - (rule "remove_parentheses_right" (formula "10") (term "1")) - (rule "assignmentAdditionInt" (formula "10") (term "1")) - (rule "translateJavaAddInt" (formula "10") (term "0,0,1")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_addComm0" (formula "10") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "10") (term "1")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "tryEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "emptyModality" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "1"))) - (rule "polySimp_mulComm0" (formula "10") (term "0,0,1,0")) - (rule "polySimp_rightDist" (formula "10") (term "0,0,1,0")) - (rule "mul_literals" (formula "10") (term "0,0,0,1,0")) - (rule "bsum_induction_upper_concrete" (formula "10") (term "0,1,0,0")) - (rule "polySimp_homoEq" (formula "10") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,1,0,0")) - (rule "polySimp_addComm0" (formula "10") (term "1,1,0,1,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,1,0,0")) - (rule "polySimp_mulComm0" (formula "10") (term "0,1,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,1,0,0")) - (rule "precOfInt" (formula "10") (term "1,0")) - (rule "inEqSimp_ltToLeq" (formula "10") (term "1,1,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0,1,1,0")) - (rule "polySimp_mulAssoc" (formula "10") (term "0,1,0,0,1,1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "0,0,1,0,0,1,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "0,1,0,0,1,1,0")) - (rule "polySimp_elimOne" (formula "10") (term "0,1,0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,1,1,0")) - (rule "polySimp_pullOutFactor2b" (formula "10") (term "0,1,1,0")) - (rule "add_literals" (formula "10") (term "1,1,0,1,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0,1,1,0")) - (rule "add_zero_right" (formula "10") (term "0,1,1,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,1,1,0")) - (rule "add_literals" (formula "10") (term "0,0,0,1,1,0")) - (rule "add_zero_left" (formula "10") (term "0,0,1,1,0")) - (rule "polySimp_pullOutFactor1" (formula "10") (term "0,1,1,0")) - (rule "add_literals" (formula "10") (term "1,0,1,1,0")) - (rule "times_zero_1" (formula "10") (term "0,1,1,0")) - (rule "leq_literals" (formula "10") (term "1,1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "inEqSimp_commuteLeq" (formula "10") (term "0,0,1,0,0,1,0,0")) - (rule "replace_known_left" (formula "10") (term "0,0,1,0,0,1,0,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "10")) - (rule "polySimp_pullOutFactor1b" (formula "10") (term "0,0,1,0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0,1,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0,1,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0,1,0,0")) - (rule "inEqSimp_homoInEq0" (formula "10") (term "1,0")) - (rule "times_zero_2" (formula "10") (term "1,0,1,0")) - (rule "add_zero_right" (formula "10") (term "0,1,0")) - (rule "applyEq" (formula "10") (term "0,1,0,1,0,0") (ifseqformula "8")) - (rule "polySimp_pullOutFactor1" (formula "10") (term "0,1,0,0")) - (rule "add_literals" (formula "10") (term "1,0,1,0,0")) - (rule "times_zero_1" (formula "10") (term "0,1,0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "inEqSimp_sepPosMonomial1" (formula "10") (term "1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,1,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,1,0")) - (rule "mul_literals" (formula "10") (term "0,1,1,0")) - (rule "polySimp_elimOne" (formula "10") (term "1,1,1,0")) - (rule "replace_known_left" (formula "10") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "inEqSimp_sepPosMonomial1" (formula "10") (term "0")) - (rule "mul_literals" (formula "10") (term "1,0")) - (rule "inEqSimp_subsumption1" (formula "10") (term "0") (ifseqformula "7")) - (rule "leq_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (opengoal " ") - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but i Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "8")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq0" (formula "2") (ifseqformula "1")) - (rule "andLeft" (formula "2")) - (rule "inEqSimp_homoInEq1" (formula "2")) - (rule "polySimp_pullOutFactor1b" (formula "2") (term "0")) - (rule "add_literals" (formula "2") (term "1,1,0")) - (rule "times_zero_1" (formula "2") (term "1,0")) - (rule "add_literals" (formula "2") (term "0")) - (rule "leq_literals" (formula "2")) - (rule "closeFalse" (formula "2")) - ) - ) - (branch "if x_4 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_ltRight" (formula "9")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0")) - (rule "polySimp_addComm0" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial1" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq0" (formula "2") (ifseqformula "1")) - (rule "andLeft" (formula "2")) - (rule "inEqSimp_homoInEq1" (formula "2")) - (rule "polySimp_pullOutFactor1b" (formula "2") (term "0")) - (rule "add_literals" (formula "2") (term "1,1,0")) - (rule "times_zero_1" (formula "2") (term "1,0")) - (rule "add_zero_right" (formula "2") (term "0")) - (rule "leq_literals" (formula "2")) - (rule "closeFalse" (formula "2")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "10")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Use Case" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "5")) - (rule "translateJavaCastInt" (formula "5") (term "1,1")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "5")) - (rule "eqSymm" (formula "7")) - (rule "inEqSimp_commuteLeq" (formula "6")) - (rule "arrayLengthIsAnInt" (formula "6") (term "0")) - (builtin "One Step Simplification" (formula "6")) - (rule "true_left" (formula "6")) - (rule "arrayLengthNotNegative" (formula "6") (term "0")) - (rule "methodCallReturn" (formula "10") (term "1,0,1")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "b_1")) - (rule "compound_less_than_comparison_2" (formula "10") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_1")) - (rule "assignment_read_length" (formula "10") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "11")) - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "9"))) - (rule "false_right" (formula "10")) - (rule "less_than_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "inEqSimp_ltToLeq" (formula "10") (term "0,0,1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0,0,0,1,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0,1,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "10") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "0,0,0,1,0")) - (rule "polySimp_elimOne" (formula "10") (term "0,0,0,1,0")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "emptyModality" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "impRight" (formula "10")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "9")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "add_zero_left" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1")) - (rule "polySimp_elimOne" (formula "1") (term "1")) - (rule "inEqSimp_antiSymm" (formula "8") (ifseqformula "1")) - (rule "applyEq" (formula "9") (term "0") (ifseqformula "8")) - (rule "inEqSimp_homoInEq1" (formula "9")) - (rule "polySimp_pullOutFactor1" (formula "9") (term "0")) - (rule "add_literals" (formula "9") (term "1,0")) - (rule "times_zero_1" (formula "9") (term "0")) - (rule "leq_literals" (formula "9")) - (rule "true_left" (formula "9")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "8")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "7")) - (rule "inEqSimp_homoInEq0" (formula "1")) - (rule "polySimp_pullOutFactor1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,0")) - (rule "times_zero_1" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "tryEmpty" (formula "9") (term "1")) - (rule "emptyModality" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "applyEq" (formula "9") (term "1,0,0") (ifseqformula "6")) - (rule "replace_known_left" (formula "9") (term "0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "9")) - (opengoal " ") - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "closeFalse" (formula "1")) - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/test/ArraySumWhileNoOneStepSimplification.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/test/ArraySumWhileNoOneStepSimplification.proof deleted file mode 100644 index 142d6dd31cb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArraySumWhile/test/ArraySumWhileNoOneStepSimplification.proof +++ /dev/null @@ -1,860 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Thu Jan 29 12:09:59 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , integerSimplificationRules-integerSimplificationRules\\:full , runtimeExceptions-runtimeExceptions\\:allow , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ArraySumWhile[ArraySumWhile::sum([I)].JML operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "ArraySumWhile[ArraySumWhile::sum([I)].JML operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1364") - -(branch "dummy ID" -(rule "eq_and" (formula "1") (term "1,0") (newnames "heapAtPre")) -(rule "elementOfAllLocs" (formula "1") (term "0,0,0,0,1,0,1,1")) -(rule "concrete_or_1" (formula "1") (term "0,0,0,1,0,1,1")) -(rule "concrete_or_1" (formula "1") (term "0,0,1,0,1,1")) -(rule "translateJavaCastInt" (formula "1") (term "1,1,0,0,0,0,1,1")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "5") (term "1,0,0,0,0,1")) -(rule "simplifyUpdate2" (formula "5")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "4")) -(rule "concrete_or_2" (formula "2")) -(rule "all_unused" (formula "5") (term "0,1,0,1")) -(rule "all_unused" (formula "5") (term "1,0,1")) -(rule "concrete_and_3" (formula "5") (term "0,1")) -(rule "assignment" (formula "5") (term "1")) -(rule "sequentialToParallel2" (formula "5")) -(rule "simplifyUpdate3" (formula "5") (term "1,0")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_sum,savedHeapBefore_sum,_arrayBefore_sum")) -(rule "simplifyUpdate2" (formula "5") (term "1")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "result_1")) -(rule "assignment" (formula "5") (term "1")) -(rule "sequentialToParallel2" (formula "5")) -(rule "simplifyUpdate3" (formula "5") (term "1,0")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "i")) -(rule "assignment" (formula "5") (term "1")) -(rule "sequentialToParallel2" (formula "5")) -(rule "simplifyUpdate3" (formula "5") (term "1,0")) -(builtin "Loop Invariant" (formula "5") (newnames "variant,b,heapBefore_LOOP,iBefore_LOOP,result_1Before_LOOP,i_0,result_1_0,heap_After_LOOP,anon_heap_LOOP,o,f")) -(branch "Invariant Initially Valid" - (rule "translateJavaCastInt" (formula "5") (term "1,1,0,1")) - (rule "simplifyUpdate2" (formula "5")) - (rule "eqSymm" (formula "5") (term "1,0,1")) - (rule "applyOnRigidFormula" (formula "5")) - (rule "simplifyUpdate2" (formula "5") (term "1")) - (rule "replace_known_left" (formula "5") (term "1") (ifseqformula "1")) - (rule "concrete_and_3" (formula "5")) - (rule "applyOnRigidFormula" (formula "5")) - (rule "simplifyUpdate2" (formula "5") (term "0")) - (rule "applyOnRigidFormula" (formula "5") (term "1")) - (rule "simplifyUpdate1" (formula "5") (term "0,1")) - (rule "simplifyUpdate1" (formula "5") (term "1,1")) - (rule "applyOnPV" (formula "5") (term "1,1")) - (rule "applyOnRigidFormula" (formula "5") (term "0")) - (rule "simplifyUpdate2" (formula "5") (term "0,0")) - (rule "applyOnRigidTerm" (formula "5") (term "0,1")) - (rule "simplifyUpdate1" (formula "5") (term "0,0,1")) - (rule "simplifyUpdate1" (formula "5") (term "1,0,1")) - (rule "simplifyUpdate1" (formula "5") (term "2,0,1")) - (rule "applyOnPV" (formula "5") (term "1,0,1")) - (rule "bsum_lower_equals_upper" (formula "5") (term "0,1")) - (rule "eqClose" (formula "5") (term "1")) - (rule "concrete_and_3" (formula "5")) - (rule "applyOnRigidFormula" (formula "5") (term "1")) - (rule "simplifyUpdate1" (formula "5") (term "1,1")) - (rule "simplifyUpdate1" (formula "5") (term "0,1")) - (rule "applyOnPV" (formula "5") (term "0,1")) - (rule "applyOnRigidFormula" (formula "5") (term "0")) - (rule "simplifyUpdate1" (formula "5") (term "1,0")) - (rule "applyOnPV" (formula "5") (term "0,0")) - (rule "qeq_literals" (formula "5") (term "0")) - (rule "concrete_and_1" (formula "5")) - (rule "applyOnRigidTerm" (formula "5") (term "1")) - (rule "applyOnPV" (formula "5") (term "0,1")) - (rule "inEqSimp_leqRight" (formula "5")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "inEqSimp_sepNegMonomial1" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "arrayLengthNotNegative" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq1" (formula "2") (ifseqformula "1")) - (rule "qeq_literals" (formula "2") (term "0")) - (rule "concrete_and_2" (formula "2")) - (rule "closeFalse" (formula "2")) -) -(branch "Body Preserves Invariant" - (rule "inInt" (formula "5") (term "0,1,1,1")) - (rule "concrete_and_1" (formula "5") (term "1,1,1")) - (rule "inInt" (formula "5") (term "1,1,1")) - (rule "concrete_and_3" (formula "5") (term "1,1")) - (rule "translateJavaSubInt" (formula "7") (term "0,0,1,1,1")) - (rule "translateJavaSubInt" (formula "7") (term "0,1,0,1,1,0,1,1,1,1,1")) - (rule "translateJavaCastInt" (formula "7") (term "1,1,0,0,0,1,1,0,1,1,1,1,1")) - (rule "translateJavaCastInt" (formula "5") (term "1,1,1,1")) - (rule "simplifyUpdate2" (formula "5")) - (rule "simplifyUpdate2" (formula "7") (term "1")) - (rule "eqSymm" (formula "5") (term "1,1,1")) - (rule "eqSymm" (formula "7") (term "0,0,1,0,0,1,1,0,1,1,1,1,1")) - (rule "eqSymm" (formula "7") (term "1,0,0,0,1,1,0,1,1,1,1,1")) - (rule "polySimp_elimSub" (formula "7") (term "0,0,1,1,1")) - (rule "polySimp_elimSub" (formula "7") (term "0,1,0,1,1,0,1,1,1,1,1")) - (rule "sequentialToParallel2" (formula "5")) - (rule "simplifyUpdate2" (formula "5")) - (rule "simplifyUpdate3" (formula "5") (term "1,0")) - (rule "andLeft" (formula "5")) - (rule "simplifyUpdate2" (formula "5")) - (rule "andLeft" (formula "5")) - (rule "simplifyUpdate2" (formula "5")) - (rule "sequentialToParallel2" (formula "9") (term "1")) - (rule "simplifyUpdate3" (formula "9") (term "1,0,1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "impRight" (formula "9")) - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnSkip" (formula "1") (term "1,0")) - (rule "parallelWithSkip2" (formula "1") (term "0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "polySimp_addComm0" (formula "10") (term "0,1,0,1,1,0,1")) - (rule "polySimp_addComm0" (formula "10") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "8")) - (rule "simplifyUpdate1" (formula "8") (term "1")) - (rule "simplifyUpdate1" (formula "8") (term "0")) - (rule "applyOnPV" (formula "8") (term "1")) - (rule "applyOnRigidFormula" (formula "7")) - (rule "simplifyUpdate1" (formula "7") (term "0")) - (rule "simplifyUpdate1" (formula "7") (term "1")) - (rule "applyOnPV" (formula "7") (term "0")) - (rule "applyOnRigidFormula" (formula "6")) - (rule "simplifyUpdate1" (formula "6") (term "1")) - (rule "applyOnPV" (formula "6") (term "0")) - (rule "applyOnRigidTerm" (formula "10") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,1,0")) - (rule "polySimp_addComm0" (formula "10") (term "0,1,0")) - (rule "applyOnRigidTerm" (formula "8") (term "0")) - (rule "simplifyUpdate1" (formula "8") (term "2,0")) - (rule "simplifyUpdate1" (formula "8") (term "0,0")) - (rule "simplifyUpdate1" (formula "8") (term "1,0")) - (rule "applyOnPV" (formula "8") (term "1,0")) - (rule "applyOnRigidTerm" (formula "7") (term "1")) - (rule "applyOnPV" (formula "7") (term "0,1")) - (rule "applyOnRigidTerm" (formula "10") (term "0,0,1,0")) - (rule "applyOnPV" (formula "10") (term "0,0,0,1,0")) - (rule "applyOnRigidTerm" (formula "10") (term "1,0,1,0")) - (rule "applyOnPV" (formula "10") (term "0,1,0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,1,0,1,0")) - (rule "polySimp_addComm0" (formula "10") (term "0,1,0")) - (rule "applyOnRigidTerm" (formula "8") (term "2,0")) - (rule "simplifyUpdate1" (formula "8") (term "2,2,0")) - (rule "applyOnPV" (formula "8") (term "1,2,0")) - (rule "simplifyUpdate1" (formula "8") (term "0,2,0")) - (rule "inEqSimp_commuteLeq" (formula "10") (term "1,0,0,0,0,1,1,0,1")) - (rule "inEqSimp_commuteLeq" (formula "7")) - (rule "boxToDiamond" (formula "1") (term "1")) - (rule "notLeft" (formula "1")) - (rule "arrayLengthIsAnInt" (formula "10") (term "1,0,1,0")) - (rule "inInt" (formula "1")) - (rule "true_left" (formula "1")) - (rule "arrayLengthNotNegative" (formula "10") (term "1,0,1,0")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_2")) - (rule "compound_less_than_comparison_2" (formula "9") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_2")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnPV" (formula "9") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_3")) - (rule "assignment_read_length" (formula "9") (term "1")) - (branch "Normal Execution (_array != null)" - (rule "simplifyUpdate2" (formula "9")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "applyOnRigidFormula" (formula "9")) - (rule "applyOnPV" (formula "9") (term "0")) - (rule "simplifyUpdate1" (formula "9") (term "1")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,1,0")) - (rule "less_than_comparison_simple" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "applyOnElementary" (formula "9") (term "0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,0")) - (rule "simplifyUpdate1" (formula "9") (term "0,0,0,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0,0")) - (rule "applyOnPV" (formula "9") (term "0,0,0,0")) - (rule "applyOnPV" (formula "9") (term "1,0,0,0")) - (rule "inEqSimp_ltToLeq" (formula "9") (term "0,0,0")) - (rule "polySimp_mulComm0" (formula "9") (term "1,0,0,0,0,0")) - (rule "polySimp_addComm1" (formula "9") (term "0,0,0,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "9") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "9") (term "0,0,0,0")) - (rule "polySimp_elimOne" (formula "9") (term "0,0,0,0")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "emptyModality" (formula "9") (term "1")) - (rule "notRight" (formula "9")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "ifthenelse_concrete3" (formula "1")) - (rule "boolean_not_equal_2" (formula "1") (term "1")) - (rule "concrete_or_4" (formula "1")) - (rule "inEqSimp_subsumption1" (formula "8") (ifseqformula "1")) - (rule "inEqSimp_homoInEq0" (formula "8") (term "0")) - (rule "polySimp_pullOutFactor1b" (formula "8") (term "0,0")) - (rule "add_literals" (formula "8") (term "1,1,0,0")) - (rule "times_zero_1" (formula "8") (term "1,0,0")) - (rule "add_zero_right" (formula "8") (term "0,0")) - (rule "qeq_literals" (formula "8") (term "0")) - (rule "concrete_or_1" (formula "8")) - (rule "true_left" (formula "8")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "10") (term "1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "10") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_4")) - (rule "compound_less_than_comparison_2" (formula "10") (term "1") (inst "#v1=x_6") (inst "#v0=x_5")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_5")) - (rule "assignment" (formula "10") (term "1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "applyOnPV" (formula "10") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_6")) - (rule "assignment_read_length" (formula "10") (term "1")) - (branch "Normal Execution (_array != null)" - (rule "simplifyUpdate2" (formula "10")) - (rule "applyOnRigidFormula" (formula "10")) - (rule "simplifyUpdate1" (formula "10") (term "1")) - (rule "applyOnPV" (formula "10") (term "0")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "applyOnRigidTerm" (formula "10") (term "0,1,0")) - (rule "applyOnPV" (formula "10") (term "0,0,1,0")) - (rule "less_than_comparison_simple" (formula "10") (term "1")) - (rule "inEqSimp_ltToLeq" (formula "10") (term "0,0,0,1")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0,0,0,0,1")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0,0,1")) - (rule "inEqSimp_sepNegMonomial0" (formula "10") (term "0,0,0,1")) - (rule "polySimp_mulLiterals" (formula "10") (term "0,0,0,0,1")) - (rule "polySimp_elimOne" (formula "10") (term "0,0,0,0,1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "simplifyUpdate2" (formula "10")) - (rule "ifSplit" (formula "10")) - (branch "if x_4 true" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "11")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "applyOnRigidTerm" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "2,0")) - (rule "simplifyUpdate1" (formula "1") (term "1,0")) - (rule "ifthenelse_concrete3" (formula "1")) - (rule "boolean_not_equal_2" (formula "1") (term "1")) - (rule "concrete_or_4" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "simplifyUpdate1" (formula "1") (term "0")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "applyOnRigidTerm" (formula "1") (term "1")) - (rule "simplifyUpdate1" (formula "1") (term "0,1")) - (rule "applyOnPV" (formula "1") (term "1,1")) - (rule "compound_assignment_op_plus" (formula "10") (term "1")) - (rule "compound_int_cast_expression" (formula "10") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_7")) - (rule "remove_parentheses_right" (formula "10") (term "1")) - (rule "compound_addition_2" (formula "10") (term "1") (inst "#v1=x_9") (inst "#v0=x_8")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_8")) - (rule "assignment" (formula "10") (term "1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "applyOnPV" (formula "10") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_9")) - (rule "remove_parentheses_right" (formula "10") (term "1")) - (rule "assignment_array2" (formula "10") (term "1")) - (branch "Normal Execution (_array != null)" - (rule "simplifyUpdate2" (formula "10")) - (rule "orRight" (formula "10")) - (rule "simplifyUpdate2" (formula "11")) - (rule "orRight" (formula "10")) - (rule "simplifyUpdate2" (formula "10")) - (rule "applyOnRigidFormula" (formula "12")) - (rule "applyOnPV" (formula "12") (term "0")) - (rule "simplifyUpdate1" (formula "12") (term "1")) - (rule "applyOnRigidFormula" (formula "11")) - (rule "simplifyUpdate1" (formula "11") (term "0")) - (rule "simplifyUpdate1" (formula "11") (term "1")) - (rule "applyOnPV" (formula "11") (term "1")) - (rule "applyOnRigidFormula" (formula "10")) - (rule "simplifyUpdate1" (formula "10") (term "1")) - (rule "applyOnPV" (formula "10") (term "0")) - (rule "applyOnRigidTerm" (formula "10") (term "0")) - (rule "applyOnPV" (formula "10") (term "0,0")) - (rule "inEqSimp_ltRight" (formula "11")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "10")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "applyOnRigidTerm" (formula "10") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,1,0")) - (rule "applyOnPV" (formula "10") (term "1,0,1,0")) - (rule "applyOnRigidTerm" (formula "10") (term "2,0,1,0")) - (rule "applyOnPV" (formula "10") (term "0,2,0,1,0")) - (rule "assignmentAdditionInt" (formula "10") (term "1")) - (rule "translateJavaAddInt" (formula "10") (term "0,0,1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "simplifyUpdate2" (formula "10")) - (rule "applyOnRigidTerm" (formula "10") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "0,0,1,0")) - (rule "applyOnPV" (formula "10") (term "1,0,1,0")) - (rule "applyOnPV" (formula "10") (term "0,0,1,0")) - (rule "widening_identity_cast_5" (formula "10") (term "1")) - (rule "assignment" (formula "10") (term "1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "applyOnPV" (formula "10") (term "0,1,0")) - (rule "simplifyUpdate2" (formula "10")) - (rule "postincrement" (formula "10") (term "1")) - (rule "compound_int_cast_expression" (formula "10") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_10")) - (rule "remove_parentheses_right" (formula "10") (term "1")) - (rule "assignmentAdditionInt" (formula "10") (term "1")) - (rule "translateJavaAddInt" (formula "10") (term "0,0,1")) - (rule "polySimp_addComm0" (formula "10") (term "0,0,1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "applyOnRigidTerm" (formula "10") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "0,0,1,0")) - (rule "applyOnPV" (formula "10") (term "1,0,1,0")) - (rule "widening_identity_cast_5" (formula "10") (term "1")) - (rule "assignment" (formula "10") (term "1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "applyOnPV" (formula "10") (term "0,1,0")) - (rule "simplifyUpdate2" (formula "10")) - (rule "tryEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "emptyModality" (formula "10") (term "1")) - (rule "applyOnRigidFormula" (formula "10")) - (rule "simplifyUpdate2" (formula "10") (term "0")) - (rule "applyOnRigidFormula" (formula "10") (term "1")) - (rule "simplifyUpdate2" (formula "10") (term "0,1")) - (rule "simplifyUpdate2" (formula "10") (term "1,1")) - (rule "applyOnRigidFormula" (formula "10") (term "0")) - (rule "simplifyUpdate2" (formula "10") (term "0,0")) - (rule "simplifyUpdate2" (formula "10") (term "1,0")) - (rule "applyOnRigidFormula" (formula "10") (term "0,1")) - (rule "applyOnRigidFormula" (formula "10") (term "1,1")) - (rule "simplifyUpdate2" (formula "10") (term "1,1,1")) - (rule "simplifyUpdate2" (formula "10") (term "0,1,1")) - (rule "applyOnRigidFormula" (formula "10") (term "0,0")) - (rule "applyOnPV" (formula "10") (term "0,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,0")) - (rule "boolean_not_equal_2" (formula "10") (term "0,0")) - (rule "concrete_impl_2" (formula "10") (term "0")) - (rule "concrete_and_1" (formula "10")) - (rule "impRight" (formula "10")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "11") (term "0")) - (rule "simplifyUpdate2" (formula "11") (term "1,0")) - (rule "simplifyUpdate2" (formula "11") (term "0,0")) - (rule "applyOnRigidFormula" (formula "11") (term "1")) - (rule "simplifyUpdate1" (formula "11") (term "0,1")) - (rule "simplifyUpdate1" (formula "11") (term "1,1")) - (rule "simplifyUpdate1" (formula "11") (term "2,1")) - (rule "applyOnPV" (formula "11") (term "1,1")) - (rule "applyOnPV" (formula "11") (term "2,1")) - (rule "applyOnRigidFormula" (formula "9")) - (rule "applyOnPV" (formula "9") (term "0")) - (rule "simplifyUpdate1" (formula "9") (term "1")) - (rule "boolean_not_equal_2" (formula "9")) - (rule "false_right" (formula "9")) - (rule "applyOnRigidFormula" (formula "10") (term "1,0")) - (rule "simplifyUpdate1" (formula "10") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,1,0")) - (rule "applyOnPV" (formula "10") (term "1,1,0")) - (rule "applyOnRigidFormula" (formula "10") (term "0,0")) - (rule "simplifyUpdate2" (formula "10") (term "0,0,0")) - (rule "simplifyUpdate2" (formula "10") (term "1,0,0")) - (rule "applyOnRigidTerm" (formula "10") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,1,0")) - (rule "polySimp_addComm0" (formula "10") (term "0,1,0")) - (rule "applyOnRigidFormula" (formula "10") (term "0,0,0")) - (rule "simplifyUpdate2" (formula "10") (term "0,0,0,0")) - (rule "applyOnRigidFormula" (formula "10") (term "1,0,0")) - (rule "applyOnRigidTerm" (formula "10") (term "0,0,1,0")) - (rule "applyOnPV" (formula "10") (term "0,0,0,1,0")) - (rule "applyOnRigidTerm" (formula "10") (term "1,0,1,0")) - (rule "applyOnPV" (formula "10") (term "0,1,0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,1,0,1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,1,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,1,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,1,0")) - (rule "polySimp_addComm0" (formula "10") (term "0,1,0")) - (rule "applyOnRigidFormula" (formula "10") (term "1,0,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "0,1,0,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,1,0,0,0")) - (rule "applyOnPV" (formula "10") (term "1,1,0,0,0")) - (rule "applyOnRigidFormula" (formula "10") (term "0,0,0,0")) - (rule "simplifyUpdate2" (formula "10") (term "0,0,0,0,0")) - (rule "applyOnRigidFormula" (formula "10") (term "0,1,0,0")) - (rule "precOfInt" (formula "10") (term "1,0")) - (rule "applyOnRigidTerm" (formula "10") (term "0,1,0,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,1,0,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "0,0,1,0,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "2,0,1,0,0,0")) - (rule "applyOnPV" (formula "10") (term "1,0,1,0,0,0")) - (rule "applyOnRigidFormula" (formula "10") (term "1,0,0,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "0,1,0,0,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,1,0,0,0,0")) - (rule "applyOnPV" (formula "10") (term "1,1,0,0,0,0")) - (rule "applyOnRigidFormula" (formula "10") (term "0,0,0,0,0")) - (rule "applyOnPV" (formula "10") (term "0,0,0,0,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,0,0,0,0")) - (rule "applyOnRigidFormula" (formula "10") (term "0,0,1,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,0,1,0,0")) - (rule "applyOnRigidTerm" (formula "10") (term "2,0,1,0,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "2,2,0,1,0,0,0")) - (rule "applyOnPV" (formula "10") (term "1,2,0,1,0,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "0,2,0,1,0,0,0")) - (rule "applyOnRigidTerm" (formula "10") (term "0,1,0,0,0,0")) - (rule "applyOnPV" (formula "10") (term "0,0,1,0,0,0,0")) - (rule "replace_known_left" (formula "10") (term "1,0,0,0,0") (ifseqformula "1")) - (rule "concrete_and_3" (formula "10") (term "0,0,0,0")) - (rule "applyOnRigidTerm" (formula "10") (term "0,0,0,1,0,0")) - (rule "applyOnPV" (formula "10") (term "0,0,0,0,1,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "2,0,0,0,1,0,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,0,0,1,0,0")) - (rule "eqClose" (formula "10") (term "0,0,1,0,0")) - (rule "bsum_induction_upper_concrete" (formula "10") (term "0,1,0,0,0")) - (rule "polySimp_homoEq" (formula "10") (term "1,0,0,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,1,0,0,0")) - (rule "polySimp_addComm0" (formula "10") (term "1,1,0,1,0,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,1,0,0,0")) - (rule "polySimp_mulComm0" (formula "10") (term "0,1,0,1,0,0,0")) - (rule "inEqSimp_ltToLeq" (formula "10") (term "1,1,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0,1,1,0")) - (rule "polySimp_mulAssoc" (formula "10") (term "0,1,0,0,1,1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "0,0,1,0,0,1,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "0,1,0,0,1,1,0")) - (rule "polySimp_elimOne" (formula "10") (term "0,1,0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,1,1,0")) - (rule "polySimp_pullOutFactor2b" (formula "10") (term "0,1,1,0")) - (rule "add_literals" (formula "10") (term "1,1,0,1,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0,1,1,0")) - (rule "add_zero_right" (formula "10") (term "0,1,1,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,1,1,0")) - (rule "add_literals" (formula "10") (term "0,0,0,1,1,0")) - (rule "add_zero_left" (formula "10") (term "0,0,1,1,0")) - (rule "polySimp_pullOutFactor1" (formula "10") (term "0,1,1,0")) - (rule "add_literals" (formula "10") (term "1,0,1,1,0")) - (rule "times_zero_1" (formula "10") (term "0,1,1,0")) - (rule "leq_literals" (formula "10") (term "1,1,0")) - (rule "concrete_and_3" (formula "10") (term "1,0")) - (rule "inEqSimp_commuteLeq" (formula "10") (term "0,0,1,0,0,1,0,0,0")) - (rule "replace_known_left" (formula "10") (term "0,0,1,0,0,1,0,0,0") (ifseqformula "7")) - (rule "ifthenelse_true" (formula "10") (term "0,1,0,0,1,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "10") (term "0,0,1,0,0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0,1,0,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0,1,0,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0,1,0,0,0")) - (rule "inEqSimp_homoInEq0" (formula "10") (term "1,0")) - (rule "times_zero_2" (formula "10") (term "1,0,1,0")) - (rule "add_zero_right" (formula "10") (term "0,1,0")) - (rule "applyEq" (formula "10") (term "0,1,0,1,0,0,0") (ifseqformula "8")) - (rule "polySimp_pullOutFactor1" (formula "10") (term "0,1,0,0,0")) - (rule "add_literals" (formula "10") (term "1,0,1,0,0,0")) - (rule "times_zero_1" (formula "10") (term "0,1,0,0,0")) - (rule "eqClose" (formula "10") (term "1,0,0,0")) - (rule "concrete_and_3" (formula "10") (term "0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "10") (term "1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,1,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,1,0")) - (rule "mul_literals" (formula "10") (term "0,1,1,0")) - (rule "polySimp_elimOne" (formula "10") (term "1,1,1,0")) - (rule "replace_known_left" (formula "10") (term "1,0") (ifseqformula "1")) - (rule "concrete_and_3" (formula "10") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "10") (term "0,0")) - (rule "mul_literals" (formula "10") (term "1,0,0")) - (rule "inEqSimp_subsumption1" (formula "10") (term "0,0") (ifseqformula "7")) - (rule "leq_literals" (formula "10") (term "0,0,0")) - (rule "concrete_or_1" (formula "10") (term "0,0")) - (rule "concrete_and_1" (formula "10") (term "0")) - (rule "all_unused" (formula "10") (term "0")) - (rule "all_unused" (formula "10") (term "0")) - (rule "concrete_and_1" (formula "10")) - (opengoal " ") - ) - (branch "Null Reference (_array = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "close" (formula "10") (ifseqformula "1")) - ) - (branch "Index Out of Bounds (_array != null, but i Out of Bounds!)" - (rule "simplifyUpdate2" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate2" (formula "1") (term "1")) - (rule "applyOnRigidFormula" (formula "10")) - (rule "simplifyUpdate1" (formula "10") (term "1")) - (rule "applyOnPV" (formula "10") (term "0")) - (rule "applyOnRigidFormula" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "0,0")) - (rule "simplifyUpdate1" (formula "1") (term "1,0")) - (rule "applyOnPV" (formula "1") (term "1,0")) - (rule "applyOnRigidFormula" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0,1")) - (rule "simplifyUpdate1" (formula "1") (term "1,1")) - (rule "applyOnRigidTerm" (formula "1") (term "0,0")) - (rule "applyOnPV" (formula "1") (term "0,0,0")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "0") (ifseqformula "2")) - (rule "inEqSimp_homoInEq1" (formula "1") (term "0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (rule "concrete_and_2" (formula "1") (term "0")) - (rule "concrete_or_2" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "8")) - (rule "qeq_literals" (formula "1") (term "0")) - (rule "concrete_and_2" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_4 false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "simplifyUpdate2" (formula "11")) - (rule "applyOnRigidTerm" (formula "9") (term "0,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,0")) - (rule "simplifyUpdate1" (formula "9") (term "0,0,0,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0,0")) - (rule "applyOnPV" (formula "9") (term "0,0,0,0")) - (rule "applyOnRigidTerm" (formula "9") (term "1,0,0,0")) - (rule "simplifyUpdate1" (formula "9") (term "0,1,0,0,0")) - (rule "applyOnPV" (formula "9") (term "1,1,0,0,0")) - (rule "replace_known_left" (formula "9") (term "0,0,0") (ifseqformula "1")) - (rule "ifthenelse_true" (formula "9") (term "0,0")) - (rule "applyOnRigidFormula" (formula "9")) - (rule "applyOnPV" (formula "9") (term "0")) - (rule "simplifyUpdate1" (formula "9") (term "1")) - (rule "boolean_equal" (formula "9")) - (rule "closeTrue" (formula "9")) - ) - ) - (branch "Null Reference (_array = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "close" (formula "10") (ifseqformula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "close" (formula "11") (ifseqformula "1")) - ) -) -(branch "Use Case" - (rule "false_to_not_true" (formula "7") (term "0,0,1,1")) - (rule "inInt" (formula "5") (term "1,1,1,1")) - (rule "concrete_and_3" (formula "5") (term "1,1,1")) - (rule "inInt" (formula "5") (term "1,1,1")) - (rule "concrete_and_3" (formula "5") (term "1,1")) - (rule "translateJavaCastInt" (formula "5") (term "1,1,1,1")) - (rule "simplifyUpdate2" (formula "5")) - (rule "eqSymm" (formula "5") (term "1,1,1")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "sequentialToParallel2" (formula "5")) - (rule "simplifyUpdate2" (formula "5")) - (rule "simplifyUpdate3" (formula "5") (term "1,0")) - (rule "andLeft" (formula "5")) - (rule "simplifyUpdate2" (formula "5")) - (rule "andLeft" (formula "5")) - (rule "simplifyUpdate2" (formula "5")) - (rule "applyOnRigidFormula" (formula "7")) - (rule "simplifyUpdate1" (formula "7") (term "1")) - (rule "simplifyUpdate1" (formula "7") (term "0")) - (rule "applyOnPV" (formula "7") (term "1")) - (rule "applyOnRigidFormula" (formula "6")) - (rule "simplifyUpdate1" (formula "6") (term "1")) - (rule "simplifyUpdate1" (formula "6") (term "0")) - (rule "applyOnPV" (formula "6") (term "0")) - (rule "applyOnRigidFormula" (formula "5")) - (rule "applyOnPV" (formula "5") (term "0")) - (rule "simplifyUpdate1" (formula "5") (term "1")) - (rule "applyOnRigidTerm" (formula "7") (term "0")) - (rule "simplifyUpdate1" (formula "7") (term "0,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0")) - (rule "applyOnPV" (formula "7") (term "1,0")) - (rule "applyOnRigidTerm" (formula "6") (term "1")) - (rule "applyOnPV" (formula "6") (term "0,1")) - (rule "applyOnRigidTerm" (formula "7") (term "2,0")) - (rule "applyOnPV" (formula "7") (term "1,2,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,2,0")) - (rule "simplifyUpdate1" (formula "7") (term "0,2,0")) - (rule "inEqSimp_commuteLeq" (formula "6")) - (rule "arrayLengthNotNegative" (formula "6") (term "0")) - (rule "arrayLengthIsAnInt" (formula "7") (term "0")) - (rule "inInt" (formula "7")) - (rule "true_left" (formula "7")) - (rule "methodCallReturn" (formula "10") (term "1,0,1")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "b_1")) - (rule "compound_less_than_comparison_2" (formula "10") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x")) - (rule "assignment" (formula "10") (term "1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "applyOnPV" (formula "10") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_1")) - (rule "assignment_read_length" (formula "10") (term "1")) - (branch "Normal Execution (_array != null)" - (rule "simplifyUpdate2" (formula "10")) - (rule "sequentialToParallel2" (formula "11")) - (rule "simplifyUpdate3" (formula "11") (term "1,0")) - (rule "applyOnElementary" (formula "11") (term "1,0")) - (rule "applyOnRigidFormula" (formula "10")) - (rule "applyOnPV" (formula "10") (term "0")) - (rule "simplifyUpdate1" (formula "10") (term "1")) - (rule "applyOnRigidTerm" (formula "10") (term "0,1,0")) - (rule "applyOnPV" (formula "10") (term "0,0,1,0")) - (rule "less_than_comparison_simple" (formula "10") (term "1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "applyOnElementary" (formula "10") (term "1,0")) - (rule "applyOnRigidTerm" (formula "10") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "2,0,1,0")) - (rule "applyOnRigidFormula" (formula "10") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,0,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "0,0,0,1,0")) - (rule "applyOnPV" (formula "10") (term "1,0,0,1,0")) - (rule "applyOnPV" (formula "10") (term "0,0,0,1,0")) - (rule "inEqSimp_ltToLeq" (formula "10") (term "0,0,1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0,0,0,1,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0,1,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "10") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "0,0,0,1,0")) - (rule "polySimp_elimOne" (formula "10") (term "0,0,0,1,0")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "emptyModality" (formula "10") (term "1")) - (rule "impRight" (formula "10")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "simplifyUpdate2" (formula "11")) - (rule "applyOnRigidFormula" (formula "9")) - (rule "applyOnPV" (formula "9") (term "0")) - (rule "simplifyUpdate1" (formula "9") (term "1")) - (rule "ifthenelse_concrete3" (formula "9")) - (rule "boolean_not_equal_2" (formula "9") (term "1")) - (rule "concrete_or_4" (formula "9")) - (rule "inEqSimp_geqRight" (formula "9")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "add_zero_left" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1")) - (rule "polySimp_elimOne" (formula "1") (term "1")) - (rule "inEqSimp_antiSymm" (formula "8") (ifseqformula "1")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "8")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "7")) - (rule "inEqSimp_homoInEq0" (formula "1")) - (rule "polySimp_pullOutFactor1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,0")) - (rule "times_zero_1" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "6")) - (rule "inEqSimp_homoInEq1" (formula "7")) - (rule "polySimp_pullOutFactor1" (formula "7") (term "0")) - (rule "add_literals" (formula "7") (term "1,0")) - (rule "times_zero_1" (formula "7") (term "0")) - (rule "leq_literals" (formula "7")) - (rule "true_left" (formula "7")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnPV" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate2" (formula "9")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "tryEmpty" (formula "9") (term "1")) - (rule "emptyModality" (formula "9") (term "1")) - (rule "applyOnRigidFormula" (formula "9")) - (rule "simplifyUpdate2" (formula "9") (term "0")) - (rule "simplifyUpdate2" (formula "9") (term "1")) - (rule "applyOnRigidFormula" (formula "9") (term "0")) - (rule "simplifyUpdate2" (formula "9") (term "1,0")) - (rule "applyOnRigidFormula" (formula "9") (term "1")) - (rule "simplifyUpdate1" (formula "9") (term "1,1")) - (rule "simplifyUpdate1" (formula "9") (term "2,1")) - (rule "simplifyUpdate1" (formula "9") (term "0,1")) - (rule "applyOnPV" (formula "9") (term "1,1")) - (rule "applyOnPV" (formula "9") (term "2,1")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0")) - (rule "simplifyUpdate2" (formula "9") (term "1,0,0")) - (rule "simplifyUpdate2" (formula "9") (term "0,0,0")) - (rule "applyOnRigidFormula" (formula "9") (term "1,0")) - (rule "applyOnRigidFormula" (formula "9") (term "1,0,0")) - (rule "applyOnPV" (formula "9") (term "1,1,0,0")) - (rule "simplifyUpdate1" (formula "9") (term "0,1,0,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0,0")) - (rule "applyOnPV" (formula "9") (term "0,0,0,0")) - (rule "eqClose" (formula "9") (term "0,0,0")) - (rule "concrete_impl_1" (formula "9") (term "0,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,1,0")) - (rule "applyOnRigidFormula" (formula "9") (term "1,1,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0,1,0")) - (rule "eqClose" (formula "9") (term "0,0,1,0")) - (rule "concrete_not_1" (formula "9") (term "0,1,0")) - (rule "concrete_impl_2" (formula "9") (term "1,0")) - (rule "concrete_and_3" (formula "9") (term "0")) - (rule "applyEq" (formula "9") (term "1,0,0") (ifseqformula "6")) - (rule "replace_known_left" (formula "9") (term "0") (ifseqformula "7")) - (rule "concrete_and_1" (formula "9")) - (opengoal " ") - ) - (branch "Null Reference (_array = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "close" (formula "10") (ifseqformula "1")) - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/oracle/ArrayUtil.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/oracle/ArrayUtil.xml deleted file mode 100644 index dc43f5b34ca..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/oracle/ArrayUtil.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/test/ArrayUtil.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/test/ArrayUtil.java deleted file mode 100644 index 7c1e1253df3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/test/ArrayUtil.java +++ /dev/null @@ -1,31 +0,0 @@ -public class ArrayUtil { - /*@ normal_behavior - @ requires \invariant_for(filter); - @*/ - public static int /*@ strictly_pure @*/ indexOf(Object[] array, - Filter filter) { - int index = -1; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length; - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (index < 0 && i < array.length) { - if (filter.accept(array[i])) { - index = i; - } - else { - i++; - } - } - return i; - } - - public static interface Filter { - /*@ normal_behavior - @ requires true; - @ ensures true; - @*/ - public boolean /*@ strictly_pure @*/ accept(/*@ nullable @*/ Object object); - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/test/ArrayUtil.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/test/ArrayUtil.proof deleted file mode 100644 index eaf5b5b41fd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/test/ArrayUtil.proof +++ /dev/null @@ -1,604 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jan 16 12:05:42 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ArrayUtil[ArrayUtil::indexOf([Ljava.lang.Object,ArrayUtil.Filter)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "ArrayUtil[ArrayUtil::indexOf([Ljava.lang.Object,ArrayUtil.Filter)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1159") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "heapAtPre")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "6")) -(rule "andLeft" (formula "2")) -(rule "eqSymm" (formula "8") (term "0,0,1,0,1")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "7")) -(builtin "One Step Simplification" (formula "3")) -(rule "nonNull" (formula "6") (inst "i=i")) -(rule "greater_literals" (formula "6") (term "0,1")) -(builtin "One Step Simplification" (formula "6")) -(rule "sub_literals" (formula "6") (term "2,1,0,1")) -(builtin "One Step Simplification" (formula "6")) -(rule "andLeft" (formula "6")) -(rule "notLeft" (formula "6")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "7")) -(builtin "One Step Simplification" (formula "2")) -(rule "inEqSimp_ltToLeq" (formula "6") (term "1,0,0")) -(rule "polySimp_mulComm0" (formula "6") (term "1,0,0,1,0,0")) -(rule "inEqSimp_commuteLeq" (formula "6") (term "0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "6") (term "1,0,0")) -(rule "polySimp_mulComm0" (formula "6") (term "1,1,0,0")) -(rule "polySimp_rightDist" (formula "6") (term "1,1,0,0")) -(rule "mul_literals" (formula "6") (term "0,1,1,0,0")) -(rule "polySimp_mulLiterals" (formula "6") (term "1,1,1,0,0")) -(rule "polySimp_elimOne" (formula "6") (term "1,1,1,0,0")) -(rule "nnf_imp2or" (formula "6") (term "0")) -(rule "nnf_notAnd" (formula "6") (term "0,0")) -(rule "inEqSimp_notGeq" (formula "6") (term "0,0,0")) -(rule "times_zero_1" (formula "6") (term "1,0,0,0,0,0")) -(rule "add_zero_right" (formula "6") (term "0,0,0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "6") (term "0,0,0")) -(rule "mul_literals" (formula "6") (term "1,0,0,0")) -(rule "inEqSimp_notLeq" (formula "6") (term "1,0,0")) -(rule "polySimp_rightDist" (formula "6") (term "1,0,0,1,0,0")) -(rule "mul_literals" (formula "6") (term "0,1,0,0,1,0,0")) -(rule "polySimp_addAssoc" (formula "6") (term "0,0,1,0,0")) -(rule "add_literals" (formula "6") (term "0,0,0,1,0,0")) -(rule "add_zero_left" (formula "6") (term "0,0,1,0,0")) -(rule "inEqSimp_sepPosMonomial1" (formula "6") (term "1,0,0")) -(rule "polySimp_mulLiterals" (formula "6") (term "1,1,0,0")) -(rule "polySimp_elimOne" (formula "6") (term "1,1,0,0")) -(rule "arrayLengthIsAnInt" (formula "6") (term "1,1,0,0")) -(builtin "One Step Simplification" (formula "6")) -(rule "true_left" (formula "6")) -(rule "arrayLengthNotNegative" (formula "6") (term "1,1,0,0")) -(rule "assignment" (formula "10") (term "1")) -(builtin "One Step Simplification" (formula "10")) -(rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_indexOf,savedHeapBefore_indexOf,_arrayBefore_indexOf,_filterBefore_indexOf")) -(builtin "One Step Simplification" (formula "10")) -(rule "variableDeclarationAssign" (formula "10") (term "1")) -(rule "variableDeclaration" (formula "10") (term "1") (newnames "index_1")) -(rule "unaryMinusInt" (formula "10") (term "1")) -(rule "translateJavaUnaryMinusInt" (formula "10") (term "0,0,1")) -(builtin "One Step Simplification" (formula "10")) -(rule "neg_literal" (formula "10") (term "0,1,0")) -(rule "variableDeclarationAssign" (formula "10") (term "1")) -(rule "variableDeclaration" (formula "10") (term "1") (newnames "i")) -(rule "assignment" (formula "10") (term "1")) -(builtin "One Step Simplification" (formula "10")) -(builtin "Loop Invariant" (formula "10") (newnames "variant,b,heapBefore_LOOP,iBefore_LOOP,index_1Before_LOOP,i_0,index_1_0,heap_After_LOOP,anon_heap_LOOP,o,f")) -(branch "Invariant Initially Valid" - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "1"))) - (rule "qeq_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "inEqSimp_leqRight" (formula "10")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "inEqSimp_sepNegMonomial1" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "7")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) -) -(branch "Body Preserves Invariant" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "12")) - (rule "translateJavaSubInt" (formula "12") (term "0,1,0,1,1,0,1,1")) - (rule "translateJavaSubInt" (formula "12") (term "0,1,1,1,0,1")) - (rule "andLeft" (formula "9")) - (rule "impRight" (formula "13")) - (rule "eqSymm" (formula "14") (term "0,0,1,0,0,1,1,0,1")) - (rule "polySimp_elimSub" (formula "14") (term "0,1,0,1,1,0,1")) - (rule "polySimp_elimSub" (formula "14") (term "0,1,1,1,0")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,0,1,1,0,1")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,1,1,0")) - (rule "inEqSimp_commuteLeq" (formula "11")) - (rule "inEqSimp_commuteLeq" (formula "14") (term "1,0,0,0,1,1,0,1")) - (rule "boxToDiamond" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_2")) - (rule "compound_assignment_3_nonsimple" (formula "11") (term "1")) - (rule "ifElseUnfold" (formula "11") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "x_4")) - (rule "compound_assignment_2" (formula "11") (term "1") (inst "#v=x_5")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "x_5")) - (rule "less_than_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "inEqSimp_ltToLeq" (formula "11") (term "0,0,1,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "11") (term "0,0,1,0")) - (rule "mul_literals" (formula "11") (term "1,0,0,1,0")) - (rule "compound_assignment_1_new" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifElseSplit" (formula "11")) - (branch "if x_4 true" - (builtin "One Step Simplification" (formula "12")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_leqRight" (formula "11")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "assignment" (formula "12")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "emptyModality" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "closeTrue" (formula "12")) - ) - (branch "if x_4 false" - (builtin "One Step Simplification" (formula "12")) - (builtin "One Step Simplification" (formula "1")) - (rule "compound_less_than_comparison_2" (formula "12") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_6")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_7")) - (rule "assignment_read_length" (formula "12") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "12") (ifInst "" (formula "14"))) - (rule "false_right" (formula "12")) - (rule "less_than_comparison_simple" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "inEqSimp_ltToLeq" (formula "12") (term "0,0,0")) - (rule "polySimp_mulComm0" (formula "12") (term "1,0,0,0,0,0")) - (rule "polySimp_addComm1" (formula "12") (term "0,0,0,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "12") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "12") (term "0,0,0,0")) - (rule "polySimp_elimOne" (formula "12") (term "0,0,0,0")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "emptyModality" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "notRight" (formula "12")) - (rule "inEqSimp_subsumption1" (formula "12") (ifseqformula "1")) - (rule "inEqSimp_homoInEq0" (formula "12") (term "0")) - (rule "polySimp_pullOutFactor1b" (formula "12") (term "0,0")) - (rule "add_literals" (formula "12") (term "1,1,0,0")) - (rule "times_zero_1" (formula "12") (term "1,0,0")) - (rule "add_zero_right" (formula "12") (term "0,0")) - (rule "qeq_literals" (formula "12") (term "0")) - (builtin "One Step Simplification" (formula "12")) - (rule "true_left" (formula "12")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "14") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_8")) - (rule "compound_assignment_3_nonsimple" (formula "14") (term "1")) - (rule "ifElseUnfold" (formula "14") (term "1") (inst "#boolv=x_9")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_9")) - (rule "compound_assignment_2" (formula "14") (term "1") (inst "#v=x_10")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_10")) - (rule "less_than_comparison_simple" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "0,0,1,0")) - (rule "times_zero_1" (formula "14") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "14") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "14") (term "0,0,1,0")) - (rule "mul_literals" (formula "14") (term "1,0,0,1,0")) - (rule "replace_known_left" (formula "14") (term "0,0,1,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "14")) - (rule "compound_assignment_1_new" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "ifElseSplit" (formula "14")) - (branch "if x_9 true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_9 false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "compound_less_than_comparison_2" (formula "14") (term "1") (inst "#v1=x_10") (inst "#v0=x_9")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_11")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_12")) - (rule "assignment_read_length" (formula "14") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12"))) - (rule "false_right" (formula "14")) - (builtin "One Step Simplification" (formula "14")) - (rule "less_than_comparison_simple" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "0,0,1,0")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,0,0,1,0")) - (rule "polySimp_addComm1" (formula "14") (term "0,0,0,1,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "14") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "14") (term "0,0,0,1,0")) - (rule "polySimp_elimOne" (formula "14") (term "0,0,0,1,0")) - (rule "replace_known_left" (formula "14") (term "0,0,1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "blockEmpty" (formula "14") (term "1")) - (rule "ifSplit" (formula "14")) - (branch "if x_8 true" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "ifElseUnfold" (formula "14") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_13")) - (rule "methodCallWithAssignmentUnfoldArguments" (formula "14") (term "1")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "var")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "var_1")) - (rule "assignment_array2" (formula "14") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12"))) - (builtin "One Step Simplification" (formula "15")) - (rule "orRight" (formula "14")) - (rule "inEqSimp_ltRight" (formula "15")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "14")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "onlyCreatedObjectsAreReferenced" (formula "14") (term "0,1,0") (ifseqformula "3")) - (rule "allLeft" (formula "10") (inst "t=i_0")) - (rule "inEqSimp_commuteGeq" (formula "10") (term "1,0")) - (rule "inEqSimp_contradInEq1" (formula "10") (term "0,0") (ifseqformula "13")) - (rule "qeq_literals" (formula "10") (term "0,0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "inEqSimp_contradInEq1" (formula "10") (term "0") (ifseqformula "2")) - (rule "inEqSimp_homoInEq1" (formula "10") (term "0,0")) - (rule "polySimp_pullOutFactor1b" (formula "10") (term "0,0,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0,0")) - (rule "add_zero_right" (formula "10") (term "0,0,0")) - (rule "leq_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "notLeft" (formula "10")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "1")) - (builtin "Use Operation Contract" (formula "16") (newnames "heapBefore_accept,result_0,exc_0") (contract "ArrayUtil.Filter[ArrayUtil.Filter::accept(java.lang.Object)].JML normal_behavior operation contract.0")) - (branch "Post (accept)" - (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "17")) - (rule "assignment" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "blockEmpty" (formula "17") (term "1")) - (rule "ifElseSplit" (formula "17")) - (branch "if x_13 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "assignment" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "tryEmpty" (formula "18") (term "1")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "emptyModality" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18") (ifInst "" (formula "13"))) - (rule "precOfInt" (formula "18") (term "1,0")) - (rule "inEqSimp_ltToLeq" (formula "18") (term "1,1,0")) - (rule "polySimp_rightDist" (formula "18") (term "1,0,0,1,1,0")) - (rule "polySimp_mulAssoc" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_mulComm0" (formula "18") (term "0,0,1,0,0,1,1,0")) - (rule "polySimp_mulLiterals" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_elimOne" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "18") (term "0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "18") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "18") (term "0,0,1,1,0")) - (rule "polySimp_pullOutFactor1b" (formula "18") (term "0,0,0,1,1,0")) - (rule "add_literals" (formula "18") (term "1,1,0,0,0,1,1,0")) - (rule "times_zero_1" (formula "18") (term "1,0,0,0,1,1,0")) - (rule "add_literals" (formula "18") (term "0,0,0,1,1,0")) - (rule "polySimp_pullOutFactor2b" (formula "18") (term "0,1,1,0")) - (rule "add_literals" (formula "18") (term "1,1,0,1,1,0")) - (rule "times_zero_1" (formula "18") (term "1,0,1,1,0")) - (rule "add_literals" (formula "18") (term "0,1,1,0")) - (rule "leq_literals" (formula "18") (term "1,1,0")) - (builtin "One Step Simplification" (formula "18")) - (rule "false_right" (formula "18")) - (opengoal " ") - ) - (branch "if x_13 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "notLeft" (formula "1")) - (rule "postincrement" (formula "18") (term "1")) - (rule "compound_int_cast_expression" (formula "18") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "18") (term "1")) - (rule "variableDeclaration" (formula "18") (term "1") (newnames "x_14")) - (rule "remove_parentheses_right" (formula "18") (term "1")) - (rule "assignmentAdditionInt" (formula "18") (term "1")) - (rule "translateJavaAddInt" (formula "18") (term "0,0,1")) - (builtin "One Step Simplification" (formula "18")) - (rule "polySimp_addComm0" (formula "18") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "18") (term "1")) - (rule "assignment" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "tryEmpty" (formula "18") (term "1")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "emptyModality" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18") (ifInst "" (formula "2"))) - (rule "polySimp_mulComm0" (formula "18") (term "0,0,1,0")) - (rule "polySimp_rightDist" (formula "18") (term "0,0,1,0")) - (rule "mul_literals" (formula "18") (term "0,0,0,1,0")) - (rule "precOfInt" (formula "18") (term "1,0")) - (rule "inEqSimp_ltToLeq" (formula "18") (term "1,1,0")) - (rule "polySimp_rightDist" (formula "18") (term "1,0,0,1,1,0")) - (rule "polySimp_mulAssoc" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_mulComm0" (formula "18") (term "0,0,1,0,0,1,1,0")) - (rule "polySimp_mulLiterals" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_elimOne" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "18") (term "0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "18") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "18") (term "0,0,1,1,0")) - (rule "polySimp_pullOutFactor2b" (formula "18") (term "0,1,1,0")) - (rule "add_literals" (formula "18") (term "1,1,0,1,1,0")) - (rule "times_zero_1" (formula "18") (term "1,0,1,1,0")) - (rule "add_zero_right" (formula "18") (term "0,1,1,0")) - (rule "polySimp_addAssoc" (formula "18") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "18") (term "0,0,1,1,0")) - (rule "add_literals" (formula "18") (term "0,0,0,1,1,0")) - (rule "add_zero_left" (formula "18") (term "0,0,1,1,0")) - (rule "polySimp_pullOutFactor1" (formula "18") (term "0,1,1,0")) - (rule "add_literals" (formula "18") (term "1,0,1,1,0")) - (rule "times_zero_1" (formula "18") (term "0,1,1,0")) - (rule "leq_literals" (formula "18") (term "1,1,0")) - (builtin "One Step Simplification" (formula "18")) - (rule "inEqSimp_homoInEq0" (formula "18") (term "1,0")) - (rule "times_zero_2" (formula "18") (term "1,0,1,0")) - (rule "add_zero_right" (formula "18") (term "0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "18") (term "0,0")) - (rule "mul_literals" (formula "18") (term "1,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "18") (term "1,0")) - (rule "polySimp_mulComm0" (formula "18") (term "1,1,0")) - (rule "polySimp_rightDist" (formula "18") (term "1,1,0")) - (rule "mul_literals" (formula "18") (term "0,1,1,0")) - (rule "polySimp_mulLiterals" (formula "18") (term "1,1,1,0")) - (rule "polySimp_elimOne" (formula "18") (term "1,1,1,0")) - (rule "replace_known_left" (formula "18") (term "1,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "18")) - (rule "inEqSimp_subsumption1" (formula "18") (term "0") (ifseqformula "12")) - (rule "leq_literals" (formula "18") (term "0,0")) - (builtin "One Step Simplification" (formula "18")) - (opengoal " ") - ) - ) - (branch "Exceptional Post (accept)" - (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "17")) - (rule "andLeft" (formula "13")) - (rule "andLeft" (formula "13")) - (rule "notLeft" (formula "13")) - (rule "close" (formula "15") (ifseqformula "14")) - ) - (branch "Pre (accept)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "8")) (ifInst "" (formula "4")) (ifInst "" (formula "13")) (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "16")) - ) - (branch "Null reference (var = null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "closeTrue" (formula "16")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but i Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "0") (ifseqformula "2")) - (rule "inEqSimp_homoInEq1" (formula "1") (term "0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "12")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_8 false" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) -) -(branch "Use Case" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "12")) - (rule "andLeft" (formula "9")) - (rule "inEqSimp_commuteLeq" (formula "10")) - (rule "methodCallReturn" (formula "13") (term "1,0,1")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "b_1")) - (rule "compound_assignment_3_nonsimple" (formula "13") (term "1")) - (rule "ifElseUnfold" (formula "13") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x")) - (rule "compound_assignment_2" (formula "13") (term "1") (inst "#v=x_1")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x_1")) - (rule "less_than_comparison_simple" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "inEqSimp_ltToLeq" (formula "13") (term "0,0,1,0")) - (rule "times_zero_1" (formula "13") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "13") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "13") (term "0,0,1,0")) - (rule "mul_literals" (formula "13") (term "1,0,0,1,0")) - (rule "compound_assignment_1_new" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "ifElseSplit" (formula "13")) - (branch "if x true" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_leqRight" (formula "11")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "methodCallEmpty" (formula "14") (term "1")) - (rule "emptyModality" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "methodCallEmpty" (formula "14") (term "1")) - (rule "tryEmpty" (formula "14") (term "1")) - (rule "emptyModality" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (opengoal " ") - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "1")) - (rule "compound_less_than_comparison_2" (formula "14") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_2")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_3")) - (rule "assignment_read_length" (formula "14") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "15")) - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12"))) - (rule "false_right" (formula "14")) - (rule "less_than_comparison_simple" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "0,0,1,0")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,0,0,1,0")) - (rule "polySimp_addComm1" (formula "14") (term "0,0,0,1,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "14") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "14") (term "0,0,0,1,0")) - (rule "polySimp_elimOne" (formula "14") (term "0,0,0,1,0")) - (rule "methodCallEmpty" (formula "14") (term "1")) - (rule "emptyModality" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "impRight" (formula "14")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "12")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "add_zero_left" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1")) - (rule "polySimp_elimOne" (formula "1") (term "1")) - (rule "inEqSimp_antiSymm" (formula "12") (ifseqformula "1")) - (rule "applyEq" (formula "9") (term "1,1,0,0") (ifseqformula "12")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "12")) - (rule "inEqSimp_homoInEq0" (formula "1")) - (rule "polySimp_pullOutFactor1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,0")) - (rule "times_zero_1" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "11")) - (rule "applyEq" (formula "11") (term "0") (ifseqformula "10")) - (rule "inEqSimp_homoInEq1" (formula "11")) - (rule "polySimp_pullOutFactor1" (formula "11") (term "0")) - (rule "add_literals" (formula "11") (term "1,0")) - (rule "times_zero_1" (formula "11") (term "0")) - (rule "leq_literals" (formula "11")) - (rule "true_left" (formula "11")) - (rule "assignment" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "methodCallEmpty" (formula "13") (term "1")) - (rule "tryEmpty" (formula "13") (term "1")) - (rule "emptyModality" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (opengoal " ") - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/test/ArrayUtilNoOneStepSimplification.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/test/ArrayUtilNoOneStepSimplification.proof deleted file mode 100644 index aaa681d4303..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueArrayUtil/test/ArrayUtilNoOneStepSimplification.proof +++ /dev/null @@ -1,1267 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jan 16 12:06:05 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ArrayUtil[ArrayUtil::indexOf([Ljava.lang.Object,ArrayUtil.Filter)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "ArrayUtil[ArrayUtil::indexOf([Ljava.lang.Object,ArrayUtil.Filter)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "2389") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "heapAtPre")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "6")) -(rule "andLeft" (formula "2")) -(rule "eqSymm" (formula "8") (term "0,0,1,0,1")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "7")) -(rule "concrete_or_2" (formula "3")) -(rule "nonNull" (formula "6") (inst "i=i")) -(rule "greater_literals" (formula "6") (term "0,1")) -(rule "concrete_impl_1" (formula "6") (term "1")) -(rule "sub_literals" (formula "6") (term "2,1,0,1")) -(rule "nonNullZero" (formula "6") (term "1,0,1")) -(rule "andLeft" (formula "6")) -(rule "notLeft" (formula "6")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "7")) -(rule "concrete_or_2" (formula "2")) -(rule "inEqSimp_ltToLeq" (formula "6") (term "1,0,0")) -(rule "polySimp_mulComm0" (formula "6") (term "1,0,0,1,0,0")) -(rule "inEqSimp_commuteLeq" (formula "6") (term "0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "6") (term "1,0,0")) -(rule "polySimp_mulComm0" (formula "6") (term "1,1,0,0")) -(rule "polySimp_rightDist" (formula "6") (term "1,1,0,0")) -(rule "mul_literals" (formula "6") (term "0,1,1,0,0")) -(rule "polySimp_mulLiterals" (formula "6") (term "1,1,1,0,0")) -(rule "polySimp_elimOne" (formula "6") (term "1,1,1,0,0")) -(rule "nnf_imp2or" (formula "6") (term "0")) -(rule "nnf_notAnd" (formula "6") (term "0,0")) -(rule "inEqSimp_notGeq" (formula "6") (term "0,0,0")) -(rule "times_zero_1" (formula "6") (term "1,0,0,0,0,0")) -(rule "add_zero_right" (formula "6") (term "0,0,0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "6") (term "0,0,0")) -(rule "mul_literals" (formula "6") (term "1,0,0,0")) -(rule "inEqSimp_notLeq" (formula "6") (term "1,0,0")) -(rule "polySimp_rightDist" (formula "6") (term "1,0,0,1,0,0")) -(rule "mul_literals" (formula "6") (term "0,1,0,0,1,0,0")) -(rule "polySimp_addAssoc" (formula "6") (term "0,0,1,0,0")) -(rule "add_literals" (formula "6") (term "0,0,0,1,0,0")) -(rule "add_zero_left" (formula "6") (term "0,0,1,0,0")) -(rule "inEqSimp_sepPosMonomial1" (formula "6") (term "1,0,0")) -(rule "polySimp_mulLiterals" (formula "6") (term "1,1,0,0")) -(rule "polySimp_elimOne" (formula "6") (term "1,1,0,0")) -(rule "arrayLengthIsAnInt" (formula "6") (term "1,1,0,0")) -(rule "inInt" (formula "6")) -(rule "true_left" (formula "6")) -(rule "arrayLengthNotNegative" (formula "6") (term "1,1,0,0")) -(rule "assignment" (formula "10") (term "1")) -(rule "sequentialToParallel2" (formula "10")) -(rule "simplifyUpdate3" (formula "10") (term "1,0")) -(rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_indexOf,savedHeapBefore_indexOf,_arrayBefore_indexOf,_filterBefore_indexOf")) -(rule "simplifyUpdate2" (formula "10") (term "1")) -(rule "variableDeclarationAssign" (formula "10") (term "1")) -(rule "variableDeclaration" (formula "10") (term "1") (newnames "index_1")) -(rule "unaryMinusInt" (formula "10") (term "1")) -(rule "translateJavaUnaryMinusInt" (formula "10") (term "0,0,1")) -(rule "neg_literal" (formula "10") (term "0,0,1")) -(rule "sequentialToParallel2" (formula "10")) -(rule "simplifyUpdate3" (formula "10") (term "1,0")) -(rule "variableDeclarationAssign" (formula "10") (term "1")) -(rule "variableDeclaration" (formula "10") (term "1") (newnames "i")) -(rule "assignment" (formula "10") (term "1")) -(rule "sequentialToParallel2" (formula "10")) -(rule "simplifyUpdate3" (formula "10") (term "1,0")) -(builtin "Loop Invariant" (formula "10") (newnames "variant,b,heapBefore_LOOP,iBefore_LOOP,index_1Before_LOOP,i_0,index_1_0,heap_After_LOOP,anon_heap_LOOP,o,f")) -(branch "Invariant Initially Valid" - (rule "simplifyUpdate2" (formula "10")) - (rule "applyOnRigidFormula" (formula "10")) - (rule "simplifyUpdate2" (formula "10") (term "1")) - (rule "replace_known_left" (formula "10") (term "1") (ifseqformula "1")) - (rule "concrete_and_3" (formula "10")) - (rule "applyOnRigidFormula" (formula "10")) - (rule "simplifyUpdate2" (formula "10") (term "0")) - (rule "applyOnRigidFormula" (formula "10") (term "1")) - (rule "simplifyUpdate1" (formula "10") (term "1,1")) - (rule "simplifyUpdate1" (formula "10") (term "0,1")) - (rule "applyOnPV" (formula "10") (term "0,1")) - (rule "applyOnRigidFormula" (formula "10") (term "0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0")) - (rule "applyOnPV" (formula "10") (term "0,0")) - (rule "qeq_literals" (formula "10") (term "0")) - (rule "concrete_and_1" (formula "10")) - (rule "applyOnRigidTerm" (formula "10") (term "1")) - (rule "applyOnPV" (formula "10") (term "0,1")) - (rule "inEqSimp_leqRight" (formula "10")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "inEqSimp_sepNegMonomial1" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "7")) - (rule "qeq_literals" (formula "1") (term "0")) - (rule "concrete_and_2" (formula "1")) - (rule "closeFalse" (formula "1")) -) -(branch "Body Preserves Invariant" - (rule "inInt" (formula "9") (term "0,1,1,1")) - (rule "concrete_and_1" (formula "9") (term "1,1,1")) - (rule "inInt" (formula "9") (term "1,1,1")) - (rule "concrete_and_3" (formula "9") (term "1,1")) - (rule "translateJavaSubInt" (formula "12") (term "0,1,0,1,1,0,1,1,1,1,1")) - (rule "translateJavaSubInt" (formula "12") (term "0,0,1,1,1")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate2" (formula "12") (term "1")) - (rule "simplifyUpdate2" (formula "9") (term "1")) - (rule "eqSymm" (formula "12") (term "0,0,1,0,0,1,1,0,1,1,1,1,1")) - (rule "polySimp_elimSub" (formula "12") (term "0,0,1,1,1")) - (rule "polySimp_elimSub" (formula "12") (term "0,1,0,1,1,0,1,1,1,1,1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "andLeft" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "sequentialToParallel2" (formula "13") (term "1")) - (rule "simplifyUpdate3" (formula "13") (term "1,0,1")) - (rule "sequentialToParallel2" (formula "13")) - (rule "simplifyUpdate2" (formula "13")) - (rule "simplifyUpdate3" (formula "13") (term "1,0")) - (rule "sequentialToParallel2" (formula "13")) - (rule "simplifyUpdate3" (formula "13") (term "1,0")) - (rule "impRight" (formula "13")) - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnSkip" (formula "1") (term "1,0")) - (rule "parallelWithSkip2" (formula "1") (term "0")) - (rule "applyOnElementary" (formula "14") (term "1,0")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,0,1,1,0,1")) - (rule "polySimp_addComm0" (formula "14") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "11")) - (rule "simplifyUpdate1" (formula "11") (term "1")) - (rule "simplifyUpdate1" (formula "11") (term "0")) - (rule "applyOnPV" (formula "11") (term "0")) - (rule "applyOnRigidFormula" (formula "10")) - (rule "applyOnPV" (formula "10") (term "0")) - (rule "simplifyUpdate1" (formula "10") (term "1")) - (rule "applyOnRigidTerm" (formula "14") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "0,0,1,0")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,0")) - (rule "applyOnRigidTerm" (formula "11") (term "1")) - (rule "applyOnPV" (formula "11") (term "0,1")) - (rule "applyOnRigidTerm" (formula "14") (term "1,0,1,0")) - (rule "applyOnPV" (formula "14") (term "0,1,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "1,1,0,1,0")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,0")) - (rule "applyOnRigidTerm" (formula "14") (term "1,0,1,0")) - (rule "applyOnPV" (formula "14") (term "0,1,0,1,0")) - (rule "inEqSimp_commuteLeq" (formula "14") (term "1,0,0,0,1,1,0,1")) - (rule "inEqSimp_commuteLeq" (formula "11")) - (rule "boxToDiamond" (formula "1") (term "1")) - (rule "notLeft" (formula "1")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_2")) - (rule "compound_assignment_3_nonsimple" (formula "11") (term "1")) - (rule "ifElseUnfold" (formula "11") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "x_4")) - (rule "compound_assignment_2" (formula "11") (term "1") (inst "#v=x_5")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "x_5")) - (rule "less_than_comparison_simple" (formula "11") (term "1")) - (rule "sequentialToParallel2" (formula "11")) - (rule "simplifyUpdate2" (formula "11")) - (rule "simplifyUpdate3" (formula "11") (term "1,0")) - (rule "applyOnElementary" (formula "11") (term "1,0")) - (rule "applyOnRigidTerm" (formula "11") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "11") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "11") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "11") (term "0,0,1,0")) - (rule "applyOnPV" (formula "11") (term "0,0,0,1,0")) - (rule "simplifyUpdate1" (formula "11") (term "1,0,0,1,0")) - (rule "inEqSimp_ltToLeq" (formula "11") (term "0,0,1,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "11") (term "0,0,1,0")) - (rule "mul_literals" (formula "11") (term "1,0,0,1,0")) - (rule "compound_assignment_1_new" (formula "11") (term "1")) - (rule "sequentialToParallel2" (formula "11")) - (rule "simplifyUpdate2" (formula "11")) - (rule "simplifyUpdate3" (formula "11") (term "1,0")) - (rule "ifElseSplit" (formula "11")) - (branch "if x_4 true" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "12")) - (rule "simplifyUpdate3" (formula "12") (term "0")) - (rule "applySkip2" (formula "12")) - (rule "applyOnElementary" (formula "1") (term "0")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnRigidTerm" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "2,0")) - (rule "ifthenelse_concrete4" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "0,1")) - (rule "boolean_not_equal_2" (formula "1") (term "1")) - (rule "concrete_or_4" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "11")) - (rule "simplifyUpdate1" (formula "11") (term "1")) - (rule "applyOnPV" (formula "11") (term "0")) - (rule "ifthenelse_concrete3" (formula "11")) - (rule "boolean_not_equal_2" (formula "11") (term "1")) - (rule "concrete_or_4" (formula "11")) - (rule "inEqSimp_leqRight" (formula "11")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "assignment" (formula "12")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "emptyModality" (formula "12") (term "1")) - (rule "notRight" (formula "12")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "boolean_not_equal_2" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_4 false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "12")) - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate3" (formula "12") (term "1,0")) - (rule "parallelWithSkip2" (formula "12") (term "0")) - (rule "notLeft" (formula "1")) - (rule "applyOnElementary" (formula "11") (term "0")) - (rule "applyOnRigidFormula" (formula "11")) - (rule "applyOnPV" (formula "11") (term "0")) - (rule "simplifyUpdate1" (formula "11") (term "1")) - (rule "applyOnRigidTerm" (formula "11") (term "0")) - (rule "simplifyUpdate1" (formula "11") (term "1,0")) - (rule "simplifyUpdate1" (formula "11") (term "2,0")) - (rule "ifthenelse_concrete4" (formula "11")) - (rule "boolean_not_equal_2" (formula "11") (term "1")) - (rule "concrete_or_4" (formula "11")) - (rule "notRight" (formula "11")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "ifthenelse_concrete3" (formula "1")) - (rule "boolean_not_equal_2" (formula "1") (term "1")) - (rule "concrete_or_4" (formula "1")) - (rule "compound_less_than_comparison_2" (formula "12") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_6")) - (rule "assignment" (formula "12") (term "1")) - (rule "sequentialToParallel2" (formula "12")) - (rule "simplifyUpdate2" (formula "12")) - (rule "simplifyUpdate3" (formula "12") (term "1,0")) - (rule "applyOnElementary" (formula "12") (term "1,0")) - (rule "applyOnPV" (formula "12") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_7")) - (rule "assignment_read_length" (formula "12") (term "1")) - (branch "Normal Execution (_array != null)" - (rule "simplifyUpdate2" (formula "12")) - (rule "sequentialToParallel2" (formula "13")) - (rule "simplifyUpdate2" (formula "13")) - (rule "simplifyUpdate3" (formula "13") (term "1,0")) - (rule "applyOnElementary" (formula "13") (term "1,0")) - (rule "applyOnRigidFormula" (formula "12")) - (rule "simplifyUpdate1" (formula "12") (term "1")) - (rule "applyOnPV" (formula "12") (term "0")) - (rule "applyOnRigidTerm" (formula "12") (term "0,1,0")) - (rule "applyOnPV" (formula "12") (term "0,0,1,0")) - (rule "less_than_comparison_simple" (formula "12") (term "1")) - (rule "sequentialToParallel2" (formula "12")) - (rule "simplifyUpdate2" (formula "12")) - (rule "applyOnElementary" (formula "12") (term "0")) - (rule "applyOnRigidTerm" (formula "12") (term "0,0")) - (rule "simplifyUpdate1" (formula "12") (term "2,0,0")) - (rule "simplifyUpdate1" (formula "12") (term "1,0,0")) - (rule "applyOnRigidFormula" (formula "12") (term "0,0,0")) - (rule "simplifyUpdate1" (formula "12") (term "1,0,0,0")) - (rule "simplifyUpdate1" (formula "12") (term "0,0,0,0")) - (rule "applyOnPV" (formula "12") (term "1,0,0,0")) - (rule "applyOnPV" (formula "12") (term "0,0,0,0")) - (rule "inEqSimp_ltToLeq" (formula "12") (term "0,0,0")) - (rule "polySimp_mulComm0" (formula "12") (term "1,0,0,0,0,0")) - (rule "polySimp_addComm1" (formula "12") (term "0,0,0,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "12") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "12") (term "0,0,0,0")) - (rule "polySimp_elimOne" (formula "12") (term "0,0,0,0")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "emptyModality" (formula "12") (term "1")) - (rule "notRight" (formula "12")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "ifthenelse_concrete3" (formula "1")) - (rule "boolean_not_equal_2" (formula "1") (term "1")) - (rule "concrete_or_4" (formula "1")) - (rule "inEqSimp_subsumption1" (formula "12") (ifseqformula "1")) - (rule "inEqSimp_homoInEq0" (formula "12") (term "0")) - (rule "polySimp_pullOutFactor1b" (formula "12") (term "0,0")) - (rule "add_literals" (formula "12") (term "1,1,0,0")) - (rule "times_zero_1" (formula "12") (term "1,0,0")) - (rule "add_zero_right" (formula "12") (term "0,0")) - (rule "qeq_literals" (formula "12") (term "0")) - (rule "concrete_or_1" (formula "12")) - (rule "true_left" (formula "12")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "14") (term "1")) - (rule "sequentialToParallel2" (formula "14")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "14") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_8")) - (rule "compound_assignment_3_nonsimple" (formula "14") (term "1")) - (rule "ifElseUnfold" (formula "14") (term "1") (inst "#boolv=x_9")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_9")) - (rule "compound_assignment_2" (formula "14") (term "1") (inst "#v=x_10")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_10")) - (rule "less_than_comparison_simple" (formula "14") (term "1")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "0,0,0,1")) - (rule "times_zero_1" (formula "14") (term "1,0,0,0,0,0,1")) - (rule "add_zero_right" (formula "14") (term "0,0,0,0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "14") (term "0,0,0,1")) - (rule "mul_literals" (formula "14") (term "1,0,0,0,1")) - (rule "sequentialToParallel2" (formula "14")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "applyOnElementary" (formula "14") (term "1,0")) - (rule "applyOnRigidTerm" (formula "14") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "2,0,1,0")) - (rule "applyOnRigidFormula" (formula "14") (term "0,0,1,0")) - (rule "applyOnPV" (formula "14") (term "0,0,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "1,0,0,1,0")) - (rule "replace_known_left" (formula "14") (term "0,0,1,0") (ifseqformula "2")) - (rule "ifthenelse_true" (formula "14") (term "0,1,0")) - (rule "compound_assignment_1_new" (formula "14") (term "1")) - (rule "sequentialToParallel2" (formula "14")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "applyOnElementary" (formula "14") (term "1,0")) - (rule "simplifyUpdate2" (formula "14")) - (rule "ifElseSplit" (formula "14")) - (branch "if x_9 true" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "15")) - (rule "applyOnRigidTerm" (formula "1") (term "0,0")) - (rule "simplifyUpdate1" (formula "1") (term "1,0,0")) - (rule "simplifyUpdate1" (formula "1") (term "2,0,0")) - (rule "applyOnRigidFormula" (formula "1") (term "0,0,0")) - (rule "applyOnPV" (formula "1") (term "0,0,0,0")) - (rule "simplifyUpdate1" (formula "1") (term "1,0,0,0")) - (rule "boolean_equal" (formula "1") (term "0,0,0")) - (rule "ifthenelse_true" (formula "1") (term "0,0")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "boolean_not_equal_2" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_9 false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "simplifyUpdate2" (formula "15")) - (rule "applyOnRigidFormula" (formula "12")) - (rule "simplifyUpdate1" (formula "12") (term "1")) - (rule "applyOnPV" (formula "12") (term "0")) - (rule "applyOnRigidTerm" (formula "12") (term "0")) - (rule "simplifyUpdate1" (formula "12") (term "2,0")) - (rule "ifthenelse_concrete4" (formula "12")) - (rule "simplifyUpdate1" (formula "12") (term "0,1")) - (rule "boolean_not_equal_2" (formula "12") (term "1")) - (rule "concrete_or_4" (formula "12")) - (rule "notRight" (formula "12")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "boolean_equal" (formula "1")) - (rule "true_left" (formula "1")) - (rule "compound_less_than_comparison_2" (formula "14") (term "1") (inst "#v1=x_10") (inst "#v0=x_9")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_11")) - (rule "assignment" (formula "14") (term "1")) - (rule "sequentialToParallel2" (formula "14")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "applyOnElementary" (formula "14") (term "1,0")) - (rule "applyOnPV" (formula "14") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_12")) - (rule "assignment_read_length" (formula "14") (term "1")) - (branch "Normal Execution (_array != null)" - (rule "simplifyUpdate2" (formula "14")) - (rule "applyOnRigidFormula" (formula "14")) - (rule "applyOnPV" (formula "14") (term "0")) - (rule "simplifyUpdate1" (formula "14") (term "1")) - (rule "sequentialToParallel2" (formula "14")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "applyOnElementary" (formula "14") (term "1,0")) - (rule "applyOnRigidTerm" (formula "14") (term "0,1,0")) - (rule "applyOnPV" (formula "14") (term "0,0,1,0")) - (rule "less_than_comparison_simple" (formula "14") (term "1")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "0,0,0,1")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,0,0,0,1")) - (rule "polySimp_addComm1" (formula "14") (term "0,0,0,0,1")) - (rule "inEqSimp_sepNegMonomial0" (formula "14") (term "0,0,0,1")) - (rule "polySimp_mulLiterals" (formula "14") (term "0,0,0,0,1")) - (rule "polySimp_elimOne" (formula "14") (term "0,0,0,0,1")) - (rule "sequentialToParallel2" (formula "14")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "applyOnElementary" (formula "14") (term "1,0")) - (rule "simplifyUpdate2" (formula "14")) - (rule "applyOnRigidTerm" (formula "14") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "14") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "1,0,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "0,0,0,1,0")) - (rule "applyOnPV" (formula "14") (term "0,0,0,1,0")) - (rule "applyOnRigidTerm" (formula "14") (term "1,0,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "0,1,0,0,1,0")) - (rule "applyOnPV" (formula "14") (term "1,1,0,0,1,0")) - (rule "replace_known_left" (formula "14") (term "0,0,1,0") (ifseqformula "1")) - (rule "ifthenelse_true" (formula "14") (term "0,1,0")) - (rule "blockEmpty" (formula "14") (term "1")) - (rule "ifSplit" (formula "14")) - (branch "if x_8 true" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "15")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "boolean_equal" (formula "1")) - (rule "true_left" (formula "1")) - (rule "ifElseUnfold" (formula "14") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_13")) - (rule "methodCallWithAssignmentUnfoldArguments" (formula "14") (term "1")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "var")) - (rule "assignment" (formula "14") (term "1")) - (rule "sequentialToParallel2" (formula "14")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "applyOnElementary" (formula "14") (term "1,0")) - (rule "applyOnPV" (formula "14") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "var_1")) - (rule "assignment_array2" (formula "14") (term "1")) - (branch "Normal Execution (_array != null)" - (rule "simplifyUpdate2" (formula "14")) - (rule "orRight" (formula "14")) - (rule "simplifyUpdate2" (formula "15")) - (rule "orRight" (formula "14")) - (rule "simplifyUpdate2" (formula "14")) - (rule "applyOnRigidFormula" (formula "16")) - (rule "applyOnPV" (formula "16") (term "0")) - (rule "simplifyUpdate1" (formula "16") (term "1")) - (rule "applyOnRigidFormula" (formula "15")) - (rule "simplifyUpdate1" (formula "15") (term "0")) - (rule "simplifyUpdate1" (formula "15") (term "1")) - (rule "applyOnPV" (formula "15") (term "1")) - (rule "applyOnRigidFormula" (formula "14")) - (rule "applyOnPV" (formula "14") (term "0")) - (rule "simplifyUpdate1" (formula "14") (term "1")) - (rule "applyOnRigidTerm" (formula "14") (term "0")) - (rule "applyOnPV" (formula "14") (term "0,0")) - (rule "inEqSimp_ltRight" (formula "15")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "14")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "sequentialToParallel2" (formula "14")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "applyOnElementary" (formula "14") (term "1,0")) - (rule "applyOnRigidTerm" (formula "14") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "1,0,1,0")) - (rule "applyOnPV" (formula "14") (term "1,0,1,0")) - (rule "applyOnRigidTerm" (formula "14") (term "2,0,1,0")) - (rule "applyOnPV" (formula "14") (term "0,2,0,1,0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "14") (term "0,1,0") (ifseqformula "3")) - (rule "allLeft" (formula "10") (inst "t=i_0")) - (rule "inEqSimp_commuteGeq" (formula "10") (term "1,0")) - (rule "inEqSimp_contradInEq1" (formula "10") (term "1,0") (ifseqformula "2")) - (rule "inEqSimp_homoInEq1" (formula "10") (term "0,1,0")) - (rule "polySimp_pullOutFactor1b" (formula "10") (term "0,0,1,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0,1,0")) - (rule "add_literals" (formula "10") (term "0,0,1,0")) - (rule "leq_literals" (formula "10") (term "0,1,0")) - (rule "concrete_and_2" (formula "10") (term "1,0")) - (rule "concrete_or_4" (formula "10") (term "0")) - (rule "inEqSimp_contradInEq1" (formula "10") (term "0") (ifseqformula "13")) - (rule "qeq_literals" (formula "10") (term "0,0")) - (rule "concrete_and_2" (formula "10") (term "0")) - (rule "concrete_or_2" (formula "10")) - (rule "notLeft" (formula "10")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "13")) - (rule "concrete_or_2" (formula "1")) - (builtin "Use Operation Contract" (formula "16") (newnames "heapBefore_accept,result_0,exc_0") (contract "ArrayUtil.Filter[ArrayUtil.Filter::accept(java.lang.Object)].JML normal_behavior operation contract.0")) - (branch "Post (accept)" - (rule "simplifyUpdate2" (formula "13")) - (rule "simplifyUpdate2" (formula "13") (term "1")) - (rule "andLeft" (formula "13")) - (rule "simplifyUpdate2" (formula "13")) - (rule "andLeft" (formula "14")) - (rule "simplifyUpdate2" (formula "15")) - (rule "simplifyUpdate2" (formula "18")) - (rule "applyOnRigidFormula" (formula "14")) - (rule "simplifyUpdate1" (formula "14") (term "0")) - (rule "applyOnPV" (formula "14") (term "1")) - (rule "assignment" (formula "17") (term "1")) - (rule "sequentialToParallel2" (formula "17")) - (rule "simplifyUpdate3" (formula "17") (term "1,0")) - (rule "blockEmpty" (formula "17") (term "1")) - (rule "ifElseSplit" (formula "17")) - (branch "if x_13 true" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "18")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "assignment" (formula "18") (term "1")) - (rule "simplifyUpdate2" (formula "18")) - (rule "simplifyUpdate2" (formula "18") (term "1")) - (rule "tryEmpty" (formula "18") (term "1")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "emptyModality" (formula "18") (term "1")) - (rule "applyOnRigidFormula" (formula "18")) - (rule "simplifyUpdate2" (formula "18") (term "0")) - (rule "simplifyUpdate2" (formula "18") (term "1")) - (rule "applyOnRigidFormula" (formula "18") (term "0")) - (rule "simplifyUpdate2" (formula "18") (term "0,0")) - (rule "simplifyUpdate2" (formula "18") (term "1,0")) - (rule "applyOnRigidFormula" (formula "18") (term "1")) - (rule "simplifyUpdate2" (formula "18") (term "1,1")) - (rule "simplifyUpdate2" (formula "18") (term "0,1")) - (rule "applyOnRigidFormula" (formula "18") (term "0,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,0,0")) - (rule "applyOnPV" (formula "18") (term "0,0,0")) - (rule "boolean_not_equal_2" (formula "18") (term "0,0")) - (rule "concrete_impl_2" (formula "18") (term "0")) - (rule "concrete_and_1" (formula "18")) - (rule "impRight" (formula "18")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "19")) - (rule "simplifyUpdate2" (formula "19") (term "0")) - (rule "simplifyUpdate2" (formula "19") (term "1")) - (rule "applyOnRigidFormula" (formula "15")) - (rule "applyOnPV" (formula "15") (term "0")) - (rule "simplifyUpdate1" (formula "15") (term "1")) - (rule "boolean_not_equal_2" (formula "15")) - (rule "false_right" (formula "15")) - (rule "applyOnRigidFormula" (formula "18") (term "0")) - (rule "simplifyUpdate2" (formula "18") (term "0,0")) - (rule "simplifyUpdate2" (formula "18") (term "1,0")) - (rule "applyOnRigidFormula" (formula "18") (term "1")) - (rule "simplifyUpdate1" (formula "18") (term "0,1")) - (rule "simplifyUpdate1" (formula "18") (term "1,1")) - (rule "simplifyUpdate1" (formula "18") (term "2,1")) - (rule "simplifyUpdate1" (formula "18") (term "3,1")) - (rule "applyOnPV" (formula "18") (term "1,1")) - (rule "applyOnPV" (formula "18") (term "2,1")) - (rule "applyOnPV" (formula "18") (term "3,1")) - (rule "applyOnRigidFormula" (formula "18") (term "0,0")) - (rule "simplifyUpdate2" (formula "18") (term "0,0,0")) - (rule "simplifyUpdate2" (formula "18") (term "1,0,0")) - (rule "applyOnRigidFormula" (formula "18") (term "1,0")) - (rule "simplifyUpdate1" (formula "18") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,1,0")) - (rule "applyOnPV" (formula "18") (term "1,1,0")) - (rule "applyOnRigidFormula" (formula "18") (term "0,0,0")) - (rule "simplifyUpdate2" (formula "18") (term "0,0,0,0")) - (rule "applyOnRigidFormula" (formula "18") (term "1,0,0")) - (rule "applyOnRigidTerm" (formula "18") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "18") (term "0,0,1,0")) - (rule "polySimp_addComm0" (formula "18") (term "0,1,0")) - (rule "applyOnRigidFormula" (formula "18") (term "1,0,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "0,1,0,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,1,0,0,0")) - (rule "applyOnPV" (formula "18") (term "1,1,0,0,0")) - (rule "applyOnRigidFormula" (formula "18") (term "0,0,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,0,0,0,0")) - (rule "applyOnPV" (formula "18") (term "0,0,0,0,0")) - (rule "replace_known_left" (formula "18") (term "0,0,0,0") (ifseqformula "13")) - (rule "concrete_and_1" (formula "18") (term "0,0,0")) - (rule "applyOnRigidFormula" (formula "18") (term "0,1,0,0")) - (rule "precOfInt" (formula "18") (term "1,0")) - (rule "applyOnRigidTerm" (formula "18") (term "0,0,0,0")) - (rule "applyOnPV" (formula "18") (term "0,0,0,0,0")) - (rule "applyOnRigidFormula" (formula "18") (term "0,0,1,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,0,0,1,0,0")) - (rule "applyOnRigidTerm" (formula "18") (term "1,0,1,1,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,1,0,1,1,0")) - (rule "applyOnPV" (formula "18") (term "0,1,0,1,1,0")) - (rule "polySimp_addComm0" (formula "18") (term "0,1,1,0")) - (rule "applyOnRigidTerm" (formula "18") (term "0,1,0,1,0")) - (rule "applyOnPV" (formula "18") (term "0,0,1,0,1,0")) - (rule "applyOnRigidTerm" (formula "18") (term "1,1,0,1,0")) - (rule "applyOnPV" (formula "18") (term "0,1,1,0,1,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,1,1,0,1,0")) - (rule "polySimp_addComm0" (formula "18") (term "1,0,1,0")) - (rule "applyOnRigidTerm" (formula "18") (term "0,0,0,1,0,0")) - (rule "applyOnPV" (formula "18") (term "0,0,0,0,1,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "2,0,0,0,1,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,0,0,0,1,0,0")) - (rule "eqClose" (formula "18") (term "0,0,1,0,0")) - (rule "applyOnRigidTerm" (formula "18") (term "1,0,1,1,0")) - (rule "applyOnPV" (formula "18") (term "0,1,0,1,1,0")) - (rule "inEqSimp_ltToLeq" (formula "18") (term "1,1,0")) - (rule "polySimp_rightDist" (formula "18") (term "1,0,0,1,1,0")) - (rule "polySimp_mulAssoc" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_mulComm0" (formula "18") (term "0,0,1,0,0,1,1,0")) - (rule "polySimp_mulLiterals" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_elimOne" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "18") (term "0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "18") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "18") (term "0,0,1,1,0")) - (rule "polySimp_pullOutFactor2b" (formula "18") (term "0,1,1,0")) - (rule "add_literals" (formula "18") (term "1,1,0,1,1,0")) - (rule "times_zero_1" (formula "18") (term "1,0,1,1,0")) - (rule "add_zero_right" (formula "18") (term "0,1,1,0")) - (rule "polySimp_pullOutFactor1b" (formula "18") (term "0,1,1,0")) - (rule "add_literals" (formula "18") (term "1,1,0,1,1,0")) - (rule "times_zero_1" (formula "18") (term "1,0,1,1,0")) - (rule "add_zero_right" (formula "18") (term "0,1,1,0")) - (rule "leq_literals" (formula "18") (term "1,1,0")) - (rule "concrete_and_4" (formula "18") (term "1,0")) - (rule "concrete_and_4" (formula "18") (term "0")) - (rule "concrete_and_2" (formula "18")) - (rule "false_right" (formula "18")) - (opengoal " ") - ) - (branch "if x_13 false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "simplifyUpdate2" (formula "18")) - (rule "applyOnRigidFormula" (formula "14")) - (rule "applyOnPV" (formula "14") (term "0")) - (rule "simplifyUpdate1" (formula "14") (term "1")) - (rule "postincrement" (formula "18") (term "1")) - (rule "compound_int_cast_expression" (formula "18") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "18") (term "1")) - (rule "variableDeclaration" (formula "18") (term "1") (newnames "x_14")) - (rule "remove_parentheses_right" (formula "18") (term "1")) - (rule "assignmentAdditionInt" (formula "18") (term "1")) - (rule "translateJavaAddInt" (formula "18") (term "0,0,1")) - (rule "polySimp_addComm0" (formula "18") (term "0,0,1")) - (rule "sequentialToParallel2" (formula "18")) - (rule "simplifyUpdate3" (formula "18") (term "1,0")) - (rule "applyOnElementary" (formula "18") (term "1,0")) - (rule "applyOnRigidTerm" (formula "18") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "18") (term "0,0,1,0")) - (rule "applyOnPV" (formula "18") (term "1,0,1,0")) - (rule "widening_identity_cast_5" (formula "18") (term "1")) - (rule "assignment" (formula "18") (term "1")) - (rule "sequentialToParallel2" (formula "18")) - (rule "simplifyUpdate3" (formula "18") (term "1,0")) - (rule "applyOnElementary" (formula "18") (term "1,0")) - (rule "applyOnPV" (formula "18") (term "0,1,0")) - (rule "simplifyUpdate2" (formula "18")) - (rule "tryEmpty" (formula "18") (term "1")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "emptyModality" (formula "18") (term "1")) - (rule "applyOnRigidFormula" (formula "18")) - (rule "simplifyUpdate2" (formula "18") (term "1")) - (rule "simplifyUpdate2" (formula "18") (term "0")) - (rule "applyOnRigidFormula" (formula "18") (term "1")) - (rule "simplifyUpdate2" (formula "18") (term "1,1")) - (rule "simplifyUpdate2" (formula "18") (term "0,1")) - (rule "applyOnRigidFormula" (formula "18") (term "0")) - (rule "simplifyUpdate2" (formula "18") (term "0,0")) - (rule "simplifyUpdate2" (formula "18") (term "1,0")) - (rule "applyOnRigidFormula" (formula "18") (term "1,1")) - (rule "simplifyUpdate2" (formula "18") (term "1,1,1")) - (rule "simplifyUpdate2" (formula "18") (term "0,1,1")) - (rule "applyOnRigidFormula" (formula "18") (term "0,1")) - (rule "applyOnRigidFormula" (formula "18") (term "0,0")) - (rule "applyOnPV" (formula "18") (term "0,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,0,0")) - (rule "boolean_not_equal_2" (formula "18") (term "0,0")) - (rule "concrete_impl_2" (formula "18") (term "0")) - (rule "concrete_and_1" (formula "18")) - (rule "impRight" (formula "18")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "19") (term "0")) - (rule "simplifyUpdate2" (formula "19") (term "0,0")) - (rule "simplifyUpdate2" (formula "19") (term "1,0")) - (rule "applyOnRigidFormula" (formula "19") (term "1")) - (rule "simplifyUpdate1" (formula "19") (term "2,1")) - (rule "simplifyUpdate1" (formula "19") (term "0,1")) - (rule "simplifyUpdate1" (formula "19") (term "3,1")) - (rule "simplifyUpdate1" (formula "19") (term "1,1")) - (rule "applyOnPV" (formula "19") (term "2,1")) - (rule "applyOnPV" (formula "19") (term "3,1")) - (rule "applyOnPV" (formula "19") (term "1,1")) - (rule "applyOnRigidFormula" (formula "14")) - (rule "simplifyUpdate1" (formula "14") (term "1")) - (rule "applyOnPV" (formula "14") (term "0")) - (rule "boolean_not_equal_2" (formula "14")) - (rule "false_right" (formula "14")) - (rule "applyOnRigidFormula" (formula "18") (term "0,0")) - (rule "simplifyUpdate2" (formula "18") (term "0,0,0")) - (rule "simplifyUpdate2" (formula "18") (term "1,0,0")) - (rule "applyOnRigidFormula" (formula "18") (term "1,0")) - (rule "simplifyUpdate1" (formula "18") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,1,0")) - (rule "applyOnPV" (formula "18") (term "1,1,0")) - (rule "applyOnRigidFormula" (formula "18") (term "0,0,0")) - (rule "simplifyUpdate2" (formula "18") (term "0,0,0,0")) - (rule "applyOnRigidFormula" (formula "18") (term "1,0,0")) - (rule "applyOnRigidTerm" (formula "18") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "18") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,0,1,0")) - (rule "polySimp_addComm0" (formula "18") (term "0,1,0")) - (rule "applyOnRigidFormula" (formula "18") (term "1,0,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "0,1,0,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,1,0,0,0")) - (rule "applyOnPV" (formula "18") (term "1,1,0,0,0")) - (rule "applyOnRigidFormula" (formula "18") (term "0,0,0,0")) - (rule "applyOnPV" (formula "18") (term "0,0,0,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,0,0,0,0")) - (rule "applyOnRigidFormula" (formula "18") (term "0,1,0,0")) - (rule "precOfInt" (formula "18") (term "1,0")) - (rule "applyOnRigidTerm" (formula "18") (term "0,1,0,0,0")) - (rule "applyOnPV" (formula "18") (term "0,0,1,0,0,0")) - (rule "replace_known_left" (formula "18") (term "1,0,0,0") (ifseqformula "2")) - (rule "concrete_and_3" (formula "18") (term "0,0,0")) - (rule "applyOnRigidFormula" (formula "18") (term "0,0,1,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,0,0,1,0,0")) - (rule "applyOnRigidTerm" (formula "18") (term "0,0,1,1,0")) - (rule "applyOnPV" (formula "18") (term "0,0,0,1,1,0")) - (rule "applyOnRigidTerm" (formula "18") (term "1,0,1,1,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,1,0,1,1,0")) - (rule "applyOnPV" (formula "18") (term "0,1,0,1,1,0")) - (rule "polySimp_mulComm0" (formula "18") (term "1,0,1,1,0")) - (rule "polySimp_rightDist" (formula "18") (term "1,0,1,1,0")) - (rule "mul_literals" (formula "18") (term "0,1,0,1,1,0")) - (rule "polySimp_addComm0" (formula "18") (term "0,1,1,0")) - (rule "applyOnRigidTerm" (formula "18") (term "1,1,0,1,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,1,1,0,1,0")) - (rule "applyOnPV" (formula "18") (term "0,1,1,0,1,0")) - (rule "polySimp_mulComm0" (formula "18") (term "1,1,0,1,0")) - (rule "polySimp_rightDist" (formula "18") (term "1,1,0,1,0")) - (rule "mul_literals" (formula "18") (term "0,1,1,0,1,0")) - (rule "polySimp_addComm0" (formula "18") (term "1,0,1,0")) - (rule "applyOnRigidTerm" (formula "18") (term "0,0,0,1,0,0")) - (rule "applyOnPV" (formula "18") (term "0,0,0,0,1,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "2,0,0,0,1,0,0")) - (rule "simplifyUpdate1" (formula "18") (term "1,0,0,0,1,0,0")) - (rule "eqClose" (formula "18") (term "0,0,1,0,0")) - (rule "applyOnRigidTerm" (formula "18") (term "1,1,0,1,0")) - (rule "applyOnPV" (formula "18") (term "0,1,1,0,1,0")) - (rule "inEqSimp_ltToLeq" (formula "18") (term "1,1,0")) - (rule "polySimp_rightDist" (formula "18") (term "1,0,0,1,1,0")) - (rule "polySimp_mulAssoc" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_mulComm0" (formula "18") (term "0,0,1,0,0,1,1,0")) - (rule "polySimp_mulLiterals" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_elimOne" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "18") (term "0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "18") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "18") (term "0,0,1,1,0")) - (rule "polySimp_pullOutFactor2b" (formula "18") (term "0,1,1,0")) - (rule "add_literals" (formula "18") (term "1,1,0,1,1,0")) - (rule "times_zero_1" (formula "18") (term "1,0,1,1,0")) - (rule "add_zero_right" (formula "18") (term "0,1,1,0")) - (rule "polySimp_addAssoc" (formula "18") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "18") (term "0,0,1,1,0")) - (rule "add_literals" (formula "18") (term "0,0,0,1,1,0")) - (rule "add_zero_left" (formula "18") (term "0,0,1,1,0")) - (rule "polySimp_pullOutFactor1" (formula "18") (term "0,1,1,0")) - (rule "add_literals" (formula "18") (term "1,0,1,1,0")) - (rule "times_zero_1" (formula "18") (term "0,1,1,0")) - (rule "leq_literals" (formula "18") (term "1,1,0")) - (rule "concrete_and_3" (formula "18") (term "1,0")) - (rule "inEqSimp_homoInEq0" (formula "18") (term "1,0")) - (rule "times_zero_2" (formula "18") (term "1,0,1,0")) - (rule "add_zero_right" (formula "18") (term "0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "18") (term "0,0,0")) - (rule "mul_literals" (formula "18") (term "1,0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "18") (term "1,0")) - (rule "polySimp_mulComm0" (formula "18") (term "1,1,0")) - (rule "polySimp_rightDist" (formula "18") (term "1,1,0")) - (rule "polySimp_mulLiterals" (formula "18") (term "1,1,1,0")) - (rule "mul_literals" (formula "18") (term "0,1,1,0")) - (rule "polySimp_elimOne" (formula "18") (term "1,1,1,0")) - (rule "replace_known_left" (formula "18") (term "1,0") (ifseqformula "2")) - (rule "concrete_and_3" (formula "18") (term "0")) - (rule "inEqSimp_subsumption1" (formula "18") (term "0,0") (ifseqformula "12")) - (rule "leq_literals" (formula "18") (term "0,0,0")) - (rule "concrete_or_1" (formula "18") (term "0,0")) - (rule "concrete_and_1" (formula "18") (term "0")) - (rule "all_unused" (formula "18") (term "0,0")) - (rule "all_unused" (formula "18") (term "0")) - (rule "concrete_and_1" (formula "18")) - (opengoal " ") - ) - ) - (branch "Exceptional Post (accept)" - (rule "simplifyUpdate2" (formula "13")) - (rule "simplifyUpdate2" (formula "13") (term "1")) - (rule "andLeft" (formula "13")) - (rule "simplifyUpdate2" (formula "13")) - (rule "andLeft" (formula "14")) - (rule "simplifyUpdate2" (formula "15")) - (rule "andLeft" (formula "13")) - (rule "notLeft" (formula "13")) - (rule "close" (formula "16") (ifseqformula "15")) - ) - (branch "Pre (accept)" - (rule "simplifyUpdate2" (formula "16")) - (rule "simplifyUpdate2" (formula "16") (term "1")) - (rule "applyOnRigidFormula" (formula "16")) - (rule "simplifyUpdate2" (formula "16") (term "0")) - (rule "simplifyUpdate2" (formula "16") (term "1")) - (rule "applyOnRigidFormula" (formula "16") (term "0")) - (rule "simplifyUpdate1" (formula "16") (term "0,0")) - (rule "applyOnPV" (formula "16") (term "1,0")) - (rule "replace_known_left" (formula "16") (term "0") (ifseqformula "8")) - (rule "concrete_and_1" (formula "16")) - (rule "applyOnRigidFormula" (formula "16")) - (rule "simplifyUpdate2" (formula "16") (term "0")) - (rule "replace_known_left" (formula "16") (term "0") (ifseqformula "4")) - (rule "concrete_and_1" (formula "16")) - (rule "orRight" (formula "16")) - (rule "applyOnRigidFormula" (formula "17")) - (rule "simplifyUpdate1" (formula "17") (term "1")) - (rule "applyOnRigidFormula" (formula "16")) - (rule "applyOnPV" (formula "16") (term "0")) - (rule "simplifyUpdate1" (formula "16") (term "1")) - (rule "applyOnRigidTerm" (formula "16") (term "0")) - (rule "simplifyUpdate1" (formula "16") (term "2,0")) - (rule "simplifyUpdate1" (formula "16") (term "0,0")) - (rule "applyOnPV" (formula "16") (term "1,0")) - (rule "close" (formula "16") (ifseqformula "1")) - ) - (branch "Null reference (var = null)" - (rule "simplifyUpdate2" (formula "16")) - (rule "notRight" (formula "16")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "close" (formula "16") (ifseqformula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "close" (formula "13") (ifseqformula "1")) - ) - (branch "Index Out of Bounds (_array != null, but i Out of Bounds!)" - (rule "simplifyUpdate2" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate2" (formula "1") (term "1")) - (rule "applyOnRigidFormula" (formula "13")) - (rule "simplifyUpdate1" (formula "13") (term "1")) - (rule "applyOnPV" (formula "13") (term "0")) - (rule "applyOnRigidFormula" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "0,0")) - (rule "simplifyUpdate1" (formula "1") (term "1,0")) - (rule "applyOnPV" (formula "1") (term "1,0")) - (rule "applyOnRigidFormula" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0,1")) - (rule "simplifyUpdate1" (formula "1") (term "1,1")) - (rule "applyOnRigidTerm" (formula "1") (term "0,0")) - (rule "applyOnPV" (formula "1") (term "0,0,0")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "0") (ifseqformula "2")) - (rule "inEqSimp_homoInEq1" (formula "1") (term "0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (rule "concrete_and_2" (formula "1") (term "0")) - (rule "concrete_or_2" (formula "1")) - (rule "inEqSimp_contradInEq0" (formula "12") (ifseqformula "1")) - (rule "qeq_literals" (formula "12") (term "0")) - (rule "concrete_and_2" (formula "12")) - (rule "closeFalse" (formula "12")) - ) - ) - (branch "if x_8 false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "simplifyUpdate2" (formula "15")) - (rule "applyOnRigidFormula" (formula "12")) - (rule "applyOnPV" (formula "12") (term "0")) - (rule "simplifyUpdate1" (formula "12") (term "1")) - (rule "boolean_equal" (formula "12")) - (rule "closeTrue" (formula "12")) - ) - ) - (branch "Null Reference (_array = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "close" (formula "13") (ifseqformula "1")) - ) - ) - ) - (branch "Null Reference (_array = null)" - (rule "simplifyUpdate2" (formula "13")) - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "close" (formula "14") (ifseqformula "1")) - ) - ) -) -(branch "Use Case" - (rule "false_to_not_true" (formula "12") (term "0,0,1,1")) - (rule "inInt" (formula "9") (term "1,1,1,1")) - (rule "concrete_and_3" (formula "9") (term "1,1,1")) - (rule "inInt" (formula "9") (term "1,1,1")) - (rule "concrete_and_3" (formula "9") (term "1,1")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate2" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "12")) - (rule "simplifyUpdate2" (formula "12")) - (rule "simplifyUpdate3" (formula "12") (term "1,0")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "andLeft" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "applyOnRigidFormula" (formula "10")) - (rule "simplifyUpdate1" (formula "10") (term "1")) - (rule "simplifyUpdate1" (formula "10") (term "0")) - (rule "applyOnPV" (formula "10") (term "0")) - (rule "applyOnRigidFormula" (formula "9")) - (rule "simplifyUpdate1" (formula "9") (term "1")) - (rule "applyOnPV" (formula "9") (term "0")) - (rule "applyOnRigidTerm" (formula "10") (term "1")) - (rule "applyOnPV" (formula "10") (term "0,1")) - (rule "inEqSimp_commuteLeq" (formula "10")) - (rule "methodCallReturn" (formula "13") (term "1,0,1")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "b_1")) - (rule "compound_assignment_3_nonsimple" (formula "13") (term "1")) - (rule "ifElseUnfold" (formula "13") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x")) - (rule "compound_assignment_2" (formula "13") (term "1") (inst "#v=x_1")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x_1")) - (rule "less_than_comparison_simple" (formula "13") (term "1")) - (rule "sequentialToParallel2" (formula "13")) - (rule "simplifyUpdate2" (formula "13")) - (rule "simplifyUpdate3" (formula "13") (term "1,0")) - (rule "applyOnElementary" (formula "13") (term "1,0")) - (rule "applyOnRigidTerm" (formula "13") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "13") (term "0,0,1,0")) - (rule "applyOnPV" (formula "13") (term "0,0,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,0,1,0")) - (rule "inEqSimp_ltToLeq" (formula "13") (term "0,0,1,0")) - (rule "times_zero_1" (formula "13") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "13") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "13") (term "0,0,1,0")) - (rule "mul_literals" (formula "13") (term "1,0,0,1,0")) - (rule "compound_assignment_1_new" (formula "13") (term "1")) - (rule "sequentialToParallel2" (formula "13")) - (rule "simplifyUpdate2" (formula "13")) - (rule "simplifyUpdate3" (formula "13") (term "1,0")) - (rule "ifElseSplit" (formula "13")) - (branch "if x true" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "14")) - (rule "applyOnSkip" (formula "14") (term "1,0")) - (rule "parallelWithSkip2" (formula "14") (term "0")) - (rule "applyOnElementary" (formula "1") (term "0")) - (rule "applyOnRigidTerm" (formula "1") (term "0,0")) - (rule "simplifyUpdate1" (formula "1") (term "1,0,0")) - (rule "simplifyUpdate1" (formula "1") (term "2,0,0")) - (rule "applyOnRigidFormula" (formula "1") (term "0,0,0")) - (rule "applyOnPV" (formula "1") (term "0,0,0,0")) - (rule "simplifyUpdate1" (formula "1") (term "1,0,0,0")) - (rule "ifthenelse_concrete3" (formula "1") (term "0,0,0")) - (rule "boolean_not_equal_2" (formula "1") (term "1,0,0,0")) - (rule "concrete_or_4" (formula "1") (term "0,0,0")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "ifthenelse_concrete4" (formula "1")) - (rule "boolean_not_equal_2" (formula "1") (term "1")) - (rule "concrete_or_4" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_leqRight" (formula "11")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "assignment" (formula "14") (term "1")) - (rule "sequentialToParallel2" (formula "14")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "methodCallEmpty" (formula "14") (term "1")) - (rule "emptyModality" (formula "14") (term "1")) - (rule "impRight" (formula "14")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "simplifyUpdate2" (formula "15")) - (rule "applyOnRigidFormula" (formula "12")) - (rule "applyOnPV" (formula "12") (term "0")) - (rule "simplifyUpdate1" (formula "12") (term "1")) - (rule "boolean_not_equal_2" (formula "12")) - (rule "false_right" (formula "12")) - (rule "assignment" (formula "14") (term "1")) - (rule "simplifyUpdate2" (formula "14") (term "1")) - (rule "simplifyUpdate2" (formula "14")) - (rule "methodCallEmpty" (formula "14") (term "1")) - (rule "tryEmpty" (formula "14") (term "1")) - (rule "emptyModality" (formula "14") (term "1")) - (rule "applyOnRigidFormula" (formula "14")) - (rule "simplifyUpdate2" (formula "14") (term "1")) - (rule "simplifyUpdate2" (formula "14") (term "0")) - (rule "applyOnRigidFormula" (formula "14") (term "1")) - (rule "applyOnRigidFormula" (formula "14") (term "0")) - (rule "simplifyUpdate2" (formula "14") (term "0,0")) - (rule "applyOnRigidFormula" (formula "14") (term "0,1")) - (rule "applyOnRigidFormula" (formula "14") (term "1,0")) - (rule "simplifyUpdate1" (formula "14") (term "3,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "2,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "1,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "0,1,0")) - (rule "applyOnPV" (formula "14") (term "3,1,0")) - (rule "applyOnPV" (formula "14") (term "2,1,0")) - (rule "applyOnPV" (formula "14") (term "1,1,0")) - (rule "applyOnRigidFormula" (formula "14") (term "0,0")) - (rule "simplifyUpdate1" (formula "14") (term "1,0,0")) - (rule "applyOnPV" (formula "14") (term "0,0,0")) - (rule "eqClose" (formula "14") (term "0,0")) - (rule "concrete_and_1" (formula "14") (term "0")) - (rule "applyOnRigidFormula" (formula "14") (term "0,0,1")) - (rule "simplifyUpdate1" (formula "14") (term "1,0,0,1")) - (rule "applyOnRigidTerm" (formula "14") (term "0,0,0,1")) - (rule "simplifyUpdate1" (formula "14") (term "2,0,0,0,1")) - (rule "simplifyUpdate1" (formula "14") (term "1,0,0,0,1")) - (rule "applyOnPV" (formula "14") (term "0,0,0,0,1")) - (rule "eqClose" (formula "14") (term "0,0,1")) - (rule "all_unused" (formula "14") (term "0,1")) - (rule "all_unused" (formula "14") (term "1")) - (rule "concrete_and_3" (formula "14")) - (opengoal " ") - ) - (branch "if x false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "14")) - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "parallelWithSkip2" (formula "14") (term "0")) - (rule "notLeft" (formula "1")) - (rule "applyOnElementary" (formula "11") (term "0")) - (rule "applyOnRigidFormula" (formula "11")) - (rule "simplifyUpdate1" (formula "11") (term "1")) - (rule "applyOnPV" (formula "11") (term "0")) - (rule "applyOnRigidTerm" (formula "11") (term "0")) - (rule "simplifyUpdate1" (formula "11") (term "1,0")) - (rule "simplifyUpdate1" (formula "11") (term "2,0")) - (rule "ifthenelse_concrete4" (formula "11")) - (rule "boolean_not_equal_2" (formula "11") (term "1")) - (rule "concrete_or_4" (formula "11")) - (rule "notRight" (formula "11")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "ifthenelse_concrete3" (formula "1")) - (rule "boolean_not_equal_2" (formula "1") (term "1")) - (rule "concrete_or_4" (formula "1")) - (rule "compound_less_than_comparison_2" (formula "14") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_2")) - (rule "assignment" (formula "14") (term "1")) - (rule "sequentialToParallel2" (formula "14")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "applyOnElementary" (formula "14") (term "1,0")) - (rule "applyOnPV" (formula "14") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_3")) - (rule "assignment_read_length" (formula "14") (term "1")) - (branch "Normal Execution (_array != null)" - (rule "simplifyUpdate2" (formula "14")) - (rule "sequentialToParallel2" (formula "15")) - (rule "simplifyUpdate3" (formula "15") (term "1,0")) - (rule "applyOnElementary" (formula "15") (term "1,0")) - (rule "applyOnRigidFormula" (formula "14")) - (rule "simplifyUpdate1" (formula "14") (term "1")) - (rule "applyOnPV" (formula "14") (term "0")) - (rule "applyOnRigidTerm" (formula "14") (term "0,1,0")) - (rule "applyOnPV" (formula "14") (term "0,0,1,0")) - (rule "less_than_comparison_simple" (formula "14") (term "1")) - (rule "sequentialToParallel2" (formula "14")) - (rule "simplifyUpdate2" (formula "14")) - (rule "simplifyUpdate3" (formula "14") (term "1,0")) - (rule "applyOnElementary" (formula "14") (term "1,0")) - (rule "applyOnRigidTerm" (formula "14") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "2,0,1,0")) - (rule "applyOnRigidFormula" (formula "14") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "1,0,0,1,0")) - (rule "simplifyUpdate1" (formula "14") (term "0,0,0,1,0")) - (rule "applyOnPV" (formula "14") (term "1,0,0,1,0")) - (rule "applyOnPV" (formula "14") (term "0,0,0,1,0")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "0,0,1,0")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,0,0,1,0")) - (rule "polySimp_addComm1" (formula "14") (term "0,0,0,1,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "14") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "14") (term "0,0,0,1,0")) - (rule "polySimp_elimOne" (formula "14") (term "0,0,0,1,0")) - (rule "methodCallEmpty" (formula "14") (term "1")) - (rule "emptyModality" (formula "14") (term "1")) - (rule "impRight" (formula "14")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "simplifyUpdate2" (formula "15")) - (rule "applyOnRigidFormula" (formula "12")) - (rule "applyOnPV" (formula "12") (term "0")) - (rule "simplifyUpdate1" (formula "12") (term "1")) - (rule "ifthenelse_concrete3" (formula "12")) - (rule "boolean_not_equal_2" (formula "12") (term "1")) - (rule "concrete_or_4" (formula "12")) - (rule "inEqSimp_geqRight" (formula "12")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "add_zero_left" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1")) - (rule "polySimp_elimOne" (formula "1") (term "1")) - (rule "inEqSimp_antiSymm" (formula "12") (ifseqformula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "12")) - (rule "inEqSimp_homoInEq0" (formula "1")) - (rule "polySimp_pullOutFactor1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,0")) - (rule "times_zero_1" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "11")) - (rule "applyEq" (formula "11") (term "0") (ifseqformula "10")) - (rule "inEqSimp_homoInEq1" (formula "11")) - (rule "polySimp_pullOutFactor1" (formula "11") (term "0")) - (rule "add_literals" (formula "11") (term "1,0")) - (rule "times_zero_1" (formula "11") (term "0")) - (rule "leq_literals" (formula "11")) - (rule "true_left" (formula "11")) - (rule "applyEq" (formula "7") (term "1,1,0,0") (ifseqformula "10")) - (rule "assignment" (formula "13") (term "1")) - (rule "simplifyUpdate2" (formula "13") (term "1")) - (rule "simplifyUpdate2" (formula "13")) - (rule "methodCallEmpty" (formula "13") (term "1")) - (rule "tryEmpty" (formula "13") (term "1")) - (rule "emptyModality" (formula "13") (term "1")) - (rule "applyOnRigidFormula" (formula "13")) - (rule "simplifyUpdate2" (formula "13") (term "0")) - (rule "simplifyUpdate2" (formula "13") (term "1")) - (rule "applyOnRigidFormula" (formula "13") (term "0")) - (rule "simplifyUpdate2" (formula "13") (term "0,0")) - (rule "applyOnRigidFormula" (formula "13") (term "1")) - (rule "applyOnRigidFormula" (formula "13") (term "1,0")) - (rule "simplifyUpdate1" (formula "13") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "2,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "3,1,0")) - (rule "applyOnPV" (formula "13") (term "1,1,0")) - (rule "applyOnPV" (formula "13") (term "2,1,0")) - (rule "applyOnPV" (formula "13") (term "3,1,0")) - (rule "applyOnRigidFormula" (formula "13") (term "0,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,0")) - (rule "applyOnPV" (formula "13") (term "0,0,0")) - (rule "eqClose" (formula "13") (term "0,0")) - (rule "concrete_and_1" (formula "13") (term "0")) - (rule "applyOnRigidFormula" (formula "13") (term "0,1")) - (rule "applyOnRigidFormula" (formula "13") (term "0,0,1")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,0,1")) - (rule "applyOnRigidTerm" (formula "13") (term "0,0,0,1")) - (rule "simplifyUpdate1" (formula "13") (term "2,0,0,0,1")) - (rule "applyOnPV" (formula "13") (term "0,0,0,0,1")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,0,0,1")) - (rule "eqClose" (formula "13") (term "0,0,1")) - (rule "all_unused" (formula "13") (term "0,1")) - (rule "all_unused" (formula "13") (term "1")) - (rule "concrete_and_3" (formula "13")) - (opengoal " ") - ) - (branch "Null Reference (_array = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "close" (formula "13") (ifseqformula "1")) - ) - ) -) -) - -} 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 deleted file mode 100644 index d77e23f0770..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueBlockContractMagic42/oracle/BlockContractMagic42.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueBlockContractMagic42/test/BlockContractMagic42.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueBlockContractMagic42/test/BlockContractMagic42.java deleted file mode 100644 index 902d64af022..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueBlockContractMagic42/test/BlockContractMagic42.java +++ /dev/null @@ -1,27 +0,0 @@ - -public class BlockContractMagic42 { - public static int fourty; - - public static int two; - - /*@ normal_behavior - @ requires fourty == 40; - @ ensures two == 2; - @ ensures \result == 42; - @ assignable two; - @*/ - public static int magic() { - int numberTwo; - /*@ normal_behavior - @ requires fourty == 40; - @ ensures numberTwo == 2; - @ ensures two == 2; - @ assignable two; - @*/ - { - numberTwo = 2; - two = numberTwo; - } - return fourty + two; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueBlockContractMagic42/test/BlockContractMagic42.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueBlockContractMagic42/test/BlockContractMagic42.proof deleted file mode 100644 index 9908b1fc393..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueBlockContractMagic42/test/BlockContractMagic42.proof +++ /dev/null @@ -1,229 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Thu May 19 14:52:54 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractMagic42[BlockContractMagic42::magic()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "BlockContractMagic42[BlockContractMagic42::magic()].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1175") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) -(rule "elementOfSingleton" (formula "4") (term "0,0,0,0,1,0,1")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) -(builtin "One Step Simplification" (formula "4")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "numberTwo")) -(builtin "Block Contract" (formula "4") (newnames "anon_heap,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,numberTwo_Before_BLOCK,o,f,anon_numberTwo,SETAccumulate_0")) -(branch "Validity" - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "3")) (ifInst "" (formula "1"))) - (rule "true_left" (formula "4")) - (builtin "One Step Simplification" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,0,1")) - (rule "elementOfSingleton" (formula "4") (term "0,0,0,0,1,0,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "activeUseStaticFieldWriteAccess" (formula "4") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment_write_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "unusedLabel" (formula "4") (term "1")) - (rule "blockEmpty" (formula "4") (term "1")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0")) - (rule "pullOutSelect" (formula "4") (term "0,0,0") (inst "selectSK=BlockContractMagic42_two_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "5") (term "0,0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "cut_direct" (formula "4") (term "1")) - (branch "CUT: SETAccumulate_0(heap[BlockContractMagic42.two := 2], null, 2)<> TRUE" - (builtin "One Step Simplification" (formula "5")) - (rule "allRight" (formula "5") (inst "sk=f_0")) - (rule "allRight" (formula "5") (inst "sk=o_0")) - (rule "orRight" (formula "5")) - (rule "orRight" (formula "5")) - (rule "pullOutSelect" (formula "7") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "8")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - (branch "CUT: SETAccumulate_0(heap[BlockContractMagic42.two := 2], null, 2)<> FALSE" - (builtin "One Step Simplification" (formula "5")) - (rule "false_right" (formula "5")) - (opengoal " ") - ) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "3")) (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "4")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "5")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "5")) - (rule "replace_known_left" (formula "8") (term "0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (rule "pullOutSelect" (formula "6") (term "0") (inst "selectSK=BlockContractMagic42_two_0")) - (rule "simplifySelectOfAnon" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "elementOfSingleton" (formula "6") (term "0,0")) - (builtin "One Step Simplification" (formula "6")) - (rule "applyEqReverse" (formula "7") (term "0") (ifseqformula "6")) - (rule "hideAuxiliaryEq" (formula "6")) - (rule "ifUnfold" (formula "8") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x")) - (rule "inequality_comparison_simple" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "replace_known_left" (formula "8") (term "0,0,1,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "8")) - (rule "ifSplit" (formula "8")) - (branch "if x true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "blockEmpty" (formula "8") (term "1")) - (rule "returnUnfold" (formula "8") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_2")) - (rule "compound_addition_2" (formula "8") (term "1") (inst "#v1=x_4") (inst "#v0=x_3")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_3")) - (rule "activeUseStaticFieldReadAccess" (formula "8") (term "1")) - (rule "assignment_read_static_attribute" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "pullOutSelect" (formula "8") (term "0,1,0") (inst "selectSK=BlockContractMagic42_fourty_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "9") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "8") (term "0,1,0") (ifseqformula "3")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_4")) - (rule "activeUseStaticFieldReadAccess" (formula "8") (term "1")) - (rule "assignment_read_static_attribute" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "replaceKnownSelect_taclet2_0" (formula "8") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2_1" (formula "8") (term "0,1,0")) - (rule "applyEq" (formula "8") (term "0,1,0") (ifseqformula "6")) - (rule "assignmentAdditionInt" (formula "8") (term "1")) - (rule "translateJavaAddInt" (formula "8") (term "0,0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "add_literals" (formula "8") (term "0,1,0")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "replaceKnownSelect_taclet2_0" (formula "8") (term "0,0,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2_1" (formula "8") (term "0,0,0")) - (rule "eqSymm" (formula "8") (term "1,0,0,1")) - (rule "replace_known_left" (formula "8") (term "0,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "8")) - (rule "cut_direct" (formula "8") (term "0")) - (branch "CUT: SETAccumulate(heap[anon({(null, BlockContractMagic42::$two)}, anon_heap<>)], null)<> TRUE" - (builtin "One Step Simplification" (formula "9")) - (rule "allRight" (formula "9") (inst "sk=f_1")) - (rule "allRight" (formula "9") (inst "sk=o_1")) - (rule "orRight" (formula "9")) - (rule "orRight" (formula "9")) - (rule "pullOutSelect" (formula "11") (term "0") (inst "selectSK=f_1_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "eqSymm" (formula "12")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) - ) - (branch "CUT: SETAccumulate(heap[anon({(null, BlockContractMagic42::$two)}, anon_heap<>)], null)<> FALSE" - (builtin "One Step Simplification" (formula "9")) - (rule "false_right" (formula "9")) - (opengoal " ") - ) - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueDifferentBranchesTest/oracle/DifferentBranchesTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueDifferentBranchesTest/oracle/DifferentBranchesTest.xml deleted file mode 100644 index 1d3c9c4cb56..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueDifferentBranchesTest/oracle/DifferentBranchesTest.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueDifferentBranchesTest/test/DifferentBranchesTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueDifferentBranchesTest/test/DifferentBranchesTest.java deleted file mode 100644 index 8966a25f275..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueDifferentBranchesTest/test/DifferentBranchesTest.java +++ /dev/null @@ -1,16 +0,0 @@ - -public class DifferentBranchesTest { - /*@ normal_behavior - @ ensures \result == 42; - @*/ - public static int main(/*@ nullable @*/ int[] a) { - if (a == null) { - return 42; - } - else { - a[10] = 2; - a[20] = 4; - return a[10] + a[20]; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueDifferentBranchesTest/test/DifferentBranchesTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueDifferentBranchesTest/test/DifferentBranchesTest.proof deleted file mode 100644 index ecaad658cfc..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueDifferentBranchesTest/test/DifferentBranchesTest.proof +++ /dev/null @@ -1,578 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jul 18 11:01:54 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , moreSeqRules-moreSeqRules\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , sequences-sequences\\:on , integerSimplificationRules-integerSimplificationRules\\:full , runtimeExceptions-runtimeExceptions\\:allow , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , wdOperator-wdOperator\\:L , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "DifferentBranchesTest[DifferentBranchesTest::main([I)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "DifferentBranchesTest[DifferentBranchesTest::main([I)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1210") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "a,result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "4")) -(rule "ifElseUnfold" (formula "4") (term "1") (inst "#boolv=x")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x")) -(rule "equality_comparison_simple" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "ifElseSplit" (formula "4")) -(branch "if x true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "replace_known_left" (formula "3") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "true_left" (formula "3")) - (rule "applyEq" (formula "4") (term "0,0,0") (ifseqformula "1")) - (rule "blockReturn" (formula "4") (term "1")) - (rule "methodCallReturn" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (opengoal " ") -) -(branch "if x false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "notLeft" (formula "1")) - (rule "replace_known_right" (formula "2") (term "0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "2")) - (rule "assignment_to_primitive_array_component" (formula "5") (term "1")) - (branch "Normal Execution (_a != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (builtin "One Step Simplification" (formula "6")) - (rule "qeq_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "arrayLengthIsAnInt" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "arrayLengthNotNegative" (formula "1") (term "0")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "2")) - (rule "leq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_to_primitive_array_component" (formula "6") (term "1")) - (branch "Normal Execution (_a != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (builtin "One Step Simplification" (formula "7")) - (rule "qeq_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "1")) - (rule "leq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "returnUnfold" (formula "6") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_3")) - (rule "compound_addition_2" (formula "6") (term "1") (inst "#v0=x_4") (inst "#v1=x_5")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_4")) - (rule "assignment_array2" (formula "6") (term "1")) - (branch "Normal Execution (_a != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (builtin "One Step Simplification" (formula "7")) - (rule "less_literals" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "inEqSimp_leqRight" (formula "6")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "7") (term "0,1,0") (inst "selectSK=arr_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "equal_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "8") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "2")) - (rule "leq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_5")) - (rule "assignment_array2" (formula "6") (term "1")) - (branch "Normal Execution (_a != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (builtin "One Step Simplification" (formula "7")) - (rule "less_literals" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "inEqSimp_leqRight" (formula "6")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "7") (term "0,1,0") (inst "selectSK=arr_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "8") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "assignmentAdditionInt" (formula "6") (term "1")) - (rule "translateJavaAddInt" (formula "6") (term "0,0,1")) - (builtin "One Step Simplification" (formula "6")) - (rule "add_literals" (formula "6") (term "0,1,0")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "equal_literals" (formula "6") (term "0")) - (builtin "One Step Simplification" (formula "6")) - (rule "false_right" (formula "6")) - (rule "arrayLengthIsAnInt" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "arrayLengthNotNegative" (formula "1") (term "0")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "2")) - (rule "leq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (opengoal " ") - ) - (branch "Null Reference (_a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_a != null, but 20 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_a != null, but 10 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_a != null, but 20 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "throwUnfold" (formula "7") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "a_5")) - (rule "instanceCreationAssignment" (formula "7") (term "1") (inst "#v0=a_6")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "a_6")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "7") (term "1") (inst "#v0=a_7")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "a_7")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$createObject_0,savedHeapBefore_$createObject_0")) - (builtin "One Step Simplification" (formula "7")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "__NEW___1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "7") (term "1") (inst "#v0=a_8")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "a_8")) - (rule "allocateInstance" (formula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "wellFormedStorePrimitiveArray" (formula "1") (term "0,1,0")) - (builtin "One Step Simplification" (formula "8")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "dismissNonSelectedField" (formula "7") (term "0")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore__0,savedHeapBefore__0")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignment_write_attribute_this" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallWithinClass" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepareEnter_0,savedHeapBefore_$prepareEnter_0")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepare_4,savedHeapBefore_$prepare_4")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepare_5,savedHeapBefore_$prepare_5")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepare_6,savedHeapBefore_$prepare_6")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepare_7,savedHeapBefore_$prepare_7")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepare_8,savedHeapBefore_$prepare_8")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "assignment_write_attribute_this" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "arrayLengthNotNegative" (formula "3") (term "0")) - (rule "inEqSimp_subsumption1" (formula "3") (ifseqformula "4")) - (rule "leq_literals" (formula "3") (term "0")) - (builtin "One Step Simplification" (formula "3")) - (rule "true_left" (formula "3")) - (rule "arrayLengthIsAnInt" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "assignment_write_attribute_this" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "10") (term "1")) - (rule "methodCallReturn" (formula "10") (term "1")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init_5,savedHeapBefore_$init_5")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init_6,savedHeapBefore_$init_6")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init_7,savedHeapBefore_$init_7")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init_8,savedHeapBefore_$init_8")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init_9,savedHeapBefore_$init_9")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init_10,savedHeapBefore_$init_10")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "assignment_write_attribute_this" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignment_write_attribute_this" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "assignment_write_attribute" (formula "10") (term "1")) - (branch "Normal Execution (a_6 != null)" - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "8"))) - (rule "false_right" (formula "10")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallParamThrow" (formula "10") (term "1")) - (rule "tryCatchThrow" (formula "10") (term "1")) - (rule "ifElseUnfold" (formula "10") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_2")) - (rule "equality_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "replace_known_right" (formula "10") (term "0,0,1,0") (ifseqformula "8")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifElseSplit" (formula "10")) - (branch "if x_2 true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_2 false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifElseSplit" (formula "10")) - (branch "if a_5 instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "e_1")) - (rule "delete_unnecessary_cast" (formula "10") (term "1")) - (branch "Normal Execution (a_5 instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "emptyModality" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "8"))) - (rule "false_right" (formula "10")) - (opengoal " ") - ) - (branch "ClassCastException (!(a_5 instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "10")) - (rule "closeTrue" (formula "10")) - ) - ) - (branch "if a_5 instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Null Reference (a_6 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Null Reference (_a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_a != null, but 10 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "arrayLengthIsAnInt" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "arrayLengthNotNegative" (formula "1") (term "0")) - (rule "throwUnfold" (formula "7") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "a_1")) - (rule "instanceCreationAssignment" (formula "7") (term "1") (inst "#v0=a_2")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "a_2")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "7") (term "1") (inst "#v0=a_3")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "a_3")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) - (builtin "One Step Simplification" (formula "7")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "__NEW__")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "7") (term "1") (inst "#v0=a_4")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "a_4")) - (rule "allocateInstance" (formula "7")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "4"))) - (builtin "One Step Simplification" (formula "8")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "2")) - (rule "notLeft" (formula "1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_,savedHeapBefore_")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignment_write_attribute_this" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallWithinClass" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepare_1,savedHeapBefore_$prepare_1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepare_2,savedHeapBefore_$prepare_2")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$prepare_3,savedHeapBefore_$prepare_3")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "assignment_write_attribute_this" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "arrayLengthNotNegative" (formula "2") (term "0")) - (rule "arrayLengthIsAnInt" (formula "3") (term "0")) - (builtin "One Step Simplification" (formula "3")) - (rule "true_left" (formula "3")) - (rule "assignment_write_attribute_this" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "10") (term "1")) - (rule "methodCallReturn" (formula "10") (term "1")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init_3,savedHeapBefore_$init_3")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallSuper" (formula "10") (term "1")) - (rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$init_4,savedHeapBefore_$init_4")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "assignment_write_attribute_this" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignment_write_attribute_this" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "blockEmpty" (formula "10") (term "1")) - (rule "assignment_write_attribute" (formula "10") (term "1")) - (branch "Normal Execution (a_2 != null)" - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "7"))) - (rule "false_right" (formula "10")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallParamThrow" (formula "10") (term "1")) - (rule "tryCatchThrow" (formula "10") (term "1")) - (rule "ifElseUnfold" (formula "10") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_1")) - (rule "equality_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "replace_known_right" (formula "10") (term "0,0,1,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifElseSplit" (formula "10")) - (branch "if x_1 true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_1 false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "ifElseSplit" (formula "10")) - (branch "if a_1 instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "10") (term "1")) - (branch "Normal Execution (a_1 instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "emptyModality" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "7"))) - (rule "false_right" (formula "10")) - (opengoal " ") - ) - (branch "ClassCastException (!(a_1 instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "10")) - (rule "closeTrue" (formula "10")) - ) - ) - (branch "if a_1 instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Null Reference (a_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/oracle/EquivExample.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/oracle/EquivExample.xml deleted file mode 100644 index c61d805b84a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/oracle/EquivExample.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/test/EquivExample.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/test/EquivExample.java deleted file mode 100644 index 588eadf2da3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/test/EquivExample.java +++ /dev/null @@ -1,12 +0,0 @@ - -public class EquivExample { - public static boolean a; - public static boolean b; - - /*@ normal_behavior - @ ensures \result == a <==> b; - @*/ - public static boolean equivExample() { - return a == b; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/test/EquivExample.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/test/EquivExample.proof deleted file mode 100644 index 70e03743fe1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/test/EquivExample.proof +++ /dev/null @@ -1,126 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Tue Jan 06 11:14:35 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "EquivExample[EquivExample::equivExample()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "EquivExample[EquivExample::equivExample()].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "141") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "0,0,0,0")) -(rule "assignment" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_equivExample,savedHeapBefore_equivExample")) -(builtin "One Step Simplification" (formula "3")) -(rule "returnUnfold" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "compound_equality_comparison_2" (formula "3") (term "1") (inst "#v1=x_2") (inst "#v0=x_1")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "activeUseStaticFieldReadAccess" (formula "3") (term "1")) -(rule "assignment_read_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_2")) -(rule "activeUseStaticFieldReadAccess" (formula "3") (term "1")) -(rule "assignment_read_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "equality_comparison_simple" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "eqSymm" (formula "3") (term "0,0,1,0")) -(rule "methodCallReturn" (formula "3") (term "1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodCallEmpty" (formula "3") (term "1")) -(rule "tryEmpty" (formula "3") (term "1")) -(rule "emptyModality" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "eqSymm" (formula "3") (term "0,0")) -(rule "ifthenelse_split" (formula "3") (term "0,0,0")) -(branch "EquivExample.b = EquivExample.a TRUE" - (rule "eqSymm" (formula "4") (term "0,0")) - (builtin "One Step Simplification" (formula "4")) - (rule "eqSymm" (formula "4") (term "0")) - (rule "replace_known_left" (formula "4") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "4")) - (opengoal " ") -) -(branch "EquivExample.b = EquivExample.a FALSE" - (rule "eqSymm" (formula "4") (term "0,0")) - (builtin "One Step Simplification" (formula "4")) - (rule "cut_direct" (formula "4") (term "1")) - (branch "CUT: SETAccumulate(heap, null)<> TRUE" - (builtin "One Step Simplification" (formula "5")) - (rule "equiv_right" (formula "5")) - (branch "Case 1" - (rule "notLeft" (formula "1")) - (rule "apply_eq_boolean" (formula "5") (term "1") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "6"))) - (rule "closeTrue" (formula "5")) - ) - (branch "Case 2" - (rule "notRight" (formula "6")) - (rule "applyEq" (formula "6") (term "1") (ifseqformula "1")) - (rule "close" (formula "6") (ifseqformula "2")) - ) - ) - (branch "CUT: SETAccumulate(heap, null)<> FALSE" - (builtin "One Step Simplification" (formula "5")) - (rule "false_right" (formula "5")) - (opengoal " ") - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/test/EquivExampleNoOneStepSimplification.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/test/EquivExampleNoOneStepSimplification.proof deleted file mode 100644 index 4b287b00e23..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueEquivExample/test/EquivExampleNoOneStepSimplification.proof +++ /dev/null @@ -1,168 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Dec 05 16:22:17 CET 2014 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "EquivExample[EquivExample::equivExample()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "EquivExample[EquivExample::equivExample()].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "266") - -(branch "dummy ID" -(rule "elementOfAllLocs" (formula "1") (term "0,0,0,0,1,0,1,1") (newnames "heapAtPre")) -(rule "concrete_or_1" (formula "1") (term "0,0,0,1,0,1,1")) -(rule "concrete_or_1" (formula "1") (term "0,0,1,0,1,1")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "0,0,0,0,0,1")) -(rule "simplifyUpdate2" (formula "3")) -(rule "all_unused" (formula "3") (term "1,0")) -(rule "all_unused" (formula "3") (term "1,0")) -(rule "concrete_and_3" (formula "3") (term "0")) -(rule "assignment" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_equivExample,savedHeapBefore_equivExample")) -(rule "simplifyUpdate2" (formula "3") (term "1")) -(rule "returnUnfold" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "compound_equality_comparison_2" (formula "3") (term "1") (inst "#v1=x_2") (inst "#v0=x_1")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "activeUseStaticFieldReadAccess" (formula "3") (term "1")) -(rule "assignment_read_static_attribute" (formula "3") (term "1")) -(rule "sequentialToParallel2" (formula "3")) -(rule "simplifyUpdate3" (formula "3") (term "1,0")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_2")) -(rule "activeUseStaticFieldReadAccess" (formula "3") (term "1")) -(rule "assignment_read_static_attribute" (formula "3") (term "1")) -(rule "sequentialToParallel2" (formula "3")) -(rule "simplifyUpdate3" (formula "3") (term "1,0")) -(rule "equality_comparison_simple" (formula "3") (term "1")) -(rule "eqSymm" (formula "3") (term "0,0,0,1")) -(rule "sequentialToParallel2" (formula "3")) -(rule "simplifyUpdate3" (formula "3") (term "1,0")) -(rule "applyOnElementary" (formula "3") (term "1,0")) -(rule "simplifyUpdate2" (formula "3")) -(rule "applyOnRigidTerm" (formula "3") (term "0,1,0")) -(rule "simplifyUpdate1" (formula "3") (term "2,0,1,0")) -(rule "simplifyUpdate1" (formula "3") (term "1,0,1,0")) -(rule "applyOnRigidFormula" (formula "3") (term "0,0,1,0")) -(rule "simplifyUpdate1" (formula "3") (term "0,0,0,1,0")) -(rule "simplifyUpdate1" (formula "3") (term "1,0,0,1,0")) -(rule "applyOnPV" (formula "3") (term "0,0,0,1,0")) -(rule "applyOnPV" (formula "3") (term "1,0,0,1,0")) -(rule "methodCallReturn" (formula "3") (term "1")) -(rule "assignment" (formula "3") (term "1")) -(rule "sequentialToParallel2" (formula "3")) -(rule "simplifyUpdate3" (formula "3") (term "1,0")) -(rule "applyOnElementary" (formula "3") (term "1,0")) -(rule "applyOnPV" (formula "3") (term "0,1,0")) -(rule "simplifyUpdate2" (formula "3")) -(rule "methodCallEmpty" (formula "3") (term "1")) -(rule "tryEmpty" (formula "3") (term "1")) -(rule "emptyModality" (formula "3") (term "1")) -(rule "applyOnRigidFormula" (formula "3")) -(rule "simplifyUpdate2" (formula "3") (term "1")) -(rule "applyOnRigidFormula" (formula "3") (term "0")) -(rule "simplifyUpdate2" (formula "3") (term "0,0")) -(rule "simplifyUpdate2" (formula "3") (term "1,0")) -(rule "applyOnRigidFormula" (formula "3") (term "1")) -(rule "simplifyUpdate1" (formula "3") (term "0,1")) -(rule "applyOnPV" (formula "3") (term "1,1")) -(rule "applyOnRigidFormula" (formula "3") (term "0,0")) -(rule "simplifyUpdate2" (formula "3") (term "1,0,0")) -(rule "applyOnRigidFormula" (formula "3") (term "1,0")) -(rule "applyOnPV" (formula "3") (term "0,1,0")) -(rule "simplifyUpdate1" (formula "3") (term "1,1,0")) -(rule "eqClose" (formula "3") (term "1,0")) -(rule "concrete_and_3" (formula "3") (term "0")) -(rule "applyOnRigidFormula" (formula "3") (term "0,0")) -(rule "simplifyUpdate1" (formula "3") (term "0,0,0")) -(rule "applyOnPV" (formula "3") (term "1,0,0")) -(rule "eqSymm" (formula "3") (term "0,0")) -(rule "ifthenelse_split" (formula "3") (term "0,0,0")) -(branch "EquivExample.b = EquivExample.a TRUE" - (rule "eqSymm" (formula "4") (term "0,0")) - (rule "boolean_equal_2" (formula "4") (term "0")) - (rule "eqSymm" (formula "4") (term "0")) - (rule "replace_known_left" (formula "4") (term "0") (ifseqformula "1")) - (rule "concrete_and_1" (formula "4")) - (opengoal " ") -) -(branch "EquivExample.b = EquivExample.a FALSE" - (rule "eqSymm" (formula "4") (term "0,0")) - (rule "false_to_not_true" (formula "4") (term "0,0")) - (rule "cut_direct" (formula "4") (term "1")) - (branch "CUT: SETAccumulate(heap, null)<> TRUE" - (rule "concrete_and_3" (formula "5")) - (rule "equiv_right" (formula "5")) - (branch "Case 1" - (rule "notLeft" (formula "1")) - (rule "apply_eq_boolean" (formula "5") (term "1") (ifseqformula "4")) - (rule "false_to_not_true" (formula "5")) - (rule "notRight" (formula "5")) - (rule "close" (formula "6") (ifseqformula "1")) - ) - (branch "Case 2" - (rule "notRight" (formula "6")) - (rule "applyEq" (formula "6") (term "0") (ifseqformula "2")) - (rule "eqSymm" (formula "6")) - (rule "close" (formula "6") (ifseqformula "1")) - ) - ) - (branch "CUT: SETAccumulate(heap, null)<> FALSE" - (rule "concrete_and_4" (formula "5")) - (rule "false_right" (formula "5")) - (opengoal " ") - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/oracle/ExceptionalModifiableNothingTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/oracle/ExceptionalModifiableNothingTest.xml deleted file mode 100644 index c73153f380a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/oracle/ExceptionalModifiableNothingTest.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/test/ExceptionalModifiableNothingTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/test/ExceptionalModifiableNothingTest.java deleted file mode 100644 index b36e8eb69b7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/test/ExceptionalModifiableNothingTest.java +++ /dev/null @@ -1,10 +0,0 @@ - -public class ExceptionalModifiableNothingTest { - /*@ exceptional_behavior - @ signals (NullPointerException) true; - @ assignable \nothing; - @*/ - public static void main() { - throw new NullPointerException(); - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/test/ExceptionalModifiableNothingTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/test/ExceptionalModifiableNothingTest.proof deleted file mode 100644 index 0af4e0d905f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/test/ExceptionalModifiableNothingTest.proof +++ /dev/null @@ -1,574 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jul 18 11:01:14 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , moreSeqRules-moreSeqRules\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , sequences-sequences\\:on , integerSimplificationRules-integerSimplificationRules\\:full , runtimeExceptions-runtimeExceptions\\:allow , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , wdOperator-wdOperator\\:L , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ExceptionalModifiableNothingTest[ExceptionalModifiableNothingTest::main()].JML exceptional_behavior operation contract.0", - "contract": "ExceptionalModifiableNothingTest[ExceptionalModifiableNothingTest::main()].JML exceptional_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "2635") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(rule "sequentialToParallel2" (formula "3")) -(rule "simplifyUpdate3" (formula "3") (term "1,0")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(rule "simplifyUpdate2" (formula "3") (term "1")) -(rule "throwUnfold" (formula "3") (term "1") (inst "#v0=n")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "n")) -(rule "instanceCreationAssignment" (formula "3") (term "1") (inst "#v0=n_1")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "n_1")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "3") (term "1") (inst "#v0=n_2")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "n_2")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) -(rule "simplifyUpdate2" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "__NEW__")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "3") (term "1") (inst "#v0=n_3")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "n_3")) -(rule "allocateInstance" (formula "3")) -(rule "false_to_not_true" (formula "1") (term "1,1,0,1")) -(rule "simplifyUpdate2" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "1")) -(rule "replace_known_left" (formula "1") (term "0") (ifseqformula "3")) -(rule "concrete_impl_1" (formula "1")) -(rule "notLeft" (formula "1")) -(rule "sequentialToParallel2" (formula "6")) -(rule "simplifyUpdate3" (formula "6") (term "1,0")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "assignment" (formula "6") (term "1")) -(rule "sequentialToParallel2" (formula "6")) -(rule "simplifyUpdate3" (formula "6") (term "1,0")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_,savedHeapBefore_")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(rule "sequentialToParallel2" (formula "6")) -(rule "simplifyUpdate2" (formula "6")) -(rule "simplifyUpdate3" (formula "6") (term "1,0")) -(rule "applyOnElementary" (formula "6") (term "1,0")) -(rule "applyOnRigidTerm" (formula "6") (term "0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "0,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "1,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "3,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "2,0,1,0")) -(rule "applyOnPV" (formula "6") (term "0,0,1,0")) -(rule "applyOnPV" (formula "6") (term "1,0,1,0")) -(rule "methodCallWithinClass" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$prepare_1,savedHeapBefore_$prepare_1")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$prepare_2,savedHeapBefore_$prepare_2")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(rule "sequentialToParallel2" (formula "6")) -(rule "simplifyUpdate2" (formula "6")) -(rule "simplifyUpdate3" (formula "6") (term "1,0")) -(rule "applyOnElementary" (formula "6") (term "1,0")) -(rule "applyOnRigidTerm" (formula "6") (term "0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "3,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "0,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "1,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "2,0,1,0")) -(rule "applyOnPV" (formula "6") (term "0,0,1,0")) -(rule "applyOnPV" (formula "6") (term "1,0,1,0")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(rule "sequentialToParallel2" (formula "6")) -(rule "simplifyUpdate2" (formula "6")) -(rule "simplifyUpdate3" (formula "6") (term "1,0")) -(rule "applyOnElementary" (formula "6") (term "1,0")) -(rule "applyOnRigidTerm" (formula "6") (term "0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "0,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "1,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "3,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "2,0,1,0")) -(rule "applyOnPV" (formula "6") (term "0,0,1,0")) -(rule "applyOnPV" (formula "6") (term "1,0,1,0")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "methodCallReturnIgnoreResult" (formula "6") (term "1")) -(rule "methodCallReturn" (formula "6") (term "1")) -(rule "assignment" (formula "6") (term "1")) -(rule "sequentialToParallel2" (formula "6")) -(rule "simplifyUpdate2" (formula "6")) -(rule "simplifyUpdate3" (formula "6") (term "1,0")) -(rule "applyOnElementary" (formula "6") (term "1,0")) -(rule "applyOnPV" (formula "6") (term "0,1,0")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "assignment" (formula "6") (term "1")) -(rule "sequentialToParallel2" (formula "6")) -(rule "simplifyUpdate2" (formula "6")) -(rule "simplifyUpdate3" (formula "6") (term "1,0")) -(rule "applyOnElementary" (formula "6") (term "1,0")) -(rule "applyOnPV" (formula "6") (term "0,1,0")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$init_3,savedHeapBefore_$init_3")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(rule "sequentialToParallel2" (formula "6")) -(rule "simplifyUpdate2" (formula "6")) -(rule "simplifyUpdate3" (formula "6") (term "1,0")) -(rule "applyOnElementary" (formula "6") (term "1,0")) -(rule "applyOnRigidTerm" (formula "6") (term "0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "3,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "0,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "1,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "2,0,1,0")) -(rule "applyOnPV" (formula "6") (term "0,0,1,0")) -(rule "applyOnPV" (formula "6") (term "1,0,1,0")) -(rule "dropEffectlessStores" (formula "6") (term "0,1,0")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(rule "sequentialToParallel2" (formula "6")) -(rule "simplifyUpdate2" (formula "6")) -(rule "simplifyUpdate3" (formula "6") (term "1,0")) -(rule "applyOnElementary" (formula "6") (term "1,0")) -(rule "applyOnRigidTerm" (formula "6") (term "0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "0,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "1,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "2,0,1,0")) -(rule "simplifyUpdate1" (formula "6") (term "3,0,1,0")) -(rule "applyOnPV" (formula "6") (term "0,0,1,0")) -(rule "applyOnPV" (formula "6") (term "1,0,1,0")) -(rule "dropEffectlessStores" (formula "6") (term "0,1,0")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "assignment_write_attribute" (formula "6") (term "1")) -(branch "Normal Execution (n_1 != null)" - (rule "simplifyUpdate2" (formula "6")) - (rule "sequentialToParallel2" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate3" (formula "7") (term "1,0")) - (rule "applyOnElementary" (formula "7") (term "1,0")) - (rule "applyOnRigidFormula" (formula "6")) - (rule "simplifyUpdate1" (formula "6") (term "1")) - (rule "applyOnPV" (formula "6") (term "0")) - (rule "applyOnRigidTerm" (formula "6") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "6") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "6") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "6") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "6") (term "3,0,1,0")) - (rule "applyOnPV" (formula "6") (term "0,0,1,0")) - (rule "applyOnPV" (formula "6") (term "1,0,1,0")) - (rule "dropEffectlessStores" (formula "6") (term "0,1,0")) - (rule "assignment" (formula "6") (term "1")) - (rule "sequentialToParallel2" (formula "6")) - (rule "simplifyUpdate2" (formula "6")) - (rule "simplifyUpdate3" (formula "6") (term "1,0")) - (rule "applyOnElementary" (formula "6") (term "1,0")) - (rule "applyOnPV" (formula "6") (term "0,1,0")) - (rule "methodCallThrow" (formula "6") (term "1")) - (rule "tryCatchThrow" (formula "6") (term "1")) - (rule "ifElseUnfold" (formula "6") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x")) - (rule "equality_comparison_simple" (formula "6") (term "1")) - (rule "sequentialToParallel2" (formula "6")) - (rule "simplifyUpdate3" (formula "6") (term "1,0")) - (rule "applyOnElementary" (formula "6") (term "1,0")) - (rule "applyOnRigidTerm" (formula "6") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "6") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "6") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "6") (term "0,0,1,0")) - (rule "applyOnPV" (formula "6") (term "0,0,0,1,0")) - (rule "simplifyUpdate1" (formula "6") (term "1,0,0,1,0")) - (rule "replace_known_right" (formula "6") (term "0,0,1,0") (ifseqformula "5")) - (rule "ifthenelse_false" (formula "6") (term "0,1,0")) - (rule "ifElseSplit" (formula "6")) - (branch "if x true" - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "boolean_not_equal_2" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "4")) - (rule "applyOnPV" (formula "4") (term "0")) - (rule "simplifyUpdate1" (formula "4") (term "1")) - (rule "boolean_not_equal_2" (formula "4")) - (rule "false_right" (formula "4")) - (rule "ifElseSplit" (formula "6")) - (branch "if n instanceof java.lang.Throwable true" - (rule "instanceof_static_type" (formula "1") (term "2,0,1")) - (rule "ifthenelse_concrete4" (formula "1") (term "1")) - (rule "boolean_not_equal_2" (formula "1") (term "1,1")) - (rule "concrete_or_4" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "4")) - (rule "applyOnPV" (formula "4") (term "0")) - (rule "simplifyUpdate1" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "6") (term "1")) - (branch "Normal Execution (n instanceof java.lang.Throwable)" - (rule "instanceof_static_type" (formula "1") (term "0,1,1")) - (rule "boolean_equal" (formula "1") (term "1,1")) - (rule "concrete_or_3" (formula "1") (term "1")) - (rule "true_left" (formula "1")) - (rule "sequentialToParallel2" (formula "6")) - (rule "simplifyUpdate2" (formula "6")) - (rule "simplifyUpdate3" (formula "6") (term "1,0")) - (rule "applyOnElementary" (formula "6") (term "1,0")) - (rule "applyOnPV" (formula "6") (term "0,1,0")) - (rule "assignment" (formula "6") (term "1")) - (rule "sequentialToParallel2" (formula "6")) - (rule "simplifyUpdate2" (formula "6")) - (rule "simplifyUpdate3" (formula "6") (term "1,0")) - (rule "applyOnElementary" (formula "6") (term "1,0")) - (rule "applyOnPV" (formula "6") (term "0,1,0")) - (rule "emptyModality" (formula "6") (term "1")) - (rule "applyOnRigidFormula" (formula "6")) - (rule "simplifyUpdate2" (formula "6") (term "1")) - (rule "simplifyUpdate2" (formula "6") (term "0")) - (rule "applyOnRigidFormula" (formula "6") (term "1")) - (rule "applyOnRigidFormula" (formula "6") (term "0")) - (rule "applyOnRigidFormula" (formula "6") (term "0,1")) - (rule "applyOnRigidFormula" (formula "6") (term "0,0")) - (rule "applyOnRigidFormula" (formula "6") (term "1,0")) - (rule "applyOnRigidFormula" (formula "6") (term "0,0,1")) - (rule "simplifyUpdate2" (formula "6") (term "0,0,0,1")) - (rule "applyOnRigidFormula" (formula "6") (term "0,0,0")) - (rule "applyOnPV" (formula "6") (term "0,0,0,0")) - (rule "simplifyUpdate1" (formula "6") (term "1,0,0,0")) - (rule "replace_known_right" (formula "6") (term "0,0,0") (ifseqformula "5")) - (rule "concrete_not_2" (formula "6") (term "0,0")) - (rule "concrete_and_1" (formula "6") (term "0")) - (rule "applyOnRigidFormula" (formula "6") (term "1,0,0,1")) - (rule "simplifyUpdate1" (formula "6") (term "0,1,0,0,1")) - (rule "simplifyUpdate1" (formula "6") (term "1,1,0,0,1")) - (rule "applyOnRigidFormula" (formula "6") (term "0,0,0,1")) - (rule "simplifyUpdate2" (formula "6") (term "0,0,0,0,1")) - (rule "applyOnRigidFormula" (formula "6") (term "1,0")) - (rule "simplifyUpdate1" (formula "6") (term "1,1,0")) - (rule "applyOnRigidFormula" (formula "6") (term "0,0")) - (rule "simplifyUpdate1" (formula "6") (term "1,0,0")) - (rule "applyOnRigidTerm" (formula "6") (term "0,1,0,0,1")) - (rule "simplifyUpdate1" (formula "6") (term "2,0,1,0,0,1")) - (rule "simplifyUpdate1" (formula "6") (term "1,0,1,0,0,1")) - (rule "applyOnPV" (formula "6") (term "0,0,1,0,0,1")) - (rule "eqSymm" (formula "6") (term "1,0,0,1")) - (rule "applyOnRigidFormula" (formula "6") (term "1,0,0,0,1")) - (rule "applyOnRigidTerm" (formula "6") (term "0,1,0")) - (rule "applyOnPV" (formula "6") (term "0,0,1,0")) - (rule "instanceof_static_type" (formula "6") (term "0,1,0")) - (rule "boolean_equal" (formula "6") (term "1,0")) - (rule "concrete_or_3" (formula "6") (term "0")) - (rule "concrete_and_1" (formula "6")) - (rule "allRight" (formula "6") (inst "sk=f_0")) - (rule "allRight" (formula "6") (inst "sk=o_0")) - (rule "orRight" (formula "6")) - (rule "applyOnRigidTerm" (formula "7") (term "0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0")) - (rule "applyOnPV" (formula "7") (term "0,0")) - (rule "applyOnRigidFormula" (formula "6") (term "0,1")) - (rule "simplifyUpdate1" (formula "6") (term "1,0,1")) - (rule "applyOnRigidTerm" (formula "6") (term "0,0,1")) - (rule "applyOnPV" (formula "6") (term "0,0,0,1")) - (rule "simplifyUpdate1" (formula "6") (term "1,0,0,1")) - (rule "simplifyUpdate1" (formula "6") (term "2,0,0,1")) - (rule "pullOutSelect" (formula "7") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (rule "equalUnique" (formula "1") (term "0,1,0,0")) - (rule "concrete_not_2" (formula "1") (term "1,0,0")) - (rule "concrete_and_3" (formula "1") (term "0,0")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "8")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_0_1")) - (rule "simplifySelectOfStore" (formula "1")) - (rule "equalUnique" (formula "1") (term "0,1,0,0")) - (rule "concrete_not_2" (formula "1") (term "1,0,0")) - (rule "concrete_and_3" (formula "1") (term "0,0")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_0_2")) - (rule "simplifySelectOfStore" (formula "1")) - (rule "equalUnique" (formula "1") (term "0,1,0,0")) - (rule "concrete_not_2" (formula "1") (term "1,0,0")) - (rule "concrete_and_3" (formula "1") (term "0,0")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_0_3")) - (rule "simplifySelectOfCreate" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,1,0,0,0") (ifseqformula "9")) - (rule "concrete_not_2" (formula "1") (term "1,0,0,0")) - (rule "concrete_and_3" (formula "1") (term "0,0,0")) - (rule "commute_and" (formula "4") (term "0,0")) - (rule "commute_and" (formula "3") (term "0,0")) - (rule "commute_and" (formula "2") (term "0,0")) - (rule "commute_and" (formula "1") (term "0,0")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_0 = java.lang.Object::#$created & o_0 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "4") (term "2,0") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "4") (term "1,0,0") (ifseqformula "2")) - (rule "concrete_and_3" (formula "4") (term "0,0")) - (rule "replace_known_left" (formula "3") (term "1,0,0") (ifseqformula "2")) - (rule "concrete_and_3" (formula "3") (term "0,0")) - (rule "replace_known_left" (formula "5") (term "1,0,0") (ifseqformula "2")) - (rule "concrete_and_3" (formula "5") (term "0,0")) - (rule "applyEq" (formula "11") (term "0,0,0") (ifseqformula "2")) - (rule "replace_known_right" (formula "11") (term "0,0") (ifseqformula "10")) - (rule "concrete_not_2" (formula "11") (term "0")) - (rule "concrete_and_1" (formula "11")) - (rule "notRight" (formula "11")) - (rule "applyEq" (formula "12") (term "2,0") (ifseqformula "2")) - (rule "narrowSelectType" (formula "12") (term "0") (ifseqformula "8")) - (rule "eqSymm" (formula "12")) - (rule "applyEq" (formula "5") (term "0,0,0") (ifseqformula "2")) - (rule "equalUnique" (formula "5") (term "0,0")) - (rule "ifthenelse_false" (formula "5") (term "0")) - (rule "applyEqReverse" (formula "6") (term "2,0") (ifseqformula "5")) - (rule "hideAuxiliaryEq" (formula "5")) - (rule "applyEqRigid" (formula "4") (term "0,0,0") (ifseqformula "2")) - (rule "equalUnique" (formula "4") (term "0,0")) - (rule "ifthenelse_false" (formula "4") (term "0")) - (rule "applyEqReverse" (formula "5") (term "2,0") (ifseqformula "4")) - (rule "ifthenelse_same_branches" (formula "5") (term "0")) - (rule "applyEqReverse" (formula "11") (term "0") (ifseqformula "5")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "eqSymm" (formula "9")) - (rule "close" (formula "9") (ifseqformula "1")) - ) - (branch "f_0 = java.lang.Object::#$created & o_0 = n_3 FALSE" - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_0 = java.lang.Throwable::$cause & o_0 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "4") (term "2,0") (ifseqformula "3")) - (rule "ifthenelse_same_branches" (formula "4") (term "0")) - (rule "applyEqReverse" (formula "5") (term "2,0") (ifseqformula "4")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "3") (term "1,0,0") (ifseqformula "2")) - (rule "concrete_and_3" (formula "3") (term "0,0")) - (rule "replace_known_left" (formula "7") (term "1") (ifseqformula "2")) - (rule "concrete_and_3" (formula "7")) - (rule "applyEq" (formula "10") (term "0,0,0") (ifseqformula "2")) - (rule "replace_known_right" (formula "10") (term "0,0") (ifseqformula "9")) - (rule "concrete_not_2" (formula "10") (term "0")) - (rule "concrete_and_1" (formula "10")) - (rule "notRight" (formula "10")) - (rule "applyEq" (formula "11") (term "2,0") (ifseqformula "2")) - (rule "narrowSelectType" (formula "11") (term "0") (ifseqformula "6")) - (rule "eqSymm" (formula "11")) - (rule "applyEqRigid" (formula "4") (term "0,0,0") (ifseqformula "2")) - (rule "equalUnique" (formula "4") (term "0,0")) - (rule "ifthenelse_false" (formula "4") (term "0")) - (rule "applyEqReverse" (formula "11") (term "0") (ifseqformula "4")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "eqSymm" (formula "10")) - (rule "applyEqRigid" (formula "7") (term "0") (ifseqformula "2")) - (rule "equalUnique" (formula "7")) - (rule "false_right" (formula "7")) - (rule "applyEq" (formula "9") (term "1,0") (ifseqformula "3")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "3")) - (rule "close" (formula "7") (ifseqformula "1")) - ) - (branch "f_0 = java.lang.Throwable::$cause & o_0 = n_3 FALSE" - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_0 = java.lang.Throwable::$message & o_0 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "4") (term "2,0") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "3") (term "1,0,0") (ifseqformula "2")) - (rule "concrete_and_3" (formula "3") (term "0,0")) - (rule "replace_known_left" (formula "7") (term "1") (ifseqformula "2")) - (rule "concrete_and_3" (formula "7")) - (rule "replace_known_left" (formula "8") (term "1") (ifseqformula "2")) - (rule "concrete_and_3" (formula "8")) - (rule "applyEq" (formula "12") (term "1,0") (ifseqformula "2")) - (rule "applyEqRigid" (formula "12") (term "2,0") (ifseqformula "1")) - (rule "narrowSelectType" (formula "12") (term "0") (ifseqformula "5")) - (rule "eqSymm" (formula "12")) - (rule "applyEq" (formula "11") (term "1,0,0,1") (ifseqformula "2")) - (rule "replace_known_right" (formula "11") (term "0,1") (ifseqformula "9")) - (rule "concrete_not_2" (formula "11") (term "1")) - (rule "concrete_and_3" (formula "11")) - (rule "notRight" (formula "11")) - (rule "applyEqRigid" (formula "4") (term "0,0,0") (ifseqformula "2")) - (rule "equalUnique" (formula "4") (term "0,0")) - (rule "ifthenelse_false" (formula "4") (term "0")) - (rule "applyEqReverse" (formula "12") (term "0") (ifseqformula "4")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "eqSymm" (formula "11")) - (rule "applyEqRigid" (formula "7") (term "0") (ifseqformula "2")) - (rule "equalUnique" (formula "7")) - (rule "false_right" (formula "7")) - (rule "applyEqRigid" (formula "7") (term "0") (ifseqformula "2")) - (rule "equalUnique" (formula "7")) - (rule "false_right" (formula "7")) - (rule "applyEq" (formula "3") (term "0") (ifseqformula "1")) - (rule "eqSymm" (formula "3")) - (rule "close" (formula "8") (ifseqformula "3")) - ) - (branch "f_0 = java.lang.Throwable::$message & o_0 = n_3 FALSE" - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_0 = java.lang.Object::#$initialized & o_0 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "13") (term "1") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "7") (term "1") (ifseqformula "2")) - (rule "concrete_and_3" (formula "7")) - (rule "replace_known_left" (formula "6") (term "1") (ifseqformula "2")) - (rule "concrete_and_3" (formula "6")) - (rule "replace_known_left" (formula "8") (term "1") (ifseqformula "2")) - (rule "concrete_and_3" (formula "8")) - (rule "applyEq" (formula "11") (term "1,0,0,1") (ifseqformula "2")) - (rule "replace_known_right" (formula "11") (term "0,1") (ifseqformula "9")) - (rule "concrete_not_2" (formula "11") (term "1")) - (rule "concrete_and_3" (formula "11")) - (rule "notRight" (formula "11")) - (rule "applyEqRigid" (formula "12") (term "2,0") (ifseqformula "2")) - (rule "narrowSelectType" (formula "12") (term "0") (ifseqformula "5")) - (rule "applyEqRigid" (formula "8") (term "0") (ifseqformula "2")) - (rule "equalUnique" (formula "8")) - (rule "false_right" (formula "8")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "2")) - (rule "equalUnique" (formula "7")) - (rule "false_right" (formula "7")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "2")) - (rule "equalUnique" (formula "7")) - (rule "false_right" (formula "7")) - (rule "applyEq" (formula "3") (term "0") (ifseqformula "1")) - (rule "eqSymm" (formula "3")) - (rule "close" (formula "8") (ifseqformula "3")) - ) - (branch "f_0 = java.lang.Object::#$initialized & o_0 = n_3 FALSE" - (rule "close" (formula "12") (ifseqformula "1")) - ) - ) - ) - ) - ) - (branch "ClassCastException (!(n instanceof java.lang.Throwable))" - (rule "instanceof_static_type" (formula "6") (term "0,1,1")) - (rule "boolean_equal" (formula "6") (term "1,1")) - (rule "concrete_or_3" (formula "6") (term "1")) - (rule "closeTrue" (formula "6")) - ) - ) - (branch "if n instanceof java.lang.Throwable false" - (rule "instanceof_static_type" (formula "1") (term "2,0,1")) - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "ifthenelse_concrete4" (formula "1") (term "0,1")) - (rule "boolean_not_equal_2" (formula "1") (term "1,0,1")) - (rule "concrete_or_4" (formula "1") (term "0,1")) - (rule "double_not" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "close" (formula "6") (ifseqformula "1")) - ) - ) -) -(branch "Null Reference (n_1 = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "close" (formula "6") (ifseqformula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/test/ExceptionalModifiableNothingTest_OSS.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/test/ExceptionalModifiableNothingTest_OSS.proof deleted file mode 100644 index 9a9cb7b7f8a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueExceptionalModifiableNothingTest/test/ExceptionalModifiableNothingTest_OSS.proof +++ /dev/null @@ -1,382 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jul 18 11:01:31 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , moreSeqRules-moreSeqRules\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , sequences-sequences\\:on , integerSimplificationRules-integerSimplificationRules\\:full , runtimeExceptions-runtimeExceptions\\:allow , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , wdOperator-wdOperator\\:L , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ExceptionalModifiableNothingTest[ExceptionalModifiableNothingTest::main()].JML exceptional_behavior operation contract.0", - "contract": "ExceptionalModifiableNothingTest[ExceptionalModifiableNothingTest::main()].JML exceptional_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1557") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "throwUnfold" (formula "3") (term "1") (inst "#v0=n")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "n")) -(rule "instanceCreationAssignment" (formula "3") (term "1") (inst "#v0=n_1")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "n_1")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "3") (term "1") (inst "#v0=n_2")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "n_2")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) -(builtin "One Step Simplification" (formula "3")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "__NEW__")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "3") (term "1") (inst "#v0=n_3")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "n_3")) -(rule "allocateInstance" (formula "3")) -(builtin "One Step Simplification" (formula "4")) -(builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "notLeft" (formula "1")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "assignment" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_,savedHeapBefore_")) -(builtin "One Step Simplification" (formula "6")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallWithinClass" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$prepare_1,savedHeapBefore_$prepare_1")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$prepare_2,savedHeapBefore_$prepare_2")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "methodCallReturnIgnoreResult" (formula "6") (term "1")) -(rule "methodCallReturn" (formula "6") (term "1")) -(rule "assignment" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "assignment" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallSuper" (formula "6") (term "1")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_$init_3,savedHeapBefore_$init_3")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "assignment_write_attribute_this" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "methodCallEmpty" (formula "6") (term "1")) -(rule "blockEmpty" (formula "6") (term "1")) -(rule "assignment_write_attribute" (formula "6") (term "1")) -(branch "Normal Execution (n_1 != null)" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "4"))) - (rule "false_right" (formula "6")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallThrow" (formula "6") (term "1")) - (rule "tryCatchThrow" (formula "6") (term "1")) - (rule "ifElseUnfold" (formula "6") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x")) - (rule "equality_comparison_simple" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "replace_known_right" (formula "6") (term "0,0,1,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "6")) - (rule "ifElseSplit" (formula "6")) - (branch "if x true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "ifElseSplit" (formula "6")) - (branch "if n instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "6") (term "1")) - (branch "Normal Execution (n instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "4")) (ifInst "" (formula "4"))) - (rule "allRight" (formula "6") (inst "sk=f_0")) - (rule "allRight" (formula "6") (inst "sk=o_0")) - (rule "orRight" (formula "6")) - (rule "eqSymm" (formula "7")) - (rule "pullOutSelect" (formula "7") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "8")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_0_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_0_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_0_3")) - (rule "simplifySelectOfCreate" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,1,0,0,0") (ifseqformula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "commute_and" (formula "4") (term "0,0")) - (rule "commute_and" (formula "3") (term "0,0")) - (rule "commute_and" (formula "2") (term "0,0")) - (rule "commute_and" (formula "1") (term "0,0")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_0 = java.lang.Object::#$created & o_0 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "4") (term "2,0") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "3") (term "1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "3")) - (rule "replace_known_left" (formula "4") (term "1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "4")) - (rule "replace_known_left" (formula "5") (term "1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "5")) - (rule "applyEq" (formula "12") (term "2,0") (ifseqformula "1")) - (rule "narrowSelectType" (formula "12") (term "0") (ifseqformula "7")) - (rule "eqSymm" (formula "12")) - (rule "applyEq" (formula "11") (term "0,0,0") (ifseqformula "2")) - (rule "replace_known_right" (formula "11") (term "0,0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "11")) - (rule "notRight" (formula "11")) - (rule "applyEq" (formula "4") (term "0,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "4")) - (rule "applyEqReverse" (formula "5") (term "2,0") (ifseqformula "4")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "applyEq" (formula "4") (term "0,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "4")) - (rule "applyEqReverse" (formula "5") (term "2,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "5")) - (rule "applyEqReverse" (formula "11") (term "0") (ifseqformula "5")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "eqSymm" (formula "9")) - (rule "close" (formula "9") (ifseqformula "1")) - ) - (branch "f_0 = java.lang.Object::#$created & o_0 = n_3 FALSE" - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_0 = java.lang.Throwable::$cause & o_0 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "4") (term "2,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "2"))) - (rule "applyEqReverse" (formula "5") (term "2,0") (ifseqformula "4")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "3") (term "1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "3")) - (rule "replace_known_left" (formula "7") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "7")) - (rule "applyEq" (formula "10") (term "1,0,0,1") (ifseqformula "2")) - (rule "replace_known_right" (formula "10") (term "0,1") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "10")) - (rule "notRight" (formula "10")) - (rule "applyEq" (formula "11") (term "1,0") (ifseqformula "3")) - (rule "applyEq" (formula "11") (term "2,0") (ifseqformula "2")) - (rule "narrowSelectType" (formula "11") (term "0") (ifseqformula "6")) - (rule "eqSymm" (formula "11")) - (rule "applyEq" (formula "4") (term "0,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "4")) - (rule "applyEqReverse" (formula "11") (term "0") (ifseqformula "4")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "eqSymm" (formula "10")) - (rule "applyEqRigid" (formula "7") (term "0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "7")) - (rule "false_right" (formula "7")) - (rule "applyEqRigid" (formula "3") (term "0") (ifseqformula "1")) - (rule "eqSymm" (formula "3")) - (rule "close" (formula "7") (ifseqformula "3")) - ) - (branch "f_0 = java.lang.Throwable::$cause & o_0 = n_3 FALSE" - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_0 = java.lang.Throwable::$message & o_0 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "4") (term "2,0") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "3") (term "1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "3")) - (rule "replace_known_left" (formula "7") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "7")) - (rule "replace_known_left" (formula "8") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "8")) - (rule "applyEq" (formula "11") (term "1,0,0,1") (ifseqformula "2")) - (rule "replace_known_right" (formula "11") (term "0,1") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "11")) - (rule "notRight" (formula "11")) - (rule "applyEq" (formula "12") (term "2,0") (ifseqformula "2")) - (rule "narrowSelectType" (formula "12") (term "0") (ifseqformula "6")) - (rule "eqSymm" (formula "12")) - (rule "applyEqRigid" (formula "8") (term "0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (rule "applyEq" (formula "4") (term "0,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "4")) - (rule "applyEqReverse" (formula "11") (term "0") (ifseqformula "4")) - (rule "hideAuxiliaryEq" (formula "4")) - (rule "eqSymm" (formula "10")) - (rule "applyEqRigid" (formula "7") (term "0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "7")) - (rule "false_right" (formula "7")) - (rule "applyEqRigid" (formula "3") (term "0") (ifseqformula "1")) - (rule "eqSymm" (formula "3")) - (rule "close" (formula "7") (ifseqformula "3")) - ) - (branch "f_0 = java.lang.Throwable::$message & o_0 = n_3 FALSE" - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "f_0 = java.lang.Object::#$initialized & o_0 = n_3 TRUE" - (rule "andLeft" (formula "1")) - (rule "applyEqReverse" (formula "13") (term "1") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "replace_known_left" (formula "8") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "8")) - (rule "replace_known_left" (formula "6") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "6")) - (rule "replace_known_left" (formula "7") (term "1") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "7")) - (rule "applyEq" (formula "12") (term "2,0") (ifseqformula "1")) - (rule "narrowSelectType" (formula "12") (term "0") (ifseqformula "4")) - (rule "applyEq" (formula "11") (term "0,0,0") (ifseqformula "2")) - (rule "replace_known_right" (formula "11") (term "0,0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "11")) - (rule "notRight" (formula "11")) - (rule "applyEq" (formula "9") (term "0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "9")) - (rule "false_right" (formula "9")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "7")) - (rule "false_right" (formula "7")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "7")) - (rule "false_right" (formula "7")) - (rule "applyEq" (formula "9") (term "1,0") (ifseqformula "3")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "3")) - (rule "close" (formula "8") (ifseqformula "1")) - ) - (branch "f_0 = java.lang.Object::#$initialized & o_0 = n_3 FALSE" - (rule "close" (formula "12") (ifseqformula "1")) - ) - ) - ) - ) - ) - (branch "ClassCastException (!(n instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "6")) - (rule "closeTrue" (formula "6")) - ) - ) - (branch "if n instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "1")) - ) - ) -) -(branch "Null Reference (n_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseFormulaTest/oracle/IfThenElseFormulaTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseFormulaTest/oracle/IfThenElseFormulaTest.xml deleted file mode 100644 index 9b498316ca9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseFormulaTest/oracle/IfThenElseFormulaTest.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseFormulaTest/test/IfThenElseFormulaTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseFormulaTest/test/IfThenElseFormulaTest.java deleted file mode 100644 index 1b6c00115ae..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseFormulaTest/test/IfThenElseFormulaTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class IfThenElseFormulaTest { - /*@ normal_behavior - @ ensures (x == y ? \result == x >= 0 : \result == y >= 0); - @*/ - public static boolean magic(int x, int y) { - if (x == y) { - return x >= 0; - } - else { - return y >= 0; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseIntegerTest/oracle/IfThenElseIntegerTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseIntegerTest/oracle/IfThenElseIntegerTest.xml deleted file mode 100644 index f16f9c7423e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseIntegerTest/oracle/IfThenElseIntegerTest.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseIntegerTest/test/IfThenElseIntegerTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseIntegerTest/test/IfThenElseIntegerTest.java deleted file mode 100644 index 4cc94abc38d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseIntegerTest/test/IfThenElseIntegerTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class IfThenElseIntegerTest { - /*@ normal_behavior - @ ensures \result == (x == y ? 42 : -4711); - @*/ - public static int magic(int x, int y) { - if (x == y) { - return 42; - } - else { - return -4711; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseNotFormulaTest/oracle/IfThenElseNotFormulaTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseNotFormulaTest/oracle/IfThenElseNotFormulaTest.xml deleted file mode 100644 index 08238fb3b0d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseNotFormulaTest/oracle/IfThenElseNotFormulaTest.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseNotFormulaTest/test/IfThenElseNotFormulaTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseNotFormulaTest/test/IfThenElseNotFormulaTest.java deleted file mode 100644 index 400b605d07b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueIfThenElseNotFormulaTest/test/IfThenElseNotFormulaTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class IfThenElseNotFormulaTest { - /*@ normal_behavior - @ ensures \result == (x == y ? x >= 0 : y >= 0); - @*/ - public static boolean magic(int x, int y) { - if (x == y) { - return x >= 0; - } - else { - return y >= 0; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueLabelBelowUpdatesDifferentToApplicationTerm/oracle/TwoBranch.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueLabelBelowUpdatesDifferentToApplicationTerm/oracle/TwoBranch.xml deleted file mode 100644 index 1b57fbceed4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueLabelBelowUpdatesDifferentToApplicationTerm/oracle/TwoBranch.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueLabelBelowUpdatesDifferentToApplicationTerm/test/OneBranch.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueLabelBelowUpdatesDifferentToApplicationTerm/test/OneBranch.java deleted file mode 100644 index 775d5d920c3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueLabelBelowUpdatesDifferentToApplicationTerm/test/OneBranch.java +++ /dev/null @@ -1,9 +0,0 @@ - -public class OneBranch { - /*@ normal_behavior - @ ensures \result == 42; - @*/ - public /*@ helper @*/ static int magic() { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueLabelBelowUpdatesDifferentToApplicationTerm/test/TwoBranch.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueLabelBelowUpdatesDifferentToApplicationTerm/test/TwoBranch.proof deleted file mode 100644 index 2f250331bd7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueLabelBelowUpdatesDifferentToApplicationTerm/test/TwoBranch.proof +++ /dev/null @@ -1,78 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 08 11:07:54 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Simplify Term Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "OneBranch[OneBranch::magic()].JML normal_behavior operation contract.0", - "contract": "OneBranch[OneBranch::magic()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "0") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,o,f") (userinteraction)) -(rule "andLeft" (formula "1") (userinteraction)) -(rule "assignment" (formula "3") (term "1") (userinteraction)) -(rule "methodBodyExpand" (formula "3") (term "1,1") (newnames "heapBefore_magic,savedHeapBefore_magic") (userinteraction)) -(rule "methodCallReturn" (formula "3") (term "1,1,1") (userinteraction)) -(rule "assignment" (formula "3") (term "1,1,1") (userinteraction)) -(rule "methodCallEmpty" (formula "3") (term "1,1,1,1") (userinteraction)) -(rule "tryEmpty" (formula "3") (term "1,1,1,1") (userinteraction)) -(builtin "One Step Simplification" (formula "3")) -(rule "emptyModality" (formula "3") (term "1") (userinteraction)) -(rule "applyOnRigidFormula" (formula "3") (userinteraction)) -(rule "andRight" (formula "3") (userinteraction)) -(branch "Case 1" - (builtin "One Step Simplification" (formula "3")) - (rule "closeTrue" (formula "3") (userinteraction)) -) -(branch "Case 2" - (builtin "One Step Simplification" (formula "3")) - (rule "closeTrue" (formula "3") (userinteraction)) -) -) - -} 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 deleted file mode 100644 index da53026f299..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/oracle/MagicProofNoOSS.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/test/ExampleInstance.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/test/ExampleInstance.java deleted file mode 100644 index 53acbba0907..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/test/ExampleInstance.java +++ /dev/null @@ -1,29 +0,0 @@ -public class ExampleInstance { - private int x; - - /*@ normal_behavior - @ ensures \result ==0; - @ assignable \nothing; - @*/ - public int magic() { - if (x < 0) { - throw new RuntimeException("x < 0"); - } - /*@ loop_invariant x >= 0; - @ decreasing x; - @ assignable x; - @*/ - while (x > 0) { - x = decrease(x); - } - return x; - } - - /*@ normal_behavior - @ ensures \result == x - 2; - @ assignable \nothing; - @*/ - private static int decrease(int x) { - return x - 2; - } -} 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 deleted file mode 100644 index 0867b5c85d7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/test/MagicProofNoOSS.proof +++ /dev/null @@ -1,1038 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jul 18 11:02:13 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , moreSeqRules-moreSeqRules\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , sequences-sequences\\:on , integerSimplificationRules-integerSimplificationRules\\:full , runtimeExceptions-runtimeExceptions\\:allow , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , wdOperator-wdOperator\\:L , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ExampleInstance[ExampleInstance::magic()].JML normal_behavior operation contract.0", - "contract": "ExampleInstance[ExampleInstance::magic()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "11415") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "self,result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "eqSymm" (formula "7") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "7") (term "1")) -(rule "sequentialToParallel2" (formula "7")) -(rule "simplifyUpdate3" (formula "7") (term "1,0")) -(rule "Class_invariant_axiom_for_ExampleInstance" (formula "5") (inst "sk=sk_0") (ifseqformula "3")) -(branch "Use Axiom" - (rule "true_left" (formula "5")) - (rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) - (rule "simplifyUpdate2" (formula "6") (term "1")) - (rule "ifUnfold" (formula "6") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x")) - (rule "compound_less_than_comparison_1" (formula "6") (term "1") (inst "#v0=x_1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_1")) - (rule "assignment_read_attribute_this" (formula "6") (term "1")) - (rule "sequentialToParallel2" (formula "6")) - (rule "simplifyUpdate3" (formula "6") (term "1,0")) - (rule "less_than_comparison_simple" (formula "6") (term "1")) - (rule "sequentialToParallel2" (formula "6")) - (rule "simplifyUpdate2" (formula "6")) - (rule "simplifyUpdate3" (formula "6") (term "1,0")) - (rule "applyOnElementary" (formula "6") (term "1,0")) - (rule "applyOnRigidTerm" (formula "6") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "6") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "6") (term "2,0,1,0")) - (rule "applyOnRigidFormula" (formula "6") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "6") (term "1,0,0,1,0")) - (rule "applyOnPV" (formula "6") (term "0,0,0,1,0")) - (rule "inEqSimp_ltToLeq" (formula "6") (term "0,0,1,0")) - (rule "times_zero_1" (formula "6") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "6") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "6") (term "0,0,1,0")) - (rule "mul_literals" (formula "6") (term "1,0,0,1,0")) - (rule "ifSplit" (formula "6")) - (branch "if x true" - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "ifthenelse_concrete3" (formula "1")) - (rule "boolean_not_equal_2" (formula "1") (term "1")) - (rule "concrete_or_4" (formula "1")) - (rule "blockThrow" (formula "7") (term "1")) - (rule "throwUnfold" (formula "7") (term "1") (inst "#v0=r")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "r")) - (rule "instanceCreationAssignmentUnfoldArguments" (formula "7") (term "1")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "var_1")) - (rule "stringAssignment" (formula "7") (term "1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "2")) - (rule "notLeft" (formula "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "instanceCreationAssignment" (formula "9") (term "1") (inst "#v0=r_1")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "r_1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "9") (term "1") (inst "#v0=r_2")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "r_2")) - (rule "methodBodyExpand" (formula "9") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) - (rule "simplifyUpdate2" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "__NEW__")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "9") (term "1") (inst "#v0=r_3")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "r_3")) - (rule "allocateInstance" (formula "9")) - (rule "false_to_not_true" (formula "1") (term "1,1,0,1")) - (rule "simplifyUpdate2" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "5")) - (rule "concrete_impl_1" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "sequentialToParallel2" (formula "12")) - (rule "simplifyUpdate3" (formula "12") (term "1,0")) - (rule "blockEmpty" (formula "12") (term "1")) - (rule "assignment" (formula "12") (term "1")) - (rule "sequentialToParallel2" (formula "12")) - (rule "simplifyUpdate3" (formula "12") (term "1,0")) - (rule "methodBodyExpand" (formula "12") (term "1") (newnames "heapBefore_,savedHeapBefore_")) - (rule "simplifyUpdate2" (formula "12") (term "1")) - (rule "assignment_write_attribute_this" (formula "12") (term "1")) - (rule "sequentialToParallel2" (formula "12")) - (rule "simplifyUpdate2" (formula "12")) - (rule "simplifyUpdate3" (formula "12") (term "1,0")) - (rule "applyOnElementary" (formula "12") (term "1,0")) - (rule "applyOnRigidTerm" (formula "12") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "12") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "12") (term "3,0,1,0")) - (rule "simplifyUpdate1" (formula "12") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "12") (term "2,0,1,0")) - (rule "applyOnPV" (formula "12") (term "1,0,1,0")) - (rule "applyOnPV" (formula "12") (term "0,0,1,0")) - (rule "methodCallWithinClass" (formula "12") (term "1")) - (rule "methodBodyExpand" (formula "12") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) - (rule "simplifyUpdate2" (formula "12") (term "1")) - (rule "methodCallSuper" (formula "12") (term "1")) - (rule "methodBodyExpand" (formula "12") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) - (rule "simplifyUpdate2" (formula "12") (term "1")) - (rule "methodCallSuper" (formula "12") (term "1")) - (rule "methodBodyExpand" (formula "12") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) - (rule "simplifyUpdate2" (formula "12") (term "1")) - (rule "methodCallSuper" (formula "12") (term "1")) - (rule "methodBodyExpand" (formula "12") (term "1") (newnames "heapBefore_$prepare_1,savedHeapBefore_$prepare_1")) - (rule "simplifyUpdate2" (formula "12") (term "1")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "blockEmpty" (formula "12") (term "1")) - (rule "assignment_write_attribute_this" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "assignment_write_attribute_this" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "blockEmpty" (formula "12") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "12") (term "1")) - (rule "methodCallReturn" (formula "12") (term "1")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "blockEmpty" (formula "12") (term "1")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "var_2")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "methodBodyExpand" (formula "12") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) - (builtin "One Step Simplification" (formula "12")) - (rule "methodCallSuper" (formula "12") (term "1")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "arg0")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "methodBodyExpand" (formula "12") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) - (builtin "One Step Simplification" (formula "12")) - (rule "methodCallSuper" (formula "12") (term "1")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "arg0_1")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "methodBodyExpand" (formula "12") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) - (builtin "One Step Simplification" (formula "12")) - (rule "methodCall" (formula "12") (term "1") (newnames "target")) - (branch "Normal Execution (this != null )" - (builtin "One Step Simplification" (formula "12") (ifInst "" (formula "9"))) - (rule "false_right" (formula "12")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "arg0_2")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "arg1")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "target")) - (rule "delete_unnecessary_cast" (formula "12") (term "1")) - (branch "Normal Execution (r_1 instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "methodBodyExpand" (formula "12") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) - (builtin "One Step Simplification" (formula "12")) - (rule "methodCallSuper" (formula "12") (term "1")) - (rule "methodBodyExpand" (formula "12") (term "1") (newnames "heapBefore_$init_3,savedHeapBefore_$init_3")) - (builtin "One Step Simplification" (formula "12")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "blockEmpty" (formula "12") (term "1")) - (rule "assignment_write_attribute_this" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "assignment_write_attribute_this" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "assignment_write_attribute_this" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "emptyStatement" (formula "12") (term "1")) - (rule "assignment_write_attribute_this" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "emptyStatement" (formula "12") (term "1")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "methodCallEmpty" (formula "12") (term "1")) - (rule "blockEmpty" (formula "12") (term "1")) - (rule "assignment_write_attribute" (formula "12") (term "1")) - (branch "Normal Execution (r_1 != null)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "12") (ifInst "" (formula "9"))) - (rule "false_right" (formula "12")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "blockEmpty" (formula "12") (term "1")) - (rule "methodCallParamThrow" (formula "12") (term "1")) - (rule "tryCatchThrow" (formula "12") (term "1")) - (rule "ifElseUnfold" (formula "12") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_8")) - (rule "equality_comparison_simple" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "replace_known_right" (formula "12") (term "0,0,1,0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "12")) - (rule "ifElseSplit" (formula "12")) - (branch "if x_8 true" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_8 false" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "ifElseSplit" (formula "12")) - (branch "if r instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "12") (term "1")) - (branch "Normal Execution (r instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "emptyModality" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12") (ifInst "" (formula "9"))) - (rule "false_right" (formula "12")) - (opengoal " ") - ) - (branch "ClassCastException (!(r instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "12")) - (rule "closeTrue" (formula "12")) - ) - ) - (branch "if r instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Null Reference (r_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "ClassCastException (!(r_1 instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "12")) - (rule "closeTrue" (formula "12")) - ) - ) - (branch "Null Reference (this = null)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "7")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "5")) - (rule "applyOnPV" (formula "5") (term "0")) - (rule "simplifyUpdate1" (formula "5") (term "1")) - (rule "ifthenelse_concrete3" (formula "5")) - (rule "boolean_not_equal_2" (formula "5") (term "1")) - (rule "concrete_or_4" (formula "5")) - (rule "inEqSimp_leqRight" (formula "5")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (builtin "Loop Invariant" (formula "7") (newnames "variant,b,heapBefore_LOOP,heap_After_LOOP,anon_heap_LOOP,o,f")) - (branch "Invariant Initially Valid" - (rule "simplifyUpdate2" (formula "7")) - (rule "replace_known_left" (formula "7") (term "0") (ifseqformula "1")) - (rule "concrete_and_1" (formula "7")) - (rule "close" (formula "7") (ifseqformula "2")) - ) - (branch "Body Preserves Invariant" - (rule "simplifyUpdate2" (formula "7")) - (rule "eqSymm" (formula "9") (term "1,0,0,1,0,1,1,0,1,1,1,1,1")) - (rule "sequentialToParallel2" (formula "9") (term "1")) - (rule "simplifyUpdate3" (formula "9") (term "1,0,1")) - (rule "sequentialToParallel2" (formula "9") (term "1")) - (rule "simplifyUpdate3" (formula "9") (term "1,0,1")) - (rule "applyOnElementary" (formula "9") (term "1,0,1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "impRight" (formula "9")) - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "8")) - (rule "simplifyUpdate1" (formula "8") (term "1")) - (rule "applyOnRigidTerm" (formula "10") (term "0,1,1,0")) - (rule "applyOnPV" (formula "10") (term "0,0,1,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "1,0,1,1,0")) - (rule "simplifyUpdate1" (formula "10") (term "2,0,1,1,0")) - (rule "elementOfSingleton" (formula "10") (term "0,0,0,0,1,0,1,1,0,1")) - (rule "applyOnRigidTerm" (formula "8") (term "0")) - (rule "applyOnPV" (formula "8") (term "0,0")) - (rule "simplifyUpdate1" (formula "8") (term "1,0")) - (rule "simplifyUpdate1" (formula "8") (term "2,0")) - (rule "pullOutSelect" (formula "10") (term "0,1,1,0") (inst "selectSK=ExampleInstance_x_1")) - (rule "applyEq" (formula "9") (term "0") (ifseqformula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (rule "elementOfFreshLocs" (formula "1") (term "1,0,0")) - (rule "equalUnique" (formula "1") (term "0,1,0,0,0")) - (rule "concrete_not_2" (formula "1") (term "1,0,0,0")) - (rule "concrete_and_3" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,1,0,0") (ifseqformula "10")) - (rule "concrete_not_2" (formula "1") (term "0,1,0,0")) - (rule "concrete_and_1" (formula "1") (term "1,0,0")) - (rule "replace_known_left" (formula "1") (term "0,1,0,0") (ifseqformula "5")) - (rule "concrete_not_1" (formula "1") (term "1,0,0")) - (rule "concrete_or_4" (formula "1") (term "0,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (rule "eqClose" (formula "1") (term "0,0,0")) - (rule "concrete_and_1" (formula "1") (term "0,0")) - (rule "equalUnique" (formula "1") (term "0,0")) - (rule "ifthenelse_true" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "9") (term "0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "11") (term "0,1,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "variableDeclarationAssign" (formula "1") (term "1")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "1") (term "1") (newnames "b_2")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "10") (term "1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "thrownExc")) - (rule "blockThrow" (formula "10") (term "1,0,0,1")) - (rule "boxToDiamond" (formula "1") (term "1")) - (rule "notLeft" (formula "1")) - (rule "compound_greater_than_comparison_1" (formula "8") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_4")) - (rule "assignment_read_attribute_this" (formula "8") (term "1")) - (rule "sequentialToParallel2" (formula "8")) - (rule "applyOnElementary" (formula "8") (term "1,0")) - (rule "applyOnRigidTerm" (formula "8") (term "0,1,0")) - (rule "applyOnPV" (formula "8") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "8") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "8") (term "1,0,1,0")) - (rule "replaceKnownSelect_taclet110_0" (formula "8") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet110_1" (formula "8") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "8") (term "1")) - (rule "sequentialToParallel2" (formula "8")) - (rule "simplifyUpdate2" (formula "8")) - (rule "simplifyUpdate3" (formula "8") (term "1,0")) - (rule "applyOnElementary" (formula "8") (term "1,0")) - (rule "applyOnRigidTerm" (formula "8") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "8") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "8") (term "2,0,1,0")) - (rule "applyOnRigidFormula" (formula "8") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "8") (term "1,0,0,1,0")) - (rule "applyOnPV" (formula "8") (term "0,0,0,1,0")) - (rule "inEqSimp_gtToGeq" (formula "8") (term "0,0,1,0")) - (rule "times_zero_1" (formula "8") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "8") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "8") (term "0,0,1,0")) - (rule "mul_literals" (formula "8") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "simplifyUpdate2" (formula "8")) - (rule "emptyModality" (formula "8") (term "1")) - (rule "notRight" (formula "8")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "ifthenelse_concrete3" (formula "1")) - (rule "boolean_not_equal_2" (formula "1") (term "1")) - (rule "concrete_or_4" (formula "1")) - (rule "inEqSimp_subsumption1" (formula "8") (ifseqformula "1")) - (rule "leq_literals" (formula "8") (term "0")) - (rule "concrete_or_1" (formula "8")) - (rule "true_left" (formula "8")) - (rule "ifUnfold" (formula "9") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_5")) - (rule "compound_greater_than_comparison_1" (formula "9") (term "1") (inst "#v0=x_6")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_6")) - (rule "assignment_read_attribute_this" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0")) - (rule "replaceKnownSelect_taclet110_0" (formula "9") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet110_1" (formula "9") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0,1,0")) - (rule "inEqSimp_gtToGeq" (formula "9") (term "0,0,1,0")) - (rule "times_zero_1" (formula "9") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "9") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "9") (term "0,0,1,0")) - (rule "mul_literals" (formula "9") (term "1,0,0,1,0")) - (rule "replace_known_left" (formula "9") (term "0,0,1,0") (ifseqformula "1")) - (rule "ifthenelse_true" (formula "9") (term "0,1,0")) - (rule "ifSplit" (formula "9")) - (branch "if x_5 true" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "10")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "boolean_equal" (formula "1")) - (rule "true_left" (formula "1")) - (rule "eval_order_access4_this" (formula "9") (term "1") (inst "#v1=x")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_7")) - (rule "methodCallWithAssignmentUnfoldArguments" (formula "9") (term "1")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "var")) - (rule "assignment_read_attribute_this" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "replaceKnownSelect_taclet110_0" (formula "9") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet110_1" (formula "9") (term "0,1,0")) - (builtin "Use Operation Contract" (formula "9") (newnames "heapBefore_decrease,result_0,exc_0,heapAfter_decrease,anon_heap_decrease") (contract "ExampleInstance[ExampleInstance::decrease(int)].JML normal_behavior operation contract.0")) - (branch "Post (decrease)" - (rule "inInt" (formula "9") (term "1,0,1,1,1,1")) - (rule "concrete_and_3" (formula "9") (term "0,1,1,1,1")) - (rule "translateJavaSubInt" (formula "9") (term "1,0,1,1,1,1,1")) - (rule "simplifyUpdate2" (formula "11")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate2" (formula "9") (term "1")) - (rule "simplifyUpdate2" (formula "9") (term "1,1")) - (rule "andLeft" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate2" (formula "10")) - (rule "andLeft" (formula "10")) - (rule "simplifyUpdate2" (formula "10")) - (rule "andLeft" (formula "11")) - (rule "simplifyUpdate2" (formula "12")) - (rule "eqSymm" (formula "11") (term "1")) - (rule "polySimp_elimSub" (formula "11") (term "0,1")) - (rule "mul_literals" (formula "11") (term "1,0,1")) - (rule "polySimp_homoEq" (formula "11") (term "1")) - (rule "sequentialToParallel2" (formula "13")) - (rule "simplifyUpdate2" (formula "13")) - (rule "simplifyUpdate3" (formula "13") (term "1,0")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,1")) - (rule "polySimp_addComm0" (formula "11") (term "1,1,0,1")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,1")) - (rule "mul_literals" (formula "11") (term "0,1,0,1")) - (rule "applyOnRigidFormula" (formula "9")) - (rule "simplifyUpdate1" (formula "9") (term "1")) - (rule "polySimp_addAssoc" (formula "11") (term "0,1")) - (rule "polySimp_addComm0" (formula "11") (term "0,0,1")) - (rule "applyOnRigidTerm" (formula "9") (term "0")) - (rule "applyOnPV" (formula "9") (term "0,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0")) - (rule "applyOnRigidFormula" (formula "11")) - (rule "simplifyUpdate1" (formula "11") (term "1")) - (rule "applyOnRigidTerm" (formula "11") (term "0")) - (rule "simplifyUpdate1" (formula "11") (term "0,0")) - (rule "applyOnRigidTerm" (formula "11") (term "1,0")) - (rule "simplifyUpdate1" (formula "11") (term "1,1,0")) - (rule "applyOnPV" (formula "11") (term "0,1,0")) - (rule "assignment" (formula "13") (term "1")) - (rule "sequentialToParallel2" (formula "13")) - (rule "simplifyUpdate3" (formula "13") (term "1,0")) - (rule "blockEmpty" (formula "13") (term "1")) - (rule "assignment_write_attribute_this" (formula "13") (term "1")) - (rule "sequentialToParallel2" (formula "13")) - (rule "simplifyUpdate2" (formula "13")) - (rule "simplifyUpdate3" (formula "13") (term "1,0")) - (rule "applyOnElementary" (formula "13") (term "1,0")) - (rule "applyOnRigidTerm" (formula "13") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "3,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,1,0")) - (rule "applyOnPV" (formula "13") (term "3,0,1,0")) - (rule "applyOnPV" (formula "13") (term "0,0,1,0")) - (rule "polySimp_sepNegMonomial" (formula "11")) - (rule "polySimp_mulLiterals" (formula "11") (term "0")) - (rule "polySimp_elimOne" (formula "11") (term "0")) - (rule "applyEq" (formula "13") (term "0,1,1,0,0,0") (ifseqformula "11")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "11")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "tryEmpty" (formula "13") (term "1")) - (rule "methodCallEmpty" (formula "13") (term "1")) - (rule "emptyModality" (formula "13") (term "1")) - (rule "applyOnRigidFormula" (formula "13")) - (rule "simplifyUpdate2" (formula "13") (term "0")) - (rule "simplifyUpdate2" (formula "13") (term "1")) - (rule "applyOnRigidFormula" (formula "13") (term "0")) - (rule "simplifyUpdate2" (formula "13") (term "0,0")) - (rule "simplifyUpdate2" (formula "13") (term "1,0")) - (rule "applyOnRigidFormula" (formula "13") (term "1")) - (rule "simplifyUpdate2" (formula "13") (term "0,1")) - (rule "simplifyUpdate2" (formula "13") (term "1,1")) - (rule "applyOnRigidFormula" (formula "13") (term "0,0")) - (rule "applyOnPV" (formula "13") (term "0,0,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,0")) - (rule "boolean_not_equal_2" (formula "13") (term "0,0")) - (rule "concrete_impl_2" (formula "13") (term "0")) - (rule "concrete_and_1" (formula "13")) - (rule "impRight" (formula "13")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "14")) - (rule "simplifyUpdate2" (formula "14") (term "0")) - (rule "simplifyUpdate2" (formula "14") (term "1")) - (rule "applyOnRigidFormula" (formula "12")) - (rule "applyOnPV" (formula "12") (term "0")) - (rule "simplifyUpdate1" (formula "12") (term "1")) - (rule "boolean_not_equal_2" (formula "12")) - (rule "false_right" (formula "12")) - (rule "applyOnRigidFormula" (formula "13") (term "0")) - (rule "simplifyUpdate2" (formula "13") (term "0,0")) - (rule "applyOnRigidFormula" (formula "13") (term "1")) - (rule "simplifyUpdate1" (formula "13") (term "0,1")) - (rule "simplifyUpdate1" (formula "13") (term "1,1")) - (rule "applyOnPV" (formula "13") (term "1,1")) - (rule "applyOnRigidFormula" (formula "13") (term "1,0")) - (rule "applyOnRigidFormula" (formula "13") (term "0,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,0")) - (rule "applyOnRigidTerm" (formula "13") (term "0,1")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,1")) - (rule "applyOnPV" (formula "13") (term "0,0,1")) - (rule "simplifyUpdate1" (formula "13") (term "2,0,1")) - (rule "applyOnRigidFormula" (formula "13") (term "0,1,0")) - (rule "applyOnRigidTerm" (formula "13") (term "0,0,0")) - (rule "applyOnPV" (formula "13") (term "0,0,0,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,0,0")) - (rule "simplifyUpdate1" (formula "13") (term "2,0,0,0")) - (rule "precOfInt" (formula "13") (term "1")) - (rule "applyOnRigidFormula" (formula "13") (term "0,0,1,0")) - (rule "simplifyUpdate2" (formula "13") (term "0,0,0,1,0")) - (rule "applyOnRigidFormula" (formula "13") (term "1,0,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "0,1,0,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,1,0,0,1,0")) - (rule "applyOnRigidFormula" (formula "13") (term "0,0,0,1,0")) - (rule "simplifyUpdate2" (formula "13") (term "0,0,0,0,1,0")) - (rule "applyOnRigidTerm" (formula "13") (term "0,1,0,0,1,0")) - (rule "applyOnPV" (formula "13") (term "0,0,1,0,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "2,0,1,0,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,1,0,0,1,0")) - (rule "eqSymm" (formula "13") (term "1,0,0,1,0")) - (rule "applyOnRigidFormula" (formula "13") (term "1,0,0,0,1,0")) - (rule "simplifyUpdate2" (formula "13") (term "0,1,0,0,0,1,0")) - (rule "applyOnRigidTerm" (formula "13") (term "0,1,0,0,1,0")) - (rule "applyOnPV" (formula "13") (term "0,0,1,0,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,1,0,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "2,0,1,0,0,1,0")) - (rule "applyOnRigidFormula" (formula "13") (term "1,1,0,0,0,1,0")) - (rule "applyOnRigidFormula" (formula "13") (term "0,1,1,0,0,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,1,1,0,0,0,1,0")) - (rule "inEqSimp_ltToLeq" (formula "13") (term "1,1")) - (rule "polySimp_rightDist" (formula "13") (term "1,0,0,1,1")) - (rule "mul_literals" (formula "13") (term "0,1,0,0,1,1")) - (rule "polySimp_addAssoc" (formula "13") (term "0,0,1,1")) - (rule "add_literals" (formula "13") (term "0,0,0,1,1")) - (rule "applyOnRigidTerm" (formula "13") (term "0,0,1,1,0,0,0,1,0")) - (rule "applyOnPV" (formula "13") (term "0,0,0,1,1,0,0,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "1,0,0,1,1,0,0,0,1,0")) - (rule "simplifyUpdate1" (formula "13") (term "2,0,0,1,1,0,0,0,1,0")) - (rule "inEqSimp_commuteLeq" (formula "13") (term "0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "13") (term "1,1")) - (rule "polySimp_mulComm0" (formula "13") (term "1,1,1")) - (rule "polySimp_rightDist" (formula "13") (term "1,1,1")) - (rule "mul_literals" (formula "13") (term "0,1,1,1")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,1,1,1")) - (rule "polySimp_elimOne" (formula "13") (term "1,1,1,1")) - (rule "pullOutSelect" (formula "13") (term "0,0,0") (inst "selectSK=ExampleInstance_x_2")) - (rule "applyEq" (formula "14") (term "0,1,1") (ifseqformula "1")) - (rule "applyEq" (formula "14") (term "0,0,1") (ifseqformula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (rule "eqClose" (formula "1") (term "1,0,0,0")) - (rule "concrete_and_3" (formula "1") (term "0,0,0")) - (rule "eqClose" (formula "1") (term "0,0,0")) - (rule "concrete_and_1" (formula "1") (term "0,0")) - (rule "equalUnique" (formula "1") (term "0,0,0")) - (rule "concrete_not_2" (formula "1") (term "0,0")) - (rule "ifthenelse_true" (formula "1") (term "0")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "14") (term "0,0,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "14") (term "0,1,1") (ifseqformula "1")) - (rule "applyEqReverse" (formula "14") (term "0,0,1") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_homoInEq0" (formula "13") (term "1,1")) - (rule "polySimp_pullOutFactor1b" (formula "13") (term "0,1,1")) - (rule "add_literals" (formula "13") (term "1,1,0,1,1")) - (rule "times_zero_1" (formula "13") (term "1,0,1,1")) - (rule "add_zero_right" (formula "13") (term "0,1,1")) - (rule "qeq_literals" (formula "13") (term "1,1")) - (rule "concrete_and_3" (formula "13") (term "1")) - (rule "cut_direct" (formula "13") (term "0,0")) - (branch "CUT: geq(result_0, Z(0(#))) TRUE" - (rule "concrete_and_1" (formula "14") (term "0")) - (rule "replace_known_left" (formula "14") (term "1") (ifseqformula "1")) - (rule "concrete_and_3" (formula "14")) - (rule "allRight" (formula "14") (inst "sk=f_1")) - (rule "allRight" (formula "14") (inst "sk=o_1")) - (rule "orRight" (formula "14")) - (rule "orRight" (formula "14")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "1")) - (rule "leq_literals" (formula "2") (term "0")) - (rule "concrete_or_1" (formula "2")) - (rule "true_left" (formula "2")) - (rule "pullOutSelect" (formula "15") (term "0") (inst "selectSK=f_1_0")) - (rule "simplifySelectOfStore" (formula "1")) - (rule "equalUnique" (formula "1") (term "0,1,0,0")) - (rule "concrete_not_2" (formula "1") (term "1,0,0")) - (rule "concrete_and_3" (formula "1") (term "0,0")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "16")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "14")) - (rule "ifthenelse_false" (formula "1") (term "0")) - (rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "10")) - (rule "elementOfFreshLocs" (formula "1") (term "1,0,0")) - (rule "elementOfEmpty" (formula "1") (term "0,0,0,0")) - (rule "concrete_and_2" (formula "1") (term "0,0,0")) - (rule "concrete_or_2" (formula "1") (term "0,0")) - (rule "selectCreatedOfAnonAsFormula" (formula "1") (term "0,1,0,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_1_1")) - (rule "simplifySelectOfAnon" (formula "1")) - (rule "elementOfFreshLocs" (formula "1") (term "1,0,0")) - (rule "replace_known_right" (formula "1") (term "1,0,0") (ifseqformula "16")) - (rule "concrete_or_4" (formula "1") (term "0,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0") (ifseqformula "15")) - (rule "concrete_and_2" (formula "1") (term "0,0")) - (rule "ifthenelse_false" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "commute_and" (formula "14")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (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")) - (rule "orRight" (formula "13")) - (rule "applyEqReverse" (formula "19") (term "1") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "eqSymm" (formula "18")) - (rule "replace_known_right" (formula "17") (term "0,1") (ifseqformula "12")) - (rule "concrete_not_2" (formula "17") (term "1")) - (rule "concrete_and_3" (formula "17")) - (rule "notRight" (formula "17")) - (rule "close" (formula "15") (ifseqformula "1")) - ) - (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")) - ) - ) - (branch "CUT: geq(result_0, Z(0(#))) FALSE" - (rule "concrete_and_2" (formula "14") (term "0")) - (rule "concrete_and_2" (formula "14")) - (rule "false_right" (formula "14")) - (rule "inEqSimp_geqRight" (formula "13")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "inEqSimp_antiSymm" (formula "2") (ifseqformula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "2")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEq" (formula "2") (term "0") (ifseqformula "1")) - (rule "qeq_literals" (formula "2")) - (rule "true_left" (formula "2")) - (rule "applyEq" (formula "11") (term "1,1") (ifseqformula "1")) - (rule "add_literals" (formula "11") (term "1")) - (opengoal " ") - ) - ) - (branch "Exceptional Post (decrease)" - (rule "translateJavaSubInt" (formula "9") (term "1,0,1,1,1,1,1")) - (rule "simplifyUpdate2" (formula "11")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate2" (formula "9") (term "1")) - (rule "andLeft" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "eqSymm" (formula "10") (term "0,1,1,1")) - (rule "polySimp_elimSub" (formula "10") (term "0,0,1,1,1")) - (rule "mul_literals" (formula "10") (term "1,0,0,1,1,1")) - (rule "polySimp_homoEq" (formula "10") (term "0,1,1,1")) - (rule "sequentialToParallel2" (formula "12")) - (rule "simplifyUpdate2" (formula "12")) - (rule "simplifyUpdate3" (formula "12") (term "1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0,1,1,1")) - (rule "sequentialToParallel2" (formula "10")) - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate3" (formula "10") (term "1,0")) - (rule "andLeft" (formula "10")) - (rule "simplifyUpdate2" (formula "11")) - (rule "simplifyUpdate2" (formula "10")) - (rule "andLeft" (formula "11")) - (rule "simplifyUpdate2" (formula "12")) - (rule "andLeft" (formula "10")) - (rule "simplifyUpdate2" (formula "10")) - (rule "notLeft" (formula "10")) - (rule "close" (formula "13") (ifseqformula "12")) - ) - (branch "Pre (decrease)" - (rule "inInt" (formula "9") (term "1,1,1")) - (rule "concrete_and_3" (formula "9") (term "1,1")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate2" (formula "9") (term "1")) - (rule "applyOnRigidFormula" (formula "9")) - (rule "applyOnPV" (formula "9") (term "0")) - (rule "wellFormedAnon" (formula "9")) - (rule "replace_known_left" (formula "9") (term "1") (ifseqformula "7")) - (rule "concrete_and_3" (formula "9")) - (rule "close" (formula "9") (ifseqformula "3")) - ) - ) - (branch "if x_5 false" - (rule "false_to_not_true" (formula "1") (term "1")) - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "8")) - (rule "simplifyUpdate1" (formula "8") (term "1")) - (rule "applyOnPV" (formula "8") (term "0")) - (rule "boolean_equal" (formula "8")) - (rule "closeTrue" (formula "8")) - ) - ) - (branch "Use Case" - (rule "false_to_not_true" (formula "9") (term "0,0,1,1")) - (rule "simplifyUpdate2" (formula "7")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnRigidFormula" (formula "7")) - (rule "simplifyUpdate1" (formula "7") (term "1")) - (rule "applyOnRigidTerm" (formula "7") (term "0")) - (rule "applyOnPV" (formula "7") (term "0,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "b_1")) - (rule "pullOutSelect" (formula "7") (term "0") (inst "selectSK=ExampleInstance_x_0")) - (rule "simplifySelectOfAnon" (formula "7")) - (rule "elementOfFreshLocs" (formula "7") (term "1,0,0")) - (rule "equalUnique" (formula "7") (term "0,1,0,0,0")) - (rule "concrete_not_2" (formula "7") (term "1,0,0,0")) - (rule "concrete_and_3" (formula "7") (term "0,0,0")) - (rule "replace_known_left" (formula "7") (term "0,1,1,0,0") (ifseqformula "3")) - (rule "concrete_not_1" (formula "7") (term "1,1,0,0")) - (rule "concrete_and_4" (formula "7") (term "1,0,0")) - (rule "concrete_or_4" (formula "7") (term "0,0")) - (rule "elementOfSingleton" (formula "7") (term "0,0")) - (rule "equalUnique" (formula "7") (term "1,0,0")) - (rule "concrete_and_3" (formula "7") (term "0,0")) - (rule "eqClose" (formula "7") (term "0,0")) - (rule "ifthenelse_true" (formula "7") (term "0")) - (rule "applyEqReverse" (formula "8") (term "0") (ifseqformula "7")) - (rule "hideAuxiliaryEq" (formula "7")) - (rule "compound_greater_than_comparison_1" (formula "9") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_2")) - (rule "assignment_read_attribute_this" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0")) - (rule "replaceKnownSelect_taclet210_0" (formula "9") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet210_1" (formula "9") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0,1,0")) - (rule "inEqSimp_gtToGeq" (formula "9") (term "0,0,1,0")) - (rule "times_zero_1" (formula "9") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "9") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "9") (term "0,0,1,0")) - (rule "mul_literals" (formula "9") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "emptyModality" (formula "9") (term "1")) - (rule "impRight" (formula "9")) - (rule "simplifyUpdate2" (formula "10")) - (rule "simplifyUpdate2" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "applyOnRigidFormula" (formula "8")) - (rule "applyOnPV" (formula "8") (term "0")) - (rule "simplifyUpdate1" (formula "8") (term "1")) - (rule "ifthenelse_concrete3" (formula "8")) - (rule "boolean_not_equal_2" (formula "8") (term "1")) - (rule "concrete_or_4" (formula "8")) - (rule "inEqSimp_geqRight" (formula "8")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_antiSymm" (formula "8") (ifseqformula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "8")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEq" (formula "8") (term "0") (ifseqformula "7")) - (rule "qeq_literals" (formula "8")) - (rule "true_left" (formula "8")) - (rule "returnUnfold" (formula "9") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_3")) - (rule "assignment_read_attribute_this" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0")) - (rule "applyOnPV" (formula "9") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0")) - (rule "replaceKnownSelect_taclet210_0" (formula "9") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet210_1" (formula "9") (term "0,1,0")) - (rule "applyEq" (formula "9") (term "0,1,0") (ifseqformula "7")) - (rule "methodCallReturn" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (rule "sequentialToParallel2" (formula "9")) - (rule "simplifyUpdate2" (formula "9")) - (rule "simplifyUpdate3" (formula "9") (term "1,0")) - (rule "applyOnElementary" (formula "9") (term "1,0")) - (rule "applyOnPV" (formula "9") (term "0,1,0")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "tryEmpty" (formula "9") (term "1")) - (rule "emptyModality" (formula "9") (term "1")) - (rule "applyOnRigidFormula" (formula "9")) - (rule "simplifyUpdate2" (formula "9") (term "1")) - (rule "simplifyUpdate2" (formula "9") (term "0")) - (rule "applyOnRigidFormula" (formula "9") (term "1")) - (rule "applyOnRigidFormula" (formula "9") (term "0")) - (rule "simplifyUpdate2" (formula "9") (term "1,0")) - (rule "simplifyUpdate2" (formula "9") (term "0,0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,1")) - (rule "applyOnRigidFormula" (formula "9") (term "1,0")) - (rule "applyOnPV" (formula "9") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,1,0")) - (rule "eqClose" (formula "9") (term "1,0")) - (rule "concrete_and_3" (formula "9") (term "0")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,1")) - (rule "simplifyUpdate2" (formula "9") (term "0,0,0,1")) - (rule "applyOnRigidFormula" (formula "9") (term "0")) - (rule "simplifyUpdate2" (formula "9") (term "0,0")) - (rule "simplifyUpdate2" (formula "9") (term "1,0")) - (rule "applyOnRigidFormula" (formula "9") (term "1,0,0,1")) - (rule "simplifyUpdate1" (formula "9") (term "0,1,0,0,1")) - (rule "simplifyUpdate1" (formula "9") (term "1,1,0,0,1")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0,0,1")) - (rule "simplifyUpdate2" (formula "9") (term "0,0,0,0,1")) - (rule "applyOnRigidFormula" (formula "9") (term "0,0")) - (rule "applyOnPV" (formula "9") (term "0,0,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0")) - (rule "eqClose" (formula "9") (term "0,0")) - (rule "concrete_and_1" (formula "9") (term "0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0,0,1")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0,0,1")) - (rule "applyOnPV" (formula "9") (term "0,0,1,0,0,1")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0,0,1")) - (rule "eqSymm" (formula "9") (term "1,0,0,1")) - (rule "applyOnRigidFormula" (formula "9") (term "1,0,0,0,1")) - (rule "applyOnRigidFormula" (formula "9") (term "0")) - (rule "applyOnPV" (formula "9") (term "0,0")) - (rule "simplifyUpdate1" (formula "9") (term "1,0")) - (rule "applyOnRigidTerm" (formula "9") (term "0,1,0,0,1")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0,0,1")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,1,0,0,1")) - (rule "applyOnPV" (formula "9") (term "0,0,1,0,0,1")) - (rule "applyOnRigidFormula" (formula "9") (term "0,1,0,0,0,1")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,1,0,0,0,1")) - (rule "applyOnRigidTerm" (formula "9") (term "0,0,1,0,0,0,1")) - (rule "applyOnPV" (formula "9") (term "0,0,0,1,0,0,0,1")) - (rule "simplifyUpdate1" (formula "9") (term "1,0,0,1,0,0,0,1")) - (rule "simplifyUpdate1" (formula "9") (term "2,0,0,1,0,0,0,1")) - (rule "Class_invariant_axiom_for_ExampleInstance" (formula "9") (term "0") (inst "sk=sk_1") (ifseqformula "4")) - (branch "Use Axiom" - (rule "concrete_and_1" (formula "9")) - (rule "allRight" (formula "9") (inst "sk=f_0")) - (rule "allRight" (formula "9") (inst "sk=o_0")) - (rule "orRight" (formula "9")) - (rule "pullOutSelect" (formula "10") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (rule "elementOfFreshLocs" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "11")) - (rule "replace_known_right" (formula "1") (term "1,0,0") (ifseqformula "10")) - (rule "concrete_or_4" (formula "1") (term "0,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0")) - (rule "commute_and" (formula "1") (term "0,0,0")) - (rule "commute_and_2" (formula "1") (term "0,0")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch " f_0 = ExampleInstance::$x & !f_0 = java.lang.Object::#$created & o_0 = self TRUE" - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "2")) - (rule "applyEqReverse" (formula "14") (term "1") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "eqSymm" (formula "13")) - (rule "applyEq" (formula "12") (term "0,0,0") (ifseqformula "2")) - (rule "replace_known_right" (formula "12") (term "0,0") (ifseqformula "11")) - (rule "concrete_not_2" (formula "12") (term "0")) - (rule "concrete_and_1" (formula "12")) - (rule "notRight" (formula "12")) - (rule "applyEqRigid" (formula "11") (term "0") (ifseqformula "2")) - (rule "equalUnique" (formula "11")) - (rule "false_right" (formula "11")) - (rule "applyEqRigid" (formula "12") (term "2,0") (ifseqformula "2")) - (rule "narrowSelectType" (formula "12") (term "0") (ifseqformula "9")) - (rule "eqSymm" (formula "12")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "3")) - (rule "applyEq" (formula "11") (term "1,0") (ifseqformula "2")) - (rule "applyEqRigid" (formula "11") (term "2,0") (ifseqformula "1")) - (rule "narrowSelectType" (formula "11") (term "0") (ifseqformula "4")) - (rule "eqSymm" (formula "11")) - (rule "applyEq" (formula "11") (term "1,0") (ifseqformula "2")) - (rule "applyEq" (formula "11") (term "0") (ifseqformula "9")) - (rule "eqSymm" (formula "11")) - (rule "inEqSimp_strengthen1" (formula "3") (ifseqformula "11")) - (rule "add_zero_right" (formula "3") (term "1")) - (rule "inEqSimp_contradEq7" (formula "11") (ifseqformula "3")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "leq_literals" (formula "11") (term "0")) - (rule "concrete_and_2" (formula "11")) - (rule "false_right" (formula "11")) - (opengoal " ") - ) - (branch " f_0 = ExampleInstance::$x & !f_0 = java.lang.Object::#$created & o_0 = self FALSE" - (rule "close" (formula "12") (ifseqformula "1")) - ) - ) - (branch "Show Axiom Satisfiability" - (rule "concrete_eq_1" (formula "9") (term "0")) - (rule "concrete_or_1" (formula "9")) - (rule "closeTrue" (formula "9")) - ) - ) - ) -) -(branch "Show Axiom Satisfiability" - (rule "concrete_eq_1" (formula "6") (term "0")) - (rule "concrete_or_1" (formula "6")) - (rule "closeTrue" (formula "6")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMultiplePredicateResults/oracle/MultiplePredicateResultsTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMultiplePredicateResults/oracle/MultiplePredicateResultsTest.xml deleted file mode 100644 index 19a7ad440a4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMultiplePredicateResults/oracle/MultiplePredicateResultsTest.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMultiplePredicateResults/test/MultiplePredicateResultsTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMultiplePredicateResults/test/MultiplePredicateResultsTest.java deleted file mode 100644 index d7f7a0d5634..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMultiplePredicateResults/test/MultiplePredicateResultsTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class MultiplePredicateResultsTest { - private int value; - - /*@ normal_behavior - @ requires x != null && y != null; - @ ensures \result == 5; - @*/ - public static int main(MultiplePredicateResultsTest x, MultiplePredicateResultsTest y) { - x.value = 2; - y.value = 3; - return x.value + y.value; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMyInteger/oracle/MyInteger.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMyInteger/oracle/MyInteger.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMyInteger/oracle/MyInteger.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMyInteger/test/MyInteger.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMyInteger/test/MyInteger.java deleted file mode 100644 index 47dca19eabd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMyInteger/test/MyInteger.java +++ /dev/null @@ -1,11 +0,0 @@ -public class MyInteger { - public int value; - - /*@ normal_behavior - @ ensures value == \old(value) + summand.value; - @ assignable value; - @*/ - public void add(MyInteger summand) { - value += summand.value; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMyInteger/test/MyInteger.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMyInteger/test/MyInteger.proof deleted file mode 100644 index 2b6b2cd00bc..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueMyInteger/test/MyInteger.proof +++ /dev/null @@ -1,233 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:13:45 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:on , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:ban , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:safe , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:treatAsAxiom , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "MyInteger[MyInteger::add(MyInteger)].JML normal_behavior operation contract.0", - "contract": "MyInteger[MyInteger::add(MyInteger)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "848513844") - -(branch "dummy ID" -(rule "translateJavaAddInt" (formula "1") (term "1,0,0,0,0,1,1") (newnames "summand,self,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "5")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "eqSymm" (formula "9") (term "1,0,0,1,0,1")) -(rule "replace_known_right" (formula "4") (term "0") (ifseqformula "8")) -(builtin "One Step Simplification" (formula "4")) -(rule "polySimp_homoEq" (formula "9") (term "0,0,0,0,1")) -(rule "polySimp_addComm1" (formula "9") (term "0,0,0,0,0,1")) -(rule "polySimp_addComm0" (formula "9") (term "0,0,0,0,0,0,1")) -(rule "polySimp_addComm1" (formula "9") (term "0,0,0,0,0,1")) -(rule "elementOfSingleton" (formula "9") (term "0,0,0,0,1,0,1")) -(rule "assignment" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "polySimp_sepPosMonomial" (formula "9") (term "0,0,0,0,1")) -(rule "polySimp_mulComm0" (formula "9") (term "1,0,0,0,0,1")) -(rule "polySimp_rightDist" (formula "9") (term "1,0,0,0,0,1")) -(rule "polySimp_mulAssoc" (formula "9") (term "0,1,0,0,0,0,1")) -(rule "polySimp_mulComm0" (formula "9") (term "0,0,1,0,0,0,0,1")) -(rule "polySimp_mulLiterals" (formula "9") (term "0,1,0,0,0,0,1")) -(rule "polySimp_elimOne" (formula "9") (term "0,1,0,0,0,0,1")) -(rule "Class_invariant_axiom_for_MyInteger" (formula "6") (ifseqformula "3")) -(rule "true_left" (formula "6")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_add,savedHeapBefore_add")) -(builtin "One Step Simplification" (formula "8")) -(rule "compound_assignment_op_plus_attr" (formula "8") (term "1") (inst "#v=m")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "m")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "eval_order_access4" (formula "8") (term "1") (inst "#v1=x") (inst "#v0=m_1")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "m_1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x")) -(rule "compound_int_cast_expression" (formula "8") (term "1") (inst "#v=x_1")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x_1")) -(rule "remove_parentheses_right" (formula "8") (term "1")) -(rule "compound_addition_2" (formula "8") (term "1") (inst "#v1=x_3") (inst "#v0=x_2")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x_2")) -(rule "assignment_read_attribute" (formula "8")) -(branch "Normal Execution (m != null)" - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_3")) - (rule "assignment_read_attribute" (formula "8")) - (branch "Normal Execution (_summand != null)" - (builtin "One Step Simplification" (formula "8")) - (rule "assignmentAdditionInt" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "translateJavaAddInt" (formula "8") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "assignment_write_attribute" (formula "8")) - (branch "Normal Execution (m_1 != null)" - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "eqSymm" (formula "8") (term "1,0,0,1")) - (rule "polySimp_homoEq" (formula "8") (term "0,0")) - (rule "polySimp_addComm1" (formula "8") (term "0,0,0")) - (rule "polySimp_addComm0" (formula "8") (term "0,0,0,0")) - (rule "polySimp_sepNegMonomial" (formula "8") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "8") (term "0,0,0")) - (rule "polySimp_elimOne" (formula "8") (term "0,0,0")) - (rule "pullOutSelect" (formula "8") (term "1,1,0,0") (inst "selectSK=MyInteger_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "9") (term "1,1,0,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "polySimp_addAssoc" (formula "8") (term "1,0,0")) - (rule "polySimp_pullOutFactor2" (formula "8") (term "0,1,0,0")) - (rule "add_literals" (formula "8") (term "1,0,1,0,0")) - (rule "times_zero_1" (formula "8") (term "0,1,0,0")) - (rule "add_zero_left" (formula "8") (term "1,0,0")) - (rule "pullOutSelect" (formula "8") (term "0,0,0") (inst "selectSK=MyInteger_value_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "9") (term "0,0")) - (rule "eqSymm" (formula "1") (term "0,0")) - (rule "Class_invariant_axiom_for_MyInteger" (formula "9") (term "1,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "summand = self TRUE" - (rule "applyEqReverse" (formula "10") (term "1,0") (ifseqformula "2")) - (rule "hideAuxiliaryEq" (formula "2")) - (rule "polySimp_homoEq" (formula "9") (term "0")) - (rule "polySimp_pullOutFactor1b" (formula "9") (term "0,0")) - (rule "add_literals" (formula "9") (term "1,1,0,0")) - (rule "times_zero_1" (formula "9") (term "1,0,0")) - (rule "add_zero_right" (formula "9") (term "0,0")) - (rule "applyEq" (formula "9") (term "1,1,3,0,0,1,0,0,1") (ifseqformula "1")) - (rule "polySimp_pullOutFactor3" (formula "9") (term "3,0,0,1,0,0,1")) - (rule "applyEq" (formula "8") (term "0") (ifseqformula "1")) - (rule "applyEq" (formula "5") (term "1,0") (ifseqformula "1")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: self.value = 0 TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "allRight" (formula "8") (inst "sk=f_1")) - (rule "allRight" (formula "8") (inst "sk=o_1")) - (rule "orRight" (formula "8")) - (rule "orRight" (formula "8")) - (rule "applyEq" (formula "10") (term "0,3,0,0") (ifseqformula "1")) - (rule "times_zero_2" (formula "10") (term "3,0,0")) - (rule "pullOutSelect" (formula "10") (term "0") (inst "selectSK=f_1_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "11")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - (branch "CUT: self.value = 0 FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (opengoal " ") - ) - ) - (branch "summand = self FALSE" - (rule "applyEqReverse" (formula "10") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "allRight" (formula "10") (inst "sk=f_0")) - (rule "allRight" (formula "10") (inst "sk=o_0")) - (rule "orRight" (formula "10")) - (rule "orRight" (formula "10")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "pullOutSelect" (formula "11") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "12")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (m_1 = null)" - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_summand = null)" - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (m = null)" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueNotLastEvaluationGivesTruthValue/oracle/NotLastEvaluationGivesTruthValue.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueNotLastEvaluationGivesTruthValue/oracle/NotLastEvaluationGivesTruthValue.xml deleted file mode 100644 index bec5b6353d4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueNotLastEvaluationGivesTruthValue/oracle/NotLastEvaluationGivesTruthValue.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueNotLastEvaluationGivesTruthValue/test/NotLastEvaluationGivesTruthValue.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueNotLastEvaluationGivesTruthValue/test/NotLastEvaluationGivesTruthValue.proof deleted file mode 100644 index bd2de896b8f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueNotLastEvaluationGivesTruthValue/test/NotLastEvaluationGivesTruthValue.proof +++ /dev/null @@ -1,132 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Nov 26 17:47:38 CET 2014 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:showSatisfiability , sequences-sequences\\:on , integerSimplificationRules-integerSimplificationRules\\:full , runtimeExceptions-runtimeExceptions\\:allow , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "PredicateEvaluationComposedTerms[PredicateEvaluationComposedTerms::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "PredicateEvaluationComposedTerms[PredicateEvaluationComposedTerms::main()].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "328") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "heapAtPre")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "eqSymm" (formula "7") (term "1,0,0,1,0,1")) -(rule "elementOfUnion" (formula "7") (term "0,0,0,0,1,0,1")) -(rule "elementOfSingleton" (formula "7") (term "1,0,0,0,0,1,0,1")) -(rule "elementOfSingleton" (formula "7") (term "0,0,0,0,0,1,0,1")) -(rule "Class_invariant_axiom_for_PredicateEvaluationComposedTerms" (formula "5") (inst "sk=sk_0") (ifseqformula "3")) -(branch "Use Axiom" - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute_this" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "eqSymm" (formula "7") (term "1,0,0,1")) - (rule "Class_invariant_axiom_for_PredicateEvaluationComposedTerms" (formula "7") (term "0,0") (inst "sk=sk_1") (ifseqformula "3")) - (branch "Use Axiom" - (rule "dismissNonSelectedField" (formula "7") (term "0,0,0,0")) - (rule "pullOutSelect" (formula "7") (term "0,1,0,0") (inst "selectSK=PredicateEvaluationComposedTerms_b_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "8") (term "0,1,0,0") (ifseqformula "1")) - (rule "andRight" (formula "8") (newnames "ResultPredicate,ResultPredicate") (userinteraction)) - (branch "Case 1" - (rule "andRight" (formula "8") (userinteraction)) - (branch "Case 1" - (rule "selectOfStore" (formula "8") (term "0,0") (userinteraction)) - (rule "eqClose" (formula "8") (term "0,0,0,0,0") (userinteraction)) - (rule "concrete_and_1" (formula "8") (term "0,0,0,0") (userinteraction)) - (rule "eqClose" (formula "8") (term "0,0,0,0") (userinteraction)) - (rule "concrete_and_1" (formula "8") (term "0,0,0") (userinteraction)) - (rule "equalUnique" (formula "8") (term "0,0,0,0") (userinteraction)) - (rule "concrete_not_2" (formula "8") (term "0,0,0") (userinteraction)) - (rule "ifthenelse_true" (formula "8") (term "0,0") (userinteraction)) - (rule "castDel" (formula "8") (term "0,0") (userinteraction)) - (rule "orRight" (formula "8") (userinteraction)) - (rule "qeq_literals" (formula "9") (userinteraction)) - (rule "qeq_literals" (formula "8") (userinteraction)) - ) - (branch "Case 2" - (opengoal " ") - ) - ) - (branch "Case 2" - (opengoal " ") - ) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "7")) - (rule "closeTrue" (formula "7")) - ) -) -(branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "6")) - (rule "closeTrue" (formula "6")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueNotLastEvaluationGivesTruthValue/test/PredicateEvaluationComposedTerms.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueNotLastEvaluationGivesTruthValue/test/PredicateEvaluationComposedTerms.java deleted file mode 100644 index 2c17e7c72ca..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueNotLastEvaluationGivesTruthValue/test/PredicateEvaluationComposedTerms.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class PredicateEvaluationComposedTerms { - - //@ invariant a >= 0 || b >= 0; - public int a; - public int b; - - /*@ normal_behavior - @ ensures \result == 42; - @ assignable a, b; - @*/ - public int main() { - a = -1; - b = 1; - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueRejectedFormula/oracle/LabelLostVerification.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueRejectedFormula/oracle/LabelLostVerification.xml deleted file mode 100644 index 80396b0fc2b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueRejectedFormula/oracle/LabelLostVerification.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueRejectedFormula/test/LabelLost.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueRejectedFormula/test/LabelLost.java deleted file mode 100644 index 80542a0fcdf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueRejectedFormula/test/LabelLost.java +++ /dev/null @@ -1,9 +0,0 @@ -public class LabelLost { - /*@ normal_behavior - @ requires q; - @ requires p; - @ ensures p | q & p; - @*/ - public static void magic(boolean p, boolean q) { - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueRejectedFormula/test/LabelLostVerification.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueRejectedFormula/test/LabelLostVerification.proof deleted file mode 100644 index 17489a504d5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueRejectedFormula/test/LabelLostVerification.proof +++ /dev/null @@ -1,97 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 23 17:07:21 CET 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "LabelLost[LabelLost::magic(boolean,boolean)].JML normal_behavior operation contract.0", - "contract": "LabelLost[LabelLost::magic(boolean,boolean)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "380") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "p,q,exc,heapAtPre,o,f") (userinteraction)) -(rule "andLeft" (formula "1") (userinteraction)) -(rule "andLeft" (formula "1") (userinteraction)) -(rule "andLeft" (formula "3") (userinteraction)) -(rule "assignment" (formula "5") (term "1") (userinteraction)) -(rule "methodBodyExpand" (formula "5") (term "1,1") (newnames "heapBefore_magic,savedHeapBefore_magic") (userinteraction)) -(rule "methodCallEmpty" (formula "5") (term "1,1,1") (userinteraction)) -(rule "tryEmpty" (formula "5") (term "1,1,1") (userinteraction)) -(rule "emptyModality" (formula "5") (term "1,1,1") (userinteraction)) -(rule "elementOfAllLocs" (formula "5") (term "0,0,0,0,1,1,1,1")) -(rule "concrete_or_1" (formula "5") (term "0,0,0,1,1,1,1")) -(rule "concrete_or_1" (formula "5") (term "0,0,1,1,1,1")) -(rule "simplifyUpdate2" (formula "5")) -(rule "simplifyUpdate2" (formula "5") (term "1")) -(rule "applyOnRigidFormula" (formula "5")) -(rule "simplifyUpdate2" (formula "5") (term "1")) -(rule "applyOnRigidFormula" (formula "5") (term "0")) -(rule "simplifyUpdate2" (formula "5") (term "0,0")) -(rule "applyOnRigidFormula" (formula "5") (term "1,0") (userinteraction)) -(rule "simplifyUpdate1" (formula "5") (term "1,1,0") (userinteraction)) -(rule "applyOnPV" (formula "5") (term "0,1,0") (userinteraction)) -(rule "eqClose" (formula "5") (term "1,0") (userinteraction)) -(rule "concrete_and_3" (formula "5") (term "0") (userinteraction)) -(rule "all_unused" (formula "5") (term "0,1") (userinteraction)) -(rule "all_unused" (formula "5") (term "1") (userinteraction)) -(rule "concrete_and_3" (formula "5") (userinteraction)) -(rule "orRight" (formula "5") (userinteraction)) -(rule "andRight" (formula "6") (userinteraction)) -(branch "Case 1" - (rule "replace_known_left" (formula "6") (ifseqformula "3") (userinteraction)) - (rule "closeTrue" (formula "6") (userinteraction)) -) -(branch "Case 2" - (rule "replace_known_left" (formula "5") (ifseqformula "4") (userinteraction)) - (rule "closeTrue" (formula "5") (userinteraction)) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/oracle/SimpleInstanceMethodContractApplication.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/oracle/SimpleInstanceMethodContractApplication.xml deleted file mode 100644 index feb6e949d96..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/oracle/SimpleInstanceMethodContractApplication.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/test/SimpleInstanceMethodContractApplication.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/test/SimpleInstanceMethodContractApplication.java deleted file mode 100644 index e4cffe620cd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/test/SimpleInstanceMethodContractApplication.java +++ /dev/null @@ -1,20 +0,0 @@ - -public class SimpleInstanceMethodContractApplication { - /*@ normal_behavior - @ requires \invariant_for(o); - @ ensures \result == 42; - @ assignable \strictly_nothing; - @*/ - public static int main(SimpleInstanceMethodContractApplication o) { - return o.doubleValue(21); - } - - /*@ normal_behavior - @ requires x >= 0 && (\forall int x; x == 0; true); - @ ensures \result == x * 2; - @ assignable \strictly_nothing; - @*/ - public int doubleValue(int x) { - return x + x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/test/SimpleInstanceMethodContractApplication.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/test/SimpleInstanceMethodContractApplication.proof deleted file mode 100644 index 3c1c35f6a18..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/test/SimpleInstanceMethodContractApplication.proof +++ /dev/null @@ -1,114 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jan 05 12:08:43 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "SimpleInstanceMethodContractApplication[SimpleInstanceMethodContractApplication::main(SimpleInstanceMethodContractApplication)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "SimpleInstanceMethodContractApplication[SimpleInstanceMethodContractApplication::main(SimpleInstanceMethodContractApplication)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "203") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "heapAtPre")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "6") (term "0,0,1,0,1")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "6")) -(rule "returnUnfold" (formula "6") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "6") (term "1")) -(rule "variableDeclaration" (formula "6") (term "1") (newnames "x")) -(builtin "Use Operation Contract" (formula "6") (newnames "heapBefore_doubleValue,result_0,exc_0") (contract "SimpleInstanceMethodContractApplication[SimpleInstanceMethodContractApplication::doubleValue(int)].JML normal_behavior operation contract.0")) -(branch "Post (doubleValue)" - (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "4"))) - (rule "translateJavaMulInt" (formula "5") (term "1,0,1")) - (rule "mul_literals" (formula "5") (term "1,0,1")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "6")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "applyEq" (formula "8") (term "0,1,0") (ifseqformula "6")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (opengoal " ") -) -(branch "Exceptional Post (doubleValue)" - (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "4"))) - (rule "translateJavaMulInt" (formula "5") (term "1,0,1")) - (rule "mul_literals" (formula "5") (term "1,0,1")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "5")) - (rule "notLeft" (formula "5")) - (rule "close" (formula "8") (ifseqformula "7")) -) -(branch "Pre (doubleValue)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "1")) (ifInst "" (formula "4"))) - (rule "qeq_literals" (formula "6")) - (rule "closeTrue" (formula "6")) -) -(branch "Null reference (_o = null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "closeTrue" (formula "6")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/test/SimpleInstanceMethodContractApplication_NoOneStepSimplification.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/test/SimpleInstanceMethodContractApplication_NoOneStepSimplification.proof deleted file mode 100644 index a86276ba48a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleInstanceMethodContractApplication/test/SimpleInstanceMethodContractApplication_NoOneStepSimplification.proof +++ /dev/null @@ -1,204 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Oct 22 15:04:52 CEST 2021 -[Labels]UseOriginLabels=true -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[SMTSettings]invariantForall=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[Choice]DefaultChoices=JavaCard-JavaCard\\:off , Strings-Strings\\:on , assertions-assertions\\:on , bigint-bigint\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , integerSimplificationRules-integerSimplificationRules\\:full , javaLoopTreatment-javaLoopTreatment\\:efficient , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , methodExpansion-methodExpansion\\:noRestriction , modelFields-modelFields\\:showSatisfiability , moreSeqRules-moreSeqRules\\:off , permissions-permissions\\:off , programRules-programRules\\:Java , reach-reach\\:on , runtimeExceptions-runtimeExceptions\\:allow , sequences-sequences\\:on , wdChecks-wdChecks\\:off , wdOperator-wdOperator\\:L -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]SelectedTaclets= -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[Strategy]MaximumNumberOfAutomaticApplications=1 -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[Strategy]Timeout=-1 -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[SMTSettings]useUninterpretedMultiplication=true -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[SMTSettings]maxGenericSorts=2 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_OFF -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[SMTSettings]integersMinimum=-2147483645 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]integersMaximum=2147483645 -" -} - -\javaSource "."; - -\proofObligation { - "addSymbolicExecutionLabel": true, - "contract": "SimpleInstanceMethodContractApplication[SimpleInstanceMethodContractApplication::main(SimpleInstanceMethodContractApplication)].JML normal_behavior operation contract.0", - "name": "SimpleInstanceMethodContractApplication[SimpleInstanceMethodContractApplication::main(SimpleInstanceMethodContractApplication)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - "addUninterpretedPredicate": true, - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "lukas" ) (keyVersion "427de8e7e5")) -(keyLog "2" (keyUser "lukas" ) (keyVersion "427de8e7e5")) - -(autoModeTime "1497") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "o,result,exc,heapAtPre,SETAccumulate,o_0,f")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "6") (term "0,0,1,0,1")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) -(rule "concrete_or_2" (formula "2")) -(rule "assignment" (formula "6") (term "1")) -(rule "sequentialToParallel2" (formula "6")) -(rule "simplifyUpdate3" (formula "6") (term "1,0")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(rule "simplifyUpdate2" (formula "6") (term "1")) -(rule "returnUnfold" (formula "6") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "6") (term "1")) -(rule "variableDeclaration" (formula "6") (term "1") (newnames "x")) - (builtin "Use Operation Contract" (formula "6") (newnames "heapBefore_doubleValue,result_0,exc_0") (contract "SimpleInstanceMethodContractApplication[SimpleInstanceMethodContractApplication::doubleValue(int)].JML normal_behavior operation contract.0")) -(branch "Post (doubleValue)" - (rule "inInt" (formula "5") (term "1,0,1,1")) - (rule "concrete_and_3" (formula "5") (term "0,1,1")) - (rule "translateJavaMulInt" (formula "5") (term "1,0,0,1,1,1")) - (rule "simplifyUpdate2" (formula "5")) - (rule "mul_literals" (formula "5") (term "1,0,0,1,1,1")) - (rule "simplifyUpdate2" (formula "5") (term "1")) - (rule "andLeft" (formula "5")) - (rule "simplifyUpdate2" (formula "5")) - (rule "andLeft" (formula "6")) - (rule "simplifyUpdate2" (formula "7")) - (rule "andLeft" (formula "6")) - (rule "simplifyUpdate2" (formula "6")) - (rule "applyOnRigidFormula" (formula "7")) - (rule "applyOnPV" (formula "7") (term "1")) - (rule "simplifyUpdate1" (formula "7") (term "0")) - (rule "assignment" (formula "8") (term "1")) - (rule "sequentialToParallel2" (formula "8")) - (rule "simplifyUpdate3" (formula "8") (term "1,0")) - (rule "applyEq" (formula "8") (term "0,1,0") (ifseqformula "6")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (rule "sequentialToParallel2" (formula "8")) - (rule "simplifyUpdate3" (formula "8") (term "1,0")) - (rule "applyOnElementary" (formula "8") (term "1,0")) - (rule "applyOnPV" (formula "8") (term "0,1,0")) - (rule "simplifyUpdate2" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (rule "emptyModality" (formula "8") (term "1")) - (rule "applyOnRigidFormula" (formula "8")) - (rule "simplifyUpdate2" (formula "8") (term "1")) - (rule "simplifyUpdate2" (formula "8") (term "0")) - (rule "applyOnRigidFormula" (formula "8") (term "1")) - (rule "applyOnRigidFormula" (formula "8") (term "0")) - (rule "simplifyUpdate2" (formula "8") (term "1,0")) - (rule "simplifyUpdate2" (formula "8") (term "0,0")) - (rule "applyOnRigidFormula" (formula "8") (term "0,1")) - (rule "applyOnRigidFormula" (formula "8") (term "1,0")) - (rule "simplifyUpdate1" (formula "8") (term "2,1,0")) - (rule "simplifyUpdate1" (formula "8") (term "1,1,0")) - (rule "simplifyUpdate1" (formula "8") (term "0,1,0")) - (rule "applyOnPV" (formula "8") (term "2,1,0")) - (rule "applyOnPV" (formula "8") (term "1,1,0")) - (rule "applyOnRigidFormula" (formula "8") (term "0,0")) - (rule "simplifyUpdate2" (formula "8") (term "1,0,0")) - (rule "simplifyUpdate2" (formula "8") (term "0,0,0")) - (rule "applyOnRigidFormula" (formula "8") (term "0,0,1")) - (rule "simplifyUpdate1" (formula "8") (term "1,0,0,1")) - (rule "applyOnRigidFormula" (formula "8") (term "1,0,0")) - (rule "simplifyUpdate1" (formula "8") (term "1,1,0,0")) - (rule "applyOnPV" (formula "8") (term "0,1,0,0")) - (rule "eqClose" (formula "8") (term "1,0,0")) - (rule "concrete_and_3" (formula "8") (term "0,0")) - (rule "applyOnRigidTerm" (formula "8") (term "0,0,0,1")) - (rule "simplifyUpdate1" (formula "8") (term "2,0,0,0,1")) - (rule "simplifyUpdate1" (formula "8") (term "1,0,0,0,1")) - (rule "applyOnPV" (formula "8") (term "0,0,0,0,1")) - (rule "eqClose" (formula "8") (term "0,0,1")) - (rule "applyOnRigidFormula" (formula "8") (term "0,0")) - (rule "applyOnPV" (formula "8") (term "0,0,0")) - (rule "simplifyUpdate1" (formula "8") (term "1,0,0")) - (rule "eqClose" (formula "8") (term "0,0")) - (rule "concrete_and_1" (formula "8") (term "0")) - (rule "all_unused" (formula "8") (term "1")) - (rule "all_unused" (formula "8") (term "1")) - (rule "concrete_and_3" (formula "8")) - (opengoal " ") -) -(branch "Exceptional Post (doubleValue)" - (rule "translateJavaMulInt" (formula "5") (term "1,0,0,1,1,1")) - (rule "simplifyUpdate2" (formula "5")) - (rule "mul_literals" (formula "5") (term "1,0,0,1,1,1")) - (rule "simplifyUpdate2" (formula "5") (term "1")) - (rule "andLeft" (formula "5")) - (rule "simplifyUpdate2" (formula "5")) - (rule "andLeft" (formula "6")) - (rule "simplifyUpdate2" (formula "7")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "7")) - (rule "simplifyUpdate2" (formula "7")) - (rule "notLeft" (formula "5")) - (rule "close" (formula "9") (ifseqformula "8")) -) -(branch "Pre (doubleValue)" - (rule "inInt" (formula "6") (term "1,1,1,1")) - (rule "concrete_and_3" (formula "6") (term "1,1,1")) - (rule "qeq_literals" (formula "6") (term "0,0,0,1,1")) - (rule "concrete_and_1" (formula "6") (term "0,0,1,1")) - (rule "simplifyUpdate2" (formula "6")) - (rule "simplifyUpdate2" (formula "6") (term "1")) - (rule "applyOnRigidFormula" (formula "6")) - (rule "applyOnRigidFormula" (formula "6") (term "0")) - (rule "simplifyUpdate2" (formula "6") (term "0,0")) - (rule "applyOnRigidFormula" (formula "6") (term "1")) - (rule "simplifyUpdate2" (formula "6") (term "0,1")) - (rule "replace_known_left" (formula "6") (term "0,1") (ifseqformula "1")) - (rule "concrete_and_1" (formula "6") (term "1")) - (rule "applyOnRigidFormula" (formula "6") (term "1,0")) - (rule "applyOnPV" (formula "6") (term "1,1,0")) - (rule "simplifyUpdate1" (formula "6") (term "0,1,0")) - (rule "replace_known_left" (formula "6") (term "1,0") (ifseqformula "4")) - (rule "concrete_and_3" (formula "6") (term "0")) - (rule "applyOnRigidFormula" (formula "6") (term "1")) - (rule "simplifyUpdate1" (formula "6") (term "1,1")) - (rule "applyOnRigidTerm" (formula "6") (term "0,1")) - (rule "simplifyUpdate1" (formula "6") (term "2,0,1")) - (rule "applyOnPV" (formula "6") (term "1,0,1")) - (rule "simplifyUpdate1" (formula "6") (term "0,0,1")) - (rule "replace_known_left" (formula "6") (term "1") (ifseqformula "2")) - (rule "concrete_and_3" (formula "6")) - (rule "allRight" (formula "6") (inst "sk=x_0")) - (rule "closeTrue" (formula "6")) -) -(branch "Null reference (_o = null)" - (rule "simplifyUpdate2" (formula "6")) - (rule "notRight" (formula "6")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "close" (formula "6") (ifseqformula "1")) -) -) -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/oracle/SimpleMethodContractApplication.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/oracle/SimpleMethodContractApplication.xml deleted file mode 100644 index 3f6779ad50f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/oracle/SimpleMethodContractApplication.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/test/SimpleMethodContractApplication.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/test/SimpleMethodContractApplication.java deleted file mode 100644 index b2436c0aea1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/test/SimpleMethodContractApplication.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class SimpleMethodContractApplication { - /*@ normal_behavior - @ ensures \result == 42; - @ assignable \strictly_nothing; - @*/ - public static int main() { - return doubleValue(21); - } - - /*@ normal_behavior - @ requires x >= 0 && (\forall int x; x == 0; true); - @ ensures \result == x * 2; - @ assignable \strictly_nothing; - @*/ - public static int doubleValue(int x) { - return x + x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/test/SimpleMethodContractApplication.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/test/SimpleMethodContractApplication.proof deleted file mode 100644 index adfa4c3cde8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/test/SimpleMethodContractApplication.proof +++ /dev/null @@ -1,104 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jan 05 12:07:09 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "SimpleMethodContractApplication[SimpleMethodContractApplication::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "SimpleMethodContractApplication[SimpleMethodContractApplication::main()].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "453") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "heapAtPre")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "returnUnfold" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(builtin "Use Operation Contract" (formula "3") (newnames "heapBefore_doubleValue,result_0,exc_0") (contract "SimpleMethodContractApplication[SimpleMethodContractApplication::doubleValue(int)].JML normal_behavior operation contract.0")) -(branch "Post (doubleValue)" - (builtin "One Step Simplification" (formula "3")) - (rule "translateJavaMulInt" (formula "3") (term "1,0,1")) - (rule "mul_literals" (formula "3") (term "1,0,1")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "4")) - (rule "assignment" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "applyEq" (formula "5") (term "0,1,0") (ifseqformula "4")) - (rule "methodCallReturn" (formula "5") (term "1")) - (rule "assignment" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "methodCallEmpty" (formula "5") (term "1")) - (rule "tryEmpty" (formula "5") (term "1")) - (rule "emptyModality" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (opengoal " ") -) -(branch "Exceptional Post (doubleValue)" - (builtin "One Step Simplification" (formula "3")) - (rule "translateJavaMulInt" (formula "3") (term "1,0,1")) - (rule "mul_literals" (formula "3") (term "1,0,1")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "3")) - (rule "notLeft" (formula "3")) - (rule "close" (formula "6") (ifseqformula "5")) -) -(branch "Pre (doubleValue)" - (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "1"))) - (rule "qeq_literals" (formula "3")) - (rule "closeTrue" (formula "3")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/test/SimpleMethodContractApplication_NoOneStepSimplification.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/test/SimpleMethodContractApplication_NoOneStepSimplification.proof deleted file mode 100644 index 3e645a675d6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueSimpleMethodContractApplication/test/SimpleMethodContractApplication_NoOneStepSimplification.proof +++ /dev/null @@ -1,153 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jan 05 11:50:17 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "SimpleMethodContractApplication[SimpleMethodContractApplication::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "SimpleMethodContractApplication[SimpleMethodContractApplication::main()].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "843") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "heapAtPre")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(rule "sequentialToParallel2" (formula "3")) -(rule "simplifyUpdate3" (formula "3") (term "1,0")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(rule "simplifyUpdate2" (formula "3") (term "1")) -(rule "returnUnfold" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(builtin "Use Operation Contract" (formula "3") (newnames "heapBefore_doubleValue,result_0,exc_0") (contract "SimpleMethodContractApplication[SimpleMethodContractApplication::doubleValue(int)].JML normal_behavior operation contract.0")) -(branch "Post (doubleValue)" - (rule "inInt" (formula "3") (term "1,0,1,1")) - (rule "concrete_and_3" (formula "3") (term "0,1,1")) - (rule "translateJavaMulInt" (formula "3") (term "1,0,1,1,1")) - (rule "simplifyUpdate2" (formula "3")) - (rule "simplifyUpdate2" (formula "3")) - (rule "mul_literals" (formula "3") (term "1,0,1")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "4")) - (rule "assignment" (formula "5") (term "1")) - (rule "sequentialToParallel2" (formula "5")) - (rule "simplifyUpdate3" (formula "5") (term "1,0")) - (rule "applyEq" (formula "5") (term "0,1,0") (ifseqformula "4")) - (rule "methodCallReturn" (formula "5") (term "1")) - (rule "assignment" (formula "5") (term "1")) - (rule "sequentialToParallel2" (formula "5")) - (rule "simplifyUpdate3" (formula "5") (term "1,0")) - (rule "applyOnElementary" (formula "5") (term "1,0")) - (rule "applyOnPV" (formula "5") (term "0,1,0")) - (rule "simplifyUpdate2" (formula "5")) - (rule "methodCallEmpty" (formula "5") (term "1")) - (rule "tryEmpty" (formula "5") (term "1")) - (rule "emptyModality" (formula "5") (term "1")) - (rule "applyOnRigidFormula" (formula "5")) - (rule "simplifyUpdate2" (formula "5") (term "0")) - (rule "simplifyUpdate2" (formula "5") (term "1")) - (rule "applyOnRigidFormula" (formula "5") (term "0")) - (rule "simplifyUpdate2" (formula "5") (term "1,0")) - (rule "applyOnRigidFormula" (formula "5") (term "1")) - (rule "applyOnRigidFormula" (formula "5") (term "0,0")) - (rule "simplifyUpdate2" (formula "5") (term "0,0,0")) - (rule "simplifyUpdate2" (formula "5") (term "1,0,0")) - (rule "applyOnRigidFormula" (formula "5") (term "1,0")) - (rule "simplifyUpdate1" (formula "5") (term "0,1,0")) - (rule "applyOnPV" (formula "5") (term "1,1,0")) - (rule "applyOnRigidFormula" (formula "5") (term "0,1")) - (rule "applyOnRigidFormula" (formula "5") (term "0,0,0")) - (rule "applyOnPV" (formula "5") (term "0,0,0,0")) - (rule "simplifyUpdate1" (formula "5") (term "1,0,0,0")) - (rule "eqClose" (formula "5") (term "0,0,0")) - (rule "concrete_and_1" (formula "5") (term "0,0")) - (rule "applyOnRigidFormula" (formula "5") (term "0,0,1")) - (rule "simplifyUpdate1" (formula "5") (term "1,0,0,1")) - (rule "applyOnRigidFormula" (formula "5") (term "0,0")) - (rule "applyOnPV" (formula "5") (term "0,0,0")) - (rule "simplifyUpdate1" (formula "5") (term "1,0,0")) - (rule "eqClose" (formula "5") (term "0,0")) - (rule "concrete_and_1" (formula "5") (term "0")) - (rule "applyOnRigidTerm" (formula "5") (term "0,0,0,1")) - (rule "simplifyUpdate1" (formula "5") (term "2,0,0,0,1")) - (rule "applyOnPV" (formula "5") (term "0,0,0,0,1")) - (rule "simplifyUpdate1" (formula "5") (term "1,0,0,0,1")) - (rule "eqClose" (formula "5") (term "0,0,1")) - (rule "all_unused" (formula "5") (term "0,1")) - (rule "all_unused" (formula "5") (term "1")) - (rule "concrete_and_3" (formula "5")) - (opengoal " ") -) -(branch "Exceptional Post (doubleValue)" - (rule "translateJavaMulInt" (formula "3") (term "1,0,1,1,1")) - (rule "simplifyUpdate2" (formula "3")) - (rule "mul_literals" (formula "3") (term "1,0,1,1")) - (rule "simplifyUpdate2" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "4")) - (rule "andLeft" (formula "3")) - (rule "notLeft" (formula "3")) - (rule "close" (formula "6") (ifseqformula "5")) -) -(branch "Pre (doubleValue)" - (rule "inInt" (formula "3") (term "1,1,1,1")) - (rule "concrete_and_3" (formula "3") (term "1,1,1")) - (rule "qeq_literals" (formula "3") (term "0,0,1,1")) - (rule "concrete_and_1" (formula "3") (term "0,1,1")) - (rule "simplifyUpdate2" (formula "3")) - (rule "simplifyUpdate2" (formula "3")) - (rule "replace_known_left" (formula "3") (term "1") (ifseqformula "1")) - (rule "concrete_and_3" (formula "3")) - (rule "allRight" (formula "3") (inst "sk=x_0")) - (rule "closeTrue" (formula "3")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsAccount/oracle/Account.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsAccount/oracle/Account.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsAccount/oracle/Account.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsAccount/test/Account.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsAccount/test/Account.java deleted file mode 100644 index db20a1c5537..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsAccount/test/Account.java +++ /dev/null @@ -1,46 +0,0 @@ -public class Account { - private int balance; - - /*@ normal_behavior - @ requires amount > 0; - @ ensures balance == \old(balance) - amount; - @ ensures \result == amount; - @ assignable balance; - @*/ - public int checkAndWithdraw(int amount) { - if (canWithdraw(amount)) { - withdraw(amount); - return amount; //XXX: Termination 1 - } - else { - return 0; //XXX: Termination 2 - } - } - - /*@ normal_behavior - @ requires amount > 0; - @ ensures balance == \old(balance) - amount; - @ assignable balance; - @*/ - public void withdraw(int amount) { - balance -= amount; - } - - /*@ normal_behavior - @ requires amount > 0; - @ ensures true; - @ assignable \nothing; - @*/ - public boolean canWithdraw(int amount) { - return amount > 0; - } - - /*@ normal_behavior - @ requires true; - @ ensures \result == balance; - @ assignable \nothing; - @*/ - public int getBalance() { - return balance; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsAccount/test/Account.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsAccount/test/Account.proof deleted file mode 100644 index 6a67960281b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsAccount/test/Account.proof +++ /dev/null @@ -1,341 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jun 15 15:52:36 CEST 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "Account[Account::checkAndWithdraw(int)].JML normal_behavior operation contract.0", - "contract": "Account[Account::checkAndWithdraw(int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "690460161") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "translateJavaSubInt" (formula "1") (term "1,0,0,0,0,1,1")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "eqSymm" (formula "8") (term "1,0,0,1,0,1")) -(rule "eqSymm" (formula "8") (term "0,0,0,0,1")) -(rule "polySimp_elimSub" (formula "8") (term "0,0,0,0,0,1")) -(rule "polySimp_homoEq" (formula "8") (term "0,0,0,0,1")) -(rule "polySimp_mulComm0" (formula "8") (term "1,0,0,0,0,0,1")) -(rule "polySimp_addComm0" (formula "8") (term "1,1,0,0,0,0,0,1")) -(rule "polySimp_rightDist" (formula "8") (term "1,0,0,0,0,0,1")) -(rule "polySimp_mulAssoc" (formula "8") (term "0,1,0,0,0,0,0,1")) -(rule "polySimp_mulComm0" (formula "8") (term "0,0,1,0,0,0,0,0,1")) -(rule "polySimp_mulLiterals" (formula "8") (term "0,1,0,0,0,0,0,1")) -(rule "polySimp_elimOne" (formula "8") (term "0,1,0,0,0,0,0,1")) -(rule "elementOfSingleton" (formula "8") (term "0,0,0,0,1,0,1")) -(rule "polySimp_addAssoc" (formula "8") (term "0,0,0,0,0,1")) -(rule "polySimp_addComm0" (formula "8") (term "0,0,0,0,0,0,1")) -(rule "inEqSimp_gtToGeq" (formula "5")) -(rule "times_zero_1" (formula "5") (term "1,0,0")) -(rule "add_zero_right" (formula "5") (term "0,0")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "polySimp_sepNegMonomial" (formula "8") (term "0,0,0,0,1")) -(rule "polySimp_mulLiterals" (formula "8") (term "0,0,0,0,0,1")) -(rule "polySimp_elimOne" (formula "8") (term "0,0,0,0,0,1")) -(rule "inEqSimp_sepPosMonomial1" (formula "5")) -(rule "mul_literals" (formula "5") (term "1")) -(rule "Class_invariant_axiom_for_Account" (formula "6") (inst "sk=sk_0") (ifseqformula "3")) -(branch "Use Axiom" - (rule "true_left" (formula "6")) - (rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_checkAndWithdraw,savedHeapBefore_checkAndWithdraw")) - (builtin "One Step Simplification" (formula "7")) - (rule "ifElseUnfold" (formula "7") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x")) - (builtin "Use Operation Contract" (formula "7") (newnames "heapBefore_canWithdraw,result_0,exc_0,heapAfter_canWithdraw,anon_heap_canWithdraw") (contract "Account[Account::canWithdraw(int)].JML normal_behavior operation contract.0")) - (branch "Post (canWithdraw)" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "9")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "8")) - (rule "andLeft" (formula "9")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "Class_invariant_axiom_for_Account" (formula "9") (inst "sk=sk_2") (ifseqformula "3")) - (branch "Use Axiom" - (rule "true_left" (formula "9")) - (rule "ifElseSplit" (formula "10")) - (branch "if x true" - (builtin "One Step Simplification" (formula "11")) - (builtin "One Step Simplification" (formula "1")) - (builtin "Use Operation Contract" (formula "11") (newnames "heapBefore_withdraw,exc_1,heapAfter_withdraw,anon_heap_withdraw") (contract "Account[Account::withdraw(int)].JML normal_behavior operation contract.0")) - (branch "Post (withdraw)" - (builtin "One Step Simplification" (formula "11")) - (builtin "One Step Simplification" (formula "13")) - (rule "translateJavaSubInt" (formula "11") (term "1,0,0,1,1")) - (rule "andLeft" (formula "11")) - (rule "andLeft" (formula "12")) - (rule "andLeft" (formula "13")) - (rule "andLeft" (formula "13")) - (rule "polySimp_elimSub" (formula "13") (term "1")) - (rule "polySimp_addComm0" (formula "13") (term "1")) - (rule "pullOutSelect" (formula "13") (term "0") (inst "selectSK=Account_balance_0")) - (rule "simplifySelectOfAnonEQ" (formula "13") (ifseqformula "11")) - (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "16"))) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "13") (term "0,1,0,0") (ifseqformula "8")) - (rule "replace_known_left" (formula "13") (term "0,0,1,0,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "13")) - (rule "polySimp_homoEq" (formula "14")) - (rule "polySimp_addComm1" (formula "14") (term "0")) - (rule "polySimp_addComm0" (formula "14") (term "0,0")) - (rule "elementOfSingleton" (formula "13") (term "0,0")) - (builtin "One Step Simplification" (formula "13")) - (rule "applyEqReverse" (formula "14") (term "0,0,0,0") (ifseqformula "13")) - (rule "hideAuxiliaryEq" (formula "13")) - (rule "polySimp_addComm0" (formula "13") (term "0,0")) - (rule "polySimp_sepPosMonomial" (formula "13")) - (rule "polySimp_mulComm0" (formula "13") (term "1")) - (rule "polySimp_rightDist" (formula "13") (term "1")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,1")) - (rule "polySimp_elimOne" (formula "13") (term "1,1")) - (rule "polySimp_mulAssoc" (formula "13") (term "0,1")) - (rule "polySimp_mulComm0" (formula "13") (term "0,0,1")) - (rule "polySimp_mulLiterals" (formula "13") (term "0,1")) - (rule "polySimp_elimOne" (formula "13") (term "0,1")) - (rule "pullOutSelect" (formula "13") (term "0") (inst "selectSK=Account_balance_1")) - (rule "simplifySelectOfAnonEQ" (formula "13") (ifseqformula "8")) - (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "16")) (ifInst "" (formula "3"))) - (rule "applyEqReverse" (formula "14") (term "0") (ifseqformula "13")) - (rule "hideAuxiliaryEq" (formula "13")) - (rule "polySimp_homoEq" (formula "13")) - (rule "polySimp_addComm1" (formula "13") (term "0")) - (rule "polySimp_sepPosMonomial" (formula "13")) - (rule "polySimp_mulComm0" (formula "13") (term "1")) - (rule "polySimp_rightDist" (formula "13") (term "1")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,1")) - (rule "polySimp_elimOne" (formula "13") (term "1,1")) - (rule "polySimp_mulComm0" (formula "13") (term "0,1")) - (rule "Class_invariant_axiom_for_Account" (formula "14") (inst "sk=sk_4") (ifseqformula "4")) - (branch "Use Axiom" - (rule "true_left" (formula "14")) - (rule "methodCallReturn" (formula "15") (term "1")) - (rule "assignment" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "methodCallEmpty" (formula "15") (term "1")) - (rule "tryEmpty" (formula "15") (term "1")) - (rule "emptyModality" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "replaceKnownSelect_taclet00000_0" (formula "15") (term "1,1,0,0")) - (rule "replaceKnownAuxiliaryConstant_taclet00000_1" (formula "15") (term "1,1,0,0")) - (rule "eqSymm" (formula "15") (term "1,0,0,1")) - (rule "polySimp_homoEq" (formula "15") (term "0,0")) - (rule "polySimp_addComm1" (formula "15") (term "0,0,0")) - (rule "applyEq" (formula "15") (term "1,0,0,0") (ifseqformula "13")) - (rule "polySimp_addAssoc" (formula "15") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "15") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1" (formula "15") (term "0,0,0,0,0")) - (rule "add_literals" (formula "15") (term "1,0,0,0,0,0")) - (rule "times_zero_1" (formula "15") (term "0,0,0,0,0")) - (rule "add_zero_left" (formula "15") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor2" (formula "15") (term "0,0,0")) - (rule "add_literals" (formula "15") (term "1,0,0,0")) - (rule "times_zero_1" (formula "15") (term "0,0,0")) - (builtin "One Step Simplification" (formula "15")) - (rule "Class_invariant_axiom_for_Account" (formula "15") (term "0") (inst "sk=sk_5") (ifseqformula "4")) - (branch "Use Axiom" - (builtin "One Step Simplification" (formula "15")) - (rule "allRight" (formula "15") (inst "sk=f_0")) - (rule "allRight" (formula "15") (inst "sk=o_0")) - (rule "orRight" (formula "15")) - (rule "orRight" (formula "15")) - (rule "pullOutSelect" (formula "17") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "1")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "1") (term "0,1,1,0,0") (ifseqformula "9")) - (rule "eqSymm" (formula "18")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0,0") (ifseqformula "16")) - (builtin "One Step Simplification" (formula "1")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_0_1")) - (rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "18"))) - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "commute_and" (formula "16")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch " !o_0 = null & !( o_0.$created = TRUE | o_0.$created@anon_heap_canWithdraw<> = TRUE) TRUE" - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "orRight" (formula "15")) - (rule "applyEqReverse" (formula "21") (term "1") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "eqSymm" (formula "20")) - (rule "replace_known_right" (formula "19") (term "0,1") (ifseqformula "14")) - (builtin "One Step Simplification" (formula "19") (ifInst "" (formula "16"))) - (rule "closeTrue" (formula "19")) - ) - (branch " !o_0 = null & !( o_0.$created = TRUE | o_0.$created@anon_heap_canWithdraw<> = TRUE) FALSE" - (rule "close" (formula "19") (ifseqformula "1")) - ) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "15")) - (rule "closeTrue" (formula "15")) - ) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "15")) - (rule "closeTrue" (formula "15")) - ) - ) - (branch "Exceptional Post (withdraw)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "11")) - (rule "translateJavaSubInt" (formula "11") (term "1,0,0,1,1")) - (rule "andLeft" (formula "11")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "12") (term "1,0") (ifseqformula "11")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "12") (term "0,1,0") (ifseqformula "8")) - (rule "andLeft" (formula "12")) - (rule "andLeft" (formula "12")) - (rule "andLeft" (formula "14")) - (rule "notLeft" (formula "12")) - (rule "close" (formula "15") (ifseqformula "14")) - ) - (branch "Pre (withdraw)" - (builtin "One Step Simplification" (formula "11")) - (rule "wellFormedAnonEQ" (formula "11") (term "1") (ifseqformula "8")) - (rule "replace_known_left" (formula "11") (term "1,1") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "2"))) - (rule "inEqSimp_gtToGeq" (formula "11") (term "0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "11") (term "0")) - (rule "mul_literals" (formula "11") (term "1,0")) - (rule "replace_known_left" (formula "11") (term "0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "11")) - (rule "Class_invariant_axiom_for_Account" (formula "11") (inst "sk=sk_3") (ifseqformula "4")) - (branch "Use Axiom" - (rule "closeTrue" (formula "11")) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "11")) - (rule "closeTrue" (formula "11")) - ) - ) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "11")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "blockReturn" (formula "11") (term "1")) - (rule "methodCallReturn" (formula "11") (term "1")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "tryEmpty" (formula "11") (term "1")) - (rule "emptyModality" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "eqSymm" (formula "11") (term "0,1,0")) - (rule "eqSymm" (formula "11") (term "1,0,0,1")) - (rule "polySimp_homoEq" (formula "11") (term "0,0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0,0")) - (rule "polySimp_sepPosMonomial" (formula "11") (term "0,0")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0")) - (rule "polySimp_rightDist" (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 "polySimp_mulComm0" (formula "11") (term "0,1,0,0")) - (rule "inEqSimp_contradEq7" (formula "11") (term "0,1,0") (ifseqformula "5")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0,1,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0,1,0")) - (rule "leq_literals" (formula "11") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "false_right" (formula "11")) - (opengoal " ") - ) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "10")) - (rule "closeTrue" (formula "10")) - ) - ) - (branch "Exceptional Post (canWithdraw)" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "9")) - (rule "andLeft" (formula "7")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "8") (term "1,0") (ifseqformula "7")) - (rule "andLeft" (formula "8")) - (rule "andLeft" (formula "9")) - (rule "andLeft" (formula "8")) - (rule "notLeft" (formula "8")) - (rule "close" (formula "11") (ifseqformula "10")) - ) - (branch "Pre (canWithdraw)" - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "1"))) - (rule "inEqSimp_gtToGeq" (formula "7") (term "0")) - (rule "times_zero_1" (formula "7") (term "1,0,0,0")) - (rule "add_zero_right" (formula "7") (term "0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "7") (term "0")) - (rule "mul_literals" (formula "7") (term "1,0")) - (rule "replace_known_left" (formula "7") (term "0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "7")) - (rule "Class_invariant_axiom_for_Account" (formula "7") (inst "sk=sk_1") (ifseqformula "3")) - (branch "Use Axiom" - (rule "closeTrue" (formula "7")) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "7")) - (rule "closeTrue" (formula "7")) - ) - ) -) -(branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "7")) - (rule "closeTrue" (formula "7")) -) -) - -} 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 deleted file mode 100644 index 9f8e68e9e8f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsArrayUtil/oracle/ArrayUtil.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsArrayUtil/test/ArrayUtil.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsArrayUtil/test/ArrayUtil.java deleted file mode 100644 index 553a394e001..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsArrayUtil/test/ArrayUtil.java +++ /dev/null @@ -1,42 +0,0 @@ -public class ArrayUtil { - /*@ normal_behavior - @ ensures array == null || array.length == 0 ==> \result == -1; - @ ensures array != null && array.length >= 1 ==> (\forall int i; i >= 0 && i < array.length; array[\result] <= array[i]); - @ assignable \nothing; - @*/ - public static int minIndex(/*@ nullable @*/ int[] array) { - if (array != null) { - if (array.length == 0) { - return -1; //XXX: Termination 1 - } - else { - if (array.length == 1) { - return array[0]; //XXX: Termination 2 - } - else { - int minIndex = 0; - /*@ loop_invariant i >= 1 && i <= array.length; - @ loop_invariant minIndex >= 0 && minIndex < i; - @ loop_invariant (\forall int j; j >= 0 && j < i; - @ array[minIndex] <= array[j]); - @ decreases array.length - i; - @ assignable minIndex, i; - @*/ - for (int i = 1; i < array.length; i++) { - if (array[i] < array[minIndex]) { - minIndex = 1; - //XXX: Loop Body Termination 1 (of the 'Body Preserves Invariant' branch) - } - else { - //XXX: Loop Body Termination 2 (of the 'Body Preserves Invariant' branch) - } - } - return minIndex; //XXX: Termination 3 - } - } - } - else { - return -1; //XXX: Termination 4 - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsArrayUtil/test/ArrayUtil.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsArrayUtil/test/ArrayUtil.proof deleted file mode 100644 index 25578e560d4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsArrayUtil/test/ArrayUtil.proof +++ /dev/null @@ -1,1385 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Mar 23 14:47:12 CET 2018 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "ArrayUtil[ArrayUtil::minIndex([I)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "ArrayUtil[ArrayUtil::minIndex([I)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "3436") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "array,result,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) -(rule "inEqSimp_ltToLeq" (formula "4") (term "1,0,0,1,1,0,0,0,1")) -(rule "polySimp_mulComm0" (formula "4") (term "1,0,0,1,0,0,1,1,0,0,0,1")) -(rule "inEqSimp_commuteLeq" (formula "4") (term "1,0,1,1,0,0,0,1")) -(rule "assignment" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "inEqSimp_sepPosMonomial0" (formula "4") (term "1,0,0,1,1,0,0,0,1")) -(rule "polySimp_mulComm0" (formula "4") (term "1,1,0,0,1,1,0,0,0,1")) -(rule "polySimp_rightDist" (formula "4") (term "1,1,0,0,1,1,0,0,0,1")) -(rule "mul_literals" (formula "4") (term "0,1,1,0,0,1,1,0,0,0,1")) -(rule "polySimp_mulLiterals" (formula "4") (term "1,1,1,0,0,1,1,0,0,0,1")) -(rule "polySimp_elimOne" (formula "4") (term "1,1,1,0,0,1,1,0,0,0,1")) -(rule "nnf_imp2or" (formula "4") (term "0,1,1,0,0,0,1")) -(rule "nnf_notAnd" (formula "4") (term "0,0,1,1,0,0,0,1")) -(rule "inEqSimp_notGeq" (formula "4") (term "0,0,0,1,1,0,0,0,1")) -(rule "times_zero_1" (formula "4") (term "1,0,0,0,0,0,1,1,0,0,0,1")) -(rule "add_zero_right" (formula "4") (term "0,0,0,0,0,1,1,0,0,0,1")) -(rule "inEqSimp_sepPosMonomial0" (formula "4") (term "0,0,0,1,1,0,0,0,1")) -(rule "mul_literals" (formula "4") (term "1,0,0,0,1,1,0,0,0,1")) -(rule "inEqSimp_notLeq" (formula "4") (term "1,0,0,1,1,0,0,0,1")) -(rule "polySimp_rightDist" (formula "4") (term "1,0,0,1,0,0,1,1,0,0,0,1")) -(rule "mul_literals" (formula "4") (term "0,1,0,0,1,0,0,1,1,0,0,0,1")) -(rule "polySimp_addAssoc" (formula "4") (term "0,0,1,0,0,1,1,0,0,0,1")) -(rule "add_literals" (formula "4") (term "0,0,0,1,0,0,1,1,0,0,0,1")) -(rule "add_zero_left" (formula "4") (term "0,0,1,0,0,1,1,0,0,0,1")) -(rule "inEqSimp_sepPosMonomial1" (formula "4") (term "1,0,0,1,1,0,0,0,1")) -(rule "polySimp_mulLiterals" (formula "4") (term "1,1,0,0,1,1,0,0,0,1")) -(rule "polySimp_elimOne" (formula "4") (term "1,1,0,0,1,1,0,0,0,1")) -(rule "methodBodyExpand" (formula "4") (term "1") (newnames "heapBefore_minIndex,savedHeapBefore_minIndex,_arrayBefore_minIndex")) -(builtin "One Step Simplification" (formula "4")) -(rule "ifElseUnfold" (formula "4") (term "1") (inst "#boolv=x")) -(rule "variableDeclaration" (formula "4") (term "1") (newnames "x")) -(rule "inequality_comparison_simple" (formula "4") (term "1")) -(builtin "One Step Simplification" (formula "4")) -(rule "ifElseSplit" (formula "4")) -(branch "if x true" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "replace_known_right" (formula "2") (term "0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "2")) - (rule "ifElseUnfold" (formula "5") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_1")) - (rule "compound_equality_comparison_1" (formula "5") (term "1") (inst "#v0=x_2")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_2")) - (rule "assignment_read_length" (formula "5") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "4"))) - (rule "false_right" (formula "5")) - (rule "equality_comparison_simple" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "ifElseSplit" (formula "5")) - (branch "if x_1 true" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "blockReturn" (formula "6") (term "1")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5")) (ifInst "" (formula "1")) (ifInst "" (formula "5"))) - (rule "impRight" (formula "6")) - (rule "allRight" (formula "7") (inst "sk=i_0")) - (rule "orRight" (formula "7")) - (rule "orRight" (formula "7")) - (rule "inEqSimp_geqRight" (formula "9")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_leqRight" (formula "8")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_geqRight" (formula "9")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "applyEq" (formula "1") (term "0,1,0") (ifseqformula "5")) - (rule "times_zero_2" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "applyEq" (formula "4") (term "0") (ifseqformula "5")) - (rule "qeq_literals" (formula "4")) - (rule "closeFalse" (formula "4")) - ) - (branch "if x_1 false" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "ifElseUnfold" (formula "6") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_3")) - (rule "compound_equality_comparison_1" (formula "6") (term "1") (inst "#v0=x_4")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_4")) - (rule "assignment_read_length" (formula "6") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (rule "equality_comparison_simple" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "ifElseSplit" (formula "6")) - (branch "if x_3 true" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "5") (term "0") (ifseqformula "1")) - (rule "equal_literals" (formula "5")) - (rule "false_right" (formula "5")) - (rule "returnUnfold" (formula "6") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_5")) - (rule "assignment_array2" (formula "6") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "less_literals" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "inEqSimp_leqRight" (formula "6")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "2")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5")) (ifInst "" (formula "5"))) - (rule "applyEq" (formula "6") (term "0,0,1") (ifseqformula "1")) - (rule "qeq_literals" (formula "6") (term "0,1")) - (builtin "One Step Simplification" (formula "6")) - (rule "applyEq" (formula "6") (term "0,0,0") (ifseqformula "1")) - (rule "equal_literals" (formula "6") (term "0,0")) - (builtin "One Step Simplification" (formula "6")) - (rule "allRight" (formula "6") (inst "sk=i_0")) - (rule "orRight" (formula "6")) - (rule "orRight" (formula "6")) - (rule "inEqSimp_geqRight" (formula "8")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "7")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_geqRight" (formula "8")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "applyEq" (formula "1") (term "0,1,0") (ifseqformula "4")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial0" (formula "3")) - (rule "polySimp_mulLiterals" (formula "3") (term "0")) - (rule "polySimp_elimOne" (formula "3") (term "0")) - (rule "inEqSimp_antiSymm" (formula "2") (ifseqformula "1")) - (rule "applyEq" (formula "4") (term "0,2,1,1") (ifseqformula "2")) - (rule "applyEqRigid" (formula "1") (term "0") (ifseqformula "2")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEq" (formula "2") (term "0") (ifseqformula "1")) - (rule "qeq_literals" (formula "2")) - (rule "true_left" (formula "2")) - (rule "arrayLengthIsAnInt" (formula "3") (term "0")) - (builtin "One Step Simplification" (formula "3")) - (rule "true_left" (formula "3")) - (rule "arrayLengthNotNegative" (formula "3") (term "0")) - (rule "applyEq" (formula "3") (term "0") (ifseqformula "4")) - (rule "qeq_literals" (formula "3")) - (rule "true_left" (formula "3")) - (opengoal " ") - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 0 Out of Bounds!)" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "2")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_3 false" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "minIndex")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "for_to_while" (formula "7") (term "1") (inst "#innerLabel=_label4") (inst "#outerLabel=_label5")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "i")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (builtin "Loop Invariant" (formula "7") (newnames "variant,b,heapBefore_LOOP,iBefore_LOOP,minIndexBefore_LOOP,i_0,minIndex_0,heap_After_LOOP,anon_heap_LOOP,o,f")) - (branch "Invariant Initially Valid" - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "1"))) - (rule "qeq_literals" (formula "7") (term "0,0,0")) - (builtin "One Step Simplification" (formula "7")) - (rule "qeq_literals" (formula "7") (term "0,1,0")) - (builtin "One Step Simplification" (formula "7")) - (rule "less_literals" (formula "7") (term "1,0")) - (builtin "One Step Simplification" (formula "7")) - (rule "inEqSimp_ltToLeq" (formula "7") (term "1,0,0,1")) - (rule "mul_literals" (formula "7") (term "1,0,0,1,0,0,1")) - (rule "add_literals" (formula "7") (term "0,0,1,0,0,1")) - (rule "add_zero_left" (formula "7") (term "0,1,0,0,1")) - (rule "inEqSimp_commuteLeq" (formula "7") (term "0")) - (rule "inEqSimp_commuteLeq" (formula "7") (term "1,0,1")) - (rule "nnf_imp2or" (formula "7") (term "0,1")) - (rule "nnf_notAnd" (formula "7") (term "0,0,1")) - (rule "inEqSimp_notGeq" (formula "7") (term "0,0,0,1")) - (rule "times_zero_1" (formula "7") (term "1,0,0,0,0,0,1")) - (rule "add_literals" (formula "7") (term "0,0,0,0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "7") (term "0,0,0,1")) - (rule "mul_literals" (formula "7") (term "1,0,0,0,1")) - (rule "inEqSimp_notLeq" (formula "7") (term "1,0,0,1")) - (rule "times_zero_1" (formula "7") (term "1,0,0,1,0,0,1")) - (rule "add_literals" (formula "7") (term "0,0,1,0,0,1")) - (rule "inEqSimp_sepPosMonomial1" (formula "7") (term "1,0,0,1")) - (rule "mul_literals" (formula "7") (term "1,1,0,0,1")) - (rule "inEqSimp_or_antiSymm0" (formula "7") (term "0,0,1")) - (rule "add_literals" (formula "7") (term "1,0,1,0,0,1")) - (rule "add_literals" (formula "7") (term "0,0,0,0,1")) - (builtin "One Step Simplification" (formula "7")) - (rule "arrayLengthNotNegative" (formula "4") (term "0")) - (rule "inEqSimp_strengthen1" (formula "1") (ifseqformula "6")) - (rule "add_zero_right" (formula "1") (term "1")) - (rule "replace_known_left" (formula "8") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "allRight" (formula "8") (inst "sk=j_0")) - (rule "orRight" (formula "8")) - (rule "notRight" (formula "8")) - (rule "inEqSimp_geqRight" (formula "9")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "applyEqRigid" (formula "1") (term "0,2,1,0") (ifseqformula "2")) - (rule "polySimp_pullOutFactor2b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "Body Preserves Invariant" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "5")) - (rule "translateJavaSubInt" (formula "9") (term "0,1,1,1,0,1")) - (rule "translateJavaSubInt" (formula "9") (term "0,1,1,1,0,1,1")) - (rule "andLeft" (formula "5")) - (rule "impRight" (formula "10")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "6")) - (rule "eqSymm" (formula "14") (term "1,0,0,1,0,1,1,0,1")) - (rule "polySimp_elimSub" (formula "14") (term "0,1,1,1,0,1")) - (rule "polySimp_elimSub" (formula "14") (term "0,1,1,1,0")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,1,1,0,1")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,1,1,0")) - (rule "inEqSimp_ltToLeq" (formula "10") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0,1,0,0")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "1,1,0,0,0,1,1,0,1")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,1,1,0,0,0,1,1,0,1")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "1,0,0,1,0,0,1,1,0,1")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,1,0,0,1,0,0,1,1,0,1")) - (rule "inEqSimp_ltToLeq" (formula "9")) - (rule "polySimp_mulComm0" (formula "9") (term "1,0,0")) - (rule "inEqSimp_commuteLeq" (formula "10") (term "1,0")) - (rule "inEqSimp_commuteLeq" (formula "14") (term "1,0,0,0,0,1,1,0,1")) - (rule "inEqSimp_commuteLeq" (formula "14") (term "1,0,1,0,0,1,1,0,1")) - (rule "inEqSimp_commuteLeq" (formula "7")) - (rule "variableDeclarationAssign" (formula "1") (term "1")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "1") (term "1") (newnames "b_1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "thrownExc")) - (rule "blockThrow" (formula "14") (term "1,0,0,1")) - (rule "blockThrow" (formula "14") (term "1,0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "10") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,1,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,1,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,1,0,0")) - (rule "polySimp_elimOne" (formula "10") (term "1,1,1,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "9")) - (rule "polySimp_mulComm0" (formula "9") (term "1")) - (rule "polySimp_rightDist" (formula "9") (term "1")) - (rule "mul_literals" (formula "9") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "9") (term "1,1")) - (rule "polySimp_elimOne" (formula "9") (term "1,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "14") (term "1,0,0,1,0,0,1,1,0,1")) - (rule "polySimp_mulComm0" (formula "14") (term "1,1,0,0,1,0,0,1,1,0,1")) - (rule "polySimp_rightDist" (formula "14") (term "1,1,0,0,1,0,0,1,1,0,1")) - (rule "polySimp_mulLiterals" (formula "14") (term "1,1,1,0,0,1,0,0,1,1,0,1")) - (rule "mul_literals" (formula "14") (term "0,1,1,0,0,1,0,0,1,1,0,1")) - (rule "polySimp_elimOne" (formula "14") (term "1,1,1,0,0,1,0,0,1,1,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "14") (term "1,1,0,0,0,1,1,0,1")) - (rule "polySimp_mulComm0" (formula "14") (term "1,1,1,0,0,0,1,1,0,1")) - (rule "polySimp_rightDist" (formula "14") (term "1,1,1,0,0,0,1,1,0,1")) - (rule "polySimp_mulLiterals" (formula "14") (term "1,1,1,1,0,0,0,1,1,0,1")) - (rule "mul_literals" (formula "14") (term "0,1,1,1,0,0,0,1,1,0,1")) - (rule "polySimp_elimOne" (formula "14") (term "1,1,1,1,0,0,0,1,1,0,1")) - (rule "pullOutSelect" (formula "10") (term "1,1,0") (inst "selectSK=arr_0")) - (rule "simplifySelectOfAnon" (formula "10")) - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "14")) (ifInst "" (formula "3"))) - (rule "applyEqReverse" (formula "11") (term "1,1,0") (ifseqformula "10")) - (rule "hideAuxiliaryEq" (formula "10")) - (rule "inEqSimp_exactShadow3" (formula "8") (ifseqformula "9")) - (rule "times_zero_1" (formula "8") (term "0,0")) - (rule "add_zero_left" (formula "8") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "8")) - (rule "mul_literals" (formula "8") (term "1")) - (rule "boxToDiamond" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "nnf_imp2or" (formula "9") (term "0")) - (rule "nnf_notAnd" (formula "9") (term "0,0")) - (rule "inEqSimp_notLeq" (formula "9") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "9") (term "1,0,0,1,0,0")) - (rule "mul_literals" (formula "9") (term "0,1,0,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "9") (term "0,0,1,0,0")) - (rule "add_literals" (formula "9") (term "0,0,0,1,0,0")) - (rule "add_zero_left" (formula "9") (term "0,0,1,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "9") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "9") (term "1,1,0,0")) - (rule "polySimp_elimOne" (formula "9") (term "1,1,0,0")) - (rule "inEqSimp_notGeq" (formula "9") (term "0,0,0")) - (rule "mul_literals" (formula "9") (term "1,0,0,0,0,0")) - (rule "add_zero_right" (formula "9") (term "0,0,0,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "9") (term "0,0,0")) - (rule "mul_literals" (formula "9") (term "1,0,0,0")) - (rule "nnf_imp2or" (formula "14") (term "0,1,0,0,1,1,0,1")) - (rule "nnf_notAnd" (formula "14") (term "0,0,1,0,0,1,1,0,1")) - (rule "inEqSimp_notGeq" (formula "14") (term "0,0,0,1,0,0,1,1,0,1")) - (rule "times_zero_1" (formula "14") (term "1,0,0,0,0,0,1,0,0,1,1,0,1")) - (rule "add_zero_right" (formula "14") (term "0,0,0,0,0,1,0,0,1,1,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "14") (term "0,0,0,1,0,0,1,1,0,1")) - (rule "mul_literals" (formula "14") (term "1,0,0,0,1,0,0,1,1,0,1")) - (rule "inEqSimp_notLeq" (formula "14") (term "1,0,0,1,0,0,1,1,0,1")) - (rule "polySimp_rightDist" (formula "14") (term "1,0,0,1,0,0,1,0,0,1,1,0,1")) - (rule "mul_literals" (formula "14") (term "0,1,0,0,1,0,0,1,0,0,1,1,0,1")) - (rule "polySimp_addAssoc" (formula "14") (term "0,0,1,0,0,1,0,0,1,1,0,1")) - (rule "add_literals" (formula "14") (term "0,0,0,1,0,0,1,0,0,1,1,0,1")) - (rule "add_zero_left" (formula "14") (term "0,0,1,0,0,1,0,0,1,1,0,1")) - (rule "inEqSimp_sepPosMonomial1" (formula "14") (term "1,0,0,1,0,0,1,1,0,1")) - (rule "polySimp_mulLiterals" (formula "14") (term "1,1,0,0,1,0,0,1,1,0,1")) - (rule "polySimp_elimOne" (formula "14") (term "1,1,0,0,1,0,0,1,1,0,1")) - (rule "compound_less_than_comparison_2" (formula "10") (term "1") (inst "#v0=x") (inst "#v1=x_1")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_5")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_6")) - (rule "assignment_read_length" (formula "10") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "11")) - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "14"))) - (rule "false_right" (formula "10")) - (rule "less_than_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "inEqSimp_ltToLeq" (formula "10") (term "0,0,1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0,0,0,1,0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0,0,1,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "10") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "0,0,0,1,0")) - (rule "polySimp_elimOne" (formula "10") (term "0,0,0,1,0")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "emptyModality" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "notRight" (formula "10")) - (rule "inEqSimp_subsumption1" (formula "7") (ifseqformula "1")) - (rule "inEqSimp_homoInEq0" (formula "7") (term "0")) - (rule "polySimp_pullOutFactor1b" (formula "7") (term "0,0")) - (rule "add_literals" (formula "7") (term "1,1,0,0")) - (rule "times_zero_1" (formula "7") (term "1,0,0")) - (rule "add_zero_right" (formula "7") (term "0,0")) - (rule "qeq_literals" (formula "7") (term "0")) - (builtin "One Step Simplification" (formula "7")) - (rule "true_left" (formula "7")) - (rule "arrayLengthIsAnInt" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "arrayLengthNotNegative" (formula "11") (term "0")) - (rule "inEqSimp_strengthen1" (formula "1") (ifseqformula "12")) - (rule "add_zero_right" (formula "1") (term "1")) - (rule "inEqSimp_contradEq7" (formula "12") (ifseqformula "1")) - (rule "times_zero_1" (formula "12") (term "1,0,0")) - (rule "add_zero_right" (formula "12") (term "0,0")) - (rule "leq_literals" (formula "12") (term "0")) - (builtin "One Step Simplification" (formula "12")) - (rule "false_right" (formula "12")) - (rule "inEqSimp_strengthen1" (formula "1") (ifseqformula "11")) - (rule "add_literals" (formula "1") (term "1")) - (rule "inEqSimp_contradEq7" (formula "11") (ifseqformula "1")) - (rule "mul_literals" (formula "11") (term "1,0,0")) - (rule "add_literals" (formula "11") (term "0,0")) - (rule "leq_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "false_right" (formula "11")) - (rule "ifUnfold" (formula "12") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_7")) - (rule "compound_less_than_comparison_2" (formula "12") (term "1") (inst "#v0=x_8") (inst "#v1=x_9")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_8")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_9")) - (rule "assignment_read_length" (formula "12") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "12") (ifInst "" (formula "11"))) - (rule "false_right" (formula "12")) - (rule "less_than_comparison_simple" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "inEqSimp_ltToLeq" (formula "12") (term "0,0,1,0")) - (rule "polySimp_mulComm0" (formula "12") (term "1,0,0,0,0,1,0")) - (rule "polySimp_addComm1" (formula "12") (term "0,0,0,1,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "12") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "12") (term "0,0,0,1,0")) - (rule "polySimp_elimOne" (formula "12") (term "0,0,0,1,0")) - (rule "replace_known_left" (formula "12") (term "0,0,1,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "12")) - (rule "allLeft" (formula "10") (inst "t=minIndex_0")) - (rule "replaceKnownSelect_taclet110100_0" (formula "10") (term "0,1")) - (rule "replaceKnownAuxiliaryConstant_taclet110100_1" (formula "10") (term "0,1")) - (rule "inEqSimp_homoInEq1" (formula "10") (term "1")) - (rule "polySimp_pullOutFactor1" (formula "10") (term "0,1")) - (rule "add_literals" (formula "10") (term "1,0,1")) - (rule "times_zero_1" (formula "10") (term "0,1")) - (rule "leq_literals" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "10")) - (rule "ifSplit" (formula "12")) - (branch "if x_7 true" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "ifElseUnfold" (formula "12") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_10")) - (rule "compound_less_than_comparison_2" (formula "12") (term "1") (inst "#v0=x_11") (inst "#v1=x_12")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_11")) - (rule "assignment_array2" (formula "12") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "12") (ifInst "" (formula "11"))) - (rule "orRight" (formula "12")) - (rule "inEqSimp_ltRight" (formula "13")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "13")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "pullOutSelect" (formula "14") (term "0,1,0") (inst "selectSK=arr_1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14")) (ifInst "" (formula "7"))) - (rule "applyEqReverse" (formula "15") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_12")) - (rule "assignment_array2" (formula "14") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "15")) - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "13"))) - (rule "replaceKnownSelect_taclet110100_0" (formula "15") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet110100_1" (formula "15") (term "0,1,0")) - (rule "orRight" (formula "14")) - (rule "inEqSimp_ltRight" (formula "15")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "14")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "polySimp_mulComm0" (formula "2") (term "1")) - (rule "polySimp_rightDist" (formula "2") (term "1")) - (rule "polySimp_mulLiterals" (formula "2") (term "1,1")) - (rule "mul_literals" (formula "2") (term "0,1")) - (rule "polySimp_elimOne" (formula "2") (term "1,1")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "9")) - (rule "leq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "less_than_comparison_simple" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "inEqSimp_ltToLeq" (formula "13") (term "0,0,1,0")) - (rule "polySimp_mulComm0" (formula "13") (term "1,0,0,0,0,1,0")) - (rule "polySimp_addComm1" (formula "13") (term "0,0,0,1,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "13") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "13") (term "0,0,0,1,0")) - (rule "polySimp_elimOne" (formula "13") (term "0,0,0,1,0")) - (rule "ifElseSplit" (formula "13")) - (branch "if x_10 true" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "1")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "blockEmpty" (formula "14") (term "1")) - (rule "postincrement" (formula "14") (term "1")) - (rule "compound_int_cast_expression" (formula "14") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_13")) - (rule "remove_parentheses_right" (formula "14") (term "1")) - (rule "assignmentAdditionInt" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "translateJavaAddInt" (formula "14") (term "0,1,0")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "14") (term "1")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "tryEmpty" (formula "14") (term "1")) - (rule "methodCallEmpty" (formula "14") (term "1")) - (rule "emptyModality" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "4"))) - (rule "qeq_literals" (formula "14") (term "0,1,0,0,0")) - (builtin "One Step Simplification" (formula "14")) - (rule "eqSymm" (formula "14") (term "1,0,0,1,0")) - (rule "polySimp_mulComm0" (formula "14") (term "0,0,1")) - (rule "polySimp_rightDist" (formula "14") (term "0,0,1")) - (rule "mul_literals" (formula "14") (term "0,0,0,1")) - (rule "polySimp_addAssoc" (formula "14") (term "1,1,0,0,0")) - (rule "add_literals" (formula "14") (term "0,1,1,0,0,0")) - (rule "add_zero_left" (formula "14") (term "1,1,0,0,0")) - (rule "precOfInt" (formula "14") (term "1")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "1,1")) - (rule "polySimp_rightDist" (formula "14") (term "1,0,0,1,1")) - (rule "polySimp_mulAssoc" (formula "14") (term "0,1,0,0,1,1")) - (rule "polySimp_mulComm0" (formula "14") (term "0,0,1,0,0,1,1")) - (rule "polySimp_mulLiterals" (formula "14") (term "0,1,0,0,1,1")) - (rule "polySimp_elimOne" (formula "14") (term "0,1,0,0,1,1")) - (rule "polySimp_addAssoc" (formula "14") (term "0,0,1,1")) - (rule "polySimp_addAssoc" (formula "14") (term "0,1,1")) - (rule "polySimp_addComm1" (formula "14") (term "0,0,1,1")) - (rule "polySimp_pullOutFactor2b" (formula "14") (term "0,1,1")) - (rule "add_literals" (formula "14") (term "1,1,0,1,1")) - (rule "times_zero_1" (formula "14") (term "1,0,1,1")) - (rule "add_zero_right" (formula "14") (term "0,1,1")) - (rule "polySimp_addAssoc" (formula "14") (term "0,1,1")) - (rule "polySimp_addComm1" (formula "14") (term "0,0,1,1")) - (rule "add_literals" (formula "14") (term "0,0,0,1,1")) - (rule "add_zero_left" (formula "14") (term "0,0,1,1")) - (rule "polySimp_pullOutFactor1" (formula "14") (term "0,1,1")) - (rule "add_literals" (formula "14") (term "1,0,1,1")) - (rule "times_zero_1" (formula "14") (term "0,1,1")) - (rule "leq_literals" (formula "14") (term "1,1")) - (builtin "One Step Simplification" (formula "14")) - (rule "inEqSimp_commuteLeq" (formula "14") (term "1,0,0,0")) - (rule "replace_known_left" (formula "14") (term "1,0,0,0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "14")) - (rule "inEqSimp_homoInEq1" (formula "14") (term "0,0,0")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,0,0")) - (rule "polySimp_rightDist" (formula "14") (term "1,0,0,0,0")) - (rule "mul_literals" (formula "14") (term "0,1,0,0,0,0")) - (rule "polySimp_addAssoc" (formula "14") (term "0,0,0,0")) - (rule "add_literals" (formula "14") (term "0,0,0,0,0")) - (rule "add_zero_left" (formula "14") (term "0,0,0,0")) - (rule "inEqSimp_homoInEq0" (formula "14") (term "1")) - (rule "times_zero_2" (formula "14") (term "1,0,1")) - (rule "add_zero_right" (formula "14") (term "0,1")) - (rule "inEqSimp_invertInEq0" (formula "14") (term "0,0,0")) - (rule "polySimp_mulLiterals" (formula "14") (term "0,0,0,0")) - (rule "times_zero_2" (formula "14") (term "1,0,0,0")) - (rule "polySimp_elimOne" (formula "14") (term "0,0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "14") (term "1")) - (rule "polySimp_mulComm0" (formula "14") (term "1,1")) - (rule "polySimp_rightDist" (formula "14") (term "1,1")) - (rule "mul_literals" (formula "14") (term "0,1,1")) - (rule "polySimp_mulLiterals" (formula "14") (term "1,1,1")) - (rule "polySimp_elimOne" (formula "14") (term "1,1,1")) - (rule "replace_known_left" (formula "14") (term "1") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "14")) - (rule "inEqSimp_subsumption1" (formula "14") (term "0,0") (ifseqformula "9")) - (rule "leq_literals" (formula "14") (term "0,0,0")) - (builtin "One Step Simplification" (formula "14")) - (rule "pullOutSelect" (formula "14") (term "1,1,0,0") (inst "selectSK=arr_2")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14")) (ifInst "" (formula "7"))) - (rule "applyEqReverse" (formula "15") (term "1,1,0,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "andRight" (formula "14")) - (branch - (rule "allRight" (formula "14") (inst "sk=j_0")) - (rule "orRight" (formula "14")) - (rule "orRight" (formula "14")) - (rule "inEqSimp_geqRight" (formula "16")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_leqRight" (formula "15")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_geqRight" (formula "16")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "add_zero_left" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "3")) - (rule "polySimp_mulComm0" (formula "3") (term "1")) - (rule "polySimp_rightDist" (formula "3") (term "1")) - (rule "mul_literals" (formula "3") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "3") (term "1,1")) - (rule "polySimp_elimOne" (formula "3") (term "1,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1")) - (rule "polySimp_elimOne" (formula "1") (term "1")) - (rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=arr_3")) - (rule "simplifySelectOfAnon" (formula "3")) - (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "17")) (ifInst "" (formula "10"))) - (rule "applyEqReverse" (formula "4") (term "0") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "inEqSimp_exactShadow3" (formula "2") (ifseqformula "1")) - (rule "times_zero_1" (formula "2") (term "0,0")) - (rule "add_zero_left" (formula "2") (term "0")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "13")) - (rule "leq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "allLeft" (formula "15") (inst "t=Z(1(#))")) - (rule "replaceKnownSelect_taclet000000110100_4" (formula "15") (term "0,1")) - (rule "replaceKnownAuxiliaryConstant_taclet000000110100_5" (formula "15") (term "0,1")) - (rule "leq_literals" (formula "15") (term "0,0")) - (builtin "One Step Simplification" (formula "15")) - (rule "inEqSimp_commuteGeq" (formula "15") (term "0")) - (rule "inEqSimp_commuteGeq" (formula "15") (term "1")) - (rule "cut_direct" (formula "15") (term "0")) - (branch "CUT: i_0 <= 1 TRUE" - (builtin "One Step Simplification" (formula "16")) - (rule "true_left" (formula "16")) - (rule "inEqSimp_antiSymm" (formula "12") (ifseqformula "15")) - (rule "applyEqRigid" (formula "17") (term "1,1,0,0") (ifseqformula "12")) - (rule "applyEqRigid" (formula "1") (term "1") (ifseqformula "12")) - (rule "applyEqRigid" (formula "4") (term "0,2,1,1") (ifseqformula "12")) - (rule "applyEqRigid" (formula "15") (term "1,1") (ifseqformula "12")) - (rule "add_literals" (formula "15") (term "1")) - (rule "applyEqRigid" (formula "16") (term "0") (ifseqformula "12")) - (rule "leq_literals" (formula "16")) - (rule "true_left" (formula "16")) - (rule "applyEqRigid" (formula "13") (term "0") (ifseqformula "12")) - (rule "qeq_literals" (formula "13")) - (rule "true_left" (formula "13")) - (rule "applyEqRigid" (formula "7") (term "1,1") (ifseqformula "12")) - (rule "add_literals" (formula "7") (term "1")) - (rule "inEqSimp_antiSymm" (formula "12") (ifseqformula "13")) - (rule "applyEqRigid" (formula "15") (term "0,2,1,1,0") (ifseqformula "12")) - (rule "applyEq" (formula "4") (term "0,2,0") (ifseqformula "12")) - (rule "inEqSimp_homoInEq1" (formula "4")) - (rule "polySimp_addComm1" (formula "4") (term "0")) - (rule "applyEq" (formula "14") (term "0") (ifseqformula "12")) - (rule "leq_literals" (formula "14")) - (rule "true_left" (formula "14")) - (rule "applyEq" (formula "13") (term "0") (ifseqformula "12")) - (rule "qeq_literals" (formula "13")) - (rule "true_left" (formula "13")) - (rule "applyEqRigid" (formula "5") (term "1,1") (ifseqformula "12")) - (rule "add_zero_right" (formula "5") (term "1")) - (rule "inEqSimp_sepPosMonomial0" (formula "4")) - (rule "polySimp_mulComm0" (formula "4") (term "1")) - (rule "polySimp_rightDist" (formula "4") (term "1")) - (rule "mul_literals" (formula "4") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "4") (term "1,1")) - (rule "polySimp_elimOne" (formula "4") (term "1,1")) - (rule "inEqSimp_subsumption1" (formula "5") (ifseqformula "6")) - (rule "leq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "true_left" (formula "5")) - (rule "inEqSimp_or_antiSymm0" (formula "12") (term "0,0")) - (rule "add_literals" (formula "12") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "12")) - (rule "add_literals" (formula "12") (term "1,0,0,0")) - (rule "commute_or" (formula "12") (term "0")) - (builtin "One Step Simplification" (formula "12")) - (rule "pullOutSelect" (formula "12") (term "0") (inst "selectSK=arr_4")) - (rule "simplifySelectOfAnon" (formula "12")) - (builtin "One Step Simplification" (formula "12") (ifInst "" (formula "14")) (ifInst "" (formula "7"))) - (rule "applyEqReverse" (formula "13") (term "0") (ifseqformula "12")) - (rule "hideAuxiliaryEq" (formula "12")) - (rule "inEqSimp_homoInEq1" (formula "12")) - (rule "polySimp_pullOutFactor1" (formula "12") (term "0")) - (rule "add_literals" (formula "12") (term "1,0")) - (rule "times_zero_1" (formula "12") (term "0")) - (rule "leq_literals" (formula "12")) - (rule "true_left" (formula "12")) - (opengoal " ") - ) - (branch "CUT: i_0 <= 1 FALSE" - (builtin "One Step Simplification" (formula "15")) - (rule "inEqSimp_leqRight" (formula "17")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "inEqSimp_subsumption1" (formula "13") (ifseqformula "1")) - (rule "leq_literals" (formula "13") (term "0")) - (builtin "One Step Simplification" (formula "13")) - (rule "true_left" (formula "13")) - (rule "inEqSimp_exactShadow3" (formula "5") (ifseqformula "15")) - (rule "polySimp_rightDist" (formula "5") (term "0,0")) - (rule "mul_literals" (formula "5") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "5") (term "0")) - (rule "inEqSimp_sepNegMonomial1" (formula "5")) - (rule "polySimp_mulLiterals" (formula "5") (term "0")) - (rule "polySimp_elimOne" (formula "5") (term "0")) - (rule "allLeft" (formula "17") (inst "t=j_0")) - (rule "replaceKnownSelect_taclet0000000110100_6" (formula "17") (term "0,1")) - (rule "replaceKnownAuxiliaryConstant_taclet0000000110100_7" (formula "17") (term "0,1")) - (rule "inEqSimp_commuteGeq" (formula "17") (term "1")) - (rule "inEqSimp_contradInEq1" (formula "17") (term "0,0") (ifseqformula "3")) - (rule "qeq_literals" (formula "17") (term "0,0,0")) - (builtin "One Step Simplification" (formula "17")) - (rule "cut_direct" (formula "17") (term "0")) - (branch "CUT: j_0 >= i_0 TRUE" - (builtin "One Step Simplification" (formula "18")) - (rule "true_left" (formula "18")) - (rule "inEqSimp_antiSymm" (formula "17") (ifseqformula "2")) - (rule "applyEq" (formula "18") (term "0") (ifseqformula "17")) - (rule "inEqSimp_homoInEq1" (formula "18")) - (rule "polySimp_pullOutFactor1" (formula "18") (term "0")) - (rule "add_literals" (formula "18") (term "1,0")) - (rule "times_zero_1" (formula "18") (term "0")) - (rule "leq_literals" (formula "18")) - (rule "true_left" (formula "18")) - (rule "applyEqRigid" (formula "2") (term "0") (ifseqformula "17")) - (rule "inEqSimp_homoInEq0" (formula "2")) - (rule "polySimp_pullOutFactor1" (formula "2") (term "0")) - (rule "add_literals" (formula "2") (term "1,0")) - (rule "times_zero_1" (formula "2") (term "0")) - (rule "qeq_literals" (formula "2")) - (rule "true_left" (formula "2")) - (rule "applyEq" (formula "2") (term "0") (ifseqformula "16")) - (rule "applyEq" (formula "3") (term "0,2,0") (ifseqformula "16")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "1")) - (rule "leq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (opengoal " ") - ) - (branch "CUT: j_0 >= i_0 FALSE" - (builtin "One Step Simplification" (formula "17")) - (rule "inEqSimp_geqRight" (formula "19")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "inEqSimp_subsumption0" (formula "3") (ifseqformula "1")) - (rule "inEqSimp_homoInEq0" (formula "3") (term "0")) - (rule "polySimp_mulComm0" (formula "3") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "3") (term "1,0,0")) - (rule "mul_literals" (formula "3") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "3") (term "0,0")) - (rule "polySimp_addComm0" (formula "3") (term "0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "3") (term "0,0")) - (rule "add_literals" (formula "3") (term "1,1,0,0")) - (rule "times_zero_1" (formula "3") (term "1,0,0")) - (rule "add_zero_right" (formula "3") (term "0,0")) - (rule "qeq_literals" (formula "3") (term "0")) - (builtin "One Step Simplification" (formula "3")) - (rule "true_left" (formula "3")) - (rule "inEqSimp_exactShadow3" (formula "3") (ifseqformula "1")) - (rule "times_zero_1" (formula "3") (term "0,0")) - (rule "add_zero_left" (formula "3") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "3")) - (rule "mul_literals" (formula "3") (term "1")) - (rule "inEqSimp_subsumption1" (formula "3") (ifseqformula "2")) - (rule "leq_literals" (formula "3") (term "0")) - (builtin "One Step Simplification" (formula "3")) - (rule "true_left" (formula "3")) - (rule "inEqSimp_exactShadow3" (formula "6") (ifseqformula "17")) - (rule "polySimp_rightDist" (formula "6") (term "0,0")) - (rule "mul_literals" (formula "6") (term "0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "6")) - (rule "polySimp_mulComm0" (formula "6") (term "1")) - (rule "polySimp_rightDist" (formula "6") (term "1")) - (rule "mul_literals" (formula "6") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "6") (term "1,1")) - (rule "polySimp_elimOne" (formula "6") (term "1,1")) - (rule "inEqSimp_exactShadow3" (formula "6") (ifseqformula "4")) - (rule "polySimp_rightDist" (formula "6") (term "0,0")) - (rule "mul_literals" (formula "6") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "6") (term "0")) - (rule "polySimp_addAssoc" (formula "6") (term "0,0")) - (rule "add_literals" (formula "6") (term "0,0,0")) - (rule "inEqSimp_sepNegMonomial1" (formula "6")) - (rule "polySimp_mulLiterals" (formula "6") (term "0")) - (rule "polySimp_elimOne" (formula "6") (term "0")) - (rule "inEqSimp_subsumption0" (formula "5") (ifseqformula "6")) - (rule "inEqSimp_homoInEq0" (formula "5") (term "0")) - (rule "polySimp_mulComm0" (formula "5") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "5") (term "1,0,0")) - (rule "mul_literals" (formula "5") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "5") (term "0,0")) - (rule "polySimp_addComm1" (formula "5") (term "0,0,0")) - (rule "add_literals" (formula "5") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "5") (term "0,0")) - (rule "add_literals" (formula "5") (term "1,1,0,0")) - (rule "times_zero_1" (formula "5") (term "1,0,0")) - (rule "add_zero_right" (formula "5") (term "0,0")) - (rule "qeq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "true_left" (formula "5")) - (opengoal " ") - ) - ) - ) - (branch - (rule "allRight" (formula "14") (inst "sk=f_0")) - (rule "allRight" (formula "14") (inst "sk=o_0")) - (rule "orRight" (formula "14")) - (rule "pullOutSelect" (formula "15") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "applyEqReverse" (formula "16") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "closeTrue" (formula "16")) - ) - ) - (branch "if x_10 false" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "12")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "add_zero_left" (formula "1") (term "0,0")) - (rule "blockEmpty" (formula "14") (term "1")) - (rule "blockEmpty" (formula "14") (term "1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1")) - (rule "polySimp_elimOne" (formula "1") (term "1")) - (rule "postincrement" (formula "14") (term "1")) - (rule "compound_int_cast_expression" (formula "14") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_13")) - (rule "remove_parentheses_right" (formula "14") (term "1")) - (rule "assignmentAdditionInt" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "translateJavaAddInt" (formula "14") (term "0,1,0")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "14") (term "1")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "tryEmpty" (formula "14") (term "1")) - (rule "methodCallEmpty" (formula "14") (term "1")) - (rule "emptyModality" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "4")) (ifInst "" (formula "10"))) - (rule "replaceKnownSelect_taclet110100_0" (formula "14") (term "1,1,0,1,0,0")) - (rule "replaceKnownAuxiliaryConstant_taclet110100_1" (formula "14") (term "1,1,0,1,0,0")) - (rule "eqSymm" (formula "14") (term "1,0,0,1,0")) - (rule "polySimp_mulComm0" (formula "14") (term "0,0,1")) - (rule "polySimp_rightDist" (formula "14") (term "0,0,1")) - (rule "mul_literals" (formula "14") (term "0,0,0,1")) - (rule "polySimp_addAssoc" (formula "14") (term "1,1,0,0,0")) - (rule "add_literals" (formula "14") (term "0,1,1,0,0,0")) - (rule "add_zero_left" (formula "14") (term "1,1,0,0,0")) - (rule "precOfInt" (formula "14") (term "1")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "1,1")) - (rule "polySimp_rightDist" (formula "14") (term "1,0,0,1,1")) - (rule "polySimp_mulAssoc" (formula "14") (term "0,1,0,0,1,1")) - (rule "polySimp_mulComm0" (formula "14") (term "0,0,1,0,0,1,1")) - (rule "polySimp_mulLiterals" (formula "14") (term "0,1,0,0,1,1")) - (rule "polySimp_elimOne" (formula "14") (term "0,1,0,0,1,1")) - (rule "polySimp_addAssoc" (formula "14") (term "0,0,1,1")) - (rule "polySimp_addAssoc" (formula "14") (term "0,1,1")) - (rule "polySimp_addComm1" (formula "14") (term "0,0,1,1")) - (rule "polySimp_pullOutFactor2b" (formula "14") (term "0,1,1")) - (rule "add_literals" (formula "14") (term "1,1,0,1,1")) - (rule "times_zero_1" (formula "14") (term "1,0,1,1")) - (rule "add_zero_right" (formula "14") (term "0,1,1")) - (rule "polySimp_addAssoc" (formula "14") (term "0,1,1")) - (rule "polySimp_addComm1" (formula "14") (term "0,0,1,1")) - (rule "add_literals" (formula "14") (term "0,0,0,1,1")) - (rule "add_zero_left" (formula "14") (term "0,0,1,1")) - (rule "polySimp_pullOutFactor1" (formula "14") (term "0,1,1")) - (rule "add_literals" (formula "14") (term "1,0,1,1")) - (rule "times_zero_1" (formula "14") (term "0,1,1")) - (rule "leq_literals" (formula "14") (term "1,1")) - (builtin "One Step Simplification" (formula "14")) - (rule "inEqSimp_homoInEq1" (formula "14") (term "0,0,0,0")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,0,0,0")) - (rule "polySimp_rightDist" (formula "14") (term "1,0,0,0,0,0")) - (rule "mul_literals" (formula "14") (term "0,1,0,0,0,0,0")) - (rule "polySimp_addAssoc" (formula "14") (term "0,0,0,0,0")) - (rule "add_literals" (formula "14") (term "0,0,0,0,0,0")) - (rule "add_zero_left" (formula "14") (term "0,0,0,0,0")) - (rule "inEqSimp_homoInEq0" (formula "14") (term "1")) - (rule "times_zero_2" (formula "14") (term "1,0,1")) - (rule "add_zero_right" (formula "14") (term "0,1")) - (rule "inEqSimp_invertInEq0" (formula "14") (term "0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "14") (term "0,0,0,0,0")) - (rule "times_zero_2" (formula "14") (term "1,0,0,0,0")) - (rule "polySimp_elimOne" (formula "14") (term "0,0,0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "14") (term "1")) - (rule "polySimp_mulComm0" (formula "14") (term "1,1")) - (rule "polySimp_rightDist" (formula "14") (term "1,1")) - (rule "mul_literals" (formula "14") (term "0,1,1")) - (rule "polySimp_mulLiterals" (formula "14") (term "1,1,1")) - (rule "polySimp_elimOne" (formula "14") (term "1,1,1")) - (rule "replace_known_left" (formula "14") (term "1") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "14")) - (rule "inEqSimp_subsumption1" (formula "14") (term "0,0,0") (ifseqformula "9")) - (rule "leq_literals" (formula "14") (term "0,0,0,0")) - (builtin "One Step Simplification" (formula "14")) - (rule "inEqSimp_subsumption0" (formula "14") (term "0,0") (ifseqformula "11")) - (rule "inEqSimp_homoInEq0" (formula "14") (term "0,0,0")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,0,0")) - (rule "polySimp_rightDist" (formula "14") (term "1,0,0,0,0")) - (rule "mul_literals" (formula "14") (term "0,1,0,0,0,0")) - (rule "polySimp_addAssoc" (formula "14") (term "0,0,0,0")) - (rule "polySimp_addComm0" (formula "14") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "14") (term "0,0,0,0")) - (rule "add_literals" (formula "14") (term "1,1,0,0,0,0")) - (rule "times_zero_1" (formula "14") (term "1,0,0,0,0")) - (rule "add_zero_right" (formula "14") (term "0,0,0,0")) - (rule "qeq_literals" (formula "14") (term "0,0,0")) - (builtin "One Step Simplification" (formula "14")) - (rule "andRight" (formula "14")) - (branch - (rule "allRight" (formula "14") (inst "sk=j_0")) - (rule "orRight" (formula "14")) - (rule "orRight" (formula "14")) - (rule "inEqSimp_geqRight" (formula "16")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_leqRight" (formula "15")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_geqRight" (formula "16")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "add_zero_left" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "3")) - (rule "polySimp_mulComm0" (formula "3") (term "1")) - (rule "polySimp_rightDist" (formula "3") (term "1")) - (rule "mul_literals" (formula "3") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "3") (term "1,1")) - (rule "polySimp_elimOne" (formula "3") (term "1,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1")) - (rule "polySimp_elimOne" (formula "1") (term "1")) - (rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=arr_2")) - (rule "simplifySelectOfAnon" (formula "3")) - (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "17")) (ifInst "" (formula "10"))) - (rule "applyEqReverse" (formula "4") (term "0") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "inEqSimp_homoInEq0" (formula "3")) - (rule "polySimp_addComm1" (formula "3") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "3")) - (rule "polySimp_mulComm0" (formula "3") (term "1")) - (rule "polySimp_rightDist" (formula "3") (term "1")) - (rule "mul_literals" (formula "3") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "3") (term "1,1")) - (rule "polySimp_elimOne" (formula "3") (term "1,1")) - (rule "inEqSimp_exactShadow3" (formula "2") (ifseqformula "1")) - (rule "times_zero_1" (formula "2") (term "0,0")) - (rule "add_zero_left" (formula "2") (term "0")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "13")) - (rule "leq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "inEqSimp_exactShadow3" (formula "3") (ifseqformula "4")) - (rule "polySimp_rightDist" (formula "3") (term "0,0")) - (rule "mul_literals" (formula "3") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "3") (term "0")) - (rule "inEqSimp_sepNegMonomial1" (formula "3")) - (rule "polySimp_mulLiterals" (formula "3") (term "0")) - (rule "polySimp_elimOne" (formula "3") (term "0")) - (rule "allLeft" (formula "16") (inst "t=j_0")) - (rule "replaceKnownSelect_taclet0100000110100_4" (formula "16") (term "0,1")) - (rule "replaceKnownAuxiliaryConstant_taclet0100000110100_5" (formula "16") (term "0,1")) - (rule "inEqSimp_commuteGeq" (formula "16") (term "1")) - (rule "inEqSimp_contradInEq1" (formula "16") (term "1") (ifseqformula "4")) - (rule "inEqSimp_homoInEq1" (formula "16") (term "0,1")) - (rule "polySimp_pullOutFactor1b" (formula "16") (term "0,0,1")) - (rule "add_literals" (formula "16") (term "1,1,0,0,1")) - (rule "times_zero_1" (formula "16") (term "1,0,0,1")) - (rule "add_zero_right" (formula "16") (term "0,0,1")) - (rule "leq_literals" (formula "16") (term "0,1")) - (builtin "One Step Simplification" (formula "16")) - (rule "inEqSimp_contradInEq1" (formula "16") (term "0") (ifseqformula "2")) - (rule "qeq_literals" (formula "16") (term "0,0")) - (builtin "One Step Simplification" (formula "16")) - (rule "inEqSimp_antiSymm" (formula "16") (ifseqformula "1")) - (rule "applyEqRigid" (formula "2") (term "0") (ifseqformula "16")) - (rule "applyEqRigid" (formula "3") (term "0,2,0") (ifseqformula "16")) - (rule "inEqSimp_homoInEq0" (formula "3")) - (rule "polySimp_pullOutFactor1b" (formula "3") (term "0")) - (rule "add_literals" (formula "3") (term "1,1,0")) - (rule "times_zero_1" (formula "3") (term "1,0")) - (rule "add_zero_right" (formula "3") (term "0")) - (rule "qeq_literals" (formula "3")) - (rule "closeFalse" (formula "3")) - ) - (branch - (rule "allRight" (formula "14") (inst "sk=f_0")) - (rule "allRight" (formula "14") (inst "sk=o_0")) - (rule "orRight" (formula "14")) - (rule "pullOutSelect" (formula "15") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "applyEqReverse" (formula "16") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "closeTrue" (formula "16")) - ) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but minIndex Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "blockThrow" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "polySimp_mulComm0" (formula "2") (term "1")) - (rule "polySimp_rightDist" (formula "2") (term "1")) - (rule "mul_literals" (formula "2") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "2") (term "1,1")) - (rule "polySimp_elimOne" (formula "2") (term "1,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "9")) - (rule "leq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "9")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_exactShadow3" (formula "2") (ifseqformula "1")) - (rule "mul_literals" (formula "2") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_subsumption1" (formula "10") (ifseqformula "2")) - (rule "leq_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "10")) - (rule "inEqSimp_exactShadow3" (formula "4") (ifseqformula "1")) - (rule "polySimp_rightDist" (formula "4") (term "0,0")) - (rule "mul_literals" (formula "4") (term "0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "4")) - (rule "polySimp_mulComm0" (formula "4") (term "1")) - (rule "polySimp_rightDist" (formula "4") (term "1")) - (rule "mul_literals" (formula "4") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "4") (term "1,1")) - (rule "polySimp_elimOne" (formula "4") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "11") (ifseqformula "4")) - (rule "andLeft" (formula "11")) - (rule "inEqSimp_homoInEq1" (formula "11")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0")) - (rule "mul_literals" (formula "11") (term "0,1,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "11") (term "0")) - (rule "add_literals" (formula "11") (term "1,1,0")) - (rule "times_zero_1" (formula "11") (term "1,0")) - (rule "add_zero_right" (formula "11") (term "0")) - (rule "leq_literals" (formula "11")) - (rule "closeFalse" (formula "11")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but i Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "blockThrow" (formula "13") (term "1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "0") (ifseqformula "3")) - (rule "inEqSimp_homoInEq1" (formula "1") (term "0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "8")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_7 false" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Use Case" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "5")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "5")) - (rule "inEqSimp_ltToLeq" (formula "9") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "9") (term "1,0,0,1,0,0")) - (rule "inEqSimp_ltToLeq" (formula "8")) - (rule "polySimp_mulComm0" (formula "8") (term "1,0,0")) - (rule "inEqSimp_commuteLeq" (formula "9") (term "1,0")) - (rule "inEqSimp_commuteLeq" (formula "6")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "b_1")) - (rule "blockEmpty" (formula "13") (term "1,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "9") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "9") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "9") (term "1,1,0,0")) - (rule "mul_literals" (formula "9") (term "0,1,1,0,0")) - (rule "polySimp_mulLiterals" (formula "9") (term "1,1,1,0,0")) - (rule "polySimp_elimOne" (formula "9") (term "1,1,1,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "8")) - (rule "polySimp_mulComm0" (formula "8") (term "1")) - (rule "polySimp_rightDist" (formula "8") (term "1")) - (rule "mul_literals" (formula "8") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "8") (term "1,1")) - (rule "polySimp_elimOne" (formula "8") (term "1,1")) - (rule "pullOutSelect" (formula "9") (term "1,1,0") (inst "selectSK=arr_0")) - (rule "simplifySelectOfAnon" (formula "9")) - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "13")) (ifInst "" (formula "2"))) - (rule "applyEqReverse" (formula "10") (term "1,1,0") (ifseqformula "9")) - (rule "hideAuxiliaryEq" (formula "9")) - (rule "inEqSimp_exactShadow3" (formula "7") (ifseqformula "8")) - (rule "times_zero_1" (formula "7") (term "0,0")) - (rule "add_zero_left" (formula "7") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "7")) - (rule "mul_literals" (formula "7") (term "1")) - (rule "nnf_imp2or" (formula "9") (term "0")) - (rule "nnf_notAnd" (formula "9") (term "0,0")) - (rule "inEqSimp_notGeq" (formula "9") (term "0,0,0")) - (rule "times_zero_1" (formula "9") (term "1,0,0,0,0,0")) - (rule "add_zero_right" (formula "9") (term "0,0,0,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "9") (term "0,0,0")) - (rule "mul_literals" (formula "9") (term "1,0,0,0")) - (rule "inEqSimp_notLeq" (formula "9") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "9") (term "1,0,0,1,0,0")) - (rule "mul_literals" (formula "9") (term "0,1,0,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "9") (term "0,0,1,0,0")) - (rule "add_literals" (formula "9") (term "0,0,0,1,0,0")) - (rule "add_zero_left" (formula "9") (term "0,0,1,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "9") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "9") (term "1,1,0,0")) - (rule "polySimp_elimOne" (formula "9") (term "1,1,0,0")) - (rule "compound_less_than_comparison_2" (formula "13") (term "1") (inst "#v0=x") (inst "#v1=x_1")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x_5")) - (rule "assignment" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x_6")) - (rule "assignment_read_length" (formula "13") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "12"))) - (rule "false_right" (formula "13")) - (rule "less_than_comparison_simple" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "inEqSimp_ltToLeq" (formula "13") (term "0,0,1,0")) - (rule "polySimp_mulComm0" (formula "13") (term "1,0,0,0,0,1,0")) - (rule "polySimp_addComm1" (formula "13") (term "0,0,0,1,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "13") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "13") (term "0,0,0,1,0")) - (rule "polySimp_elimOne" (formula "13") (term "0,0,0,1,0")) - (rule "methodCallEmpty" (formula "13") (term "1")) - (rule "emptyModality" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "impRight" (formula "13")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "10")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "add_zero_left" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1")) - (rule "polySimp_elimOne" (formula "1") (term "1")) - (rule "inEqSimp_antiSymm" (formula "7") (ifseqformula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "7")) - (rule "inEqSimp_homoInEq0" (formula "1")) - (rule "polySimp_pullOutFactor1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,0")) - (rule "times_zero_1" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEq" (formula "11") (term "0") (ifseqformula "6")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "6")) - (rule "inEqSimp_homoInEq1" (formula "7")) - (rule "polySimp_pullOutFactor1" (formula "7") (term "0")) - (rule "add_literals" (formula "7") (term "1,0")) - (rule "times_zero_1" (formula "7") (term "0")) - (rule "leq_literals" (formula "7")) - (rule "true_left" (formula "7")) - (rule "applyEq" (formula "11") (term "0") (ifseqformula "6")) - (rule "inEqSimp_contradEq7" (formula "11") (ifseqformula "5")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "leq_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "false_right" (formula "11")) - (rule "inEqSimp_strengthen1" (formula "5") (ifseqformula "10")) - (rule "add_literals" (formula "5") (term "1")) - (rule "inEqSimp_contradEq7" (formula "10") (ifseqformula "5")) - (rule "mul_literals" (formula "10") (term "1,0,0")) - (rule "add_literals" (formula "10") (term "0,0")) - (rule "leq_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "false_right" (formula "10")) - (rule "methodCallReturn" (formula "11") (term "1")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "tryEmpty" (formula "11") (term "1")) - (rule "emptyModality" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "10")) (ifInst "" (formula "10"))) - (rule "replaceKnownSelect_taclet210100_0" (formula "11") (term "1,1,0,1,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet210100_1" (formula "11") (term "1,1,0,1,1,0")) - (rule "eqSymm" (formula "11") (term "1,0,0,1")) - (rule "applyEq" (formula "11") (term "1,1,0,0,1,1,0") (ifseqformula "6")) - (rule "replace_known_left" (formula "11") (term "1,1,0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "11")) - (rule "applyEq" (formula "11") (term "0,0,0") (ifseqformula "6")) - (rule "inEqSimp_contradEq7" (formula "11") (term "1,0") (ifseqformula "7")) - (rule "mul_literals" (formula "11") (term "1,0,0,1,0")) - (rule "add_zero_left" (formula "11") (term "0,0,1,0")) - (rule "leq_literals" (formula "11") (term "0,1,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "inEqSimp_contradEq7" (formula "11") (term "0,0") (ifseqformula "5")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0,0,0")) - (rule "leq_literals" (formula "11") (term "0,0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "allRight" (formula "11") (inst "sk=f_0")) - (rule "allRight" (formula "11") (inst "sk=o_0")) - (rule "orRight" (formula "11")) - (rule "pullOutSelect" (formula "12") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "applyEqReverse" (formula "13") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "closeTrue" (formula "13")) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "if x false" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "replace_known_left" (formula "3") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "true_left" (formula "3")) - (rule "blockReturn" (formula "4") (term "1")) - (rule "methodCallReturn" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1")) (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "4")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsCalendar/oracle/Calendar.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsCalendar/oracle/Calendar.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsCalendar/oracle/Calendar.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsCalendar/test/Calendar.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsCalendar/test/Calendar.java deleted file mode 100644 index 734418f8f6f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsCalendar/test/Calendar.java +++ /dev/null @@ -1,39 +0,0 @@ -public class Calendar { - protected /*@ non_null @*/ Entry[] entries = new Entry[8]; - - /*@ invariant entrySize >= 0 && entrySize < entries.length; - @*/ - protected int entrySize = 0; - - /*@ normal_behavior - @ ensures entries[\old(entrySize)] == entry; - @ ensures entrySize == \old(entrySize) + 1; - @ assignable entries, entries[entrySize], entrySize; - @*/ - public void addEntry(/*@ non_null @*/ Entry entry) { - if (entrySize == entries.length) { - Entry[] newEntries = new Entry[entries.length * 2]; - /*@ loop_invariant i >= 0 && i <= entries.length; - @ loop_invariant (\forall int j; j >= 0 && j < i; - @ newEntries[j] == entries[j]); - @ decreasing entries.length - i; - @ assignable newEntries[*], i; - @*/ - for (int i = 0; i < entries.length; i++) { - newEntries[i] = entries[i]; - //XXX: Loop Body Termination (of the 'Body Preserves Invariant' branch) - } - entries = newEntries; - //XXX: Continuation After Then - } - else { - //XXX: Continuation After Else - } - entries[entrySize] = entry; - entrySize++; - } - - public static class Entry { - } -} - 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 deleted file mode 100644 index 4d56002be68..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsCalendar/test/Calendar.proof +++ /dev/null @@ -1,727 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jul 18 10:59:15 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , moreSeqRules-moreSeqRules\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , sequences-sequences\\:on , integerSimplificationRules-integerSimplificationRules\\:full , runtimeExceptions-runtimeExceptions\\:allow , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , wdOperator-wdOperator\\:L , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "Calendar[Calendar::addEntry(Calendar.Entry)].JML normal_behavior operation contract.0", - "contract": "Calendar[Calendar::addEntry(Calendar.Entry)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "2934482200") - -(branch "dummy ID" -(rule "translateJavaAddInt" (formula "1") (term "1,0,1,0,0,0,1,1") (newnames "entry,self,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "5")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "eqSymm" (formula "9") (term "1,0,0,1,0,1")) -(rule "replace_known_right" (formula "4") (term "0") (ifseqformula "8")) -(builtin "One Step Simplification" (formula "4")) -(rule "polySimp_homoEq" (formula "9") (term "0,1,0,0,0,1")) -(rule "polySimp_addComm0" (formula "9") (term "0,0,0,1,0,0,0,1")) -(rule "polySimp_addComm1" (formula "9") (term "0,0,1,0,0,0,1")) -(rule "assignment" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "polySimp_sepPosMonomial" (formula "9") (term "0,1,0,0,0,1")) -(rule "polySimp_mulComm0" (formula "9") (term "1,0,1,0,0,0,1")) -(rule "polySimp_rightDist" (formula "9") (term "1,0,1,0,0,0,1")) -(rule "polySimp_mulLiterals" (formula "9") (term "1,1,0,1,0,0,0,1")) -(rule "mul_literals" (formula "9") (term "0,1,0,1,0,0,0,1")) -(rule "polySimp_elimOne" (formula "9") (term "1,1,0,1,0,0,0,1")) -(rule "elementOfUnion" (formula "9") (term "0,0,0,0,1,0,1")) -(rule "elementOfSingleton" (formula "9") (term "1,0,0,0,0,1,0,1")) -(rule "elementOfUnion" (formula "9") (term "0,0,0,0,0,1,0,1")) -(rule "elementOfSingleton" (formula "9") (term "0,0,0,0,0,0,1,0,1")) -(rule "elementOfSingleton" (formula "9") (term "1,0,0,0,0,0,1,0,1")) -(rule "Class_invariant_axiom_for_Calendar" (formula "6") (inst "sk=sk_0") (ifseqformula "3")) -(branch "Use Axiom" - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "7")) - (rule "inEqSimp_ltToLeq" (formula "8")) - (rule "polySimp_mulComm0" (formula "8") (term "1,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "8")) - (rule "polySimp_mulComm0" (formula "8") (term "1")) - (rule "polySimp_rightDist" (formula "8") (term "1")) - (rule "mul_literals" (formula "8") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "8") (term "1,1")) - (rule "polySimp_elimOne" (formula "8") (term "1,1")) - (rule "nonNull" (formula "6") (inst "i=i")) - (rule "greater_literals" (formula "6") (term "0,1")) - (builtin "One Step Simplification" (formula "6")) - (rule "sub_literals" (formula "6") (term "2,1,0,1")) - (builtin "One Step Simplification" (formula "6")) - (rule "andLeft" (formula "6")) - (rule "notLeft" (formula "6")) - (rule "narrowSelectArrayType" (formula "6") (term "0,0,1,0") (ifseqformula "1") (ifseqformula "9")) - (rule "inEqSimp_ltToLeq" (formula "6") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "6") (term "1,0,0,1,0,0")) - (rule "inEqSimp_commuteLeq" (formula "6") (term "0,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "6") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "6") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "6") (term "1,1,0,0")) - (rule "mul_literals" (formula "6") (term "0,1,1,0,0")) - (rule "polySimp_mulLiterals" (formula "6") (term "1,1,1,0,0")) - (rule "polySimp_elimOne" (formula "6") (term "1,1,1,0,0")) - (rule "inEqSimp_exactShadow3" (formula "7") (ifseqformula "8")) - (rule "times_zero_1" (formula "7") (term "0,0")) - (rule "add_zero_left" (formula "7") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "7")) - (rule "mul_literals" (formula "7") (term "1")) - (rule "nnf_imp2or" (formula "6") (term "0")) - (rule "nnf_notAnd" (formula "6") (term "0,0")) - (rule "inEqSimp_notLeq" (formula "6") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "6") (term "1,0,0,1,0,0")) - (rule "mul_literals" (formula "6") (term "0,1,0,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "6") (term "0,0,1,0,0")) - (rule "add_literals" (formula "6") (term "0,0,0,1,0,0")) - (rule "add_zero_left" (formula "6") (term "0,0,1,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "6") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "6") (term "1,1,0,0")) - (rule "polySimp_elimOne" (formula "6") (term "1,1,0,0")) - (rule "inEqSimp_notGeq" (formula "6") (term "0,0,0")) - (rule "mul_literals" (formula "6") (term "1,0,0,0,0,0")) - (rule "add_literals" (formula "6") (term "0,0,0,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "6") (term "0,0,0")) - (rule "mul_literals" (formula "6") (term "1,0,0,0")) - (rule "methodBodyExpand" (formula "13") (term "1") (newnames "heapBefore_addEntry,savedHeapBefore_addEntry,_entryBefore_addEntry")) - (builtin "One Step Simplification" (formula "13")) - (rule "ifElseUnfold" (formula "13") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x")) - (rule "compound_equality_comparison_2" (formula "13") (term "1") (inst "#v1=x_2") (inst "#v0=x_1")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x_1")) - (rule "assignment_read_attribute_this" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x_2")) - (rule "eval_order_array_access6" (formula "13") (term "1") (inst "#v0=e_arr")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "e_arr")) - (rule "assignment_read_attribute_this" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "assignment_read_length" (formula "13") (term "1")) - (branch "Normal Execution (e_arr != null)" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "10"))) - (rule "false_right" (formula "13")) - (rule "equality_comparison_simple" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "inEqSimp_contradEq3" (formula "13") (term "0,0,1,0") (ifseqformula "9")) - (rule "polySimp_mulComm0" (formula "13") (term "1,0,0,0,0,1,0")) - (rule "polySimp_pullOutFactor1b" (formula "13") (term "0,0,0,0,1,0")) - (rule "add_literals" (formula "13") (term "1,1,0,0,0,0,1,0")) - (rule "times_zero_1" (formula "13") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "13") (term "0,0,0,0,1,0")) - (rule "qeq_literals" (formula "13") (term "0,0,0,1,0")) - (builtin "One Step Simplification" (formula "13")) - (rule "ifElseSplit" (formula "13")) - (branch "if x true" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockEmpty" (formula "13") (term "1")) - (rule "blockEmpty" (formula "13") (term "1")) - (rule "eval_order_array_access1" (formula "13") (term "1") (inst "#v0=e_arr")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "e_arr_1")) - (rule "assignment_read_attribute_this" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "eval_order_array_access2" (formula "13") (term "1") (inst "#v0=x") (inst "#ar1=e_arr_2")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "e_arr_2")) - (rule "assignment" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x_3")) - (rule "assignment_read_attribute_this" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "assignment_to_reference_array_component" (formula "13") (term "1")) - (branch "Normal Execution (e_arr_2 != null)" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11")) (ifInst "" (formula "9"))) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "postincrement_attribute" (formula "14") (term "1") (inst "#v=c")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "c")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "eval_order_access4" (formula "14") (term "1") (inst "#v1=x") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "c_1")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_5")) - (rule "commute_or_2" (formula "7") (term "0")) - (rule "commute_or" (formula "7") (term "0,0")) - (rule "compound_int_cast_expression" (formula "14") (term "1") (inst "#v=x_6")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_6")) - (rule "remove_parentheses_right" (formula "14") (term "1")) - (rule "compound_addition_1" (formula "14") (term "1") (inst "#v=x_7")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_7")) - (rule "assignment_read_attribute" (formula "14") (term "1")) - (branch "Normal Execution (c != null)" - (builtin "One Step Simplification" (formula "15")) - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12"))) - (rule "false_right" (formula "14")) - (rule "dismissNonSelectedField" (formula "14") (term "0,1,0")) - (rule "assignmentAdditionInt" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "translateJavaAddInt" (formula "14") (term "0,1,0")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "14") (term "1")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "assignment_write_attribute" (formula "14") (term "1")) - (branch "Normal Execution (c_1 != null)" - (builtin "One Step Simplification" (formula "15")) - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12"))) - (rule "false_right" (formula "14")) - (rule "methodCallEmpty" (formula "14") (term "1")) - (rule "tryEmpty" (formula "14") (term "1")) - (rule "emptyModality" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "eqSymm" (formula "14") (term "1,0,0,1")) - (rule "polySimp_homoEq" (formula "14") (term "0,1,0")) - (rule "polySimp_addComm1" (formula "14") (term "0,0,1,0")) - (rule "dismissNonSelectedField" (formula "14") (term "0,0,0")) - (rule "dismissNonSelectedField" (formula "14") (term "1,0,0,0")) - (rule "dismissNonSelectedField" (formula "14") (term "1,0,0,0")) - (rule "polySimp_sepPosMonomial" (formula "14") (term "0,1,0")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,1,0")) - (rule "polySimp_rightDist" (formula "14") (term "1,0,1,0")) - (rule "polySimp_mulLiterals" (formula "14") (term "1,1,0,1,0")) - (rule "mul_literals" (formula "14") (term "0,1,0,1,0")) - (rule "polySimp_elimOne" (formula "14") (term "1,1,0,1,0")) - (rule "pullOutSelect" (formula "14") (term "0,0,0") (inst "selectSK=arr_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "15") (term "0,0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "pullOutSelect" (formula "14") (term "0,0,0") (inst "selectSK=Calendar_entrySize_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "15") (term "0,0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "Class_invariant_axiom_for_Calendar" (formula "14") (term "0") (inst "sk=sk_1") (ifseqformula "4")) - (branch "Use Axiom" - (rule "replaceKnownSelect_taclet000100_2" (formula "14") (term "0,1,1,0")) - (rule "replaceKnownSelect_taclet000100_2" (formula "14") (term "0,0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet000100_3" (formula "14") (term "0,1,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet000100_3" (formula "14") (term "0,0,1,0")) - (rule "dismissNonSelectedField" (formula "14") (term "0,1,1,1,0")) - (rule "dismissNonSelectedField" (formula "14") (term "1,0,0")) - (rule "dismissNonSelectedField" (formula "14") (term "0,1,1,1,0")) - (rule "dismissNonSelectedField" (formula "14") (term "1,0,0")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "14") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "14") (term "0,0,1,1,0")) - (rule "add_literals" (formula "14") (term "0,0,0,1,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "14") (term "0,1,0")) - (rule "mul_literals" (formula "14") (term "1,0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "14") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "14") (term "1,1,1,0")) - (rule "polySimp_rightDist" (formula "14") (term "1,1,1,0")) - (rule "polySimp_mulLiterals" (formula "14") (term "1,1,1,1,0")) - (rule "mul_literals" (formula "14") (term "0,1,1,1,0")) - (rule "polySimp_elimOne" (formula "14") (term "1,1,1,1,0")) - (rule "inEqSimp_subsumption1" (formula "14") (term "0,1,0") (ifseqformula "9")) - (rule "leq_literals" (formula "14") (term "0,0,1,0")) - (builtin "One Step Simplification" (formula "14")) - (rule "nonNull" (formula "14") (term "0,0") (inst "i=i")) - (rule "greater_literals" (formula "14") (term "0,1,0,0")) - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "11"))) - (rule "sub_literals" (formula "14") (term "2,1,0,0,0")) - (builtin "One Step Simplification" (formula "14")) - (rule "dismissNonSelectedField" (formula "14") (term "0,0,1,0,0,0")) - (rule "inEqSimp_ltToLeq" (formula "14") (term "1,0,0,0,0")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,1,0,0,0,0")) - (rule "inEqSimp_commuteLeq" (formula "14") (term "0,0,0,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "14") (term "1,0,0,0,0")) - (rule "polySimp_mulComm0" (formula "14") (term "1,1,0,0,0,0")) - (rule "polySimp_rightDist" (formula "14") (term "1,1,0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "14") (term "1,1,1,0,0,0,0")) - (rule "mul_literals" (formula "14") (term "0,1,1,0,0,0,0")) - (rule "polySimp_elimOne" (formula "14") (term "1,1,1,0,0,0,0")) - (rule "nnf_imp2or" (formula "14") (term "0,0,0")) - (rule "nnf_notAnd" (formula "14") (term "0,0,0,0")) - (rule "inEqSimp_notLeq" (formula "14") (term "1,0,0,0,0")) - (rule "polySimp_rightDist" (formula "14") (term "1,0,0,1,0,0,0,0")) - (rule "mul_literals" (formula "14") (term "0,1,0,0,1,0,0,0,0")) - (rule "polySimp_addAssoc" (formula "14") (term "0,0,1,0,0,0,0")) - (rule "add_literals" (formula "14") (term "0,0,0,1,0,0,0,0")) - (rule "add_zero_left" (formula "14") (term "0,0,1,0,0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "14") (term "1,0,0,0,0")) - (rule "polySimp_mulLiterals" (formula "14") (term "1,1,0,0,0,0")) - (rule "polySimp_elimOne" (formula "14") (term "1,1,0,0,0,0")) - (rule "inEqSimp_notGeq" (formula "14") (term "0,0,0,0,0")) - (rule "times_zero_1" (formula "14") (term "1,0,0,0,0,0,0,0")) - (rule "add_zero_right" (formula "14") (term "0,0,0,0,0,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "14") (term "0,0,0,0,0")) - (rule "mul_literals" (formula "14") (term "1,0,0,0,0,0")) - (rule "arrayLengthNotNegative" (formula "8") (term "0")) - (rule "inEqSimp_subsumption1" (formula "8") (ifseqformula "9")) - (rule "leq_literals" (formula "8") (term "0")) - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (rule "arrayLengthIsAnInt" (formula "10") (term "1,1")) - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "10")) - (rule "cut_direct" (formula "14") (term "1,0")) - (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")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0")) - (rule "mul_literals" (formula "11") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "qeq_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "true_left" (formula "11")) - (rule "inEqSimp_exactShadow3" (formula "10") (ifseqformula "1")) - (rule "times_zero_1" (formula "10") (term "0,0")) - (rule "add_zero_left" (formula "10") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "10")) - (rule "mul_literals" (formula "10") (term "1")) - (rule "inEqSimp_subsumption1" (formula "9") (ifseqformula "10")) - (rule "leq_literals" (formula "9") (term "0")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "andRight" (formula "14")) - (branch "Case 1" - (rule "allRight" (formula "14") (inst "sk=i_0")) - (rule "orRight" (formula "14")) - (rule "orRight" (formula "14")) - (rule "notRight" (formula "16")) - (rule "inEqSimp_geqRight" (formula "16")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "16")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial0" (formula "2")) - (rule "polySimp_mulLiterals" (formula "2") (term "0")) - (rule "polySimp_elimOne" (formula "2") (term "0")) - (rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=arr_1")) - (rule "simplifySelectOfStore" (formula "3")) - (builtin "One Step Simplification" (formula "3")) - (rule "castDel" (formula "3") (term "1,0")) - (rule "narrowSelectArrayType" (formula "3") (term "2,0") (ifseqformula "7") (ifseqformula "15")) - (rule "applyEq" (formula "3") (term "1") (ifseqformula "4")) - (rule "ifEqualsNull" (formula "3")) - (rule "replace_known_right" (formula "3") (term "1,0") (ifseqformula "17")) - (builtin "One Step Simplification" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "notLeft" (formula "3")) - (rule "allLeft" (formula "12") (inst "t=i_0")) - (rule "replace_known_left" (formula "12") (term "0,0,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "12")) - (rule "inEqSimp_commuteGeq" (formula "12") (term "1")) - (rule "inEqSimp_contradInEq1" (formula "12") (term "0") (ifseqformula "1")) - (rule "qeq_literals" (formula "12") (term "0,0")) - (builtin "One Step Simplification" (formula "12")) - (rule "inEqSimp_contradInEq1" (formula "12") (ifseqformula "2")) - (rule "andLeft" (formula "12")) - (rule "inEqSimp_homoInEq1" (formula "12")) - (rule "polySimp_pullOutFactor1b" (formula "12") (term "0")) - (rule "add_literals" (formula "12") (term "1,1,0")) - (rule "times_zero_1" (formula "12") (term "1,0")) - (rule "add_zero_right" (formula "12") (term "0")) - (rule "leq_literals" (formula "12")) - (rule "closeFalse" (formula "12")) - ) - (branch "Case 2" - (rule "allRight" (formula "14") (inst "sk=f_0")) - (rule "allRight" (formula "14") (inst "sk=o_0")) - (rule "orRight" (formula "14")) - (rule "orRight" (formula "14")) - (rule "orRight" (formula "14")) - (rule "orRight" (formula "14")) - (rule "pullOutSelect" (formula "18") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "19")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "17")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "16")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "19"))) - (rule "closeFalse" (formula "1")) - ) - ) - (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")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "inEqSimp_antiSymm" (formula "1") (ifseqformula "11")) - (rule "applyEq" (formula "12") (term "0") (ifseqformula "1")) - (rule "inEqSimp_homoInEq0" (formula "12")) - (rule "polySimp_pullOutFactor1" (formula "12") (term "0")) - (rule "add_literals" (formula "12") (term "1,0")) - (rule "times_zero_1" (formula "12") (term "0")) - (rule "qeq_literals" (formula "12")) - (rule "true_left" (formula "12")) - (rule "applyEq" (formula "2") (term "0") (ifseqformula "1")) - (rule "inEqSimp_homoInEq1" (formula "2")) - (rule "polySimp_pullOutFactor1" (formula "2") (term "0")) - (rule "add_literals" (formula "2") (term "1,0")) - (rule "times_zero_1" (formula "2") (term "0")) - (rule "leq_literals" (formula "2")) - (rule "true_left" (formula "2")) - (rule "applyEq" (formula "10") (term "0") (ifseqformula "1")) - (rule "inEqSimp_sepPosMonomial1" (formula "10")) - (rule "mul_literals" (formula "10") (term "1")) - (rule "onlyCreatedObjectsAreReferenced" (formula "10") (term "0") (ifseqformula "3")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "11")) - (builtin "One Step Simplification" (formula "1")) - (rule "arrayLengthNotNegative" (formula "2") (term "1,1")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "11")) - (rule "leq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "arrayLengthIsAnInt" (formula "2") (term "1,1")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (opengoal " ") - ) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "14")) - (rule "closeTrue" (formula "14")) - ) - ) - (branch "Null Reference (c_1 = null)" - (builtin "One Step Simplification" (formula "15")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c = null)" - (builtin "One Step Simplification" (formula "15")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (e_arr_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (e_arr_2 != null, but x_3 Out of Bounds!)" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "inEqSimp_commuteLeq" (formula "1") (term "0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "9")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq0" (formula "1") (ifseqformula "10")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0")) - (rule "polySimp_addComm0" (formula "1") (term "0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "Array Store Exception (incompatible dynamic element type of e_arr_2 and _entry)" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11")) (ifInst "" (formula "9"))) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "2")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "arrayLengthNotNegative" (formula "9") (term "1,1")) - (rule "inEqSimp_subsumption1" (formula "9") (ifseqformula "7")) - (rule "leq_literals" (formula "9") (term "0")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "arrayLengthIsAnInt" (formula "6") (term "1,1,0,0")) - (builtin "One Step Simplification" (formula "6")) - (rule "true_left" (formula "6")) - (rule "onlyCreatedObjectsAreReferenced" (formula "6") (term "0,1,1,0,0") (ifseqformula "1")) - (rule "replace_known_right" (formula "6") (term "0") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "6")) - (rule "throwUnfold" (formula "15") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "a")) - (rule "instanceCreationAssignment" (formula "15") (term "1") (inst "#v0=a_1")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "a_1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "15") (term "1") (inst "#v0=a_2")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "a_2")) - (rule "methodBodyExpand" (formula "15") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) - (builtin "One Step Simplification" (formula "15")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "__NEW__")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "15") (term "1") (inst "#v0=a_3")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "a_3")) - (rule "allocateInstance" (formula "15")) - (builtin "One Step Simplification" (formula "16")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "2")) - (rule "notLeft" (formula "1")) - (rule "blockEmpty" (formula "18") (term "1")) - (rule "assignment" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_,savedHeapBefore_")) - (builtin "One Step Simplification" (formula "18")) - (rule "assignment_write_attribute_this" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallWithinClass" (formula "18") (term "1")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallSuper" (formula "18") (term "1")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallSuper" (formula "18") (term "1")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallSuper" (formula "18") (term "1")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_$prepare_1,savedHeapBefore_$prepare_1")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallSuper" (formula "18") (term "1")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_$prepare_2,savedHeapBefore_$prepare_2")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "blockEmpty" (formula "18") (term "1")) - (rule "assignment_write_attribute_this" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "assignment_write_attribute_this" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "commute_or_2" (formula "8") (term "0")) - (rule "commute_or" (formula "8") (term "0,0")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "blockEmpty" (formula "18") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "18") (term "1")) - (rule "methodCallReturn" (formula "18") (term "1")) - (rule "assignment" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "blockEmpty" (formula "18") (term "1")) - (rule "assignment" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallSuper" (formula "18") (term "1")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallSuper" (formula "18") (term "1")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallSuper" (formula "18") (term "1")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallSuper" (formula "18") (term "1")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_$init_3,savedHeapBefore_$init_3")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "blockEmpty" (formula "18") (term "1")) - (rule "assignment_write_attribute_this" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "assignment_write_attribute_this" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "methodCallEmpty" (formula "18") (term "1")) - (rule "blockEmpty" (formula "18") (term "1")) - (rule "assignment_write_attribute" (formula "18") (term "1")) - (branch "Normal Execution (a_1 != null)" - (builtin "One Step Simplification" (formula "19")) - (builtin "One Step Simplification" (formula "18") (ifInst "" (formula "12"))) - (rule "false_right" (formula "18")) - (rule "assignment" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "arrayLengthIsAnInt" (formula "9") (term "0")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "arrayLengthNotNegative" (formula "9") (term "0")) - (rule "inEqSimp_subsumption1" (formula "9") (ifseqformula "10")) - (rule "leq_literals" (formula "9") (term "0")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "methodCallThrow" (formula "18") (term "1")) - (rule "tryCatchThrow" (formula "18") (term "1")) - (rule "ifElseUnfold" (formula "18") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "18") (term "1") (newnames "x_4")) - (rule "equality_comparison_simple" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "replace_known_right" (formula "18") (term "0,0,1,0") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "18")) - (rule "ifElseSplit" (formula "18")) - (branch "if x_4 true" - (builtin "One Step Simplification" (formula "19")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_4 false" - (builtin "One Step Simplification" (formula "19")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "ifElseSplit" (formula "18")) - (branch "if a instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "18") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "18") (term "1")) - (branch "Normal Execution (a instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "19")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "emptyModality" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18") (ifInst "" (formula "12"))) - (rule "false_right" (formula "18")) - (opengoal " ") - ) - (branch "ClassCastException (!(a instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "19")) - (builtin "One Step Simplification" (formula "18")) - (rule "closeTrue" (formula "18")) - ) - ) - (branch "if a instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Null Reference (a_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - ) - (branch "Null Reference (e_arr = null)" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "7")) - (rule "closeTrue" (formula "7")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsMyInteger/oracle/MyInteger.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsMyInteger/oracle/MyInteger.xml deleted file mode 100644 index a760e5bc066..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsMyInteger/oracle/MyInteger.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsMyInteger/test/MyInteger.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsMyInteger/test/MyInteger.java deleted file mode 100644 index 11d33244ffd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsMyInteger/test/MyInteger.java +++ /dev/null @@ -1,11 +0,0 @@ -public class MyInteger { - public int value; - - /*@ normal_behavior - @ ensures value == \old(value) + summand.value; - @ assignable value; - @*/ - public void add(/*@ non_null @*/ MyInteger summand) { - value += summand.value; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsMyInteger/test/MyInteger.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsMyInteger/test/MyInteger.proof deleted file mode 100644 index d4e4e924833..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsMyInteger/test/MyInteger.proof +++ /dev/null @@ -1,233 +0,0 @@ -\profile "Java Profile"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:15:42 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:on , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:ban , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:safe , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:treatAsAxiom , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "MyInteger[MyInteger::add(MyInteger)].JML normal_behavior operation contract.0", - "contract": "MyInteger[MyInteger::add(MyInteger)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "848513179") - -(branch "dummy ID" -(rule "translateJavaAddInt" (formula "1") (term "1,0,0,0,0,1,1") (newnames "summand,self,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "5")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "eqSymm" (formula "9") (term "1,0,0,1,0,1")) -(rule "replace_known_right" (formula "4") (term "0") (ifseqformula "8")) -(builtin "One Step Simplification" (formula "4")) -(rule "polySimp_homoEq" (formula "9") (term "0,0,0,0,1")) -(rule "polySimp_addComm1" (formula "9") (term "0,0,0,0,0,1")) -(rule "polySimp_addComm0" (formula "9") (term "0,0,0,0,0,0,1")) -(rule "polySimp_addComm1" (formula "9") (term "0,0,0,0,0,1")) -(rule "elementOfSingleton" (formula "9") (term "0,0,0,0,1,0,1")) -(rule "assignment" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "polySimp_sepPosMonomial" (formula "9") (term "0,0,0,0,1")) -(rule "polySimp_mulComm0" (formula "9") (term "1,0,0,0,0,1")) -(rule "polySimp_rightDist" (formula "9") (term "1,0,0,0,0,1")) -(rule "polySimp_mulAssoc" (formula "9") (term "0,1,0,0,0,0,1")) -(rule "polySimp_mulComm0" (formula "9") (term "0,0,1,0,0,0,0,1")) -(rule "polySimp_mulLiterals" (formula "9") (term "0,1,0,0,0,0,1")) -(rule "polySimp_elimOne" (formula "9") (term "0,1,0,0,0,0,1")) -(rule "Class_invariant_axiom_for_MyInteger" (formula "6") (ifseqformula "3")) -(rule "true_left" (formula "6")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_add,savedHeapBefore_add")) -(builtin "One Step Simplification" (formula "8")) -(rule "compound_assignment_op_plus_attr" (formula "8") (term "1") (inst "#v=m")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "m")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "eval_order_access4" (formula "8") (term "1") (inst "#v1=x") (inst "#v0=m_1")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "m_1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x")) -(rule "compound_int_cast_expression" (formula "8") (term "1") (inst "#v=x_1")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x_1")) -(rule "remove_parentheses_right" (formula "8") (term "1")) -(rule "compound_addition_2" (formula "8") (term "1") (inst "#v1=x_3") (inst "#v0=x_2")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x_2")) -(rule "assignment_read_attribute" (formula "8")) -(branch "Normal Execution (m != null)" - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_3")) - (rule "assignment_read_attribute" (formula "8")) - (branch "Normal Execution (_summand != null)" - (builtin "One Step Simplification" (formula "8")) - (rule "assignmentAdditionInt" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "translateJavaAddInt" (formula "8") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "assignment_write_attribute" (formula "8")) - (branch "Normal Execution (m_1 != null)" - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "eqSymm" (formula "8") (term "1,0,0,1")) - (rule "polySimp_homoEq" (formula "8") (term "0,0")) - (rule "polySimp_addComm1" (formula "8") (term "0,0,0")) - (rule "polySimp_addComm0" (formula "8") (term "0,0,0,0")) - (rule "polySimp_sepNegMonomial" (formula "8") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "8") (term "0,0,0")) - (rule "polySimp_elimOne" (formula "8") (term "0,0,0")) - (rule "pullOutSelect" (formula "8") (term "1,1,0,0") (inst "selectSK=MyInteger_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "9") (term "1,1,0,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "polySimp_addAssoc" (formula "8") (term "1,0,0")) - (rule "polySimp_pullOutFactor2" (formula "8") (term "0,1,0,0")) - (rule "add_literals" (formula "8") (term "1,0,1,0,0")) - (rule "times_zero_1" (formula "8") (term "0,1,0,0")) - (rule "add_zero_left" (formula "8") (term "1,0,0")) - (rule "pullOutSelect" (formula "8") (term "0,0,0") (inst "selectSK=MyInteger_value_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "9") (term "0,0")) - (rule "eqSymm" (formula "1") (term "0,0")) - (rule "Class_invariant_axiom_for_MyInteger" (formula "9") (term "1,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "summand = self TRUE" - (rule "applyEqReverse" (formula "10") (term "1,0") (ifseqformula "2")) - (rule "hideAuxiliaryEq" (formula "2")) - (rule "polySimp_homoEq" (formula "9") (term "0")) - (rule "polySimp_pullOutFactor1b" (formula "9") (term "0,0")) - (rule "add_literals" (formula "9") (term "1,1,0,0")) - (rule "times_zero_1" (formula "9") (term "1,0,0")) - (rule "add_zero_right" (formula "9") (term "0,0")) - (rule "applyEq" (formula "9") (term "1,1,3,0,0,1,0,0,1") (ifseqformula "1")) - (rule "polySimp_pullOutFactor3" (formula "9") (term "3,0,0,1,0,0,1")) - (rule "applyEq" (formula "8") (term "0") (ifseqformula "1")) - (rule "applyEq" (formula "5") (term "1,0") (ifseqformula "1")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: self.value = 0 TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "allRight" (formula "8") (inst "sk=f_1")) - (rule "allRight" (formula "8") (inst "sk=o_1")) - (rule "orRight" (formula "8")) - (rule "orRight" (formula "8")) - (rule "applyEq" (formula "10") (term "0,3,0,0") (ifseqformula "1")) - (rule "times_zero_2" (formula "10") (term "3,0,0")) - (rule "pullOutSelect" (formula "10") (term "0") (inst "selectSK=f_1_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "11")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - (branch "CUT: self.value = 0 FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (opengoal " ") - ) - ) - (branch "summand = self FALSE" - (rule "applyEqReverse" (formula "10") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "allRight" (formula "10") (inst "sk=f_0")) - (rule "allRight" (formula "10") (inst "sk=o_0")) - (rule "orRight" (formula "10")) - (rule "orRight" (formula "10")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "pullOutSelect" (formula "11") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "12")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (m_1 = null)" - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_summand = null)" - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (m = null)" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueWeakeningTest/oracle/JoinTestAfterBranchCondition.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueWeakeningTest/oracle/JoinTestAfterBranchCondition.xml deleted file mode 100644 index 573b4ee330d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueWeakeningTest/oracle/JoinTestAfterBranchCondition.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueWeakeningTest/test/JoinTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueWeakeningTest/test/JoinTest.java deleted file mode 100644 index 99fa2ece102..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueWeakeningTest/test/JoinTest.java +++ /dev/null @@ -1,14 +0,0 @@ -public class JoinTest { - /*@ normal_behavior - @ ensures \result >= 0; - @ assignable \strictly_nothing; - @*/ - public static int zero(int value) { - if (value < 0) { - value = value * -1; - } - //@ merge_point; - int result = value; - return result; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueWeakeningTest/test/JoinTestAfterBranchConditionWithWeakeningGoal.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueWeakeningTest/test/JoinTestAfterBranchConditionWithWeakeningGoal.proof deleted file mode 100644 index c22993d69fc..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueWeakeningTest/test/JoinTestAfterBranchConditionWithWeakeningGoal.proof +++ /dev/null @@ -1,107 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Apr 10 16:43:30 CEST 2017 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_EXPAND -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,initialisation-initialisation\\:disableStaticInitialisation , wdChecks-wdChecks\\:off , reach-reach\\:on , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , Strings-Strings\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:on , runtimeExceptions-runtimeExceptions\\:allow , wdOperator-wdOperator\\:L , JavaCard-JavaCard\\:off , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , modelFields-modelFields\\:showSatisfiability , assertions-assertions\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , bigint-bigint\\:on , programRules-programRules\\:Java -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "contract": "JoinTest[JoinTest::zero(int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "4" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "5" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "6" (keyUser "dscheurer" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "321") - -(branch "dummy ID" -(rule "assignment" (formula "1") (term "1,1") (newnames "value,result,exc,heapAtPre,o,f") (userinteraction)) -(rule "methodBodyExpand" (formula "1") (term "1,1,1") (newnames "heapBefore_zero,savedHeapBefore_zero") (userinteraction)) -(rule "ifUnfold" (formula "1") (term "1,1,1,1") (inst "#boolv=x") (userinteraction)) -(rule "variableDeclaration" (formula "1") (term "1,1,1,1") (newnames "x") (userinteraction)) -(rule "less_than_comparison_simple" (formula "1") (term "1,1,1,1") (userinteraction)) -(rule "impRight" (formula "1") (userinteraction)) -(builtin "One Step Simplification" (formula "2")) -(rule "ifSplit" (formula "2") (userinteraction)) -(branch "if x true" - (rule "assignmentMultiplicationInt" (formula "3") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "3")) - (rule "blockEmpty" (formula "3") (term "1") (userinteraction)) - (builtin "MergeRule" (formula "3") (mergeProc "MergeByIfThenElse") (nrMergePartners "1") (mergeId "12") (userinteraction)) - (rule "deleteMergePoint" (formula "4") (term "1") (userinteraction)) - (rule "variableDeclarationAssign" (formula "4") (term "1") (userinteraction)) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "result_1") (userinteraction)) - (rule "assignment" (formula "4") (term "1") (userinteraction)) - (rule "methodCallReturn" (formula "4") (term "1,1") (userinteraction)) - (rule "assignment" (formula "4") (term "1,1") (userinteraction)) - (rule "methodCallEmpty" (formula "4") (term "1,1,1") (userinteraction)) - (rule "tryEmpty" (formula "4") (term "1,1,1") (userinteraction)) - (rule "emptyModality" (formula "4") (term "1,1,1") (userinteraction)) - (opengoal " ") -) -(branch "if x false" - (builtin "One Step Simplification" (formula "3")) - (builtin "CloseAfterMerge" (formula "3") (newnames "P") (mergeNode "12") (userinteraction)) - (branch "Merged node is weakening" - (builtin "One Step Simplification" (formula "1")) - (rule "translateJavaMulInt" (formula "1") (term "1,4,1,0")) - (rule "impRight" (formula "1")) - (rule "impRight" (formula "2")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "2")) - (rule "notLeft" (formula "1")) - (rule "replace_known_left" (formula "3") (term "0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "2")) (ifInst "" (formula "4")) (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "3")) - ) - (branch "Merged with node 12" - (opengoal " ") - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/tryCatchFinally/oracle/TryCatchFinally.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/tryCatchFinally/oracle/TryCatchFinally.xml deleted file mode 100644 index 51e35a36ad2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/tryCatchFinally/oracle/TryCatchFinally.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/tryCatchFinally/test/TryCatchFinally.java b/key.core.symbolic_execution/src/test/resources/testcase/set/tryCatchFinally/test/TryCatchFinally.java deleted file mode 100644 index 9c0ae924c37..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/tryCatchFinally/test/TryCatchFinally.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class TryCatchFinally { - /*@ requires true; - @ ensures true; - @*/ - public int tryCatchFinally(int input) { - int result = 0; - try { - result = 1 / input; - } - catch (ArithmeticException e) { - result = 2; - } - finally { - result = result * 2; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/unicodeTest/oracle/UnicodeTest_Disabled.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/unicodeTest/oracle/UnicodeTest_Disabled.xml deleted file mode 100644 index a73fe5c4a17..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/unicodeTest/oracle/UnicodeTest_Disabled.xml +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/unicodeTest/oracle/UnicodeTest_Enabled.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/unicodeTest/oracle/UnicodeTest_Enabled.xml deleted file mode 100644 index 4b3f05e1b03..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/unicodeTest/oracle/UnicodeTest_Enabled.xml +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/unicodeTest/test/UnicodeTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/unicodeTest/test/UnicodeTest.java deleted file mode 100644 index cdb64ff409e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/unicodeTest/test/UnicodeTest.java +++ /dev/null @@ -1,10 +0,0 @@ -public class UnicodeTest { - public static int magic(boolean x, boolean y) { - if (x & y) { - return 1; - } - else { - return -1; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantAndOperationContractStrictlyPure/oracle/IndexOf.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantAndOperationContractStrictlyPure/oracle/IndexOf.xml deleted file mode 100644 index bce36d7907b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantAndOperationContractStrictlyPure/oracle/IndexOf.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantAndOperationContractStrictlyPure/test/IndexOf.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantAndOperationContractStrictlyPure/test/IndexOf.java deleted file mode 100644 index bf9f05b7a94..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantAndOperationContractStrictlyPure/test/IndexOf.java +++ /dev/null @@ -1,29 +0,0 @@ -public class IndexOf { - /*@ normal_behavior - @ requires array != null && comperator != null && \invariant_for(comperator); - @ ensures true; - @*/ - public static int indexOf(final Object[] array, final Object toSearch, final Comperator comperator) { - int index = -1; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length; - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (index < 0 && i <= array.length) { // i < array.length - if (!comperator.equals(array[i], toSearch)) { // remove the not - index = i; - } - i++; - } - return i; // return index - } - - public static interface Comperator { - /*@ normal_behavior - @ requires true; - @ ensures true; - @*/ - public boolean /*@ strictly_pure @*/ equals(Object first, Object second); - } -} 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 deleted file mode 100644 index be33b765ced..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArrayAverage/oracle/ArrayAverage.xml +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArrayAverage/test/ArrayAverage.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArrayAverage/test/ArrayAverage.java deleted file mode 100644 index 1fb8e8a7196..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArrayAverage/test/ArrayAverage.java +++ /dev/null @@ -1,40 +0,0 @@ - -public class ArrayAverage { - public static int average(int[] array) throws Exception { - int sum = sum(array); - return sum / array.length; - } - - /*@ normal_behavior - @ requires array != null; - @ ensures \result == (\sum int i; 0 <= i && i < array.length; array[i]); - @ - @ also - @ - @ exceptional_behavior - @ requires array == null; - @ signals (Exception e) true; - @*/ - public static int sum(/*@ nullable @*/ int[] array) throws Exception { - if (array == null) { - throw new Exception(); - } - else { - int sum = 0; - /*@ loop_invariant i >= 0; - @ loop_invariant i <= array.length; - @ loop_invariant sum == - @ (\sum int j; - @ 0 <= j && j < i; - @ array[j]); - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - for (int i = 0; - i < array.length; i++) { - sum += array[i]; - } - return sum; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySizeDoWhile/oracle/ArraySizeDoWhile.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySizeDoWhile/oracle/ArraySizeDoWhile.xml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySizeDoWhile/test/ArraySizeDoWhile.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySizeDoWhile/test/ArraySizeDoWhile.java deleted file mode 100644 index 348ab612408..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySizeDoWhile/test/ArraySizeDoWhile.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class ArraySizeDoWhile { - public static int size(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == i; - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - do { - result++; - i++; - } - while (i < array.length); - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySizeWhile/oracle/ArraySizeWhile.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySizeWhile/oracle/ArraySizeWhile.xml deleted file mode 100644 index f77439a9f3f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySizeWhile/oracle/ArraySizeWhile.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySizeWhile/test/ArraySizeWhile.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySizeWhile/test/ArraySizeWhile.java deleted file mode 100644 index 28aebd67f1f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySizeWhile/test/ArraySizeWhile.java +++ /dev/null @@ -1,16 +0,0 @@ - -public class ArraySizeWhile { - public static int size(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == i; - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (i < array.length) { - result++; - i++; - } - return result; - } -} 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 deleted file mode 100644 index 0c04c855734..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumFor/oracle/ArraySumFor.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumFor/test/ArraySumFor.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumFor/test/ArraySumFor.java deleted file mode 100644 index 73ea66c1f15..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumFor/test/ArraySumFor.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class ArraySumFor { - /*@ requires array != null; - @ ensures \result == (\sum int j; 0 <= j && j < array.length; array[j]); - @*/ - public static int sum(int[] array) { - int result = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == (\sum int j; 0 <= j && j < i; array[j]); - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - for (int i = 0; i < array.length; i++) { - result += array[i]; - } - return result; - } -} 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 deleted file mode 100644 index 33f9123a58a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumForEach/oracle/ArraySumForEach.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumForEach/test/ArraySumForEach.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumForEach/test/ArraySumForEach.java deleted file mode 100644 index 69fb1ed67b8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumForEach/test/ArraySumForEach.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class ArraySumForEach { - /*@ requires array != null; - @ ensures \result == (\sum int j; 0 <= j && j < array.length; array[j]); - @*/ - public static int sum(int[] array) { - int result = 0; - /*@ loop_invariant \index >= 0 && \index <= array.length && result == (\sum int j; 0 <= j && j < \index; array[j]); - @ decreasing array.length - \index; - @ assignable \strictly_nothing; - @*/ - for (int value : array) { - result += value; - } - return result; - } -} 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 deleted file mode 100644 index b9c6c5d9618..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhile/oracle/ArraySumWhile.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhile/test/ArraySumWhile.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhile/test/ArraySumWhile.java deleted file mode 100644 index ae1522a7ba0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhile/test/ArraySumWhile.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class ArraySumWhile { - /*@ requires array != null; - @ ensures \result == (\sum int j; 0 <= j && j < array.length; array[j]); - @*/ - public static int sum(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == (\sum int j; 0 <= j && j < i; array[j]); - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (i < array.length) { - result += array[i]; - i++; - } - return result; - } -} 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 deleted file mode 100644 index 92ee3e5d110..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileInitiallyInvalid/oracle/ArraySumWhileInitiallyInvalid.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileInitiallyInvalid/test/ArraySumWhileInitiallyInvalid.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileInitiallyInvalid/test/ArraySumWhileInitiallyInvalid.java deleted file mode 100644 index 12799d6c732..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileInitiallyInvalid/test/ArraySumWhileInitiallyInvalid.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class ArraySumWhileInitiallyInvalid { - /*@ requires array != null; - @ ensures \result == (\sum int j; 0 <= j && j < array.length; array[j]); - @*/ - public static int sum(int[] array) { - int result = 0; - int i = 1; - /*@ loop_invariant i >= 0 && i <= array.length && result == (\sum int j; 0 <= j && j < i; array[j]); - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (i < array.length) { - result += array[i]; - i++; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithBreak/oracle/ArraySumWhileWithBreak.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithBreak/oracle/ArraySumWhileWithBreak.xml deleted file mode 100644 index 13b2db1bd1d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithBreak/oracle/ArraySumWhileWithBreak.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithBreak/test/ArraySumWhileWithBreak.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithBreak/test/ArraySumWhileWithBreak.java deleted file mode 100644 index 5b06699def2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithBreak/test/ArraySumWhileWithBreak.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class ArraySumWhileWithBreak { - /*@ requires array != null; - @ ensures \result == (\sum int j; 0 <= j && j < array.length; array[j]); - @*/ - public static int sum(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == (\sum int j; 0 <= j && j < i; array[j]); - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (true) { - if (array == null) { - break; - } - else if (i == array.length) { - break; - } - result += array[i]; - i++; - } - return result; - } -} 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 deleted file mode 100644 index aad62e69424..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithContinue/oracle/ArraySumWhileWithContinue.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithContinue/test/ArraySumWhileWithContinue.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithContinue/test/ArraySumWhileWithContinue.java deleted file mode 100644 index 1c170a02e24..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithContinue/test/ArraySumWhileWithContinue.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class ArraySumWhileWithContinue { - /*@ requires array != null; - @ ensures \result == (\sum int j; 0 <= j && j < array.length; array[j]); - @*/ - public static int sum(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == (\sum int j; 0 <= j && j < i; array[j]); - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (i < array.length) { - result += array[i]; - if (i >= 0) { - continue; - } - i++; // Never reached - } - return result; - } -} 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 deleted file mode 100644 index 5c65184f026..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithException/oracle/ArraySumWhileWithException.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithException/test/ArraySumWhileWithException.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithException/test/ArraySumWhileWithException.java deleted file mode 100644 index 917bf30f123..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithException/test/ArraySumWhileWithException.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class ArraySumWhileWithException { - public static int sum(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == (\sum int j; 0 <= j && j < i; array[j]); - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (i < array.length) { - result += array[i]; - i++; - if (array.length == 3) { - throw new RuntimeException(); - } - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithReturn/oracle/ArraySumWhileWithReturn.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithReturn/oracle/ArraySumWhileWithReturn.xml deleted file mode 100644 index 5947cfa9142..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithReturn/oracle/ArraySumWhileWithReturn.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithReturn/test/ArraySumWhileWithReturn.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithReturn/test/ArraySumWhileWithReturn.java deleted file mode 100644 index 6e759669c30..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithReturn/test/ArraySumWhileWithReturn.java +++ /dev/null @@ -1,24 +0,0 @@ - -public class ArraySumWhileWithReturn { - /*@ requires array != null; - @ ensures \result == (\sum int j; 0 <= j && j < array.length; array[j]); - @*/ - public static int sum(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == (\sum int j; 0 <= j && j < i; array[j]); - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (true) { - if (array == null) { - return 0; - } - else if (i == array.length) { - return result; - } - result += array[i]; - i++; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopBodyBranchClosed/oracle/LoopBodyBranchClosed.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopBodyBranchClosed/oracle/LoopBodyBranchClosed.xml deleted file mode 100644 index 6cbc15f0d25..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopBodyBranchClosed/oracle/LoopBodyBranchClosed.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopBodyBranchClosed/test/LoopBodyBranchClosed.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopBodyBranchClosed/test/LoopBodyBranchClosed.java deleted file mode 100644 index 12741ce7e74..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopBodyBranchClosed/test/LoopBodyBranchClosed.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class LoopBodyBranchClosed { - public static int deadBody() { - int i = 0; - /*@ loop_invariant i == 0; - @ decreasing i; - @ assignable \strictly_nothing; - @*/ - while (i > 0) { - i--; - } - return i; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopSplittingCondition/oracle/LoopSplittingCondition.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopSplittingCondition/oracle/LoopSplittingCondition.xml deleted file mode 100644 index 7f99f93618b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopSplittingCondition/oracle/LoopSplittingCondition.xml +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopSplittingCondition/test/LoopSplittingCondition.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopSplittingCondition/test/LoopSplittingCondition.java deleted file mode 100644 index 75d04bb3f8c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopSplittingCondition/test/LoopSplittingCondition.java +++ /dev/null @@ -1,29 +0,0 @@ - -public class LoopSplittingCondition { - public static int main(int x) { - int i = x >= 0 ? x : -x; - /*@ loop_invariant i >= 0; - @ decreasing i; - @ assignable \strictly_nothing; - @*/ - while (goOn(x)) { - if (i >= 0) { - x--; - } - else { - x++; - } - i--; - } - return i; - } - - private static boolean goOn(int x) { - if (x > 0) { - return true; - } - else { - return false; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopUsageBranchClosed/oracle/LoopUsageBranchClosed.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopUsageBranchClosed/oracle/LoopUsageBranchClosed.xml deleted file mode 100644 index 2023af24f15..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopUsageBranchClosed/oracle/LoopUsageBranchClosed.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopUsageBranchClosed/test/LoopUsageBranchClosed.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopUsageBranchClosed/test/LoopUsageBranchClosed.java deleted file mode 100644 index c59d012bd0b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantLoopUsageBranchClosed/test/LoopUsageBranchClosed.java +++ /dev/null @@ -1,13 +0,0 @@ - -public class LoopUsageBranchClosed { - public static int deadCodeAfterLoop() { - int i = 2; - /*@ loop_invariant i >= 0; - @ decreasing i; - @ assignable \strictly_nothing; - @*/ - while (i >= 0) { - } - return i; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantTwoLoops/oracle/TwoLoops.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantTwoLoops/oracle/TwoLoops.xml deleted file mode 100644 index 2315efb4614..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantTwoLoops/oracle/TwoLoops.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantTwoLoops/test/TwoLoops.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantTwoLoops/test/TwoLoops.java deleted file mode 100644 index e084e06cf70..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantTwoLoops/test/TwoLoops.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class TwoLoops { - public static int main(int x) { - if (x >= 0) { - /*@ loop_invariant x >= 0; - @ decreasing x; - @ assignable \strictly_nothing; - @*/ - while (x > 0) { - x--; - } - } - else { - //@ ghost int originalX = x; - /*@ loop_invariant x <= 0; - @ decreasing originalX - x; - @ assignable \strictly_nothing; - @*/ - while (x < 0) { - x++; - } - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantVoidWhileWithReturn/oracle/VoidWhileWithReturn.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantVoidWhileWithReturn/oracle/VoidWhileWithReturn.xml deleted file mode 100644 index 66ed8bd593d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantVoidWhileWithReturn/oracle/VoidWhileWithReturn.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantVoidWhileWithReturn/test/VoidWhileWithReturn.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantVoidWhileWithReturn/test/VoidWhileWithReturn.java deleted file mode 100644 index c960a5074b6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantVoidWhileWithReturn/test/VoidWhileWithReturn.java +++ /dev/null @@ -1,21 +0,0 @@ - -public class VoidWhileWithReturn { - public static void sum(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == (\sum int j; 0 <= j && j < i; array[j]); - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (true) { - if (array == null) { - return; - } - else if (i == array.length) { - return; - } - result += array[i]; - i++; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithLoopInvariantInCondition/oracle/WhileWithLoopInvariantInCondition.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithLoopInvariantInCondition/oracle/WhileWithLoopInvariantInCondition.xml deleted file mode 100644 index 5199ac93411..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithLoopInvariantInCondition/oracle/WhileWithLoopInvariantInCondition.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithLoopInvariantInCondition/test/WhileWithLoopInvariantInCondition.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithLoopInvariantInCondition/test/WhileWithLoopInvariantInCondition.java deleted file mode 100644 index 484d586f8cc..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithLoopInvariantInCondition/test/WhileWithLoopInvariantInCondition.java +++ /dev/null @@ -1,27 +0,0 @@ - -public class WhileWithLoopInvariantInCondition { - public static int size(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == i; - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (goOnNice(array, i)) { - result++; - i++; - } - return result; - } - - public static boolean goOnNice(int[] array, int i) throws RuntimeException { - /*@ loop_invariant i == -1; - @ decreasing i; - @ assignable \strictly_nothing; - @*/ - while (i >= 0) { - i--; - } - return true; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_NoPreExpandMethods.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_NoPreExpandMethods.xml deleted file mode 100644 index 273c81acd4e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_NoPreExpandMethods.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_NoPreMethodContract.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_NoPreMethodContract.xml deleted file mode 100644 index 938241d9840..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_NoPreMethodContract.xml +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_preExpandMethods.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_preExpandMethods.xml deleted file mode 100644 index 273c81acd4e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_preExpandMethods.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_preMethodContract.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_preMethodContract.xml deleted file mode 100644 index 7262f70038e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/oracle/WhileWithMethodCallAsCondition_preMethodContract.xml +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/test/WhileWithMethodCallAsCondition.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/test/WhileWithMethodCallAsCondition.java deleted file mode 100644 index 3b442adb85c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsCondition/test/WhileWithMethodCallAsCondition.java +++ /dev/null @@ -1,47 +0,0 @@ - -public class WhileWithMethodCallAsCondition { - public static int size(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == i; - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (goOnNice(array, i)) { - result++; - i++; - } - return result; - } - - /*@ normal_behavior - @ requires array != null && i >= 0; - @ ensures \result == i < array.length; - @*/ - public static boolean goOn(/*@ nullable @*/ int[] array, int i) { - throw new RuntimeException(); - } - - /*@ normal_behavior - @ requires array != null; - @ ensures \result == i < array.length; - @*/ - public static boolean goOnExc(int[] array, int i) { - throw new RuntimeException(); - } - - /*@ normal_behavior - @ requires array != null && i >= 0; - @ ensures \result == i < array.length; - @ - @ also - @ - @ public exceptional_behavior - @ requires i < 0; - @ signals_only Exception; - @ signals (RuntimeException myExc) true; - @*/ - public static boolean goOnNice(/*@ nullable @*/ int[] array, int i) throws RuntimeException { - throw new RuntimeException(); - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionFullImplemented/oracle/WhileWithMethodCallAsConditionFullImplemented.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionFullImplemented/oracle/WhileWithMethodCallAsConditionFullImplemented.xml deleted file mode 100644 index 83ac129b8ff..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionFullImplemented/oracle/WhileWithMethodCallAsConditionFullImplemented.xml +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionFullImplemented/test/WhileWithMethodCallAsConditionFullImplemented.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionFullImplemented/test/WhileWithMethodCallAsConditionFullImplemented.java deleted file mode 100644 index 6dc126a0fa5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionFullImplemented/test/WhileWithMethodCallAsConditionFullImplemented.java +++ /dev/null @@ -1,35 +0,0 @@ - -public class WhileWithMethodCallAsConditionFullImplemented { - public static int size(int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == i; - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (goOnNice(array, i)) { - result++; - i++; - } - return result; - } - - /*@ normal_behavior - @ requires array != null && i >= 0; - @ ensures \result == i < array.length; - @ - @ also - @ - @ public exceptional_behavior - @ requires i < 0; - @ signals (RuntimeException myExc) \not_specified; - @*/ - public static boolean goOnNice(/*@ nullable @*/ int[] array, int i) throws RuntimeException { - if (i < 0) { - throw new RuntimeException(); - } - else { - return i < array.length; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionOnObject/oracle/WhileWithMethodCallAsConditionOnObject.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionOnObject/oracle/WhileWithMethodCallAsConditionOnObject.xml deleted file mode 100644 index df6d126fec1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionOnObject/oracle/WhileWithMethodCallAsConditionOnObject.xml +++ /dev/null @@ -1,435 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionOnObject/test/WhileWithMethodCallAsConditionOnObject.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionOnObject/test/WhileWithMethodCallAsConditionOnObject.java deleted file mode 100644 index dc8b80bcd40..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWhileWithMethodCallAsConditionOnObject/test/WhileWithMethodCallAsConditionOnObject.java +++ /dev/null @@ -1,30 +0,0 @@ - -public class WhileWithMethodCallAsConditionOnObject { - public int size(WhileWithMethodCallAsConditionOnObject x, int[] array) { - int result = 0; - int i = 0; - /*@ loop_invariant i >= 0 && i <= array.length && result == i; - @ decreasing array.length - i; - @ assignable \strictly_nothing; - @*/ - while (x.goOnNice(array, i)) { - result++; - i++; - } - return result; - } - - /*@ normal_behavior - @ requires array != null && i >= 0; - @ ensures \result == i < array.length; - @ - @ also - @ - @ public exceptional_behavior - @ requires i < 0; - @ signals (RuntimeException myExc) true; - @*/ - public boolean goOnNice(/*@ nullable @*/ int[] array, int i) throws RuntimeException { - throw new RuntimeException(); - } -} 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 deleted file mode 100644 index a4b3c36ea87..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWithoutDecreasing/oracle/LoopInvArrayExample.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWithoutDecreasing/test/LoopInvArrayExample.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWithoutDecreasing/test/LoopInvArrayExample.java deleted file mode 100644 index 8f54b5d4396..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWithoutDecreasing/test/LoopInvArrayExample.java +++ /dev/null @@ -1,21 +0,0 @@ -public class LoopInvArrayExample { - public int[] a; - - /*@ public normal_behavior - @ requires a != null; - @ ensures (\forall int x; x >= 0 && x < a.length; a[x] == 1); - @ diverges true; - @*/ - public void setAllToOne() { - int i = 0; - - /*@ loop_invariant - @ i >= 0 && i <= a.length && - @ (\forall int x; x >= 0 && x < i; a[x] == 1); - @*/ - while (i < a.length) { - a[i] = 1; - i++; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWithoutDecreasing/test/LoopInvArrayExample.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWithoutDecreasing/test/LoopInvArrayExample.proof deleted file mode 100644 index 7757ffb1e98..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWithoutDecreasing/test/LoopInvArrayExample.proof +++ /dev/null @@ -1,994 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Jul 18 10:57:38 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , moreSeqRules-moreSeqRules\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , sequences-sequences\\:on , integerSimplificationRules-integerSimplificationRules\\:full , runtimeExceptions-runtimeExceptions\\:allow , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , wdOperator-wdOperator\\:L , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "LoopInvArrayExample[LoopInvArrayExample::setAllToOne()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "LoopInvArrayExample[LoopInvArrayExample::setAllToOne()].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "4230") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "self,exc,heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "inEqSimp_ltToLeq" (formula "8") (term "1,0,0,0,0,0,0")) -(rule "polySimp_mulComm0" (formula "8") (term "1,0,0,1,0,0,0,0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "8") (term "1,0,0,0,0,0,0")) -(rule "polySimp_mulComm0" (formula "8") (term "1,1,0,0,0,0,0,0")) -(rule "polySimp_rightDist" (formula "8") (term "1,1,0,0,0,0,0,0")) -(rule "mul_literals" (formula "8") (term "0,1,1,0,0,0,0,0,0")) -(rule "polySimp_mulLiterals" (formula "8") (term "1,1,1,0,0,0,0,0,0")) -(rule "polySimp_elimOne" (formula "8") (term "1,1,1,0,0,0,0,0,0")) -(rule "nnf_imp2or" (formula "8") (term "0,0,0,0,0")) -(rule "nnf_notAnd" (formula "8") (term "0,0,0,0,0,0")) -(rule "inEqSimp_notGeq" (formula "8") (term "0,0,0,0,0,0,0")) -(rule "times_zero_1" (formula "8") (term "1,0,0,0,0,0,0,0,0,0")) -(rule "add_literals" (formula "8") (term "0,0,0,0,0,0,0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "8") (term "0,0,0,0,0,0,0")) -(rule "mul_literals" (formula "8") (term "1,0,0,0,0,0,0,0")) -(rule "inEqSimp_notLeq" (formula "8") (term "1,0,0,0,0,0,0")) -(rule "polySimp_rightDist" (formula "8") (term "1,0,0,1,0,0,0,0,0,0")) -(rule "mul_literals" (formula "8") (term "0,1,0,0,1,0,0,0,0,0,0")) -(rule "polySimp_addAssoc" (formula "8") (term "0,0,1,0,0,0,0,0,0")) -(rule "add_literals" (formula "8") (term "0,0,0,1,0,0,0,0,0,0")) -(rule "add_zero_left" (formula "8") (term "0,0,1,0,0,0,0,0,0")) -(rule "inEqSimp_sepPosMonomial1" (formula "8") (term "1,0,0,0,0,0,0")) -(rule "polySimp_mulLiterals" (formula "8") (term "1,1,0,0,0,0,0,0")) -(rule "polySimp_elimOne" (formula "8") (term "1,1,0,0,0,0,0,0")) -(rule "Class_invariant_axiom_for_LoopInvArrayExample" (formula "5") (inst "sk=sk_0") (ifseqformula "3")) -(branch "Use Axiom" - (rule "notLeft" (formula "5")) - (rule "onlyCreatedObjectsAreReferenced" (formula "6") (term "0") (ifseqformula "1")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "assignment" (formula "8")) - (rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_setAllToOne,savedHeapBefore_setAllToOne")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "i")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (builtin "Loop Invariant" (formula "8") (newnames "variant,b,heapBefore_LOOP,iBefore_LOOP,i_0,heap_After_LOOP,anon_heap_LOOP,o,f")) - (branch "Invariant Initially Valid" - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "2"))) - (rule "qeq_literals" (formula "8") (term "0,0")) - (builtin "One Step Simplification" (formula "8")) - (rule "inEqSimp_ltToLeq" (formula "8") (term "1,0,0,1")) - (rule "times_zero_1" (formula "8") (term "1,0,0,1,0,0,1")) - (rule "add_zero_right" (formula "8") (term "0,0,1,0,0,1")) - (rule "inEqSimp_commuteLeq" (formula "8") (term "0")) - (rule "inEqSimp_sepPosMonomial0" (formula "8") (term "1,0,0,1")) - (rule "mul_literals" (formula "8") (term "1,1,0,0,1")) - (rule "nnf_imp2or" (formula "8") (term "0,1")) - (rule "nnf_notAnd" (formula "8") (term "0,0,1")) - (rule "inEqSimp_notGeq" (formula "8") (term "0,0,0,1")) - (rule "times_zero_1" (formula "8") (term "1,0,0,0,0,0,1")) - (rule "add_literals" (formula "8") (term "0,0,0,0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "8") (term "0,0,0,1")) - (rule "mul_literals" (formula "8") (term "1,0,0,0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "inEqSimp_geqRight" (formula "8")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "arrayLengthNotNegative" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq0" (formula "1") (ifseqformula "2")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "Body Preserves Invariant" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "10")) - (rule "andLeft" (formula "7")) - (rule "impRight" (formula "11")) - (rule "andLeft" (formula "8")) - (rule "inEqSimp_ltToLeq" (formula "10") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0,1,0,0")) - (rule "inEqSimp_ltToLeq" (formula "13") (term "1,0,0,1,0,1,1,0,1")) - (rule "polySimp_mulComm0" (formula "13") (term "1,0,0,1,0,0,1,0,1,1,0,1")) - (rule "inEqSimp_commuteLeq" (formula "13") (term "1,0,0,1,1,0,1")) - (rule "inEqSimp_commuteLeq" (formula "9")) - (rule "inEqSimp_sepPosMonomial0" (formula "10") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,1,0,0")) - (rule "mul_literals" (formula "10") (term "0,1,1,0,0")) - (rule "polySimp_mulLiterals" (formula "10") (term "1,1,1,0,0")) - (rule "polySimp_elimOne" (formula "10") (term "1,1,1,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "13") (term "1,0,0,1,0,1,1,0,1")) - (rule "polySimp_mulComm0" (formula "13") (term "1,1,0,0,1,0,1,1,0,1")) - (rule "polySimp_rightDist" (formula "13") (term "1,1,0,0,1,0,1,1,0,1")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,1,1,0,0,1,0,1,1,0,1")) - (rule "mul_literals" (formula "13") (term "0,1,1,0,0,1,0,1,1,0,1")) - (rule "polySimp_elimOne" (formula "13") (term "1,1,1,0,0,1,0,1,1,0,1")) - (rule "pullOutSelect" (formula "10") (term "1,0,1,0") (inst "selectSK=LoopInvArrayExample_a_1")) - (rule "applyEq" (formula "9") (term "0,0") (ifseqformula "10")) - (rule "simplifySelectOfAnon" (formula "10")) - (builtin "One Step Simplification" (formula "10")) - (rule "applyEqReverse" (formula "11") (term "1,0,1,0") (ifseqformula "10")) - (rule "applyEqReverse" (formula "9") (term "0,0") (ifseqformula "10")) - (rule "hideAuxiliaryEq" (formula "10")) - (rule "boxToDiamond" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "nnf_imp2or" (formula "9") (term "0")) - (rule "nnf_notAnd" (formula "9") (term "0,0")) - (rule "inEqSimp_notLeq" (formula "9") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "9") (term "1,0,0,1,0,0")) - (rule "mul_literals" (formula "9") (term "0,1,0,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "9") (term "0,0,1,0,0")) - (rule "add_literals" (formula "9") (term "0,0,0,1,0,0")) - (rule "add_zero_left" (formula "9") (term "0,0,1,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "9") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "9") (term "1,1,0,0")) - (rule "polySimp_elimOne" (formula "9") (term "1,1,0,0")) - (rule "inEqSimp_notGeq" (formula "9") (term "0,0,0")) - (rule "times_zero_1" (formula "9") (term "1,0,0,0,0,0")) - (rule "add_zero_right" (formula "9") (term "0,0,0,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "9") (term "0,0,0")) - (rule "mul_literals" (formula "9") (term "1,0,0,0")) - (rule "nnf_imp2or" (formula "13") (term "0,1,0,1,1,0,1")) - (rule "nnf_notAnd" (formula "13") (term "0,0,1,0,1,1,0,1")) - (rule "inEqSimp_notGeq" (formula "13") (term "0,0,0,1,0,1,1,0,1")) - (rule "times_zero_1" (formula "13") (term "1,0,0,0,0,0,1,0,1,1,0,1")) - (rule "add_zero_right" (formula "13") (term "0,0,0,0,0,1,0,1,1,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "13") (term "0,0,0,1,0,1,1,0,1")) - (rule "mul_literals" (formula "13") (term "1,0,0,0,1,0,1,1,0,1")) - (rule "inEqSimp_notLeq" (formula "13") (term "1,0,0,1,0,1,1,0,1")) - (rule "polySimp_rightDist" (formula "13") (term "1,0,0,1,0,0,1,0,1,1,0,1")) - (rule "mul_literals" (formula "13") (term "0,1,0,0,1,0,0,1,0,1,1,0,1")) - (rule "polySimp_addAssoc" (formula "13") (term "0,0,1,0,0,1,0,1,1,0,1")) - (rule "add_literals" (formula "13") (term "0,0,0,1,0,0,1,0,1,1,0,1")) - (rule "add_zero_left" (formula "13") (term "0,0,1,0,0,1,0,1,1,0,1")) - (rule "inEqSimp_sepPosMonomial1" (formula "13") (term "1,0,0,1,0,1,1,0,1")) - (rule "polySimp_mulLiterals" (formula "13") (term "1,1,0,0,1,0,1,1,0,1")) - (rule "polySimp_elimOne" (formula "13") (term "1,1,0,0,1,0,1,1,0,1")) - (rule "arrayLengthNotNegative" (formula "8") (term "0")) - (rule "arrayLengthIsAnInt" (formula "9") (term "0")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "onlyCreatedObjectsAreReferenced" (formula "9") (term "0,0") (ifseqformula "6")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "b_1")) - (rule "compound_less_than_comparison_2" (formula "12") (term "1") (inst "#v0=x") (inst "#v1=x_1")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x")) - (rule "assignment" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_1")) - (rule "eval_order_access2" (formula "12") (term "1") (inst "#v0=x_arr")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "x_arr")) - (rule "assignment_read_attribute_this" (formula "12") (term "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "replaceKnownSelect_taclet10_0" (formula "12") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet10_1" (formula "12") (term "0,1,0")) - (rule "assignment_read_length" (formula "12") (term "1")) - (branch "Normal Execution (x_arr != null)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "12")) - (rule "replace_known_right" (formula "9") (term "0") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "9")) - (rule "less_than_comparison_simple" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "inEqSimp_ltToLeq" (formula "13") (term "0,0,1,0")) - (rule "polySimp_mulComm0" (formula "13") (term "1,0,0,0,0,1,0")) - (rule "polySimp_addComm1" (formula "13") (term "0,0,0,1,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "13") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "13") (term "0,0,0,1,0")) - (rule "polySimp_elimOne" (formula "13") (term "0,0,0,1,0")) - (rule "methodCallEmpty" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "emptyModality" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "notRight" (formula "13")) - (rule "inEqSimp_subsumption1" (formula "11") (ifseqformula "1")) - (rule "inEqSimp_homoInEq0" (formula "11") (term "0")) - (rule "polySimp_pullOutFactor1b" (formula "11") (term "0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0")) - (rule "add_zero_right" (formula "11") (term "0,0")) - (rule "qeq_literals" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "true_left" (formula "11")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "exc_3")) - (rule "assignment" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "thrownExc_1")) - (rule "ifUnfold" (formula "15") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "x_6")) - (rule "compound_less_than_comparison_2" (formula "15") (term "1") (inst "#v0=x_7") (inst "#v1=x_8")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "x_7")) - (rule "assignment" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "x_8")) - (rule "eval_order_array_access6" (formula "15") (term "1") (inst "#v0=x_arr")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "x_arr_2")) - (rule "assignment_read_attribute_this" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "replaceKnownSelect_taclet10_0" (formula "15") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet10_1" (formula "15") (term "0,1,0")) - (rule "assignment_read_length" (formula "15") (term "1")) - (branch "Normal Execution (x_arr_2 != null)" - (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "12"))) - (rule "false_right" (formula "15")) - (builtin "One Step Simplification" (formula "15")) - (rule "less_than_comparison_simple" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "ifSplit" (formula "15")) - (branch "if x_6 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "eval_order_array_access1" (formula "15") (term "1") (inst "#v0=x_arr")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "x_arr_3")) - (rule "assignment_read_attribute_this" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "replaceKnownSelect_taclet10_0" (formula "15") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet10_1" (formula "15") (term "0,1,0")) - (rule "assignment_to_primitive_array_component" (formula "15") (term "1")) - (branch "Normal Execution (x_arr_3 != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13")) (ifInst "" (formula "9"))) - (builtin "One Step Simplification" (formula "16")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "postincrement" (formula "15") (term "1")) - (rule "compound_int_cast_expression" (formula "15") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "x_9")) - (rule "remove_parentheses_right" (formula "15") (term "1")) - (rule "assignmentAdditionInt" (formula "15") (term "1")) - (rule "translateJavaAddInt" (formula "15") (term "0,0,1")) - (builtin "One Step Simplification" (formula "15")) - (rule "polySimp_addComm0" (formula "15") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "15") (term "1")) - (rule "assignment" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "tryEmpty" (formula "15") (term "1")) - (rule "methodCallEmpty" (formula "15") (term "1")) - (rule "emptyModality" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "dismissNonSelectedField" (formula "15") (term "1,0,1,0,1,0")) - (rule "replaceKnownSelect_taclet10_0" (formula "15") (term "1,0,1,0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet10_1" (formula "15") (term "1,0,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "15") (term "0,0,1,0,0")) - (rule "replaceKnownSelect_taclet10_0" (formula "15") (term "0,0,1,0,0")) - (rule "replaceKnownAuxiliaryConstant_taclet10_1" (formula "15") (term "0,0,1,0,0")) - (rule "replace_known_left" (formula "15") (term "1,0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "inEqSimp_sepPosMonomial1" (formula "15") (term "0,0")) - (rule "mul_literals" (formula "15") (term "1,0,0")) - (rule "inEqSimp_subsumption1" (formula "15") (term "0,0") (ifseqformula "8")) - (rule "leq_literals" (formula "15") (term "0,0,0")) - (builtin "One Step Simplification" (formula "15")) - (rule "cut_direct" (formula "15") (term "1")) - (branch "CUT: SETAccumulate(store(anon(heap, allLocs, anon_heap_LOOP<>), int[]::select(anon_heap_LOOP<>, self, LoopInvArrayExample::$a), arr(i_0), Z(1(#))), null) TRUE" - (builtin "One Step Simplification" (formula "16")) - (rule "allRight" (formula "16") (inst "sk=x_0")) - (rule "orRight" (formula "16")) - (rule "orRight" (formula "16")) - (rule "inEqSimp_leqRight" (formula "16")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_geqRight" (formula "17")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "add_zero_left" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1")) - (rule "polySimp_elimOne" (formula "1") (term "1")) - (rule "pullOutSelect" (formula "18") (term "0") (inst "selectSK=arr_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=arr_1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_exactShadow3" (formula "3") (ifseqformula "2")) - (rule "times_zero_1" (formula "3") (term "0,0")) - (rule "add_zero_left" (formula "3") (term "0")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "x_0 = i_0 TRUE" - (rule "applyEqReverse" (formula "20") (term "0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "20")) - (rule "closeTrue" (formula "20")) - ) - (branch "x_0 = i_0 FALSE" - (rule "applyEqReverse" (formula "20") (term "0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_strengthen0" (formula "1") (ifseqformula "15")) - (rule "inEqSimp_contradEq3" (formula "15") (ifseqformula "1")) - (rule "polySimp_mulComm0" (formula "15") (term "1,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "15") (term "0,0")) - (rule "add_literals" (formula "15") (term "1,1,0,0")) - (rule "times_zero_1" (formula "15") (term "1,0,0")) - (rule "add_zero_right" (formula "15") (term "0,0")) - (rule "qeq_literals" (formula "15") (term "0")) - (builtin "One Step Simplification" (formula "15")) - (rule "false_right" (formula "15")) - (rule "inEqSimp_exactShadow3" (formula "2") (ifseqformula "1")) - (rule "times_zero_1" (formula "2") (term "0,0")) - (rule "add_zero_left" (formula "2") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_subsumption1" (formula "12") (ifseqformula "2")) - (rule "leq_literals" (formula "12") (term "0")) - (builtin "One Step Simplification" (formula "12")) - (rule "true_left" (formula "12")) - (rule "allLeft" (formula "14") (inst "t=x_0")) - (rule "replaceKnownSelect_taclet0000010_3" (formula "14") (term "0,1")) - (rule "replaceKnownAuxiliaryConstant_taclet0000010_4" (formula "14") (term "0,1")) - (rule "replace_known_right" (formula "14") (term "1") (ifseqformula "19")) - (builtin "One Step Simplification" (formula "14")) - (rule "inEqSimp_contradInEq1" (formula "14") (term "0") (ifseqformula "3")) - (rule "qeq_literals" (formula "14") (term "0,0")) - (builtin "One Step Simplification" (formula "14")) - (rule "inEqSimp_contradInEq0" (formula "14") (ifseqformula "1")) - (rule "andLeft" (formula "14")) - (rule "inEqSimp_homoInEq1" (formula "14")) - (rule "polySimp_mulComm0" (formula "14") (term "1,0")) - (rule "polySimp_rightDist" (formula "14") (term "1,0")) - (rule "mul_literals" (formula "14") (term "0,1,0")) - (rule "polySimp_addAssoc" (formula "14") (term "0")) - (rule "polySimp_addComm0" (formula "14") (term "0,0")) - (rule "polySimp_pullOutFactor1b" (formula "14") (term "0")) - (rule "add_literals" (formula "14") (term "1,1,0")) - (rule "times_zero_1" (formula "14") (term "1,0")) - (rule "add_literals" (formula "14") (term "0")) - (rule "leq_literals" (formula "14")) - (rule "closeFalse" (formula "14")) - ) - ) - (branch "CUT: SETAccumulate(store(anon(heap, allLocs, anon_heap_LOOP<>), int[]::select(anon_heap_LOOP<>, self, LoopInvArrayExample::$a), arr(i_0), Z(1(#))), null) FALSE" - (builtin "One Step Simplification" (formula "16")) - (rule "false_right" (formula "16")) - (rule "arrayLengthIsAnInt" (formula "9") (term "0")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "arrayLengthNotNegative" (formula "1") (term "0")) - (opengoal " ") - ) - ) - (branch "Null Reference (x_arr_3 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr_3 != null, but i Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (builtin "One Step Simplification" (formula "16")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "9")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_6 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_ltRight" (formula "12")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0")) - (rule "polySimp_addComm0" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial1" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (x_arr_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (x_arr = null)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "1")) - (rule "replace_known_left" (formula "10") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "10")) - (rule "applyEq" (formula "10") (term "0,0") (ifseqformula "1")) - (rule "applyEq" (formula "9") (term "0,0") (ifseqformula "1")) - (rule "applyEq" (formula "11") (term "1,0,1,0") (ifseqformula "1")) - (rule "arrayLengthIsAnInt" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "10")) - (rule "arrayLengthNotNegative" (formula "10") (term "0")) - (rule "throwUnfold" (formula "12") (term "1") (inst "#v0=n")) - (rule "variableDeclarationAssign" (formula "12") (term "1")) - (rule "variableDeclaration" (formula "12") (term "1") (newnames "n")) - (builtin "Use Operation Contract" (formula "12") (newnames "heapBefore_NullPointerException,self_0,exc_0,heapAfter_NullPointerException,anon_heap_NullPointerException") (contract "java.lang.NullPointerException[java.lang.NullPointerException::NullPointerException()].JML normal_behavior operation contract.0")) - (branch "Post (NullPointerException)" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "13")) - (rule "andLeft" (formula "13")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,1,0,1,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "14")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "16")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "17")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "18")) - (rule "notLeft" (formula "15")) - (rule "andLeft" (formula "15")) - (rule "notLeft" (formula "15")) - (rule "orRight" (formula "20")) - (rule "replace_known_right" (formula "15") (term "1,0") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "20"))) - (rule "pullOutSelect" (formula "17") (term "0") (inst "selectSK=java_lang_Throwable_message_0")) - (rule "simplifySelectOfAnonEQ" (formula "17") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "17") (ifInst "" (formula "23")) (ifInst "" (formula "21")) (ifInst "" (formula "22"))) - (rule "applyEqReverse" (formula "18") (term "0") (ifseqformula "17")) - (rule "hideAuxiliaryEq" (formula "17")) - (rule "pullOutSelect" (formula "18") (term "0") (inst "selectSK=java_lang_Throwable_cause_0")) - (rule "simplifySelectOfAnonEQ" (formula "18") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "18") (ifInst "" (formula "23")) (ifInst "" (formula "21")) (ifInst "" (formula "22"))) - (rule "applyEqReverse" (formula "19") (term "0") (ifseqformula "18")) - (rule "hideAuxiliaryEq" (formula "18")) - (rule "commuteUnion" (formula "13") (term "1,0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "18") (term "0") (ifseqformula "12")) - (rule "replace_known_left" (formula "18") (term "0") (ifseqformula "19")) - (builtin "One Step Simplification" (formula "18")) - (rule "true_left" (formula "18")) - (rule "onlyCreatedObjectsAreReferenced" (formula "17") (term "0") (ifseqformula "12")) - (rule "replace_known_left" (formula "17") (term "0") (ifseqformula "18")) - (builtin "One Step Simplification" (formula "17")) - (rule "true_left" (formula "17")) - (rule "assignment" (formula "23") (term "1")) - (builtin "One Step Simplification" (formula "23")) - (rule "methodCallThrow" (formula "23") (term "1")) - (builtin "One Step Simplification" (formula "23")) - (rule "throwDiamond" (formula "23") (term "1")) - (builtin "One Step Simplification" (formula "23")) - (rule "false_right" (formula "23")) - (rule "variableDeclarationAssign" (formula "25") (term "1")) - (rule "variableDeclaration" (formula "25") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "25") (term "1")) - (builtin "One Step Simplification" (formula "25")) - (rule "variableDeclaration" (formula "25") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "25") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "25") (term "1") (newnames "x_2")) - (rule "compound_less_than_comparison_2" (formula "25") (term "1") (inst "#v0=x_3") (inst "#v1=x_4")) - (rule "variableDeclarationAssign" (formula "25") (term "1")) - (rule "variableDeclaration" (formula "25") (term "1") (newnames "x_3")) - (rule "assignment" (formula "25") (term "1")) - (builtin "One Step Simplification" (formula "25")) - (rule "variableDeclarationAssign" (formula "25") (term "1")) - (rule "variableDeclaration" (formula "25") (term "1") (newnames "x_4")) - (rule "eval_order_access2" (formula "25") (term "1") (inst "#v0=x_arr")) - (rule "variableDeclarationAssign" (formula "25") (term "1")) - (rule "variableDeclaration" (formula "25") (term "1") (newnames "x_arr_1")) - (rule "assignment_read_attribute_this" (formula "25") (term "1")) - (builtin "One Step Simplification" (formula "25")) - (rule "replaceKnownSelect_taclet10_0" (formula "25") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet10_1" (formula "25") (term "0,1,0")) - (rule "applyEq" (formula "25") (term "0,1,0") (ifseqformula "1")) - (rule "assignment_read_length" (formula "25") (term "1")) - (branch "Normal Execution (x_arr_1 != null)" - (builtin "One Step Simplification" (formula "25")) - (rule "closeTrue" (formula "25")) - ) - (branch "Null Reference (x_arr_1 = null)" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "25")) - (rule "throwUnfold" (formula "25") (term "1") (inst "#v0=n")) - (rule "variableDeclarationAssign" (formula "25") (term "1")) - (rule "variableDeclaration" (formula "25") (term "1") (newnames "n_1")) - (builtin "Use Operation Contract" (formula "25") (newnames "heapBefore_NullPointerException_0,self_1,exc_2,heapAfter_NullPointerException_0,anon_heap_NullPointerException_0") (contract "java.lang.NullPointerException[java.lang.NullPointerException::NullPointerException()].JML normal_behavior operation contract.0")) - (branch "Post (NullPointerException)" - (builtin "One Step Simplification" (formula "21")) - (builtin "One Step Simplification" (formula "27")) - (rule "andLeft" (formula "21")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "22") (term "1,1,0,1,0") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "22")) - (rule "andLeft" (formula "22")) - (rule "andLeft" (formula "23")) - (rule "andLeft" (formula "22")) - (rule "andLeft" (formula "23")) - (rule "andLeft" (formula "22")) - (rule "andLeft" (formula "24")) - (rule "andLeft" (formula "22")) - (rule "andLeft" (formula "23")) - (rule "notLeft" (formula "22")) - (rule "notLeft" (formula "22")) - (rule "orRight" (formula "28")) - (rule "replace_known_right" (formula "22") (term "0,0") (ifseqformula "28")) - (builtin "One Step Simplification" (formula "22") (ifInst "" (formula "29"))) - (rule "pullOutSelect" (formula "25") (term "0") (inst "selectSK=java_lang_Throwable_cause_1")) - (rule "simplifySelectOfAnonEQ" (formula "25") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "25") (ifInst "" (formula "31")) (ifInst "" (formula "29")) (ifInst "" (formula "30"))) - (rule "applyEqReverse" (formula "26") (term "0") (ifseqformula "25")) - (rule "hideAuxiliaryEq" (formula "25")) - (rule "pullOutSelect" (formula "24") (term "0") (inst "selectSK=java_lang_Throwable_message_1")) - (rule "simplifySelectOfAnonEQ" (formula "24") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "24") (ifInst "" (formula "31")) (ifInst "" (formula "29")) (ifInst "" (formula "30"))) - (rule "applyEqReverse" (formula "25") (term "0") (ifseqformula "24")) - (rule "hideAuxiliaryEq" (formula "24")) - (rule "commuteUnion" (formula "21") (term "1,0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "24") (term "0") (ifseqformula "20")) - (rule "replace_known_left" (formula "24") (term "0") (ifseqformula "25")) - (builtin "One Step Simplification" (formula "24")) - (rule "true_left" (formula "24")) - (rule "onlyCreatedObjectsAreReferenced" (formula "25") (term "0") (ifseqformula "20")) - (rule "replace_known_left" (formula "25") (term "0") (ifseqformula "26")) - (builtin "One Step Simplification" (formula "25")) - (rule "true_left" (formula "25")) - (rule "assignment" (formula "36") (term "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "tryCatchThrow" (formula "36") (term "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "ifElseUnfold" (formula "36") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "36") (term "1") (newnames "x_5")) - (rule "equality_comparison_simple" (formula "36") (term "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "replace_known_right" (formula "36") (term "0,0,1,0") (ifseqformula "30")) - (builtin "One Step Simplification" (formula "36")) - (rule "ifElseSplit" (formula "36")) - (branch "if x_5 true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_5 false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "ifElseSplit" (formula "36")) - (branch "if n_1 instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "31"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "36") (term "1") (newnames "e")) - (rule "arrayLengthIsAnInt" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "10")) - (rule "arrayLengthNotNegative" (formula "9") (term "0")) - (rule "delete_unnecessary_cast" (formula "36") (term "1")) - (branch "Normal Execution (n_1 instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "assignment" (formula "36") (term "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "assignment" (formula "36") (term "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "methodCallEmpty" (formula "36") (term "1")) - (rule "emptyModality" (formula "36") (term "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "blockThrow" (formula "36") (term "1")) - (rule "methodCallThrow" (formula "36") (term "1")) - (rule "tryCatchThrow" (formula "36") (term "1")) - (rule "ifElseUnfold" (formula "36") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "36") (term "1") (newnames "x_12")) - (rule "equality_comparison_simple" (formula "36") (term "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "replace_known_right" (formula "36") (term "0,0,1,0") (ifseqformula "30")) - (builtin "One Step Simplification" (formula "36")) - (rule "ifElseSplit" (formula "36")) - (branch "if x_12 true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_12 false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "ifElseSplit" (formula "36")) - (branch "if thrownExc instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "31"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "36") (term "1") (newnames "e_1")) - (rule "delete_unnecessary_cast" (formula "36") (term "1")) - (branch "Normal Execution (thrownExc instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "assignment" (formula "36") (term "1")) - (builtin "One Step Simplification" (formula "36")) - (rule "emptyModality" (formula "36") (term "1")) - (builtin "One Step Simplification" (formula "36") (ifInst "" (formula "30"))) - (rule "false_right" (formula "36")) - (opengoal " ") - ) - (branch "ClassCastException (!(thrownExc instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "36")) - (rule "closeTrue" (formula "36")) - ) - ) - (branch "if thrownExc instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "31"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "ClassCastException (!(n_1 instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "36")) - (rule "closeTrue" (formula "36")) - ) - ) - (branch "if n_1 instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "31"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Exceptional Post (NullPointerException)" - (builtin "One Step Simplification" (formula "21")) - (builtin "One Step Simplification" (formula "27")) - (rule "andLeft" (formula "21")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "22") (term "1,0,0") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "22")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "22") (term "1,1,0,1,0") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "22")) - (rule "andLeft" (formula "22")) - (rule "andLeft" (formula "23")) - (rule "andLeft" (formula "22")) - (rule "andLeft" (formula "24")) - (rule "andLeft" (formula "23")) - (rule "andLeft" (formula "22")) - (rule "andLeft" (formula "26")) - (rule "andLeft" (formula "24")) - (rule "notLeft" (formula "22")) - (rule "close" (formula "30") (ifseqformula "29")) - ) - (branch "Pre (NullPointerException)" - (builtin "One Step Simplification" (formula "25")) - (rule "wellFormedAnon" (formula "25")) - (rule "replace_known_left" (formula "25") (term "1") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "25") (ifInst "" (formula "3"))) - (rule "closeTrue" (formula "25")) - ) - ) - ) - (branch "Exceptional Post (NullPointerException)" - (builtin "One Step Simplification" (formula "14")) - (builtin "One Step Simplification" (formula "13")) - (rule "andLeft" (formula "13")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,0,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "14")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,1,0,1,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "14")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "16")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "18")) - (rule "andLeft" (formula "16")) - (rule "notLeft" (formula "14")) - (rule "close" (formula "22") (ifseqformula "21")) - ) - (branch "Pre (NullPointerException)" - (builtin "One Step Simplification" (formula "12")) - (rule "wellFormedAnon" (formula "12")) - (rule "replace_known_left" (formula "12") (term "1") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "12") (ifInst "" (formula "3"))) - (rule "closeTrue" (formula "12")) - ) - ) - ) - (branch "Use Case" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "10")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "7")) - (rule "inEqSimp_ltToLeq" (formula "9") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "9") (term "1,0,0,1,0,0")) - (rule "inEqSimp_commuteLeq" (formula "8")) - (rule "inEqSimp_sepPosMonomial0" (formula "9") (term "1,0,0")) - (rule "polySimp_mulComm0" (formula "9") (term "1,1,0,0")) - (rule "polySimp_rightDist" (formula "9") (term "1,1,0,0")) - (rule "mul_literals" (formula "9") (term "0,1,1,0,0")) - (rule "polySimp_mulLiterals" (formula "9") (term "1,1,1,0,0")) - (rule "polySimp_elimOne" (formula "9") (term "1,1,1,0,0")) - (rule "pullOutSelect" (formula "9") (term "1,0,1,0") (inst "selectSK=LoopInvArrayExample_a_0")) - (rule "applyEq" (formula "8") (term "0,0") (ifseqformula "9")) - (rule "simplifySelectOfAnon" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "applyEqReverse" (formula "10") (term "1,0,1,0") (ifseqformula "9")) - (rule "applyEqReverse" (formula "8") (term "0,0") (ifseqformula "9")) - (rule "hideAuxiliaryEq" (formula "9")) - (rule "nnf_imp2or" (formula "9") (term "0")) - (rule "nnf_notAnd" (formula "9") (term "0,0")) - (rule "inEqSimp_notLeq" (formula "9") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "9") (term "1,0,0,1,0,0")) - (rule "mul_literals" (formula "9") (term "0,1,0,0,1,0,0")) - (rule "polySimp_addAssoc" (formula "9") (term "0,0,1,0,0")) - (rule "add_literals" (formula "9") (term "0,0,0,1,0,0")) - (rule "add_zero_left" (formula "9") (term "0,0,1,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "9") (term "1,0,0")) - (rule "polySimp_mulLiterals" (formula "9") (term "1,1,0,0")) - (rule "polySimp_elimOne" (formula "9") (term "1,1,0,0")) - (rule "inEqSimp_notGeq" (formula "9") (term "0,0,0")) - (rule "times_zero_1" (formula "9") (term "1,0,0,0,0,0")) - (rule "add_zero_right" (formula "9") (term "0,0,0,0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "9") (term "0,0,0")) - (rule "mul_literals" (formula "9") (term "1,0,0,0")) - (rule "arrayLengthIsAnInt" (formula "8") (term "0")) - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (rule "arrayLengthNotNegative" (formula "8") (term "0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "9") (term "0,0") (ifseqformula "6")) - (rule "methodCallEmpty" (formula "14") (term "1,0,1")) - (rule "tryEmpty" (formula "14") (term "1,0,1")) - (rule "emptyModality" (formula "14") (term "1,0,1")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "b_2")) - (rule "compound_less_than_comparison_2" (formula "14") (term "1") (inst "#v0=x") (inst "#v1=x_1")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_10")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_11")) - (rule "eval_order_array_access6" (formula "14") (term "1") (inst "#v0=x_arr")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_arr_4")) - (rule "assignment_read_attribute_this" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "replaceKnownSelect_taclet20_0" (formula "14") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet20_1" (formula "14") (term "0,1,0")) - (rule "assignment_read_length" (formula "14") (term "1")) - (branch "Normal Execution (x_arr_4 != null)" - (builtin "One Step Simplification" (formula "15")) - (builtin "One Step Simplification" (formula "14")) - (rule "replace_known_right" (formula "9") (term "0") (ifseqformula "14")) - (builtin "One Step Simplification" (formula "9")) - (rule "less_than_comparison_simple" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "inEqSimp_ltToLeq" (formula "15") (term "0,0,1,0")) - (rule "polySimp_mulComm0" (formula "15") (term "1,0,0,0,0,1,0")) - (rule "polySimp_addComm1" (formula "15") (term "0,0,0,1,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "15") (term "0,0,1,0")) - (rule "polySimp_mulLiterals" (formula "15") (term "0,0,0,1,0")) - (rule "polySimp_elimOne" (formula "15") (term "0,0,0,1,0")) - (rule "methodCallEmpty" (formula "15") (term "1")) - (rule "emptyModality" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "replaceKnownSelect_taclet20_0" (formula "15") (term "1,0,1,0,0,0,1")) - (rule "replaceKnownAuxiliaryConstant_taclet20_1" (formula "15") (term "1,0,1,0,0,0,1")) - (rule "replaceKnownSelect_taclet20_0" (formula "15") (term "0,1,1,0,0,0,0,1")) - (rule "replaceKnownAuxiliaryConstant_taclet20_1" (formula "15") (term "0,1,1,0,0,0,0,1")) - (rule "impRight" (formula "15")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "12")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "add_zero_left" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1")) - (rule "polySimp_elimOne" (formula "1") (term "1")) - (rule "inEqSimp_antiSymm" (formula "11") (ifseqformula "1")) - (rule "applyEq" (formula "17") (term "1,1,0,0,0,0") (ifseqformula "11")) - (rule "replace_known_left" (formula "17") (term "0,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "17")) - (rule "applyEq" (formula "9") (term "0") (ifseqformula "11")) - (rule "applyEq" (formula "11") (term "0") (ifseqformula "10")) - (rule "inEqSimp_homoInEq1" (formula "11")) - (rule "polySimp_pullOutFactor1" (formula "11") (term "0")) - (rule "add_literals" (formula "11") (term "1,0")) - (rule "times_zero_1" (formula "11") (term "0")) - (rule "leq_literals" (formula "11")) - (rule "true_left" (formula "11")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "10")) - (rule "inEqSimp_homoInEq0" (formula "1")) - (rule "polySimp_pullOutFactor1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,0")) - (rule "times_zero_1" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "Class_invariant_axiom_for_LoopInvArrayExample" (formula "14") (term "0") (inst "sk=sk_1") (ifseqformula "4")) - (branch "Use Axiom" - (rule "replaceKnownSelect_taclet20_0" (formula "14") (term "0,0,0")) - (rule "replaceKnownAuxiliaryConstant_taclet20_1" (formula "14") (term "0,0,0")) - (rule "replace_known_right" (formula "14") (term "0,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "14")) - (rule "arrayLengthIsAnInt" (formula "9") (term "0")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "arrayLengthNotNegative" (formula "9") (term "0")) - (opengoal " ") - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "14")) - (rule "closeTrue" (formula "14")) - ) - ) - (branch "Null Reference (x_arr_4 = null)" - (builtin "One Step Simplification" (formula "15")) - (builtin "One Step Simplification" (formula "1")) - (rule "replace_known_left" (formula "10") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "10")) - (rule "applyEq" (formula "9") (term "0,0") (ifseqformula "1")) - (rule "applyEq" (formula "11") (term "1,0,1,0") (ifseqformula "1")) - (rule "applyEq" (formula "10") (term "0,0") (ifseqformula "1")) - (rule "arrayLengthNotNegative" (formula "9") (term "0")) - (rule "arrayLengthIsAnInt" (formula "9") (term "0")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "throwUnfold" (formula "14") (term "1") (inst "#v0=n")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "n_2")) - (builtin "Use Operation Contract" (formula "14") (newnames "heapBefore_NullPointerException_1,self_2,exc_4,heapAfter_NullPointerException_1,anon_heap_NullPointerException_1") (contract "java.lang.NullPointerException[java.lang.NullPointerException::NullPointerException()].JML normal_behavior operation contract.0")) - (branch "Post (NullPointerException)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "16")) - (rule "andLeft" (formula "13")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,1,0,1,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "14")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "16")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "17")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "18")) - (rule "andLeft" (formula "16")) - (rule "notLeft" (formula "15")) - (rule "notLeft" (formula "15")) - (rule "orRight" (formula "20")) - (rule "replace_known_right" (formula "15") (term "0,0") (ifseqformula "20")) - (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "21"))) - (rule "pullOutSelect" (formula "18") (term "0") (inst "selectSK=java_lang_Throwable_cause_2")) - (rule "simplifySelectOfAnonEQ" (formula "18") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "18") (ifInst "" (formula "23")) (ifInst "" (formula "21")) (ifInst "" (formula "22"))) - (rule "applyEqReverse" (formula "19") (term "0") (ifseqformula "18")) - (rule "hideAuxiliaryEq" (formula "18")) - (rule "pullOutSelect" (formula "17") (term "0") (inst "selectSK=java_lang_Throwable_message_2")) - (rule "simplifySelectOfAnonEQ" (formula "17") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "17") (ifInst "" (formula "23")) (ifInst "" (formula "21")) (ifInst "" (formula "22"))) - (rule "applyEqReverse" (formula "18") (term "0") (ifseqformula "17")) - (rule "hideAuxiliaryEq" (formula "17")) - (rule "commuteUnion" (formula "13") (term "1,0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "17") (term "0") (ifseqformula "12")) - (rule "replace_known_left" (formula "17") (term "0") (ifseqformula "18")) - (builtin "One Step Simplification" (formula "17")) - (rule "true_left" (formula "17")) - (rule "onlyCreatedObjectsAreReferenced" (formula "18") (term "0") (ifseqformula "12")) - (rule "replace_known_left" (formula "18") (term "0") (ifseqformula "19")) - (builtin "One Step Simplification" (formula "18")) - (rule "true_left" (formula "18")) - (rule "assignment" (formula "25") (term "1")) - (builtin "One Step Simplification" (formula "25")) - (rule "methodCallThrow" (formula "25") (term "1")) - (builtin "One Step Simplification" (formula "25")) - (rule "throwBox" (formula "25") (term "1")) - (rule "closeTrue" (formula "25")) - ) - (branch "Exceptional Post (NullPointerException)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "16")) - (rule "andLeft" (formula "13")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,0,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "14")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,1,0,1,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "14")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "16")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "18")) - (rule "andLeft" (formula "16")) - (rule "notLeft" (formula "14")) - (rule "close" (formula "21") (ifseqformula "20")) - ) - (branch "Pre (NullPointerException)" - (builtin "One Step Simplification" (formula "14")) - (rule "wellFormedAnon" (formula "14")) - (rule "replace_known_left" (formula "14") (term "1") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "3"))) - (rule "closeTrue" (formula "14")) - ) - ) - ) -) -(branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "8")) (ifInst "" (formula "8"))) - (rule "closeTrue" (formula "6")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractAllBranchesOpenTest/oracle/UseOperationContractAllBranchesOpenTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractAllBranchesOpenTest/oracle/UseOperationContractAllBranchesOpenTest.xml deleted file mode 100644 index 9f98cf69d37..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractAllBranchesOpenTest/oracle/UseOperationContractAllBranchesOpenTest.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractAllBranchesOpenTest/test/UseOperationContractAllBranchesOpenTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractAllBranchesOpenTest/test/UseOperationContractAllBranchesOpenTest.java deleted file mode 100644 index 87d0b339b07..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractAllBranchesOpenTest/test/UseOperationContractAllBranchesOpenTest.java +++ /dev/null @@ -1,33 +0,0 @@ - -public class UseOperationContractAllBranchesOpenTest { - public static int main(int x, UseOperationContractAllBranchesOpenTest obj) { - try { - int magicNumber = obj.magic(x); - int magicNumberCopy = magicNumber; - return magicNumber + magicNumberCopy; - } - catch (Exception e) { - return -1; - } - } - - /*@ public normal_behavior - @ requires x >= 10; - @ ensures \result == 42; - @ - @ also - @ - @ public exceptional_behavior - @ requires x < -10; - @ signals_only Exception; - @ signals (Exception myExc) true; - @*/ - public int magic(int x) throws Exception { - if (x >= 0) { - return 42; - } - else { - throw new Exception(); - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractApplyContractTwice/oracle/OperationContractAppliedTwiceTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractApplyContractTwice/oracle/OperationContractAppliedTwiceTest.xml deleted file mode 100644 index 019a39b91ba..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractApplyContractTwice/oracle/OperationContractAppliedTwiceTest.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractApplyContractTwice/test/OperationContractAppliedTwiceTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractApplyContractTwice/test/OperationContractAppliedTwiceTest.java deleted file mode 100644 index ece3c863927..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractApplyContractTwice/test/OperationContractAppliedTwiceTest.java +++ /dev/null @@ -1,20 +0,0 @@ - -public class OperationContractAppliedTwiceTest { - public static int doubleMagic() { - int first = magic(); - int second = magic(); - if (first == 42) { - return first + second; - } - else { - return 0; - } - } - - /*@ normal_behavior - @ ensures \result == 42; - @*/ - public static /*@ strictly_pure @*/ int magic() { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractExceptionalNoPreconditionWithNullCheckTest/oracle/UseOperationContractExceptionalNoPreconditionWithNullCheckTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractExceptionalNoPreconditionWithNullCheckTest/oracle/UseOperationContractExceptionalNoPreconditionWithNullCheckTest.xml deleted file mode 100644 index caf082fc95a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractExceptionalNoPreconditionWithNullCheckTest/oracle/UseOperationContractExceptionalNoPreconditionWithNullCheckTest.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractExceptionalNoPreconditionWithNullCheckTest/test/UseOperationContractExceptionalNoPreconditionWithNullCheckTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractExceptionalNoPreconditionWithNullCheckTest/test/UseOperationContractExceptionalNoPreconditionWithNullCheckTest.java deleted file mode 100644 index d64dc49b989..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractExceptionalNoPreconditionWithNullCheckTest/test/UseOperationContractExceptionalNoPreconditionWithNullCheckTest.java +++ /dev/null @@ -1,21 +0,0 @@ - -public class UseOperationContractExceptionalNoPreconditionWithNullCheckTest { - public static int main(UseOperationContractExceptionalNoPreconditionWithNullCheckTest obj) { - try { - int magicNumber = obj.magic(123); - int magicNumberCopy = magicNumber; - return magicNumber + magicNumberCopy; - } - catch (Exception e) { - return -1; - } - } - - /*@ public exceptional_behavior - @ signals_only Exception; - @ signals (Exception myExc) true; - @*/ - public int magic(int x) throws Exception { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFalsePreconditionTest/oracle/UseOperationContractFalsePreconditionTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFalsePreconditionTest/oracle/UseOperationContractFalsePreconditionTest.xml deleted file mode 100644 index 8f56a8c75bd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFalsePreconditionTest/oracle/UseOperationContractFalsePreconditionTest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFalsePreconditionTest/test/UseOperationContractFalsePreconditionTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFalsePreconditionTest/test/UseOperationContractFalsePreconditionTest.java deleted file mode 100644 index b2f3a04551f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFalsePreconditionTest/test/UseOperationContractFalsePreconditionTest.java +++ /dev/null @@ -1,16 +0,0 @@ - -public class UseOperationContractFalsePreconditionTest { - public static int main() { - int magicNumber = magic(123); - int magicNumberCopy = magicNumber; - return magicNumber + magicNumberCopy; - } - - /*@ public normal_behavior - @ requires false; - @ ensures \result == 42; - @*/ - public static int magic(int x) { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFixedNormalPostTest/oracle/UseOperationContractFixedNormalPostTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFixedNormalPostTest/oracle/UseOperationContractFixedNormalPostTest.xml deleted file mode 100644 index 75a1b79d2d2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFixedNormalPostTest/oracle/UseOperationContractFixedNormalPostTest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFixedNormalPostTest/test/UseOperationContractFixedNormalPostTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFixedNormalPostTest/test/UseOperationContractFixedNormalPostTest.java deleted file mode 100644 index 27112714347..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractFixedNormalPostTest/test/UseOperationContractFixedNormalPostTest.java +++ /dev/null @@ -1,33 +0,0 @@ - -public class UseOperationContractFixedNormalPostTest { - public static int main() { - try { - int magicNumber = magic(123); - int magicNumberCopy = magicNumber; - return magicNumber + magicNumberCopy; - } - catch (Exception e) { - return -1; - } - } - - /*@ public normal_behavior - @ requires x >= 0; - @ ensures \result == 42; - @ - @ also - @ - @ public exceptional_behavior - @ requires x < 0; - @ signals_only Exception; - @ signals (Exception myExc) true; - @*/ - public static int magic(int x) throws Exception { - if (x >= 0) { - return 42; - } - else { - throw new Exception(); - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionOnObjectTest/oracle/UseOperationContractInvalidPreconditionOnObjectTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionOnObjectTest/oracle/UseOperationContractInvalidPreconditionOnObjectTest.xml deleted file mode 100644 index 863a23fd5f5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionOnObjectTest/oracle/UseOperationContractInvalidPreconditionOnObjectTest.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionOnObjectTest/test/UseOperationContractInvalidPreconditionOnObjectTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionOnObjectTest/test/UseOperationContractInvalidPreconditionOnObjectTest.java deleted file mode 100644 index f40d69a497c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionOnObjectTest/test/UseOperationContractInvalidPreconditionOnObjectTest.java +++ /dev/null @@ -1,26 +0,0 @@ - -public class UseOperationContractInvalidPreconditionOnObjectTest { - public static int main() { - try { - int magicNumber = magic(-123); - int magicNumberCopy = magicNumber; - return magicNumber + magicNumberCopy; - } - catch (Exception e) { - return -1; - } - } - - /*@ public normal_behavior - @ requires x >= 0; - @ ensures \result == 42; - @*/ - public static int magic(int x) throws Exception { - if (x >= 0) { - return 42; - } - else { - throw new Exception(); - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionTest/oracle/UseOperationContractInvalidPreconditionTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionTest/oracle/UseOperationContractInvalidPreconditionTest.xml deleted file mode 100644 index e1ea0419b78..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionTest/oracle/UseOperationContractInvalidPreconditionTest.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionTest/test/UseOperationContractInvalidPreconditionTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionTest/test/UseOperationContractInvalidPreconditionTest.java deleted file mode 100644 index f4ccb18f4cf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractInvalidPreconditionTest/test/UseOperationContractInvalidPreconditionTest.java +++ /dev/null @@ -1,30 +0,0 @@ - -public class UseOperationContractInvalidPreconditionTest { - /*@ public normal_behavior - @ ensures \result == 42 * 2; - @*/ - public static int main() { - try { - UseOperationContractInvalidPreconditionTest obj = new UseOperationContractInvalidPreconditionTest(); - int magicNumber = obj.magic(-123); - int magicNumberCopy = magicNumber; - return magicNumber + magicNumberCopy; - } - catch (Exception e) { - return -1; - } - } - - /*@ public normal_behavior - @ requires x >= 0; - @ ensures \result == 42; - @*/ - public int magic(int x) throws Exception { - if (x >= 0) { - return 42; - } - else { - throw new Exception(); - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractLightweightOperationContractTest/oracle/LightweightOperationContractTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractLightweightOperationContractTest/oracle/LightweightOperationContractTest.xml deleted file mode 100644 index 9b0badc88c7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractLightweightOperationContractTest/oracle/LightweightOperationContractTest.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractLightweightOperationContractTest/test/LightweightOperationContractTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractLightweightOperationContractTest/test/LightweightOperationContractTest.java deleted file mode 100644 index 80ec3152787..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractLightweightOperationContractTest/test/LightweightOperationContractTest.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class LightweightOperationContractTest { - public static int main(int x) { - return magic(x); - } - - /*@ requires x > 0; - @ ensures \result == 1; - @ also - @ requires x < 0; - @ ensures \result == -1; - @ also - @ requires x == 0; - @ signals (NullPointerException) true; - @*/ - public static int magic(int x) { - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoExceptionTest/oracle/UseOperationContractNoExceptionTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoExceptionTest/oracle/UseOperationContractNoExceptionTest.xml deleted file mode 100644 index 47a7c8a8565..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoExceptionTest/oracle/UseOperationContractNoExceptionTest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoExceptionTest/test/UseOperationContractNoExceptionTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoExceptionTest/test/UseOperationContractNoExceptionTest.java deleted file mode 100644 index 4b32a24d5cb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoExceptionTest/test/UseOperationContractNoExceptionTest.java +++ /dev/null @@ -1,32 +0,0 @@ - -public class UseOperationContractNoExceptionTest { - public static int main() { - try { - int magicNumber = magic(123); - int magicNumberCopy = magicNumber; - return magicNumber + magicNumberCopy; - } - catch (Exception e) { - return -1; - } - } - - /*@ public normal_behavior - @ requires x >= 0; - @ ensures \result == 42; - @ - @ also - @ - @ public normal_behavior - @ requires x < 0; - @ ensures \result == -1; - @*/ - public static int magic(int x) throws Exception { - if (x >= 0) { - return 42; - } - else { - return -1; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionTest/oracle/UseOperationContractNoPreconditionTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionTest/oracle/UseOperationContractNoPreconditionTest.xml deleted file mode 100644 index 3a06872e539..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionTest/oracle/UseOperationContractNoPreconditionTest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionTest/test/UseOperationContractNoPreconditionTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionTest/test/UseOperationContractNoPreconditionTest.java deleted file mode 100644 index 71ceb3214cd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionTest/test/UseOperationContractNoPreconditionTest.java +++ /dev/null @@ -1,15 +0,0 @@ - -public class UseOperationContractNoPreconditionTest { - public static int main() { - int magicNumber = magic(123); - int magicNumberCopy = magicNumber; - return magicNumber + magicNumberCopy; - } - - /*@ public normal_behavior - @ ensures \result == 42; - @*/ - public static int magic(int x) { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionWithNullCheckTest/oracle/UseOperationContractNoPreconditionWithNullCheckTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionWithNullCheckTest/oracle/UseOperationContractNoPreconditionWithNullCheckTest.xml deleted file mode 100644 index 9751000be1c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionWithNullCheckTest/oracle/UseOperationContractNoPreconditionWithNullCheckTest.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionWithNullCheckTest/test/UseOperationContractNoPreconditionWithNullCheckTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionWithNullCheckTest/test/UseOperationContractNoPreconditionWithNullCheckTest.java deleted file mode 100644 index cc6e6953b76..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNoPreconditionWithNullCheckTest/test/UseOperationContractNoPreconditionWithNullCheckTest.java +++ /dev/null @@ -1,15 +0,0 @@ - -public class UseOperationContractNoPreconditionWithNullCheckTest { - public static int main(UseOperationContractNoPreconditionWithNullCheckTest obj) { - int magicNumber = obj.magic(123); - int magicNumberCopy = magicNumber; - return magicNumber + magicNumberCopy; - } - - /*@ public normal_behavior - @ ensures \result == 42; - @*/ - public int magic(int x) { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalBranchTest/oracle/UseOperationContractNormalAndExceptionalBranchTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalBranchTest/oracle/UseOperationContractNormalAndExceptionalBranchTest.xml deleted file mode 100644 index 480730a2e9d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalBranchTest/oracle/UseOperationContractNormalAndExceptionalBranchTest.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalBranchTest/test/UseOperationContractNormalAndExceptionalBranchTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalBranchTest/test/UseOperationContractNormalAndExceptionalBranchTest.java deleted file mode 100644 index 0dff003eed9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalBranchTest/test/UseOperationContractNormalAndExceptionalBranchTest.java +++ /dev/null @@ -1,45 +0,0 @@ - -public class UseOperationContractNormalAndExceptionalBranchTest { - public static int main(int value) { - try { - int magicNumber = magic(value); - int magicNumberCopy = magicNumber; - return magicNumber + magicNumberCopy; - } - catch (Exception e) { - return -1; - } - } - - /*@ public normal_behavior - @ requires x >= 0 && x < 10; - @ ensures \result == 42; - @ - @ also - @ public normal_behavior - @ requires x >= 10; - @ ensures \result == 84; - @ - @ also - @ - @ public exceptional_behavior - @ requires x < 0 && x >= -10; - @ signals_only Exception; - @ signals (Exception myExc) true; - @ - @ also - @ - @ public exceptional_behavior - @ requires x < -10; - @ signals_only Exception; - @ signals (Exception myExc) true; - @*/ - public static int magic(int x) throws Exception { - if (x >= 0) { - return 42; - } - else { - throw new Exception(); - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalTogetherTest/oracle/UseOperationContractNormalAndExceptionalTogetherTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalTogetherTest/oracle/UseOperationContractNormalAndExceptionalTogetherTest.xml deleted file mode 100644 index 7454a9da0fd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalTogetherTest/oracle/UseOperationContractNormalAndExceptionalTogetherTest.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalTogetherTest/test/UseOperationContractNormalAndExceptionalTogetherTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalTogetherTest/test/UseOperationContractNormalAndExceptionalTogetherTest.java deleted file mode 100644 index 8aac6a451ee..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractNormalAndExceptionalTogetherTest/test/UseOperationContractNormalAndExceptionalTogetherTest.java +++ /dev/null @@ -1,36 +0,0 @@ - -public class UseOperationContractNormalAndExceptionalTogetherTest { - /*@ public normal_behavior - @ ensures \result == 42 * 2; - @*/ - public static int main() { - try { - int magicNumber = magic(123); - int magicNumberCopy = magicNumber; - return magicNumber + magicNumberCopy; - } - catch (Exception e) { - return -1; - } - } - - /*@ public normal_behavior - @ requires x >= 0; - @ ensures \result == 42; - @ - @ also - @ - @ public exceptional_behavior - @ requires x < 0; - @ signals_only Exception; - @ signals (Exception myExc) true; - @*/ - public static int magic(int x) throws Exception { - if (x >= 0) { - return 42; - } - else { - throw new Exception(); - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractQueryTest/oracle/UseOperationContractQueryTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractQueryTest/oracle/UseOperationContractQueryTest.xml deleted file mode 100644 index b33219d0bd1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractQueryTest/oracle/UseOperationContractQueryTest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractQueryTest/test/UseOperationContractQueryTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractQueryTest/test/UseOperationContractQueryTest.java deleted file mode 100644 index f2c1212bcdb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractQueryTest/test/UseOperationContractQueryTest.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class UseOperationContractQueryTest { - public static int main(int value) { - return magicTransformation(value); - } - - /*@ normal_behavior - @ ensures \result == value * 2; - @*/ - public static int magicTransformation(int value) { - throw new RuntimeException(); - } - - public static int magicNumber() { - return 39 + 3; - } -} 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 deleted file mode 100644 index 18250e0095f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractStatementsInImpliciteConstructor/oracle/UseOperationContractStatementsInImpliciteConstructor.xml +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractStatementsInImpliciteConstructor/test/UseOperationContractStatementsInImpliciteConstructor.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractStatementsInImpliciteConstructor/test/UseOperationContractStatementsInImpliciteConstructor.java deleted file mode 100644 index 8dcbb3a66e6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractStatementsInImpliciteConstructor/test/UseOperationContractStatementsInImpliciteConstructor.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class UseOperationContractStatementsInImpliciteConstructor { - public int average(int[] array) { - if (array != null) { - int sum = sum(array); - return sum / array.length; - } - else { - throw new IllegalArgumentException("Array can't be null."); - } - } - - /*@ normal_behavior - @ requires array != null; - @ ensures \result == (\sum int i; 0 <= i && i < array.length; array[i]); - @*/ - public int sum(int[] array) { - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractVariableNestedOperationContractUse/oracle/VariableNestedOperationContractUse.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractVariableNestedOperationContractUse/oracle/VariableNestedOperationContractUse.xml deleted file mode 100644 index aa7548962e3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractVariableNestedOperationContractUse/oracle/VariableNestedOperationContractUse.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractVariableNestedOperationContractUse/test/VariableNestedOperationContractUse.java b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractVariableNestedOperationContractUse/test/VariableNestedOperationContractUse.java deleted file mode 100644 index 1312f8ee280..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractVariableNestedOperationContractUse/test/VariableNestedOperationContractUse.java +++ /dev/null @@ -1,20 +0,0 @@ - -public class VariableNestedOperationContractUse { - public static int main(int x) { - return doubleMagic(magic(x)); - } - - /*@ normal_behavior - @ ensures \result == x + x; - @*/ - public static /*@ strictly_pure @*/ int doubleMagic(int x) { - return x + x; - } - - /*@ normal_behavior - @ ensures \result > x; - @*/ - public static /*@ strictly_pure @*/ int magic(int x) { - return x + 1; - } -} 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 deleted file mode 100644 index 51f824f002a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariableMethodContractTest/oracle/VariableMethodContractTest.xml +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariableMethodContractTest/test/VariableMethodContractTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariableMethodContractTest/test/VariableMethodContractTest.java deleted file mode 100644 index cfbebccfa01..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariableMethodContractTest/test/VariableMethodContractTest.java +++ /dev/null @@ -1,17 +0,0 @@ -public class VariableMethodContractTest { - public int l; - public int l2; - - public void findMax(){ - l2 = 0; - l = max(this); - } - - /*@ requires true; - @ ensures m.l2 == 42; - @ assignable m.l2; - @*/ - public static int max(VariableMethodContractTest m){ - return 0; - } -} \ No newline at end of file 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 deleted file mode 100644 index 70092c42b3b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariablesArrayTest/oracle/VariablesArrayTest.xml +++ /dev/null @@ -1,397 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariablesArrayTest/test/VariablesArrayTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariablesArrayTest/test/VariablesArrayTest.java deleted file mode 100644 index 14b30b23a2d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariablesArrayTest/test/VariablesArrayTest.java +++ /dev/null @@ -1,8 +0,0 @@ - -public class VariablesArrayTest { - public static int arrayTest(int[] a) { - a[10] = 2; - a[20] = 4; - return a[10] + a[20]; - } -} 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 deleted file mode 100644 index 80e2e2bb196..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest.xml +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index f9d929199d3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest_Sequent.xml +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/test/ArrayAssignmentTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/test/ArrayAssignmentTest.java deleted file mode 100644 index b87a74aa059..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/test/ArrayAssignmentTest.java +++ /dev/null @@ -1,9 +0,0 @@ -public class ArrayAssignmentTest { - //@ requires array.length >= 4; - public static int[] main(int[] array) { - array[0] = 100; - array[1] = array[2]; - array[3] = array[0]; - return array; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationInstanceTest/oracle/ArrayCreationInstanceTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationInstanceTest/oracle/ArrayCreationInstanceTest.xml deleted file mode 100644 index ddfd1827174..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationInstanceTest/oracle/ArrayCreationInstanceTest.xml +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationInstanceTest/oracle/ArrayCreationInstanceTest_Sequent.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationInstanceTest/oracle/ArrayCreationInstanceTest_Sequent.xml deleted file mode 100644 index 04621c69825..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationInstanceTest/oracle/ArrayCreationInstanceTest_Sequent.xml +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationInstanceTest/test/ArrayCreationInstanceTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationInstanceTest/test/ArrayCreationInstanceTest.java deleted file mode 100644 index e1ef5037d6d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationInstanceTest/test/ArrayCreationInstanceTest.java +++ /dev/null @@ -1,12 +0,0 @@ -public class ArrayCreationInstanceTest { - private int[] array; - - //@ requires n >= 4; - public static int[] main(ArrayCreationInstanceTest obj, int n) { - obj.array = new int[n]; - obj.array[0] = 100; - obj.array[1] = obj.array[2]; - obj.array[3] = obj.array[0]; - return obj.array; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationTest/oracle/ArrayCreationTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationTest/oracle/ArrayCreationTest.xml deleted file mode 100644 index de58d733149..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationTest/oracle/ArrayCreationTest.xml +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationTest/oracle/ArrayCreationTest_Sequent.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationTest/oracle/ArrayCreationTest_Sequent.xml deleted file mode 100644 index ef14c72a821..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationTest/oracle/ArrayCreationTest_Sequent.xml +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationTest/test/ArrayCreationTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationTest/test/ArrayCreationTest.java deleted file mode 100644 index da11f87ed5e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayCreationTest/test/ArrayCreationTest.java +++ /dev/null @@ -1,12 +0,0 @@ -public class ArrayCreationTest { - private static int[] array; - - //@ requires n >= 4; - public static int[] main(int n) { - array = new int[n]; - array[0] = 100; - array[1] = array[2]; - array[3] = array[0]; - return array; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayTest/oracle/VariablesArrayTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayTest/oracle/VariablesArrayTest.xml deleted file mode 100644 index 28347c09988..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayTest/oracle/VariablesArrayTest.xml +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayTest/test/VariablesArrayTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayTest/test/VariablesArrayTest.java deleted file mode 100644 index 33cf6618bce..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayTest/test/VariablesArrayTest.java +++ /dev/null @@ -1,10 +0,0 @@ - -public class VariablesArrayTest { - public int main() { - int[][] multiArray = new int[2][]; - multiArray[0] = new int[] {1, 2}; - multiArray[1] = new int[] {3, 4, 5}; - return multiArray[0][0] + multiArray[0][1] + - multiArray[1][0] + multiArray[1][1] + multiArray[1][2]; - } -} 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 deleted file mode 100644 index 4348f14da11..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalCycle/oracle/VariablesConditionalCycle.xml +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalCycle/test/VariablesConditionalCycle.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalCycle/test/VariablesConditionalCycle.java deleted file mode 100644 index 6a2913492c2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalCycle/test/VariablesConditionalCycle.java +++ /dev/null @@ -1,10 +0,0 @@ - -public class VariablesConditionalCycle { - private VariablesConditionalCycle next; - private int value; - - public int main() { - next.value = 42; - return value; - } -} 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 deleted file mode 100644 index 67befc21641..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest.xml +++ /dev/null @@ -1,397 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index dfcda6310f6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest_next.xml +++ /dev/null @@ -1,487 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/test/ConditionalValuesTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/test/ConditionalValuesTest.java deleted file mode 100644 index b5e6452882e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/test/ConditionalValuesTest.java +++ /dev/null @@ -1,21 +0,0 @@ - -public class ConditionalValuesTest { - private int value; - - public static int main(ConditionalValuesTest x, ConditionalValuesTest y) { - x.value = 2; - y.value = 3; - return x.value + y.value; - } - - public static int mainNext(Both b) { - b.x.value = 2; - b.y.value = 3; - return b.x.value + b.y.value; - } - - private static class Both { - public ConditionalValuesTest x; - public ConditionalValuesTest y; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesEmptyArrayCreationTest/oracle/EmptyArrayCreationTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesEmptyArrayCreationTest/oracle/EmptyArrayCreationTest.xml deleted file mode 100644 index ca013bd98fd..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesEmptyArrayCreationTest/oracle/EmptyArrayCreationTest.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesEmptyArrayCreationTest/oracle/EmptyArrayCreationTest_Sequent.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesEmptyArrayCreationTest/oracle/EmptyArrayCreationTest_Sequent.xml deleted file mode 100644 index 9b5e0eba096..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesEmptyArrayCreationTest/oracle/EmptyArrayCreationTest_Sequent.xml +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesEmptyArrayCreationTest/test/EmptyArrayCreationTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesEmptyArrayCreationTest/test/EmptyArrayCreationTest.java deleted file mode 100644 index 6edda945b2e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesEmptyArrayCreationTest/test/EmptyArrayCreationTest.java +++ /dev/null @@ -1,9 +0,0 @@ -public class EmptyArrayCreationTest { - private int[] array; - - //@ requires n == 0; - public static int[] main(EmptyArrayCreationTest obj, int n) { - obj.array = new int[n]; - return obj.array; - } -} 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 deleted file mode 100644 index afebcffb3d9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesInstanceVariableTest/oracle/VariablesInstanceVariableTest.xml +++ /dev/null @@ -1,574 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesInstanceVariableTest/test/VariablesInstanceVariableTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesInstanceVariableTest/test/VariablesInstanceVariableTest.java deleted file mode 100644 index ac424942cb9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesInstanceVariableTest/test/VariablesInstanceVariableTest.java +++ /dev/null @@ -1,22 +0,0 @@ -public class VariablesInstanceVariableTest { - private int a; - - private int b; - - private IntWrapper wrapper; - - public int main(IntWrapper param) { - int x = 5; - a = x; - b = 3; - param = new IntWrapper(); - param.value = 1; - wrapper = new IntWrapper(); - wrapper.value = 4; - return a + b + x + wrapper.value + param.value; - } -} - -class IntWrapper { - public int value; -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalTest/oracle/VariablesLocalTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalTest/oracle/VariablesLocalTest.xml deleted file mode 100644 index bc03b485371..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalTest/oracle/VariablesLocalTest.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalTest/test/VariablesLocalTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalTest/test/VariablesLocalTest.java deleted file mode 100644 index 1fcac8710f6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalTest/test/VariablesLocalTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class VariablesLocalTest { - public int main() { - int a = 2; - int b = 3; - int sum = sum(a, b); - return sum; - } - - public int sum(int a, int b) { - int result = a + b; - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalVariablesTest/oracle/LocalVariablesTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalVariablesTest/oracle/LocalVariablesTest.xml deleted file mode 100644 index c5ada458702..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalVariablesTest/oracle/LocalVariablesTest.xml +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalVariablesTest/test/LocalVariablesTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalVariablesTest/test/LocalVariablesTest.java deleted file mode 100644 index 2d6d973f9b2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesLocalVariablesTest/test/LocalVariablesTest.java +++ /dev/null @@ -1,13 +0,0 @@ - -public class LocalVariablesTest { - public static int main(int y) { - int main = y - 2; - int subResult = sub(main); - return subResult; - } - - public static int sub(int x) { - int sub = x + 2; - return sub; - } -} 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 deleted file mode 100644 index 3aace8b446d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest.xml +++ /dev/null @@ -1,789 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index f6837a9dba0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest_Sequent.xml +++ /dev/null @@ -1,1279 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/test/NonSimpleArrayAssignmentTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/test/NonSimpleArrayAssignmentTest.java deleted file mode 100644 index 56c540870ba..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/test/NonSimpleArrayAssignmentTest.java +++ /dev/null @@ -1,11 +0,0 @@ -public class NonSimpleArrayAssignmentTest { - private int value; - - //@ requires array.length >= 4; - public static NonSimpleArrayAssignmentTest[] main(NonSimpleArrayAssignmentTest[] array) { - array[0].value = 100; - array[1].value = array[2].value; - array[3].value = array[0].value; - return array; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayCreationTest/oracle/NonSimpleArrayCreationTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayCreationTest/oracle/NonSimpleArrayCreationTest.xml deleted file mode 100644 index 12ba38b2889..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayCreationTest/oracle/NonSimpleArrayCreationTest.xml +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index e3ee44cfb4e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayCreationTest/oracle/NonSimpleArrayCreationTest_Sequent.xml +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayCreationTest/test/NonSimpleArrayCreationTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayCreationTest/test/NonSimpleArrayCreationTest.java deleted file mode 100644 index 9537ead5817..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayCreationTest/test/NonSimpleArrayCreationTest.java +++ /dev/null @@ -1,15 +0,0 @@ -public class NonSimpleArrayCreationTest { - private static NonSimpleArrayCreationTest[] array; - - private int value; - - //@ requires n >= 4; - //@ requires instance.value == 100; - public static NonSimpleArrayCreationTest[] main(int n, NonSimpleArrayCreationTest instance) { - array = new NonSimpleArrayCreationTest[n]; - array[0] = instance; - array[1] = array[2]; - array[3] = array[0]; - return array; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesParameterAttributesChange/oracle/VariablesParameterAttributesChange.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesParameterAttributesChange/oracle/VariablesParameterAttributesChange.xml deleted file mode 100644 index 0050aaed703..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesParameterAttributesChange/oracle/VariablesParameterAttributesChange.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesParameterAttributesChange/test/VariablesParameterAttributesChange.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesParameterAttributesChange/test/VariablesParameterAttributesChange.java deleted file mode 100644 index 4235d31dd51..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesParameterAttributesChange/test/VariablesParameterAttributesChange.java +++ /dev/null @@ -1,10 +0,0 @@ - -public class VariablesParameterAttributesChange { - public int main(int a, int b) { - a = 3; - int c = 4; - b = 2; - c = a + b; - return a + b + c; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesSimpleCycle/oracle/VariablesSimpleCycle.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesSimpleCycle/oracle/VariablesSimpleCycle.xml deleted file mode 100644 index e096fd4a7c5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesSimpleCycle/oracle/VariablesSimpleCycle.xml +++ /dev/null @@ -1,387 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesSimpleCycle/test/VariablesSimpleCycle.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesSimpleCycle/test/VariablesSimpleCycle.java deleted file mode 100644 index bef1e95f82e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesSimpleCycle/test/VariablesSimpleCycle.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class VariablesSimpleCycle { - private VariablesSimpleCycle next; - private SomethingElse something; - private int value; - - public int main() { - next = this; - something.root = this; - value = 42; - return value; - } -} - -class SomethingElse { - public VariablesSimpleCycle root; -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesStaticTest/oracle/VariablesStaticTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesStaticTest/oracle/VariablesStaticTest.xml deleted file mode 100644 index 4b9872103a6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesStaticTest/oracle/VariablesStaticTest.xml +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesStaticTest/test/VariablesStaticTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesStaticTest/test/VariablesStaticTest.java deleted file mode 100644 index 86737d87d9d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesStaticTest/test/VariablesStaticTest.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class VariablesStaticTest { - public static int z; - - public int main() { - VariablesStaticTest.z = 2; - StaticFields.a = 4; - StaticFields.b = 8; - return VariablesStaticTest.z + StaticFields.a + StaticFields.b; - } -} - -class StaticFields { - public static int a; - - public static int b; -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUnknownTest/oracle/UnknownTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUnknownTest/oracle/UnknownTest.xml deleted file mode 100644 index 759c1db8886..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUnknownTest/oracle/UnknownTest.xml +++ /dev/null @@ -1,401 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUnknownTest/test/UnknownTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUnknownTest/test/UnknownTest.java deleted file mode 100644 index e0c92120be1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUnknownTest/test/UnknownTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package endless; - -public class UnknownTest { - private UnknownTest next; - - private UnknownTest previous; - - public UnknownTest main() { - previous = null; - next = new UnknownTest(); - next.next = new UnknownTest(); - return next.next; - } -} 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 deleted file mode 100644 index f7fdeb976a6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUpdateVariablesTest/oracle/UpdateVariablesTest.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUpdateVariablesTest/test/UpdateVariablesTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUpdateVariablesTest/test/UpdateVariablesTest.java deleted file mode 100644 index 0f9f146c3c8..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUpdateVariablesTest/test/UpdateVariablesTest.java +++ /dev/null @@ -1,16 +0,0 @@ - -public class UpdateVariablesTest { - public static int classUnused; - public static int classRead; - public static int classWrite; - - public int fieldUnused; - public int fieldRead; - public int fieldWrite; - - public int main() { - classWrite = classRead; - fieldWrite = fieldRead; - return classWrite + fieldWrite; - } -} 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 deleted file mode 100644 index 52c64bf8d20..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesVariableArrayIndex/oracle/VariableArrayIndex.xml +++ /dev/null @@ -1,653 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesVariableArrayIndex/test/VariableArrayIndex.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesVariableArrayIndex/test/VariableArrayIndex.java deleted file mode 100644 index 36569220015..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesVariableArrayIndex/test/VariableArrayIndex.java +++ /dev/null @@ -1,10 +0,0 @@ -public class VariableArrayIndex { - private int[] array; - private int index; - - // array != null && array.length >= 1 && index >= 0 && index < array.length - public int magic() { - array[index] = 42; - return array[index]; - } -} 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 deleted file mode 100644 index 38b76923ee1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesWithQuantifier/oracle/EnoughInfoReturn.xml +++ /dev/null @@ -1,1203 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesWithQuantifier/test/EnoughInfoReturn.java b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesWithQuantifier/test/EnoughInfoReturn.java deleted file mode 100644 index 9464e3886e7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesWithQuantifier/test/EnoughInfoReturn.java +++ /dev/null @@ -1,17 +0,0 @@ -public class EnoughInfoReturn { - private int[] passwords; - private boolean found; - - public void passwordChecker(){ - int i = 0; - - /*@ loop_invariant i >= 0 & (\forall int j_5; j_5 < i && 0 <= j_5; passwords[j_5] >= 0); - @ assignable i; - @ decreases passwords.length - i; - @*/ - while (i < passwords.length && passwords[i] >= 0) { - i += 1; - } - found = i < passwords.length; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/oracle/VerifyMin.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/oracle/VerifyMin.xml deleted file mode 100644 index 4910697e7ba..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/oracle/VerifyMin.xml +++ /dev/null @@ -1,270 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/oracle/VerifyMinTrueBranch.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/oracle/VerifyMinTrueBranch.xml deleted file mode 100644 index 9ef660a36f3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/oracle/VerifyMinTrueBranch.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/test/VerifyMin.java b/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/test/VerifyMin.java deleted file mode 100644 index b163b2260e2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/test/VerifyMin.java +++ /dev/null @@ -1,16 +0,0 @@ - -public class VerifyMin { - /*@ normal_behavior - @ ensures x < y ==> \result == x; - @ ensures x >= y ==> \result == y; - @ assignable \strictly_nothing; - @*/ - public static int min(int x, int y) { - if (x < y) { - return x; - } - else { - return y; - } - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/test/VerifyMin.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/test/VerifyMin.proof deleted file mode 100644 index 3c894fb050d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/test/VerifyMin.proof +++ /dev/null @@ -1,155 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Aug 01 11:46:32 CEST 2014 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_SIDE_PROOF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "VerifyMin[VerifyMin::min(int,int)].JML normal_behavior operation contract.0", - "contract": "VerifyMin[VerifyMin::min(int,int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "344") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,0,0,1")) -(rule "eqSymm" (formula "3") (term "1,1,0,0,0,1")) -(rule "eqSymm" (formula "3") (term "0,0,1,0,1")) -(rule "inEqSimp_ltToLeq" (formula "3") (term "0,0,0,0,0,1")) -(rule "polySimp_mulComm0" (formula "3") (term "1,0,0,0,0,0,0,0,1")) -(rule "polySimp_addComm1" (formula "3") (term "0,0,0,0,0,0,1")) -(rule "inEqSimp_commuteGeq" (formula "3") (term "0,1,0,0,0,1")) -(rule "inEqSimp_sepNegMonomial0" (formula "3") (term "0,0,0,0,0,1")) -(rule "polySimp_mulLiterals" (formula "3") (term "0,0,0,0,0,0,1")) -(rule "polySimp_elimOne" (formula "3") (term "0,0,0,0,0,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_min,savedHeapBefore_min")) -(builtin "One Step Simplification" (formula "3")) -(rule "ifElseUnfold" (formula "3") (term "1") (inst "#boolv=x")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "less_than_comparison_simple" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "ifElseSplit" (formula "3")) -(branch "if x_1 true" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "blockReturn" (formula "4") (term "1")) - (rule "methodCallReturn" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "impRight" (formula "4")) - (rule "inEqSimp_contradEq7" (formula "5") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "5") (term "1,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "5") (term "0,0")) - (rule "add_literals" (formula "5") (term "1,1,0,0")) - (rule "times_zero_1" (formula "5") (term "1,0,0")) - (rule "add_literals" (formula "5") (term "0,0")) - (rule "leq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "false_right" (formula "5")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) -) -(branch "if x_1 false" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_ltRight" (formula "3")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0")) - (rule "polySimp_addComm0" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial1" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "blockReturn" (formula "4") (term "1")) - (rule "methodCallReturn" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "impRight" (formula "4")) - (rule "eqSymm" (formula "5")) - (rule "inEqSimp_contradEq7" (formula "5") (ifseqformula "1")) - (rule "polySimp_mulComm0" (formula "5") (term "1,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "5") (term "0,0")) - (rule "add_literals" (formula "5") (term "1,1,0,0")) - (rule "times_zero_1" (formula "5") (term "1,0,0")) - (rule "add_zero_right" (formula "5") (term "0,0")) - (rule "leq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "false_right" (formula "5")) - (rule "inEqSimp_contradInEq0" (formula "1") (ifseqformula "2")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/test/VerifyMinTrueBranch.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/test/VerifyMinTrueBranch.proof deleted file mode 100644 index c6184db908f..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyMin/test/VerifyMinTrueBranch.proof +++ /dev/null @@ -1,117 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Aug 01 12:24:02 CEST 2014 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_SIDE_PROOF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "VerifyMin[VerifyMin::min(int,int)].JML normal_behavior operation contract.0", - "contract": "VerifyMin[VerifyMin::min(int,int)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "119") - -(branch "dummy ID" -(rule "assignment" (formula "1") (term "1,1") (newnames "heapAtPre") (userinteraction)) -(rule "methodBodyExpand" (formula "1") (term "1,1,1") (newnames "heapBefore_min,savedHeapBefore_min") (userinteraction)) -(rule "impRight" (formula "1") (userinteraction)) -(rule "ifElseUnfold" (formula "2") (term "1,1,1") (inst "#boolv=x") (userinteraction)) -(rule "variableDeclaration" (formula "2") (term "1,1,1") (newnames "x_1") (userinteraction)) -(rule "less_than_comparison_simple" (formula "2") (term "1,1,1") (userinteraction)) -(rule "ifElse" (formula "2") (term "1,1,1,1") (userinteraction)) -(rule "ifthenelse_split_for" (formula "2") (term "1,1,1,1") (userinteraction)) -(branch "x_1 = TRUE TRUE" - (builtin "One Step Simplification" (formula "2")) - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "3")) - (rule "andLeft" (formula "2")) - (rule "eqSymm" (formula "4") (term "0,0,1,0,1")) - (rule "eqSymm" (formula "4") (term "1,0,0,0,0,1")) - (rule "eqSymm" (formula "4") (term "1,1,0,0,0,1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_ltToLeq" (formula "4") (term "0,0,0,0,0,1")) - (rule "polySimp_mulComm0" (formula "4") (term "1,0,0,0,0,0,0,0,1")) - (rule "polySimp_addComm1" (formula "4") (term "0,0,0,0,0,0,1")) - (rule "inEqSimp_commuteGeq" (formula "4") (term "0,1,0,0,0,1")) - (rule "blockReturn" (formula "4") (term "1")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial0" (formula "4") (term "0,0,0,0,0,1")) - (rule "polySimp_mulLiterals" (formula "4") (term "0,0,0,0,0,0,1")) - (rule "polySimp_elimOne" (formula "4") (term "0,0,0,0,0,0,1")) - (rule "methodCallReturn" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "impRight" (formula "4")) - (rule "inEqSimp_contradEq7" (formula "5") (ifseqformula "2")) - (rule "polySimp_mulComm0" (formula "5") (term "1,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "5") (term "0,0")) - (rule "add_literals" (formula "5") (term "1,1,0,0")) - (rule "times_zero_1" (formula "5") (term "1,0,0")) - (rule "add_zero_right" (formula "5") (term "0,0")) - (rule "leq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "false_right" (formula "5")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) -) -(branch "x_1 = TRUE FALSE" - (opengoal " ") -) -) - -} 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 deleted file mode 100644 index a099f1e71a5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyNumber/oracle/VerifyNumberNormal.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyNumber/test/VerifyNumber.java b/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyNumber/test/VerifyNumber.java deleted file mode 100644 index 1a0b970ba40..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyNumber/test/VerifyNumber.java +++ /dev/null @@ -1,22 +0,0 @@ -public class VerifyNumber { - private int content; - - /*@ normal_behavior - @ requires n != null; - @ ensures \result == (content == n.content); - @ assignable \strictly_nothing; - @ also - @ exceptional_behavior - @ requires n == null; - @ signals (Exception) true; - @ assignable \strictly_nothing; - @*/ - public boolean equals(VerifyNumber n) { - if (content == n.content) { - return true; - } - else { - return false; - } - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyNumber/test/VerifyNumberNormal.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyNumber/test/VerifyNumberNormal.proof deleted file mode 100644 index cd6829db36c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyNumber/test/VerifyNumberNormal.proof +++ /dev/null @@ -1,148 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Aug 01 12:30:09 CEST 2014 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_SIDE_PROOF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=JavaCardDLStrategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "VerifyNumber[VerifyNumber::equals(VerifyNumber)].JML normal_behavior operation contract.0", - "contract": "VerifyNumber[VerifyNumber::equals(VerifyNumber)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "572") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "heapAtPre")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "notLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "eqSymm" (formula "9") (term "0,0,1,0,1")) -(rule "eqSymm" (formula "9") (term "0,0,0,0,1")) -(rule "replace_known_right" (formula "4") (term "0") (ifseqformula "8")) -(builtin "One Step Simplification" (formula "4")) -(rule "assignment" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "Class_invariant_axiom_for_VerifyNumber" (formula "6") (inst "sk=sk_0") (ifseqformula "3")) -(branch "Use Axiom" - (rule "true_left" (formula "6")) - (rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_equals,savedHeapBefore_equals")) - (builtin "One Step Simplification" (formula "8")) - (rule "ifElseUnfold" (formula "8") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x")) - (rule "compound_equality_comparison_2" (formula "8") (term "1") (inst "#v1=x_2") (inst "#v0=x_1")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_1")) - (rule "assignment_read_attribute_this" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_2")) - (rule "assignment_read_attribute" (formula "8") (term "1")) - (branch "Normal Execution (_n != null)" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "7"))) - (rule "false_right" (formula "8")) - (rule "equality_comparison_simple" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "ifElseSplit" (formula "8")) - (branch "if x true" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "blockReturn" (formula "9") (term "1")) - (rule "methodCallReturn" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "tryEmpty" (formula "9") (term "1")) - (rule "emptyModality" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "1"))) - (rule "Class_invariant_axiom_for_VerifyNumber" (formula "9") (inst "sk=sk_2") (ifseqformula "4")) - (branch "Use Axiom" - (rule "closeTrue" (formula "9")) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "9")) - (rule "closeTrue" (formula "9")) - ) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "blockReturn" (formula "9") (term "1")) - (rule "methodCallReturn" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "tryEmpty" (formula "9") (term "1")) - (rule "emptyModality" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "6"))) - (rule "Class_invariant_axiom_for_VerifyNumber" (formula "9") (inst "sk=sk_1") (ifseqformula "3")) - (branch "Use Axiom" - (rule "closeTrue" (formula "9")) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "9")) - (rule "closeTrue" (formula "9")) - ) - ) - ) - (branch "Null Reference (_n = null)" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "7")) - (rule "closeTrue" (formula "7")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_loop.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_loop.xml deleted file mode 100644 index 755edfd6e51..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_loop.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_magic.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_magic.xml deleted file mode 100644 index c879b85440b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_magic.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_magicException.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_magicException.xml deleted file mode 100644 index beec0e058ba..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_magicException.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_notLoop.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_notLoop.xml deleted file mode 100644 index e9919d61eae..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_notLoop.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_notMagic.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_notMagic.xml deleted file mode 100644 index 9eee5dc877d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_notMagic.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_notMagicException.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_notMagicException.xml deleted file mode 100644 index c78a3205752..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/oracle/VerifiedTest_notMagicException.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/test/VerifiedTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/test/VerifiedTest.java deleted file mode 100644 index 1ee613a80f6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verifiedTest/test/VerifiedTest.java +++ /dev/null @@ -1,65 +0,0 @@ - -public class VerifiedTest { - /*@ exceptional_behavior - @ requires true; - @ signals (Exception) true; - @*/ - public static int magicException() throws Exception { - throw new Exception(); - } - - /*@ exceptional_behavior - @ requires true; - @ signals_only RuntimeException; - @ signals (RuntimeException) true; - @*/ - public static int notMagicException() throws Exception { - throw new Exception(); - } - - /*@ - @ ensures \result == 42; - @*/ - public static int magic() { - return 42; - } - - /*@ - @ ensures \result == 42; - @*/ - public static int notMagic() { - return 66; - } - - /*@ - @ ensures \result == 0; - @*/ - public static int loop(int x) { - if (x < 0) { - x = -x; - } - /*@ loop_invariant x >= 0; - @ decreasing x; - @*/ - while (x > 0) { - x--; - } - return x; - } - - /*@ - @ ensures \result == 0; - @*/ - public static int notLoop(int x) { - if (x < 0) { - x = -x; - } - /*@ loop_invariant x >= 0; - @ decreasing x; - @*/ - while (x > 0) { - x -= 2; - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/whileFalseTest/oracle/WhileFalseTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/whileFalseTest/oracle/WhileFalseTest.xml deleted file mode 100644 index 02bbc918a43..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/whileFalseTest/oracle/WhileFalseTest.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/whileFalseTest/test/WhileFalseTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/whileFalseTest/test/WhileFalseTest.java deleted file mode 100644 index 5e75336b77c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/whileFalseTest/test/WhileFalseTest.java +++ /dev/null @@ -1,13 +0,0 @@ - -public class WhileFalseTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int result = 0; - while (false) { - result ++; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/whileTest/oracle/WhileTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/whileTest/oracle/WhileTest.xml deleted file mode 100644 index 5df9f3cb1e4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/whileTest/oracle/WhileTest.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/whileTest/test/WhileTest.java b/key.core.symbolic_execution/src/test/resources/testcase/set/whileTest/test/WhileTest.java deleted file mode 100644 index 7e0e0d093c3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/whileTest/test/WhileTest.java +++ /dev/null @@ -1,28 +0,0 @@ - -public class WhileTest { - /*@ requires true; - @ ensures true; - @*/ - public int main() { - int result = 0; - int i = 0; - while (i < 3) { - result ++; - i++; - } - return result; - } - - /*@ requires true; - @ ensures true; - @*/ - public int mainVariable(int count) { - int result = 0; - int i = 0; - while (i < count) { - result ++; - i++; - } - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/simplelogger.properties b/key.core.symbolic_execution/src/test/resources/testcase/simplelogger.properties deleted file mode 100644 index 9e49a3e92d5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/simplelogger.properties +++ /dev/null @@ -1,33 +0,0 @@ -# We use sl4j-simple in the test environment. - -# org.slf4j.simpleLogger.logFile - The output target which can be the path to a file, -# or the special values "System.out" and "System.err". Default is "System.err". -# org.slf4j.simpleLogger.cacheOutputStream - If the output target is set to "System.out" or "System.err" -# (see preceding entry), by default, logs will be output to the latest value referenced by System.out/err variables. -# By setting this parameter to true, the output stream will be cached, i.e. assigned once at initialization time -# and re-used independently of the current value referenced by System.out/err. -# org.slf4j.simpleLogger.defaultLogLevel - Default log level for all instances of SimpleLogger. -# Must be one of ("trace", "debug", "info", "warn", "error" or "off"). If not specified, defaults to "info". -# org.slf4j.simpleLogger.log.a.b.c - Logging detail level for a SimpleLogger instance named "a.b.c". -# Right-side value must be one of "trace", "debug", "info", "warn", "error" or "off". -# When a SimpleLogger named "a.b.c" is initialized, its level is assigned from this property. If unspecified, -# the level of nearest parent logger will be used, and if none is set, then the value specified -# by org.slf4j.simpleLogger.defaultLogLevel will be used. -# org.slf4j.simpleLogger.showDateTime - Set to true if you want the current date and time to be included in -# output messages. Default is false -# org.slf4j.simpleLogger.dateTimeFormat - The date and time format to be used in the output messages. -# The pattern describing the date and time format is defined by SimpleDateFormat. If the format is not specified -# or is invalid, the number of milliseconds since start up will be output. -# org.slf4j.simpleLogger.showThreadName -Set to true if you want to output the current thread name. Defaults to true. -# org.slf4j.simpleLogger.showLogName - Set to true if you want the Logger instance name to be included in output messages. -# Defaults to true. -# org.slf4j.simpleLogger.showShortLogName - Set to true if you want the last component of the name to be included in -# output messages. Defaults to false. -# org.slf4j.simpleLogger.levelInBrackets - Should the level string be output in brackets? Defaults to false. -# org.slf4j.simpleLogger.warnLevelString - The string value output for the warn level. Defaults to WARN. - - -org.slf4j.simpleLogger.defaultLogLevel=warn -org.slf4j.simpleLogger.showThreadName=false -org.slf4j.simpleLogger.showShortLogName=true -org.slf4j.simpleLogger.levelInBrackets=true \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasChanged/AliasChanged.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasChanged/AliasChanged.java deleted file mode 100644 index 62aaf0e0bf0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasChanged/AliasChanged.java +++ /dev/null @@ -1,31 +0,0 @@ -public class AliasChanged { - private Container container; - - /*@ normal_behavior - @ requires o1 != null && \invariant_for(o1); - @ requires o1.container != null && \invariant_for(o1.container); - @ requires o2 != null && \invariant_for(o2); - @ requires o2.container != null && \invariant_for(o2.container); - @ requires o1 != 02; - @ requires o1.container != o2.container; - @ ensures true; - @*/ - public static int main(AliasChanged o1, - AliasChanged o2) { - Container c = o1.container; - o1.container.x = 40; - o2.container.x = -666; - o1.container.y = 2; - o2.container = o1.container; - o1.container.z = -4711; - c.result = o2.container.x + c.y; - return c.result; - } - - private static class Container { - private int x; - private int y; - private int z; - private int result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasChanged/AliasChanged.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasChanged/AliasChanged.proof deleted file mode 100644 index 4250bd840af..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasChanged/AliasChanged.proof +++ /dev/null @@ -1,366 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:18:57 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:showSatisfiability , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "AliasChanged[AliasChanged::main(AliasChanged,AliasChanged)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "AliasChanged[AliasChanged::main(AliasChanged,AliasChanged)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1429") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "o1,o2,result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "6")) -(rule "andLeft" (formula "2")) -(rule "notLeft" (formula "5")) -(rule "andLeft" (formula "7")) -(rule "andLeft" (formula "6")) -(rule "andLeft" (formula "8")) -(rule "andLeft" (formula "10")) -(rule "notLeft" (formula "6")) -(rule "notLeft" (formula "7")) -(rule "andLeft" (formula "8")) -(rule "andLeft" (formula "10")) -(rule "notLeft" (formula "8")) -(rule "andLeft" (formula "10")) -(rule "notLeft" (formula "9")) -(rule "notLeft" (formula "9")) -(rule "notLeft" (formula "9")) -(rule "eqSymm" (formula "9")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "13")) -(builtin "One Step Simplification" (formula "2")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "11")) -(builtin "One Step Simplification" (formula "3")) -(rule "onlyCreatedObjectsAreReferenced" (formula "6") (term "1") (ifseqformula "1")) -(rule "replace_known_right" (formula "6") (term "0") (ifseqformula "13")) -(builtin "One Step Simplification" (formula "6")) -(rule "onlyCreatedObjectsAreReferenced" (formula "9") (term "1") (ifseqformula "1")) -(rule "replace_known_right" (formula "9") (term "0") (ifseqformula "12")) -(builtin "One Step Simplification" (formula "9")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_AliasChanged" (formula "5")) -(rule "notLeft" (formula "5")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_AliasChanged" (formula "8")) -(rule "notLeft" (formula "8")) -(rule "assignment" (formula "16") (term "1")) -(builtin "One Step Simplification" (formula "16")) -(rule "methodBodyExpand" (formula "16") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "16")) -(rule "variableDeclarationAssign" (formula "16") (term "1")) -(rule "variableDeclaration" (formula "16") (term "1") (newnames "c")) -(rule "assignment_read_attribute" (formula "16") (term "1")) -(branch "Normal Execution (_o1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access1" (formula "16") (term "1") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_1")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access1" (formula "16") (term "1") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_2")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "12"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access1" (formula "16") (term "1") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_3")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_3 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access4" (formula "16") (term "1") (inst "#v0=a") (inst "#v1=c_1")) - (rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_AliasChanged" (formula "5")) - (rule "notLeft" (formula "5")) - (rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_AliasChanged" (formula "8")) - (rule "notLeft" (formula "8")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "a")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_4")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (a != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access1" (formula "16") (term "1") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_5")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=AliasChanged_container_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_5 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access4" (formula "16") (term "1") (inst "#v1=x") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_6")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x")) - (rule "compound_addition_2" (formula "16") (term "1") (inst "#v1=x_2") (inst "#v0=x_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_1")) - (rule "eval_order_access2" (formula "16") (term "1") (inst "#v0=c_7")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_7")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=AliasChanged_container_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_7 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=AliasChanged_Container_x_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_2")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=AliasChanged_Container_y_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignmentAdditionInt" (formula "16") (term "1")) - (rule "translateJavaAddInt" (formula "16") (term "0,0,1")) - (builtin "One Step Simplification" (formula "16")) - (rule "add_literals" (formula "16") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_6 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "returnUnfold" (formula "16") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_3")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=AliasChanged_Container_result_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "16") (term "1")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodCallEmpty" (formula "16") (term "1")) - (rule "tryEmpty" (formula "16") (term "1")) - (rule "emptyModality" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (opengoal " ") - ) - (branch "Null Reference (c = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_6 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_7 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_5 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_3 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_o1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasNotAvailable/AliasNotAvailable.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasNotAvailable/AliasNotAvailable.java deleted file mode 100644 index 59aa3c52d60..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasNotAvailable/AliasNotAvailable.java +++ /dev/null @@ -1,30 +0,0 @@ -public class AliasNotAvailable { - private Container container; - - /*@ normal_behavior - @ requires o1 != null && \invariant_for(o1); - @ requires o1.container != null && \invariant_for(o1.container); - @ requires o2 != null && \invariant_for(o2); - @ requires o2.container != null && \invariant_for(o2.container); - @ requires o1 != 02; - @ requires o1.container != o2.container; - @ ensures true; - @*/ - public static int main(AliasNotAvailable o1, - AliasNotAvailable o2) { - o2.container = o1.container; - o2.container.x = 40; - o1.container.y = 2; - o1.container.z = -4711; - Container c = o1.container; - c.result = c.x + c.y; - return c.result; - } - - private static class Container { - private int x; - private int y; - private int z; - private int result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasNotAvailable/AliasNotAvailable.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasNotAvailable/AliasNotAvailable.proof deleted file mode 100644 index b7df477bdbf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasNotAvailable/AliasNotAvailable.proof +++ /dev/null @@ -1,326 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:19:25 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:showSatisfiability , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "AliasNotAvailable[AliasNotAvailable::main(AliasNotAvailable,AliasNotAvailable)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "AliasNotAvailable[AliasNotAvailable::main(AliasNotAvailable,AliasNotAvailable)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1397") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "o1,o2,result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "6")) -(rule "andLeft" (formula "2")) -(rule "notLeft" (formula "5")) -(rule "andLeft" (formula "7")) -(rule "andLeft" (formula "6")) -(rule "andLeft" (formula "8")) -(rule "andLeft" (formula "10")) -(rule "notLeft" (formula "6")) -(rule "notLeft" (formula "7")) -(rule "andLeft" (formula "8")) -(rule "andLeft" (formula "10")) -(rule "notLeft" (formula "8")) -(rule "andLeft" (formula "10")) -(rule "notLeft" (formula "9")) -(rule "notLeft" (formula "9")) -(rule "notLeft" (formula "9")) -(rule "eqSymm" (formula "9")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "13")) -(builtin "One Step Simplification" (formula "2")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "11")) -(builtin "One Step Simplification" (formula "3")) -(rule "onlyCreatedObjectsAreReferenced" (formula "6") (term "1") (ifseqformula "1")) -(rule "replace_known_right" (formula "6") (term "0") (ifseqformula "13")) -(builtin "One Step Simplification" (formula "6")) -(rule "onlyCreatedObjectsAreReferenced" (formula "9") (term "1") (ifseqformula "1")) -(rule "replace_known_right" (formula "9") (term "0") (ifseqformula "12")) -(builtin "One Step Simplification" (formula "9")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_AliasNotAvailable" (formula "5")) -(rule "notLeft" (formula "5")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_AliasNotAvailable" (formula "8")) -(rule "notLeft" (formula "8")) -(rule "assignment" (formula "16") (term "1")) -(builtin "One Step Simplification" (formula "16")) -(rule "methodBodyExpand" (formula "16") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "16")) -(rule "eval_order_access4" (formula "16") (term "1") (inst "#v0=a") (inst "#v1=c_1")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_AliasNotAvailable" (formula "8")) -(rule "notLeft" (formula "8")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_AliasNotAvailable" (formula "5")) -(rule "notLeft" (formula "5")) -(rule "variableDeclarationAssign" (formula "16") (term "1")) -(rule "variableDeclaration" (formula "16") (term "1") (newnames "a")) -(rule "assignment" (formula "16") (term "1")) -(builtin "One Step Simplification" (formula "16")) -(rule "variableDeclarationAssign" (formula "16") (term "1")) -(rule "variableDeclaration" (formula "16") (term "1") (newnames "c_1")) -(rule "assignment_read_attribute" (formula "16") (term "1")) -(branch "Normal Execution (_o1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (a != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access1" (formula "16") (term "1") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_2")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=AliasNotAvailable_container_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access1" (formula "16") (term "1") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_3")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=AliasNotAvailable_container_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_3 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access1" (formula "16") (term "1") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_4")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "replaceKnownSelect_taclet00000_2" (formula "16") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet00000_3" (formula "16") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_4 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "replaceKnownSelect_taclet00000_2" (formula "16") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet00000_3" (formula "16") (term "0,1,0")) - (rule "eval_order_access4" (formula "16") (term "1") (inst "#v1=x") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_5")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x")) - (rule "compound_addition_2" (formula "16") (term "1") (inst "#v1=x_2") (inst "#v0=x_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_1")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=AliasNotAvailable_Container_x_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_2")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=AliasNotAvailable_Container_y_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignmentAdditionInt" (formula "16") (term "1")) - (rule "translateJavaAddInt" (formula "16") (term "0,0,1")) - (builtin "One Step Simplification" (formula "16")) - (rule "add_literals" (formula "16") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_5 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "returnUnfold" (formula "16") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_3")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=AliasNotAvailable_Container_result_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "16") (term "1")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodCallEmpty" (formula "16") (term "1")) - (rule "tryEmpty" (formula "16") (term "1")) - (rule "emptyModality" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (opengoal " ") - ) - (branch "Null Reference (c = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_5 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_4 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_3 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_o1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasedByExecutionTest/AliasedByExecution.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasedByExecutionTest/AliasedByExecution.java deleted file mode 100644 index b604c66200b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasedByExecutionTest/AliasedByExecution.java +++ /dev/null @@ -1,14 +0,0 @@ -public class AliasedByExecution { - private int value; - - /*@ normal_behavior - @ ensures true; - @*/ - public static int magic(AliasedByExecution a, AliasedByExecution b) { - a.value = 2; - if (a == b) { - b.value = 3; - } - return a.value; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasedByExecutionTest/AliasedByExecution.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasedByExecutionTest/AliasedByExecution.proof deleted file mode 100644 index b72665061e6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasedByExecutionTest/AliasedByExecution.proof +++ /dev/null @@ -1,175 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Tue Mar 29 14:36:15 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "AliasedByExecution[AliasedByExecution::magic(AliasedByExecution,AliasedByExecution)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "AliasedByExecution[AliasedByExecution::magic(AliasedByExecution,AliasedByExecution)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "853") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "a,b,result,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "4")) -(rule "notLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "6")) -(builtin "One Step Simplification" (formula "3")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment" (formula "7") (term "1")) -(builtin "One Step Simplification" (formula "7")) -(rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) -(builtin "One Step Simplification" (formula "7")) -(rule "assignment_write_attribute" (formula "7") (term "1")) -(branch "Normal Execution (_a != null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5"))) - (rule "false_right" (formula "7")) - (rule "ifUnfold" (formula "7") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x")) - (rule "equality_comparison_simple" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "eqSymm" (formula "7") (term "0,0,1,0")) - (rule "ifSplit" (formula "7")) - (branch "if x true" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "assignment_write_attribute" (formula "8") (term "1")) - (branch "Normal Execution (_b != null)" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "7"))) - (rule "false_right" (formula "8")) - (rule "blockEmpty" (formula "8") (term "1")) - (rule "applyEq" (formula "4") (term "1,0") (ifseqformula "1")) - (rule "applyEq" (formula "6") (term "0") (ifseqformula "1")) - (rule "applyEq" (formula "6") (term "1,0,1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "returnUnfold" (formula "6") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_2")) - (rule "assignment_read_attribute" (formula "6") (term "1")) - (branch "Normal Execution (_a != null)" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=AliasedByExecution_value_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "closeTrue" (formula "6")) - ) - (branch "Null Reference (_a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_b = null)" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "returnUnfold" (formula "8") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_1")) - (rule "assignment_read_attribute" (formula "8") (term "1")) - (branch "Normal Execution (_a != null)" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "6"))) - (rule "false_right" (formula "8")) - (rule "pullOutSelect" (formula "8") (term "0,1,0") (inst "selectSK=AliasedByExecution_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "9") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "closeTrue" (formula "8")) - ) - (branch "Null Reference (_a = null)" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) -) -(branch "Null Reference (_a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasing/Aliasing.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasing/Aliasing.java deleted file mode 100644 index 262a3545893..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasing/Aliasing.java +++ /dev/null @@ -1,11 +0,0 @@ - -public class Aliasing { - private int value; - - public static int main(Aliasing a, Aliasing b) { - a.value = 2; - b.value = 3; - int resultValue = a.value + b.value; - return resultValue; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasing/Aliasing.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasing/Aliasing.proof deleted file mode 100644 index 6d7c45a7306..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/aliasing/Aliasing.proof +++ /dev/null @@ -1,164 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Feb 02 13:11:32 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "main(Aliasing, Aliasing)", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "precondition": "a != null && b != null", - "method": "Aliasing#main(Aliasing, Aliasing)", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "391") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "3")) -(rule "notLeft" (formula "3")) -(rule "andLeft" (formula "2")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "4")) -(builtin "One Step Simplification" (formula "3")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment" (formula "6")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "6")) -(rule "assignment_write_attribute" (formula "6") (term "1")) -(branch "Normal Execution (a != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "assignment_write_attribute" (formula "6") (term "1")) - (branch "Normal Execution (b != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "4"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "resultValue")) - (rule "compound_addition_2" (formula "6") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x")) - (rule "assignment_read_attribute" (formula "6") (term "1")) - (branch "Normal Execution (a != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=Aliasing_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=Aliasing_value_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_1")) - (rule "assignment_read_attribute" (formula "7") (term "1")) - (branch "Normal Execution (b != null)" - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5"))) - (rule "false_right" (formula "7")) - (builtin "One Step Simplification" (formula "7")) - (rule "pullOutSelect" (formula "7") (term "0,1,0") (inst "selectSK=Aliasing_value_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "8") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignmentAdditionInt" (formula "7") (term "1")) - (rule "translateJavaAddInt" (formula "7") (term "0,0,1")) - (builtin "One Step Simplification" (formula "7")) - (rule "polySimp_addComm0" (formula "7") (term "0,1,0")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "b = a TRUE" - (rule "hideAuxiliaryEq" (formula "2")) - (rule "applyEq" (formula "5") (term "0") (ifseqformula "1")) - (rule "applyEq" (formula "6") (term "2") (ifseqformula "1")) - (rule "applyEq" (formula "4") (term "1,0") (ifseqformula "1")) - (rule "applyEq" (formula "5") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "5")) - (opengoal " ") - ) - (branch "b = a FALSE" - (rule "hideAuxiliaryEq" (formula "1")) - (opengoal " ") - ) - ) - (branch "Null Reference (b = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (b = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexAsVariableFieldTest/ArrayIndexAsVariableFieldTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexAsVariableFieldTest/ArrayIndexAsVariableFieldTest.java deleted file mode 100644 index ee16890e0b5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexAsVariableFieldTest/ArrayIndexAsVariableFieldTest.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class ArrayIndexAsVariableFieldTest { - private int value; - - /*@ normal_behavior - @ requires \invariant_for(index); - @ requires index.value >= 0; - @ requires index.value < array.length - 2; - @ ensures true; - @ assignable \everything; - @*/ - public static int main(ArrayIndexAsVariableFieldTest[] array, Index index) { - array[index.value].value = 40; - array[index.value + 1].value = 2; - int result = array[index.value].value + array[index.value + 1].value; - return result; - } - - private static class Index { - int value; - } -} 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 deleted file mode 100644 index fd19a167ee4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexAsVariableFieldTest/ArrayIndexAsVariableFieldTest.proof +++ /dev/null @@ -1,681 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Feb 20 14:12:10 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ArrayIndexAsVariableFieldTest[ArrayIndexAsVariableFieldTest::main([LArrayIndexAsVariableFieldTest,ArrayIndexAsVariableFieldTest.Index)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "ArrayIndexAsVariableFieldTest[ArrayIndexAsVariableFieldTest::main([LArrayIndexAsVariableFieldTest,ArrayIndexAsVariableFieldTest.Index)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "2823") - -(branch "dummy ID" -(rule "translateJavaSubInt" (formula "1") (term "1,0,1,1,1,0") (newnames "heapAtPre")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "5")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "7")) -(rule "andLeft" (formula "8")) -(rule "notLeft" (formula "9")) -(rule "eqSymm" (formula "10") (term "1,0,0,1,0,1")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "9")) -(builtin "One Step Simplification" (formula "3")) -(rule "polySimp_elimSub" (formula "7") (term "1")) -(rule "mul_literals" (formula "7") (term "1,1")) -(rule "polySimp_addComm0" (formula "7") (term "1")) -(rule "inEqSimp_ltToLeq" (formula "7")) -(rule "polySimp_rightDist" (formula "7") (term "1,0,0")) -(rule "mul_literals" (formula "7") (term "0,1,0,0")) -(rule "polySimp_addAssoc" (formula "7") (term "0,0")) -(rule "add_literals" (formula "7") (term "0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "7")) -(rule "polySimp_mulComm0" (formula "7") (term "1")) -(rule "polySimp_rightDist" (formula "7") (term "1")) -(rule "mul_literals" (formula "7") (term "0,1")) -(rule "polySimp_mulLiterals" (formula "7") (term "1,1")) -(rule "polySimp_elimOne" (formula "7") (term "1,1")) -(rule "elementOfSetMinus" (formula "10") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "10")) -(rule "nonNull" (formula "8") (inst "i=i")) -(rule "greater_literals" (formula "8") (term "0,1")) -(builtin "One Step Simplification" (formula "8")) -(rule "sub_literals" (formula "8") (term "2,1,0,1")) -(builtin "One Step Simplification" (formula "8")) -(rule "andLeft" (formula "8")) -(rule "notLeft" (formula "8")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "9")) -(builtin "One Step Simplification" (formula "2")) -(rule "narrowSelectArrayType" (formula "8") (term "0,0,1,0") (ifseqformula "1") (ifseqformula "9")) -(rule "inEqSimp_ltToLeq" (formula "8") (term "1,0,0")) -(rule "polySimp_mulComm0" (formula "8") (term "1,0,0,1,0,0")) -(rule "inEqSimp_commuteLeq" (formula "8") (term "0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "8") (term "1,0,0")) -(rule "polySimp_mulComm0" (formula "8") (term "1,1,0,0")) -(rule "polySimp_rightDist" (formula "8") (term "1,1,0,0")) -(rule "polySimp_mulLiterals" (formula "8") (term "1,1,1,0,0")) -(rule "mul_literals" (formula "8") (term "0,1,1,0,0")) -(rule "polySimp_elimOne" (formula "8") (term "1,1,1,0,0")) -(rule "inEqSimp_exactShadow3" (formula "6") (ifseqformula "7")) -(rule "times_zero_1" (formula "6") (term "0,0")) -(rule "add_zero_left" (formula "6") (term "0")) -(rule "inEqSimp_sepPosMonomial1" (formula "6")) -(rule "mul_literals" (formula "6") (term "1")) -(rule "nnf_imp2or" (formula "9") (term "0")) -(rule "nnf_notAnd" (formula "9") (term "0,0")) -(rule "inEqSimp_notGeq" (formula "9") (term "0,0,0")) -(rule "times_zero_1" (formula "9") (term "1,0,0,0,0,0")) -(rule "add_zero_right" (formula "9") (term "0,0,0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "9") (term "0,0,0")) -(rule "mul_literals" (formula "9") (term "1,0,0,0")) -(rule "inEqSimp_notLeq" (formula "9") (term "1,0,0")) -(rule "polySimp_rightDist" (formula "9") (term "1,0,0,1,0,0")) -(rule "mul_literals" (formula "9") (term "0,1,0,0,1,0,0")) -(rule "polySimp_addAssoc" (formula "9") (term "0,0,1,0,0")) -(rule "add_literals" (formula "9") (term "0,0,0,1,0,0")) -(rule "add_zero_left" (formula "9") (term "0,0,1,0,0")) -(rule "inEqSimp_sepPosMonomial1" (formula "9") (term "1,0,0")) -(rule "polySimp_mulLiterals" (formula "9") (term "1,1,0,0")) -(rule "polySimp_elimOne" (formula "9") (term "1,1,0,0")) -(rule "arrayLengthIsAnInt" (formula "8") (term "1,1")) -(builtin "One Step Simplification" (formula "8")) -(rule "true_left" (formula "8")) -(rule "arrayLengthNotNegative" (formula "8") (term "1,1")) -(rule "inEqSimp_subsumption1" (formula "8") (ifseqformula "6")) -(rule "leq_literals" (formula "8") (term "0")) -(builtin "One Step Simplification" (formula "8")) -(rule "true_left" (formula "8")) -(rule "assignment" (formula "12") (term "1")) -(builtin "One Step Simplification" (formula "12")) -(rule "methodBodyExpand" (formula "12") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "12")) -(rule "eval_order_access1" (formula "12") (term "1") (inst "#v0=a")) -(rule "variableDeclarationAssign" (formula "12") (term "1")) -(rule "variableDeclaration" (formula "12") (term "1") (newnames "a")) -(rule "eval_order_array_access5" (formula "12") (term "1") (inst "#v1=x") (inst "#ar1=a_arr")) -(rule "variableDeclarationAssign" (formula "12") (term "1")) -(rule "variableDeclaration" (formula "12") (term "1") (newnames "a_arr")) -(rule "assignment" (formula "12") (term "1")) -(builtin "One Step Simplification" (formula "12")) -(rule "variableDeclarationAssign" (formula "12") (term "1")) -(rule "variableDeclaration" (formula "12") (term "1") (newnames "x")) -(rule "assignment_read_attribute" (formula "12") (term "1")) -(branch "Normal Execution (_index != null)" - (builtin "One Step Simplification" (formula "12") (ifInst "" (formula "11"))) - (rule "false_right" (formula "12")) - (builtin "One Step Simplification" (formula "12")) - (rule "assignment_array2" (formula "12") (term "1")) - (branch "Normal Execution (a_arr != null)" - (builtin "One Step Simplification" (formula "12") (ifInst "" (formula "10"))) - (builtin "One Step Simplification" (formula "13")) - (rule "orRight" (formula "12")) - (rule "inEqSimp_leqRight" (formula "12")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_ltRight" (formula "13")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial1" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_subsumption0" (formula "1") (ifseqformula "9")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (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=select<[int]>(heap, - index, - ArrayIndexAsVariableFieldTest.Index::$value)")) - (rule "inEqSimp_contradInEq0" (formula "10") (term "1,0") (ifseqformula "9")) - (rule "inEqSimp_homoInEq1" (formula "10") (term "0,1,0")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0,0,1,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0,0,1,0")) - (rule "mul_literals" (formula "10") (term "0,1,0,0,1,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0,0,1,0")) - (rule "polySimp_addComm0" (formula "10") (term "0,0,0,1,0")) - (rule "polySimp_pullOutFactor1b" (formula "10") (term "0,0,1,0")) - (rule "add_literals" (formula "10") (term "1,1,0,0,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0,1,0")) - (rule "add_literals" (formula "10") (term "0,0,1,0")) - (rule "leq_literals" (formula "10") (term "0,1,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "inEqSimp_contradInEq1" (formula "10") (term "0") (ifseqformula "8")) - (rule "qeq_literals" (formula "10") (term "0,0")) - (builtin "One Step Simplification" (formula "10")) - (rule "notLeft" (formula "10")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "11")) - (builtin "One Step Simplification" (formula "1")) - (rule "assignment_write_attribute" (formula "14") (term "1")) - (branch "Normal Execution (a != null)" - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "11"))) - (rule "false_right" (formula "14")) - (builtin "One Step Simplification" (formula "14")) - (rule "eval_order_access1" (formula "14") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "a_1")) - (rule "eval_order_array_access5" (formula "14") (term "1") (inst "#v1=x") (inst "#ar1=a_arr")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "a_arr_1")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_1")) - (rule "compound_addition_1" (formula "14") (term "1") (inst "#v=x_2")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_2")) - (rule "assignment_read_attribute" (formula "14") (term "1")) - (branch "Normal Execution (_index != null)" - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "13"))) - (rule "false_right" (formula "14")) - (builtin "One Step Simplification" (formula "14")) - (rule "dismissNonSelectedField" (formula "14") (term "0,1,0")) - (rule "assignmentAdditionInt" (formula "14") (term "1")) - (rule "translateJavaAddInt" (formula "14") (term "0,0,1")) - (builtin "One Step Simplification" (formula "14")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,0")) - (rule "assignment_array2" (formula "14") (term "1")) - (branch "Normal Execution (a_arr_1 != null)" - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12"))) - (builtin "One Step Simplification" (formula "15")) - (rule "orRight" (formula "14")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "inEqSimp_ltRight" (formula "15")) - (rule "mul_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "15")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_sepNegMonomial1" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_subsumption0" (formula "1") (ifseqformula "11")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "9")) - (rule "leq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "onlyCreatedObjectsAreReferenced" (formula "14") (term "0,1,0") (ifseqformula "2")) - (rule "allLeft" (formula "11") (inst "t=add(Z(1(#)), - select<[int]>(heap, - index, - ArrayIndexAsVariableFieldTest.Index::$value))")) - (rule "inEqSimp_homoInEq1" (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")) - (rule "mul_literals" (formula "11") (term "0,1,0,1,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,1,0")) - (rule "polySimp_addComm0" (formula "11") (term "0,0,1,0")) - (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")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0")) - (rule "inEqSimp_sepNegMonomial0" (formula "11") (term "1,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "0,1,0")) - (rule "polySimp_elimOne" (formula "11") (term "0,1,0")) - (rule "inEqSimp_sepNegMonomial1" (formula "11") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "11") (term "0,0,0")) - (rule "polySimp_elimOne" (formula "11") (term "0,0,0")) - (rule "inEqSimp_contradInEq1" (formula "11") (term "0,0") (ifseqformula "9")) - (rule "qeq_literals" (formula "11") (term "0,0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "inEqSimp_contradInEq0" (formula "11") (term "0") (ifseqformula "10")) - (rule "inEqSimp_homoInEq1" (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")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "11") (term "0,0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "11") (term "0,0,0")) - (rule "add_literals" (formula "11") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "11") (term "1,0,0,0")) - (rule "add_literals" (formula "11") (term "0,0,0")) - (rule "leq_literals" (formula "11") (term "0,0")) - (builtin "One Step Simplification" (formula "11")) - (rule "notLeft" (formula "11")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "1")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (a_1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "12"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "result_1")) - (rule "compound_addition_2" (formula "16") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_3")) - (rule "eval_order_access2" (formula "16") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "a_2")) - (rule "eval_order_array_access5" (formula "16") (term "1") (inst "#v1=x_4") (inst "#ar1=a_arr")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "a_arr_2")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_4")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_index != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "assignment_array2" (formula "16") (term "1")) - (branch "Normal Execution (a_arr_2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (builtin "One Step Simplification" (formula "17")) - (rule "orRight" (formula "16")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0")) - (rule "inEqSimp_ltRight" (formula "17")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "16")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial1" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_subsumption0" (formula "1") (ifseqformula "11")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (a_2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=ArrayIndexAsVariableFieldTest_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=ArrayIndexAsVariableFieldTest_value_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "x_5")) - (rule "eval_order_access2" (formula "17") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "a_3")) - (rule "eval_order_array_access5" (formula "17") (term "1") (inst "#v1=x_6") (inst "#ar1=a_arr")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "a_arr_3")) - (rule "assignment" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "x_6")) - (rule "compound_addition_1" (formula "17") (term "1") (inst "#v=x_7")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "x_7")) - (rule "assignment_read_attribute" (formula "17") (term "1")) - (branch "Normal Execution (_index != null)" - (builtin "One Step Simplification" (formula "17") (ifInst "" (formula "16"))) - (rule "false_right" (formula "17")) - (builtin "One Step Simplification" (formula "17")) - (rule "dismissNonSelectedField" (formula "17") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "17") (term "0,1,0")) - (rule "assignmentAdditionInt" (formula "17") (term "1")) - (rule "translateJavaAddInt" (formula "17") (term "0,0,1")) - (builtin "One Step Simplification" (formula "17")) - (rule "polySimp_addComm0" (formula "17") (term "0,1,0")) - (rule "assignment_array2" (formula "17") (term "1")) - (branch "Normal Execution (a_arr_3 != null)" - (builtin "One Step Simplification" (formula "17") (ifInst "" (formula "15"))) - (builtin "One Step Simplification" (formula "18")) - (rule "orRight" (formula "17")) - (rule "dismissNonSelectedField" (formula "19") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "19") (term "0,1,0")) - (rule "inEqSimp_leqRight" (formula "17")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_ltRight" (formula "18")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial1" (formula "2")) - (rule "polySimp_mulLiterals" (formula "2") (term "0")) - (rule "polySimp_elimOne" (formula "2") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "12")) - (rule "leq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "inEqSimp_subsumption0" (formula "1") (ifseqformula "12")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_read_attribute" (formula "17") (term "1")) - (branch "Normal Execution (a_3 != null)" - (builtin "One Step Simplification" (formula "17") (ifInst "" (formula "13"))) - (rule "false_right" (formula "17")) - (builtin "One Step Simplification" (formula "17")) - (rule "pullOutSelect" (formula "17") (term "0,1,0") (inst "selectSK=ArrayIndexAsVariableFieldTest_value_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "18") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignmentAdditionInt" (formula "17") (term "1")) - (rule "translateJavaAddInt" (formula "17") (term "0,0,1")) - (builtin "One Step Simplification" (formula "17")) - (rule "polySimp_addComm0" (formula "17") (term "0,1,0")) - (rule "methodCallReturn" (formula "17") (term "1")) - (rule "assignment" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "methodCallEmpty" (formula "17") (term "1")) - (rule "tryEmpty" (formula "17") (term "1")) - (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(#)), 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")) - (rule "applyEq" (formula "15") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "15")) - (opengoal " ") - ) - (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 " ") - ) - ) - (branch "Null Reference (a_3 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_arr_3 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (a_arr_3 != null, but x_6 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (builtin "One Step Simplification" (formula "18")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_sepPosMonomial1" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0")) - (rule "polySimp_elimOne" (formula "1") (term "1,1,0")) - (rule "inEqSimp_contradInEq0" (formula "1") (term "0") (ifseqformula "12")) - (rule "inEqSimp_homoInEq1" (formula "1") (term "0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "11")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_index = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "17"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_arr_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (a_arr_2 != null, but x_4 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (builtin "One Step Simplification" (formula "17")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "inEqSimp_commuteLeq" (formula "1") (term "0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "10")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "11") (ifseqformula "1")) - (rule "andLeft" (formula "11")) - (rule "inEqSimp_homoInEq1" (formula "11")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0")) - (rule "polySimp_rightDist" (formula "11") (term "1,0")) - (rule "mul_literals" (formula "11") (term "0,1,0")) - (rule "polySimp_addAssoc" (formula "11") (term "0")) - (rule "polySimp_addComm0" (formula "11") (term "0,0")) - (rule "polySimp_pullOutFactor1b" (formula "11") (term "0")) - (rule "add_literals" (formula "11") (term "1,1,0")) - (rule "times_zero_1" (formula "11") (term "1,0")) - (rule "add_zero_right" (formula "11") (term "0")) - (rule "leq_literals" (formula "11")) - (rule "closeFalse" (formula "11")) - ) - ) - (branch "Null Reference (_index = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_arr_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (a_arr_1 != null, but x_1 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (builtin "One Step Simplification" (formula "15")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_sepPosMonomial1" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0")) - (rule "polySimp_elimOne" (formula "1") (term "1,1,0")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "9")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "10") (ifseqformula "1")) - (rule "andLeft" (formula "10")) - (rule "inEqSimp_homoInEq1" (formula "10")) - (rule "polySimp_mulComm0" (formula "10") (term "1,0")) - (rule "polySimp_rightDist" (formula "10") (term "1,0")) - (rule "mul_literals" (formula "10") (term "0,1,0")) - (rule "polySimp_addAssoc" (formula "10") (term "0")) - (rule "polySimp_addComm1" (formula "10") (term "0,0")) - (rule "add_literals" (formula "10") (term "0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "10") (term "0")) - (rule "add_literals" (formula "10") (term "1,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0")) - (rule "add_zero_right" (formula "10") (term "0")) - (rule "leq_literals" (formula "10")) - (rule "closeFalse" (formula "10")) - ) - ) - (branch "Null Reference (_index = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_arr = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (a_arr != null, but x Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (builtin "One Step Simplification" (formula "13")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "inEqSimp_commuteLeq" (formula "1") (term "0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq0" (formula "1") (term "0") (ifseqformula "9")) - (rule "inEqSimp_homoInEq1" (formula "1") (term "0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm0" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq0" (formula "8") (ifseqformula "1")) - (rule "qeq_literals" (formula "8") (term "0")) - (builtin "One Step Simplification" (formula "8")) - (rule "closeFalse" (formula "8")) - ) -) -(branch "Null Reference (_index = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsAfter/ArrayIndexSideeffectsAfter.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsAfter/ArrayIndexSideeffectsAfter.java deleted file mode 100644 index 8f152e57256..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsAfter/ArrayIndexSideeffectsAfter.java +++ /dev/null @@ -1,15 +0,0 @@ - -public class ArrayIndexSideeffectsAfter { - /*@ normal_behavior - @ requires value >= 0; - @ requires value < array.length - 2; - @ ensures \result == 42; - @ assignable \everything; - @*/ - public static int mainAfter(int[] array, int value) { - array[value++] = 42; - array[value++] = 4711; - int result = array[value - 2]; - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsAfter/ArrayIndexSideeffectsAfter.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsAfter/ArrayIndexSideeffectsAfter.proof deleted file mode 100644 index 54ecd6ac628..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsAfter/ArrayIndexSideeffectsAfter.proof +++ /dev/null @@ -1,367 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Feb 20 14:04:28 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ArrayIndexSideeffectsAfter[ArrayIndexSideeffectsAfter::mainAfter([I,int)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "ArrayIndexSideeffectsAfter[ArrayIndexSideeffectsAfter::mainAfter([I,int)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "593") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "translateJavaSubInt" (formula "1") (term "1,0,1,1,0")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "6")) -(rule "eqSymm" (formula "7") (term "1,0,0,1,0,1")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "6")) -(builtin "One Step Simplification" (formula "2")) -(rule "polySimp_elimSub" (formula "5") (term "1")) -(rule "mul_literals" (formula "5") (term "1,1")) -(rule "polySimp_addComm0" (formula "5") (term "1")) -(rule "inEqSimp_ltToLeq" (formula "5")) -(rule "polySimp_rightDist" (formula "5") (term "1,0,0")) -(rule "mul_literals" (formula "5") (term "0,1,0,0")) -(rule "polySimp_addAssoc" (formula "5") (term "0,0")) -(rule "add_literals" (formula "5") (term "0,0,0")) -(rule "polySimp_addComm1" (formula "5") (term "0")) -(rule "inEqSimp_sepNegMonomial0" (formula "5")) -(rule "polySimp_mulLiterals" (formula "5") (term "0")) -(rule "polySimp_elimOne" (formula "5") (term "0")) -(rule "elementOfSetMinus" (formula "7") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "7")) -(rule "arrayLengthIsAnInt" (formula "5") (term "0")) -(builtin "One Step Simplification" (formula "5")) -(rule "true_left" (formula "5")) -(rule "arrayLengthNotNegative" (formula "5") (term "0")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_mainAfter,savedHeapBefore_mainAfter")) -(builtin "One Step Simplification" (formula "8")) -(rule "eval_order_array_access2" (formula "8") (term "1") (inst "#v0=x") (inst "#ar1=x_arr")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x_arr")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x")) -(rule "postincrement_assignment" (formula "8") (term "1") (inst "#v=x_1")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x_1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "compound_int_cast_expression" (formula "8") (term "1") (inst "#v=x_2")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x_2")) -(rule "remove_parentheses_right" (formula "8") (term "1")) -(rule "assignmentAdditionInt" (formula "8") (term "1")) -(rule "translateJavaAddInt" (formula "8") (term "0,0,1")) -(builtin "One Step Simplification" (formula "8")) -(rule "polySimp_addComm0" (formula "8") (term "0,1,0")) -(rule "widening_identity_cast_5" (formula "8") (term "1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "assignment_to_primitive_array_component" (formula "8") (term "1")) -(branch "Normal Execution (x_arr != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8")) (ifInst "" (formula "5"))) - (builtin "One Step Simplification" (formula "9")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "7")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "eval_order_array_access2" (formula "8") (term "1") (inst "#v0=x") (inst "#ar1=x_arr")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_arr_1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_3")) - (rule "postincrement_assignment" (formula "8") (term "1") (inst "#v=x_4")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_4")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "compound_int_cast_expression" (formula "8") (term "1") (inst "#v=x_5")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_5")) - (rule "remove_parentheses_right" (formula "8") (term "1")) - (rule "assignmentAdditionInt" (formula "8") (term "1")) - (rule "translateJavaAddInt" (formula "8") (term "0,0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_addComm1" (formula "8") (term "0,1,0")) - (rule "add_literals" (formula "8") (term "0,0,1,0")) - (rule "widening_identity_cast_5" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "assignment_to_primitive_array_component" (formula "8") (term "1")) - (branch "Normal Execution (x_arr_1 != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "9")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "6")) - (rule "leq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "7")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "result_1")) - (rule "eval_order_array_access5" (formula "8") (term "1") (inst "#v1=x") (inst "#ar1=x_arr")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_arr_2")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_6")) - (rule "assignmentSubtractionInt" (formula "8") (term "1")) - (rule "translateJavaSubInt" (formula "8") (term "0,0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_elimSub" (formula "8") (term "0,1,0")) - (rule "mul_literals" (formula "8") (term "1,0,1,0")) - (rule "polySimp_addComm1" (formula "8") (term "0,1,0")) - (rule "add_literals" (formula "8") (term "0,0,1,0")) - (rule "add_zero_left" (formula "8") (term "0,1,0")) - (rule "assignment_array2" (formula "8") (term "1")) - (branch "Normal Execution (x_arr_2 != null)" - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "7"))) - (builtin "One Step Simplification" (formula "9")) - (rule "orRight" (formula "8")) - (rule "inEqSimp_ltRight" (formula "9")) - (rule "mul_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "8")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "pullOutSelect" (formula "9") (term "0,1,0") (inst "selectSK=arr_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "polySimp_homoEq" (formula "1") (term "0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm0" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "equal_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "10") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "7")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (opengoal " ") - ) - (branch "Null Reference (x_arr_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr_2 != null, but x_6 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "9")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "5")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq0" (formula "7") (ifseqformula "1")) - (rule "andLeft" (formula "7")) - (rule "inEqSimp_homoInEq1" (formula "7")) - (rule "polySimp_pullOutFactor1b" (formula "7") (term "0")) - (rule "add_literals" (formula "7") (term "1,1,0")) - (rule "times_zero_1" (formula "7") (term "1,0")) - (rule "add_zero_right" (formula "7") (term "0")) - (rule "leq_literals" (formula "7")) - (rule "closeFalse" (formula "7")) - ) - ) - (branch "Null Reference (x_arr_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr_1 != null, but x_3 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "9")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "0") (ifseqformula "7")) - (rule "inEqSimp_homoInEq1" (formula "1") (term "0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq0" (formula "5") (ifseqformula "1")) - (rule "qeq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "closeFalse" (formula "5")) - ) -) -(branch "Null Reference (x_arr = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) -) -(branch "Index Out of Bounds (x_arr != null, but x Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "9")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "5")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "7")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsBevore/ArrayIndexSideeffectsBevore.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsBevore/ArrayIndexSideeffectsBevore.java deleted file mode 100644 index 7b6eeb4220d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsBevore/ArrayIndexSideeffectsBevore.java +++ /dev/null @@ -1,15 +0,0 @@ - -public class ArrayIndexSideeffectsBevore { - /*@ normal_behavior - @ requires value >= 0; - @ requires value < array.length - 2; - @ ensures \result == 42; - @ assignable \everything; - @*/ - public static int mainBevore(int[] array, int value) { - array[++value] = 42; - array[++value] = 4711; - int result = array[value - 1]; - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsBevore/ArrayIndexSideeffectsBevore.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsBevore/ArrayIndexSideeffectsBevore.proof deleted file mode 100644 index e8e1b304ad1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexSideeffectsBevore/ArrayIndexSideeffectsBevore.proof +++ /dev/null @@ -1,378 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Feb 20 14:07:48 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ArrayIndexSideeffectsBevore[ArrayIndexSideeffectsBevore::mainBevore([I,int)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "ArrayIndexSideeffectsBevore[ArrayIndexSideeffectsBevore::mainBevore([I,int)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "505") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "translateJavaSubInt" (formula "1") (term "1,0,1,1,0")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "6")) -(rule "eqSymm" (formula "7") (term "1,0,0,1,0,1")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "6")) -(builtin "One Step Simplification" (formula "2")) -(rule "polySimp_elimSub" (formula "5") (term "1")) -(rule "mul_literals" (formula "5") (term "1,1")) -(rule "polySimp_addComm0" (formula "5") (term "1")) -(rule "inEqSimp_ltToLeq" (formula "5")) -(rule "polySimp_rightDist" (formula "5") (term "1,0,0")) -(rule "mul_literals" (formula "5") (term "0,1,0,0")) -(rule "polySimp_addAssoc" (formula "5") (term "0,0")) -(rule "add_literals" (formula "5") (term "0,0,0")) -(rule "polySimp_addComm1" (formula "5") (term "0")) -(rule "inEqSimp_sepNegMonomial0" (formula "5")) -(rule "polySimp_mulLiterals" (formula "5") (term "0")) -(rule "polySimp_elimOne" (formula "5") (term "0")) -(rule "elementOfSetMinus" (formula "7") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "7")) -(rule "arrayLengthIsAnInt" (formula "5") (term "0")) -(builtin "One Step Simplification" (formula "5")) -(rule "true_left" (formula "5")) -(rule "arrayLengthNotNegative" (formula "5") (term "0")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_mainBevore,savedHeapBefore_mainBevore")) -(builtin "One Step Simplification" (formula "8")) -(rule "eval_order_array_access2" (formula "8") (term "1") (inst "#v0=x") (inst "#ar1=x_arr")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x_arr")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x")) -(rule "preincrement_assignment" (formula "8") (term "1")) -(rule "compound_int_cast_expression" (formula "8") (term "1") (inst "#v=x_1")) -(rule "variableDeclarationAssign" (formula "8") (term "1")) -(rule "variableDeclaration" (formula "8") (term "1") (newnames "x_1")) -(rule "remove_parentheses_right" (formula "8") (term "1")) -(rule "assignmentAdditionInt" (formula "8") (term "1")) -(rule "translateJavaAddInt" (formula "8") (term "0,0,1")) -(builtin "One Step Simplification" (formula "8")) -(rule "polySimp_addComm0" (formula "8") (term "0,1,0")) -(rule "widening_identity_cast_5" (formula "8") (term "1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "assignment_to_primitive_array_component" (formula "8") (term "1")) -(branch "Normal Execution (x_arr != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "9")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "6")) - (rule "leq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "7")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "eval_order_array_access2" (formula "8") (term "1") (inst "#v0=x") (inst "#ar1=x_arr")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_arr_1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_2")) - (rule "preincrement_assignment" (formula "8") (term "1")) - (rule "compound_int_cast_expression" (formula "8") (term "1") (inst "#v=x_3")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_3")) - (rule "remove_parentheses_right" (formula "8") (term "1")) - (rule "assignmentAdditionInt" (formula "8") (term "1")) - (rule "translateJavaAddInt" (formula "8") (term "0,0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_addComm1" (formula "8") (term "0,1,0")) - (rule "add_literals" (formula "8") (term "0,0,1,0")) - (rule "widening_identity_cast_5" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "assignment_to_primitive_array_component" (formula "8") (term "1")) - (branch "Normal Execution (x_arr_1 != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "9")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_sepNegMonomial0" (formula "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "5")) - (rule "leq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "result_1")) - (rule "eval_order_array_access5" (formula "8") (term "1") (inst "#v1=x") (inst "#ar1=x_arr")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_arr_2")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_4")) - (rule "assignmentSubtractionInt" (formula "8") (term "1")) - (rule "translateJavaSubInt" (formula "8") (term "0,0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "polySimp_elimSub" (formula "8") (term "0,1,0")) - (rule "mul_literals" (formula "8") (term "1,0,1,0")) - (rule "polySimp_addComm1" (formula "8") (term "0,1,0")) - (rule "add_literals" (formula "8") (term "0,0,1,0")) - (rule "assignment_array2" (formula "8") (term "1")) - (branch "Normal Execution (x_arr_2 != null)" - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "7"))) - (builtin "One Step Simplification" (formula "9")) - (rule "orRight" (formula "8")) - (rule "inEqSimp_ltRight" (formula "9")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "9")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "pullOutSelect" (formula "10") (term "0,1,0") (inst "selectSK=arr_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "polySimp_homoEq" (formula "1") (term "0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0,0")) - (rule "equal_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "11") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "6")) - (rule "leq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "7")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (opengoal " ") - ) - (branch "Null Reference (x_arr_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr_2 != null, but x_4 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "9")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "5")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "7")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (x_arr_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr_1 != null, but x_2 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "9")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "0") (ifseqformula "7")) - (rule "inEqSimp_homoInEq1" (formula "1") (term "0,0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq0" (formula "5") (ifseqformula "1")) - (rule "qeq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "closeFalse" (formula "5")) - ) -) -(branch "Null Reference (x_arr = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) -) -(branch "Index Out of Bounds (x_arr != null, but x Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "9")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "5")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "7")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexVariableTest/ArrayIndexVariableTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexVariableTest/ArrayIndexVariableTest.java deleted file mode 100644 index ac909a59c63..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexVariableTest/ArrayIndexVariableTest.java +++ /dev/null @@ -1,17 +0,0 @@ - -public class ArrayIndexVariableTest { - private int value; - - /*@ normal_behavior - @ requires x >= 0; - @ requires x < array.length - 2; - @ ensures true; - @ assignable \everything; - @*/ - public static int main(ArrayIndexVariableTest[] array, int x) { - array[x].value = 40; - array[x + 1].value = 2; - int result = array[x].value + array[x + 1].value; - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexVariableTest/ArrayIndexVariableTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexVariableTest/ArrayIndexVariableTest.proof deleted file mode 100644 index f2dbcf64df7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexVariableTest/ArrayIndexVariableTest.proof +++ /dev/null @@ -1,561 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Feb 20 14:09:49 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "ArrayIndexVariableTest[ArrayIndexVariableTest::main([LArrayIndexVariableTest,int)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "ArrayIndexVariableTest[ArrayIndexVariableTest::main([LArrayIndexVariableTest,int)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1953") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,LayoutPredicate")) -(rule "translateJavaSubInt" (formula "1") (term "1,0,1,1,0")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "7") (term "1,0,0,1,0,1")) -(rule "polySimp_elimSub" (formula "5") (term "1")) -(rule "mul_literals" (formula "5") (term "1,1")) -(rule "polySimp_addComm0" (formula "5") (term "1")) -(rule "inEqSimp_ltToLeq" (formula "5")) -(rule "polySimp_rightDist" (formula "5") (term "1,0,0")) -(rule "mul_literals" (formula "5") (term "0,1,0,0")) -(rule "polySimp_addAssoc" (formula "5") (term "0,0")) -(rule "add_literals" (formula "5") (term "0,0,0")) -(rule "polySimp_addComm1" (formula "5") (term "0")) -(rule "inEqSimp_sepNegMonomial0" (formula "5")) -(rule "polySimp_mulLiterals" (formula "5") (term "0")) -(rule "polySimp_elimOne" (formula "5") (term "0")) -(rule "elementOfSetMinus" (formula "7") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "7")) -(rule "nonNull" (formula "6") (inst "i=i")) -(rule "sub_literals" (formula "6") (term "2,1,0,1,1")) -(builtin "One Step Simplification" (formula "6")) -(rule "greater_literals" (formula "6") (term "0,1")) -(builtin "One Step Simplification" (formula "6")) -(rule "andLeft" (formula "6")) -(rule "notLeft" (formula "6")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "7")) -(builtin "One Step Simplification" (formula "2")) -(rule "narrowSelectArrayType" (formula "6") (term "0,0,1,0") (ifseqformula "1") (ifseqformula "7")) -(rule "inEqSimp_ltToLeq" (formula "6") (term "1,0,0")) -(rule "polySimp_mulComm0" (formula "6") (term "1,0,0,1,0,0")) -(rule "inEqSimp_commuteLeq" (formula "6") (term "0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "6") (term "1,0,0")) -(rule "polySimp_mulComm0" (formula "6") (term "1,1,0,0")) -(rule "polySimp_rightDist" (formula "6") (term "1,1,0,0")) -(rule "mul_literals" (formula "6") (term "0,1,1,0,0")) -(rule "polySimp_mulLiterals" (formula "6") (term "1,1,1,0,0")) -(rule "polySimp_elimOne" (formula "6") (term "1,1,1,0,0")) -(rule "nnf_imp2or" (formula "6") (term "0")) -(rule "nnf_notAnd" (formula "6") (term "0,0")) -(rule "inEqSimp_notGeq" (formula "6") (term "0,0,0")) -(rule "times_zero_1" (formula "6") (term "1,0,0,0,0,0")) -(rule "add_zero_right" (formula "6") (term "0,0,0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "6") (term "0,0,0")) -(rule "mul_literals" (formula "6") (term "1,0,0,0")) -(rule "inEqSimp_notLeq" (formula "6") (term "1,0,0")) -(rule "polySimp_rightDist" (formula "6") (term "1,0,0,1,0,0")) -(rule "mul_literals" (formula "6") (term "0,1,0,0,1,0,0")) -(rule "polySimp_addAssoc" (formula "6") (term "0,0,1,0,0")) -(rule "add_literals" (formula "6") (term "0,0,0,1,0,0")) -(rule "add_zero_left" (formula "6") (term "0,0,1,0,0")) -(rule "inEqSimp_sepPosMonomial1" (formula "6") (term "1,0,0")) -(rule "polySimp_mulLiterals" (formula "6") (term "1,1,0,0")) -(rule "polySimp_elimOne" (formula "6") (term "1,1,0,0")) -(rule "arrayLengthIsAnInt" (formula "5") (term "0")) -(builtin "One Step Simplification" (formula "5")) -(rule "true_left" (formula "5")) -(rule "arrayLengthNotNegative" (formula "5") (term "0")) -(rule "assignment" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "methodBodyExpand" (formula "9") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "9")) -(rule "eval_order_access1" (formula "9") (term "1") (inst "#v0=a")) -(rule "variableDeclarationAssign" (formula "9") (term "1")) -(rule "variableDeclaration" (formula "9") (term "1") (newnames "a")) -(rule "assignment_array2" (formula "9") (term "1")) -(branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "10")) - (rule "orRight" (formula "9")) - (rule "inEqSimp_ltRight" (formula "10")) - (rule "mul_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "9")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "7")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "onlyCreatedObjectsAreReferenced" (formula "9") (term "0,1,0") (ifseqformula "1")) - (rule "allLeft" (formula "8") (inst "t=x")) - (rule "inEqSimp_commuteGeq" (formula "8") (term "1,0")) - (rule "inEqSimp_contradInEq1" (formula "8") (term "1,0") (ifseqformula "7")) - (rule "inEqSimp_homoInEq1" (formula "8") (term "0,1,0")) - (rule "polySimp_pullOutFactor1b" (formula "8") (term "0,0,1,0")) - (rule "add_literals" (formula "8") (term "1,1,0,0,1,0")) - (rule "times_zero_1" (formula "8") (term "1,0,0,1,0")) - (rule "add_zero_right" (formula "8") (term "0,0,1,0")) - (rule "leq_literals" (formula "8") (term "0,1,0")) - (builtin "One Step Simplification" (formula "8")) - (rule "inEqSimp_contradInEq1" (formula "8") (term "0") (ifseqformula "5")) - (rule "qeq_literals" (formula "8") (term "0,0")) - (builtin "One Step Simplification" (formula "8")) - (rule "notLeft" (formula "8")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "assignment_write_attribute" (formula "11") (term "1")) - (branch "Normal Execution (a != null)" - (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "9"))) - (rule "false_right" (formula "11")) - (builtin "One Step Simplification" (formula "11")) - (rule "eval_order_access1" (formula "11") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "a_1")) - (rule "eval_order_array_access5" (formula "11") (term "1") (inst "#v1=x") (inst "#ar1=a_arr")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "a_arr")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "x_1")) - (rule "assignmentAdditionInt" (formula "11") (term "1")) - (rule "translateJavaAddInt" (formula "11") (term "0,0,1")) - (builtin "One Step Simplification" (formula "11")) - (rule "polySimp_addComm0" (formula "11") (term "0,1,0")) - (rule "assignment_array2" (formula "11") (term "1")) - (branch "Normal Execution (a_arr != null)" - (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "10"))) - (builtin "One Step Simplification" (formula "12")) - (rule "orRight" (formula "11")) - (rule "dismissNonSelectedField" (formula "13") (term "0,1,0")) - (rule "inEqSimp_ltRight" (formula "12")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_leqRight" (formula "12")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "inEqSimp_subsumption1" (formula "2") (ifseqformula "7")) - (rule "leq_literals" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "8")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "onlyCreatedObjectsAreReferenced" (formula "11") (term "0,1,0") (ifseqformula "2")) - (rule "allLeft" (formula "9") (inst "t=add(Z(1(#)), x)")) - (rule "inEqSimp_commuteGeq" (formula "9") (term "1,0")) - (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")) - (rule "mul_literals" (formula "9") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "9") (term "0,0,0")) - (rule "add_literals" (formula "9") (term "0,0,0,0")) - (rule "inEqSimp_sepNegMonomial1" (formula "9") (term "0,0")) - (rule "polySimp_mulLiterals" (formula "9") (term "0,0,0")) - (rule "polySimp_elimOne" (formula "9") (term "0,0,0")) - (rule "inEqSimp_contradInEq1" (formula "9") (term "0,0") (ifseqformula "6")) - (rule "qeq_literals" (formula "9") (term "0,0,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "inEqSimp_contradInEq1" (formula "9") (term "0") (ifseqformula "8")) - (rule "inEqSimp_homoInEq1" (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")) - (rule "mul_literals" (formula "9") (term "0,1,0,0,0")) - (rule "polySimp_addAssoc" (formula "9") (term "0,0,0")) - (rule "polySimp_addComm1" (formula "9") (term "0,0,0,0")) - (rule "add_literals" (formula "9") (term "0,0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "9") (term "0,0,0")) - (rule "add_literals" (formula "9") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "9") (term "1,0,0,0")) - (rule "add_literals" (formula "9") (term "0,0,0")) - (rule "leq_literals" (formula "9") (term "0,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "notLeft" (formula "9")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "assignment_write_attribute" (formula "13") (term "1")) - (branch "Normal Execution (a_1 != null)" - (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "10"))) - (rule "false_right" (formula "13")) - (builtin "One Step Simplification" (formula "13")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "result_1")) - (rule "compound_addition_2" (formula "13") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x_2")) - (rule "eval_order_access2" (formula "13") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "a_2")) - (rule "assignment_array2" (formula "13") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "12"))) - (builtin "One Step Simplification" (formula "14")) - (rule "orRight" (formula "13")) - (rule "dismissNonSelectedField" (formula "15") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "15") (term "0,1,0")) - (rule "inEqSimp_leqRight" (formula "13")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "inEqSimp_ltRight" (formula "14")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1")) - (rule "polySimp_rightDist" (formula "1") (term "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "1,1")) - (rule "mul_literals" (formula "1") (term "0,1")) - (rule "polySimp_elimOne" (formula "1") (term "1,1")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "9")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_read_attribute" (formula "13") (term "1")) - (branch "Normal Execution (a_2 != null)" - (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "11"))) - (rule "false_right" (formula "13")) - (builtin "One Step Simplification" (formula "13")) - (rule "pullOutSelect" (formula "13") (term "0,1,0") (inst "selectSK=ArrayIndexVariableTest_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=ArrayIndexVariableTest_value_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_3")) - (rule "eval_order_access2" (formula "14") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "a_3")) - (rule "eval_order_array_access5" (formula "14") (term "1") (inst "#v1=x_4") (inst "#ar1=a_arr")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "a_arr_1")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "variableDeclarationAssign" (formula "14") (term "1")) - (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_4")) - (rule "assignmentAdditionInt" (formula "14") (term "1")) - (rule "translateJavaAddInt" (formula "14") (term "0,0,1")) - (builtin "One Step Simplification" (formula "14")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,0")) - (rule "assignment_array2" (formula "14") (term "1")) - (branch "Normal Execution (a_arr_1 != null)" - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "13"))) - (builtin "One Step Simplification" (formula "15")) - (rule "orRight" (formula "14")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "inEqSimp_leqRight" (formula "14")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "inEqSimp_ltRight" (formula "15")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_sepPosMonomial1" (formula "2")) - (rule "polySimp_mulComm0" (formula "2") (term "1")) - (rule "polySimp_rightDist" (formula "2") (term "1")) - (rule "mul_literals" (formula "2") (term "0,1")) - (rule "polySimp_mulLiterals" (formula "2") (term "1,1")) - (rule "polySimp_elimOne" (formula "2") (term "1,1")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "9")) - (rule "leq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "inEqSimp_subsumption1" (formula "1") (ifseqformula "10")) - (rule "inEqSimp_homoInEq0" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) - (rule "mul_literals" (formula "1") (term "0,1,0,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_read_attribute" (formula "14") (term "1")) - (branch "Normal Execution (a_3 != null)" - (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "11"))) - (rule "false_right" (formula "14")) - (builtin "One Step Simplification" (formula "14")) - (rule "pullOutSelect" (formula "14") (term "0,1,0") (inst "selectSK=ArrayIndexVariableTest_value_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "15") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignmentAdditionInt" (formula "14") (term "1")) - (rule "translateJavaAddInt" (formula "14") (term "0,0,1")) - (builtin "One Step Simplification" (formula "14")) - (rule "polySimp_addComm0" (formula "14") (term "0,1,0")) - (rule "methodCallReturn" (formula "14") (term "1")) - (rule "assignment" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "methodCallEmpty" (formula "14") (term "1")) - (rule "tryEmpty" (formula "14") (term "1")) - (rule "emptyModality" (formula "14") (term "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch " ArrayIndexVariableTest::select(heap, array, arr(add(Z(1(#)), x))) = ArrayIndexVariableTest::select(heap, array, arr(x)) TRUE" - (rule "hideAuxiliaryEq" (formula "2")) - (rule "applyEq" (formula "14") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "14")) - (rule "applyEq" (formula "2") (term "1,0") (ifseqformula "1")) - (rule "applyEq" (formula "10") (term "0") (ifseqformula "1")) - (opengoal " ") - ) - (branch " ArrayIndexVariableTest::select(heap, array, arr(add(Z(1(#)), x))) = ArrayIndexVariableTest::select(heap, array, arr(x)) FALSE" - (rule "hideAuxiliaryEq" (formula "1")) - (opengoal " ") - ) - ) - (branch "Null Reference (a_3 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_arr_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (a_arr_1 != null, but x_4 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (builtin "One Step Simplification" (formula "15")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "8")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "10")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but _x Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_zero_right" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "7")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "9")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_arr = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (a_arr != null, but x_1 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (builtin "One Step Simplification" (formula "12")) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "polySimp_addAssoc" (formula "1") (term "0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "1") (ifseqformula "6")) - (rule "qeq_literals" (formula "1") (term "0,1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "8")) - (rule "andLeft" (formula "1")) - (rule "inEqSimp_homoInEq1" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "polySimp_rightDist" (formula "1") (term "1,0")) - (rule "mul_literals" (formula "1") (term "0,1,0")) - (rule "polySimp_addAssoc" (formula "1") (term "0")) - (rule "polySimp_addComm1" (formula "1") (term "0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "1,1,0")) - (rule "times_zero_1" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) -) -(branch "Index Out of Bounds (_array != null, but _x Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "inEqSimp_ltToLeq" (formula "1") (term "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0,1")) - (rule "add_literals" (formula "1") (term "0,0,1")) - (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1")) - (rule "mul_literals" (formula "1") (term "1,1")) - (rule "inEqSimp_contradInEq1" (formula "1") (term "0") (ifseqformula "7")) - (rule "inEqSimp_homoInEq1" (formula "1") (term "0,0")) - (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0")) - (rule "add_literals" (formula "1") (term "1,1,0,0,0")) - (rule "times_zero_1" (formula "1") (term "1,0,0,0")) - (rule "add_literals" (formula "1") (term "0,0,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_contradInEq0" (formula "5") (ifseqformula "1")) - (rule "qeq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "closeFalse" (formula "5")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableEverything/BlockContractModifiableEverything.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableEverything/BlockContractModifiableEverything.java deleted file mode 100644 index 738e953f0f4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableEverything/BlockContractModifiableEverything.java +++ /dev/null @@ -1,26 +0,0 @@ - -public class BlockContractModifiableEverything { - public static int x; - - public static int y; - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int main() { - x = 2; - y = 3; - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - { - x = -2; - y = -3; - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableEverything/BlockContractModifiableEverything.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableEverything/BlockContractModifiableEverything.proof deleted file mode 100644 index 4a684b3d7a9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableEverything/BlockContractModifiableEverything.proof +++ /dev/null @@ -1,173 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 30 16:07:42 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractModifiableEverything[BlockContractModifiableEverything::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "BlockContractModifiableEverything[BlockContractModifiableEverything::main()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "657") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(builtin "Block Contract (Internal)" (formula "3") (newnames "anon_heap,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "3")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "activeUseStaticFieldWriteAccess" (formula "4") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_4")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment_write_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "activeUseStaticFieldWriteAccess" (formula "4") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_5")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment_write_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "elementOfSetMinus" (formula "4") (term "0,0,0,0,1,0,1")) - (builtin "One Step Simplification" (formula "4")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "blockEmptyLabel" (formula "4") (term "1")) - (rule "blockEmpty" (formula "4") (term "1")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "closeTrue" (formula "4")) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "close" (formula "3") (ifseqformula "1")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "replace_known_left" (formula "5") (term "0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "true_left" (formula "5")) - (rule "ifUnfold" (formula "5") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_2")) - (rule "inequality_comparison_simple" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "replace_known_left" (formula "5") (term "0,0,1,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "ifSplit" (formula "5")) - (branch "if x_2 true" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_2 false" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockEmpty" (formula "5") (term "1")) - (rule "returnUnfold" (formula "5") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_3")) - (rule "activeUseStaticFieldReadAccess" (formula "5") (term "1")) - (rule "assignment_read_static_attribute" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "pullOutSelect" (formula "5") (term "0,1,0") (inst "selectSK=BlockContractModifiableEverything_x_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "elementOfSetMinus" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "6") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "5") (term "1")) - (rule "assignment" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "methodCallEmpty" (formula "5") (term "1")) - (rule "tryEmpty" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "emptyModality" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "closeTrue" (formula "5")) - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableLocationNotRequested/BlockContractModifiableLocationNotRequested.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableLocationNotRequested/BlockContractModifiableLocationNotRequested.java deleted file mode 100644 index 02f4f17b4b3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableLocationNotRequested/BlockContractModifiableLocationNotRequested.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class BlockContractModifiableLocationNotRequested { - public static int x; - - public static int y; - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int main() { - x = 2; - y = 3; - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable y; - @*/ - { - y = -3; - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableLocationNotRequested/BlockContractModifiableLocationNotRequested.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableLocationNotRequested/BlockContractModifiableLocationNotRequested.proof deleted file mode 100644 index a72f618cb1d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableLocationNotRequested/BlockContractModifiableLocationNotRequested.proof +++ /dev/null @@ -1,198 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 30 16:39:35 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractModifiableLocationNotRequested[BlockContractModifiableLocationNotRequested::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "BlockContractModifiableLocationNotRequested[BlockContractModifiableLocationNotRequested::main()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "285") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(builtin "Block Contract (Internal)" (formula "3") (newnames "anon_heap,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) - (rule "elementOfSingleton" (formula "4") (term "0,0,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "activeUseStaticFieldWriteAccess" (formula "4") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_4")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment_write_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "blockEmptyLabel" (formula "4") (term "1")) - (rule "blockEmpty" (formula "4") (term "1")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "allRight" (formula "4") (inst "sk=f_0")) - (rule "allRight" (formula "4") (inst "sk=o_0")) - (rule "orRight" (formula "4")) - (rule "orRight" (formula "4")) - (rule "eqSymm" (formula "6")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1")) - (rule "pullOutSelect" (formula "6") (term "1") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "pullOutSelect" (formula "7") (term "0") (inst "selectSK=f_0_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "replaceKnownSelect_taclet0_1" (formula "1") (term "2,0")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "8") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "closeTrue" (formula "8")) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "close" (formula "3") (ifseqformula "1")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "replace_known_left" (formula "5") (term "0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "true_left" (formula "5")) - (rule "ifUnfold" (formula "5") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_2")) - (rule "inequality_comparison_simple" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "replace_known_left" (formula "5") (term "0,0,1,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "ifSplit" (formula "5")) - (branch "if x_2 true" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_2 false" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockEmpty" (formula "5") (term "1")) - (rule "returnUnfold" (formula "5") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_3")) - (rule "activeUseStaticFieldReadAccess" (formula "5") (term "1")) - (rule "assignment_read_static_attribute" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "pullOutSelect" (formula "5") (term "0,1,0") (inst "selectSK=BlockContractModifiableLocationNotRequested_x_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "6") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "5") (term "1")) - (rule "assignment" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "methodCallEmpty" (formula "5") (term "1")) - (rule "tryEmpty" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "emptyModality" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "closeTrue" (formula "5")) - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableRequestedLocation/BlockContractModifiableRequestedLocation.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableRequestedLocation/BlockContractModifiableRequestedLocation.java deleted file mode 100644 index 9fd28452517..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableRequestedLocation/BlockContractModifiableRequestedLocation.java +++ /dev/null @@ -1,25 +0,0 @@ - -public class BlockContractModifiableRequestedLocation { - public static int x; - - public static int y; - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int main() { - x = 2; - y = 3; - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable x; - @*/ - { - x = -2; - } - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableRequestedLocation/BlockContractModifiableRequestedLocation.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableRequestedLocation/BlockContractModifiableRequestedLocation.proof deleted file mode 100644 index 1020268d01b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/blockContractModifiableRequestedLocation/BlockContractModifiableRequestedLocation.proof +++ /dev/null @@ -1,201 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 30 16:36:39 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "BlockContractModifiableRequestedLocation[BlockContractModifiableRequestedLocation::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "BlockContractModifiableRequestedLocation[BlockContractModifiableRequestedLocation::main()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "605") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(builtin "Block Contract (Internal)" (formula "3") (newnames "anon_heap,result_0,exc_0,heap_Before_BLOCK,savedHeap_Before_BLOCK,o,f")) -(branch "Validity" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,1")) - (rule "elementOfSingleton" (formula "4") (term "0,0,0,0,1,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "activeUseStaticFieldWriteAccess" (formula "4") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_4")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignment_write_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "blockEmptyLabel" (formula "4") (term "1")) - (rule "blockEmpty" (formula "4") (term "1")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "allRight" (formula "4") (inst "sk=f_0")) - (rule "allRight" (formula "4") (inst "sk=o_0")) - (rule "orRight" (formula "4")) - (rule "orRight" (formula "4")) - (rule "eqSymm" (formula "6")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1")) - (rule "pullOutSelect" (formula "6") (term "1") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "pullOutSelect" (formula "7") (term "0") (inst "selectSK=f_0_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "pullOutSelect" (formula "2") (term "2,0") (inst "selectSK=f_0_2")) - (rule "simplifySelectOfStore" (formula "2")) - (builtin "One Step Simplification" (formula "2")) - (rule "castDel" (formula "2") (term "1,0")) - (rule "eqSymm" (formula "2") (term "1,0,0")) - (rule "eqSymm" (formula "2") (term "0,0,0")) - (rule "replace_known_right" (formula "2") (term "0,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "2")) - (rule "applyEqReverse" (formula "3") (term "2,0") (ifseqformula "2")) - (rule "hideAuxiliaryEq" (formula "2")) - (rule "applyEq" (formula "2") (term "0") (ifseqformula "1")) - (rule "close" (formula "8") (ifseqformula "2")) -) -(branch "Precondition" - (builtin "One Step Simplification" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "close" (formula "3") (ifseqformula "1")) -) -(branch "Usage" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "andLeft" (formula "3")) - (rule "replace_known_left" (formula "5") (term "0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "true_left" (formula "5")) - (rule "ifUnfold" (formula "5") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_2")) - (rule "inequality_comparison_simple" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "replace_known_left" (formula "5") (term "0,0,1,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "5")) - (rule "ifSplit" (formula "5")) - (branch "if x_2 true" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_2 false" - (builtin "One Step Simplification" (formula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (rule "blockEmpty" (formula "5") (term "1")) - (rule "returnUnfold" (formula "5") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "x_3")) - (rule "activeUseStaticFieldReadAccess" (formula "5") (term "1")) - (rule "assignment_read_static_attribute" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "pullOutSelect" (formula "5") (term "0,1,0") (inst "selectSK=BlockContractModifiableRequestedLocation_x_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "6") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "5") (term "1")) - (rule "assignment" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "methodCallEmpty" (formula "5") (term "1")) - (rule "tryEmpty" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "emptyModality" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "closeTrue" (formula "5")) - ) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/equivalenceClassesTest/Example.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/equivalenceClassesTest/Example.java deleted file mode 100644 index c07f6503dbe..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/equivalenceClassesTest/Example.java +++ /dev/null @@ -1,12 +0,0 @@ -public class Example { - private int value; - - /*@ normal_behavior - @ ensures true; - @*/ - public static int magic(Example a, Example b) { - a.value = 2; - b.value = 3; - return a.value; - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/equivalenceClassesTest/Example.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/equivalenceClassesTest/Example.proof deleted file mode 100644 index dc321749ffc..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/equivalenceClassesTest/Example.proof +++ /dev/null @@ -1,131 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Tue Mar 29 14:23:08 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "Example[Example::magic(Example,Example)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "Example[Example::magic(Example,Example)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "69") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "a,b,result,exc,heapAtPre,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "4")) -(rule "notLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "6")) -(builtin "One Step Simplification" (formula "3")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment" (formula "7") (term "1")) -(builtin "One Step Simplification" (formula "7")) -(rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) -(builtin "One Step Simplification" (formula "7")) -(rule "assignment_write_attribute" (formula "7") (term "1")) -(branch "Normal Execution (_a != null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5"))) - (rule "false_right" (formula "7")) - (rule "assignment_write_attribute" (formula "7") (term "1")) - (branch "Normal Execution (_b != null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "6"))) - (rule "false_right" (formula "7")) - (rule "returnUnfold" (formula "7") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x")) - (rule "assignment_read_attribute" (formula "7") (term "1")) - (branch "Normal Execution (_a != null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5"))) - (rule "false_right" (formula "7")) - (rule "pullOutSelect" (formula "7") (term "0,1,0") (inst "selectSK=Example_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=Example_value_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "closeTrue" (formula "8")) - ) - (branch "Null Reference (_a = null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_b = null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/equivalenceClassesTest/Example_NoOSS.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/equivalenceClassesTest/Example_NoOSS.proof deleted file mode 100644 index 6b7be1eeb09..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/equivalenceClassesTest/Example_NoOSS.proof +++ /dev/null @@ -1,193 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 30 13:40:52 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "Example[Example::magic(Example,Example)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "Example[Example::magic(Example,Example)].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "2207") - -(branch "dummy ID" -(rule "elementOfAllLocs" (formula "1") (term "0,0,0,0,1,0,1,1") (newnames "a,b,result,exc,heapAtPre,o,f")) -(rule "concrete_or_1" (formula "1") (term "0,0,0,1,0,1,1")) -(rule "concrete_or_1" (formula "1") (term "0,0,1,0,1,1")) -(rule "simplifyUpdate2" (formula "1") (term "1")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "4")) -(rule "notLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) -(rule "concrete_or_2" (formula "2")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "6")) -(rule "concrete_or_2" (formula "3")) -(rule "assignment" (formula "7") (term "1")) -(rule "sequentialToParallel2" (formula "7")) -(rule "simplifyUpdate3" (formula "7") (term "1,0")) -(rule "all_unused" (formula "7") (term "1,0,1")) -(rule "all_unused" (formula "7") (term "1,0,1")) -(rule "concrete_and_3" (formula "7") (term "0,1")) -(rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_magic,savedHeapBefore_magic")) -(rule "simplifyUpdate2" (formula "7") (term "1")) -(rule "assignment_write_attribute" (formula "7") (term "1")) -(branch "Normal Execution (_a != null)" - (rule "simplifyUpdate2" (formula "7")) - (rule "sequentialToParallel2" (formula "8")) - (rule "simplifyUpdate3" (formula "8") (term "1,0")) - (rule "applyOnElementary" (formula "8") (term "1,0")) - (rule "applyOnRigidFormula" (formula "7")) - (rule "applyOnPV" (formula "7") (term "0")) - (rule "simplifyUpdate1" (formula "7") (term "1")) - (rule "applyOnRigidTerm" (formula "7") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "0,0,1,0")) - (rule "applyOnPV" (formula "7") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "3,0,1,0")) - (rule "assignment_write_attribute" (formula "7") (term "1")) - (branch "Normal Execution (_b != null)" - (rule "simplifyUpdate2" (formula "7")) - (rule "sequentialToParallel2" (formula "8")) - (rule "simplifyUpdate2" (formula "8")) - (rule "simplifyUpdate3" (formula "8") (term "1,0")) - (rule "applyOnElementary" (formula "8") (term "1,0")) - (rule "applyOnRigidFormula" (formula "7")) - (rule "applyOnPV" (formula "7") (term "0")) - (rule "simplifyUpdate1" (formula "7") (term "1")) - (rule "applyOnRigidTerm" (formula "7") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "3,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0,1,0")) - (rule "applyOnPV" (formula "7") (term "0,0,1,0")) - (rule "applyOnPV" (formula "7") (term "1,0,1,0")) - (rule "returnUnfold" (formula "7") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x")) - (rule "assignment_read_attribute" (formula "7") (term "1")) - (branch "Normal Execution (_a != null)" - (rule "simplifyUpdate2" (formula "7")) - (rule "sequentialToParallel2" (formula "8")) - (rule "simplifyUpdate2" (formula "8")) - (rule "simplifyUpdate3" (formula "8") (term "1,0")) - (rule "applyOnElementary" (formula "8") (term "1,0")) - (rule "applyOnRigidFormula" (formula "7")) - (rule "applyOnPV" (formula "7") (term "0")) - (rule "simplifyUpdate1" (formula "7") (term "1")) - (rule "applyOnRigidTerm" (formula "7") (term "0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "0,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "1,0,1,0")) - (rule "simplifyUpdate1" (formula "7") (term "2,0,1,0")) - (rule "applyOnPV" (formula "7") (term "0,0,1,0")) - (rule "applyOnPV" (formula "7") (term "1,0,1,0")) - (rule "pullOutSelect" (formula "7") (term "0,1,0") (inst "selectSK=Example_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (rule "equalUnique" (formula "1") (term "0,1,0,0")) - (rule "concrete_not_2" (formula "1") (term "1,0,0")) - (rule "concrete_and_3" (formula "1") (term "0,0")) - (rule "equalUnique" (formula "1") (term "1,0,0")) - (rule "concrete_and_3" (formula "1") (term "0,0")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=Example_value_1")) - (rule "simplifySelectOfStore" (formula "1")) - (rule "equalUnique" (formula "1") (term "0,1,0,0")) - (rule "concrete_not_2" (formula "1") (term "1,0,0")) - (rule "concrete_and_3" (formula "1") (term "0,0")) - (rule "eqClose" (formula "1") (term "0,0,0")) - (rule "concrete_and_1" (formula "1") (term "0,0")) - (rule "equalUnique" (formula "1") (term "0,0")) - (rule "ifthenelse_true" (formula "1") (term "0")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (rule "simplifyUpdate2" (formula "8") (term "1")) - (rule "simplifyUpdate2" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (rule "simplifyUpdate2" (formula "8")) - (rule "emptyModality" (formula "8") (term "1")) - (rule "applyOnRigidFormula" (formula "8")) - (rule "simplifyUpdate1" (formula "8") (term "1")) - (rule "applyOnPV" (formula "8") (term "0")) - (rule "eqClose" (formula "8")) - (rule "closeTrue" (formula "8")) - ) - (branch "Null Reference (_a = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "simplifyUpdate2" (formula "8")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "close" (formula "6") (ifseqformula "1")) - ) - ) - (branch "Null Reference (_b = null)" - (rule "simplifyUpdate2" (formula "8")) - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "close" (formula "7") (ifseqformula "1")) - ) -) -(branch "Null Reference (_a = null)" - (rule "simplifyUpdate2" (formula "1")) - (rule "applyOnRigidFormula" (formula "1")) - (rule "applyOnPV" (formula "1") (term "0")) - (rule "simplifyUpdate1" (formula "1") (term "1")) - (rule "close" (formula "6") (ifseqformula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2/Figure2.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2/Figure2.java deleted file mode 100644 index 51c05a70ecb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2/Figure2.java +++ /dev/null @@ -1,44 +0,0 @@ -/* @inproceedings{Sridharan:2007:TS:1250734.1250748, - * author = {Sridharan, Manu and Fink, Stephen J. and Bodik, Rastislav}, - * title = {Thin Slicing}, - * booktitle = {Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation}, - * series = {PLDI '07}, - * year = {2007}, - * isbn = {978-1-59593-633-2}, - * location = {San Diego, California, USA}, - * pages = {112--122}, - * numpages = {11}, - * url = {http://doi.acm.org/10.1145/1250734.1250748}, - * doi = {10.1145/1250734.1250748}, - * acmid = {1250748}, - * publisher = {ACM}, - * address = {New York, NY, USA}, - * keywords = {debugging, program understanding, slicing}, - *} - */ -public class Figure2 { - static A x; - static A z; - static B y; - static A w; - static B v; - - public static void main() { - x = new A(); - z = x; - y = new B(); - w = x; - w.f = y; - if (w == z) { - v = z.f; // the seed - } - } -} - -class A { - public B f; -} - -class B { - -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2/Figure2.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2/Figure2.proof deleted file mode 100644 index 020cd96adac..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2/Figure2.proof +++ /dev/null @@ -1,390 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 20 00:06:56 CET 2019 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "Figure2#main()", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "wolfram" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1646") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate")) -(rule "impRight" (formula "1")) -(rule "assignment" (formula "2")) -(rule "methodBodyExpand" (formula "2") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "2")) -(rule "instanceCreationAssignment" (formula "2") (term "1") (inst "#v0=a")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "a")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "2") (term "1") (inst "#v0=a_1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "a_1")) -(rule "methodBodyExpand" (formula "2") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) -(builtin "One Step Simplification" (formula "2")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "__NEW__")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "2") (term "1") (inst "#v0=a_2")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "a_2")) -(rule "allocateInstance" (formula "2")) -(builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) -(builtin "One Step Simplification" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "notLeft" (formula "1")) -(rule "blockEmpty" (formula "5") (term "1")) -(rule "assignment" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_,savedHeapBefore_")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodCallWithinClass" (formula "5") (term "1")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodCallSuper" (formula "5") (term "1")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodCallEmpty" (formula "5") (term "1")) -(rule "blockEmpty" (formula "5") (term "1")) -(rule "assignment_write_attribute_this" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodCallEmpty" (formula "5") (term "1")) -(rule "blockEmpty" (formula "5") (term "1")) -(rule "methodCallReturnIgnoreResult" (formula "5") (term "1")) -(rule "methodCallReturn" (formula "5") (term "1")) -(rule "assignment" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodCallEmpty" (formula "5") (term "1")) -(rule "blockEmpty" (formula "5") (term "1")) -(rule "assignment" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodCallSuper" (formula "5") (term "1")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodCallEmpty" (formula "5") (term "1")) -(rule "methodCallEmpty" (formula "5") (term "1")) -(rule "blockEmpty" (formula "5") (term "1")) -(rule "assignment_write_attribute" (formula "5") (term "1")) -(branch "Normal Execution (a != null)" - (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "3"))) - (rule "false_right" (formula "5")) - (builtin "One Step Simplification" (formula "5")) - (rule "activeUseStaticFieldWriteAccess" (formula "5") (term "1") (inst "#v0=a_1")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "a_3")) - (rule "assignment" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "assignment_write_static_attribute" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "activeUseStaticFieldWriteAccess" (formula "5") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "a_4")) - (rule "activeUseStaticFieldReadAccess" (formula "5") (term "1")) - (rule "assignment_read_static_attribute" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "pullOutSelect" (formula "5") (term "0,1,0") (inst "selectSK=Figure2_x_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "6") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_static_attribute" (formula "5") (term "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "instanceCreationAssignment" (formula "5") (term "1") (inst "#v0=b")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "b")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "5") (term "1") (inst "#v0=b_1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "b_1")) - (rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_$createObject_0,savedHeapBefore_$createObject_0")) - (builtin "One Step Simplification" (formula "5")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "__NEW___1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "5") (term "1") (inst "#v0=b_2")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "b_2")) - (rule "allocateInstance" (formula "5")) - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "wellFormedStoreObject" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0")) - (rule "wellFormedStoreObject" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "wellFormedStorePrimitive" (formula "1") (term "0,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "wellFormedStoreObject" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "wellFormedCreate" (formula "1") (term "0,0")) - (rule "replace_known_left" (formula "1") (term "0,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "1")) - (rule "pullOutSelect" (formula "1") (term "0,0,1") (inst "selectSK=java_lang_Object_created__0")) - (rule "simplifySelectOfCreate" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0")) - (rule "sortsDisjointModuloNull" (formula "1") (term "0,0")) - (rule "replace_known_right" (formula "1") (term "1,0,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "applyEqReverse" (formula "2") (term "0,0,1") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "pullOutSelect" (formula "1") (term "0,0") (inst "selectSK=java_lang_Object_created__1")) - (rule "simplifySelectOfCreate" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "2")) - (rule "notLeft" (formula "2")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "blockEmpty" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore__0,savedHeapBefore__0")) - (builtin "One Step Simplification" (formula "8")) - (rule "assignment_write_attribute_this" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallWithinClass" (formula "8") (term "1")) - (rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$prepareEnter_0,savedHeapBefore_$prepareEnter_0")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallSuper" (formula "8") (term "1")) - (rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "blockEmpty" (formula "8") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "8") (term "1")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "blockEmpty" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallSuper" (formula "8") (term "1")) - (rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "blockEmpty" (formula "8") (term "1")) - (rule "assignment_write_attribute" (formula "8") (term "1")) - (branch "Normal Execution (b != null)" - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "5"))) - (rule "false_right" (formula "8")) - (builtin "One Step Simplification" (formula "8")) - (rule "activeUseStaticFieldWriteAccess" (formula "8") (term "1") (inst "#v0=b_1")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "b_3")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "assignment_write_static_attribute" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "activeUseStaticFieldReadAccess" (formula "8") (term "1")) - (rule "activeUseStaticFieldWriteAccess" (formula "8") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "a_5")) - (rule "assignment_read_static_attribute" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "pullOutSelect" (formula "8") (term "0,1,0") (inst "selectSK=Figure2_x_1")) - (rule "simplifySelectOfCreate" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6")) (ifInst "" (formula "6"))) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "replaceKnownSelect_taclet0_0" (formula "1") (term "0")) - (rule "replaceKnownAuxiliaryConstant_taclet0_1" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "9") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_static_attribute" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "eval_order_access1" (formula "8") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "a_6")) - (rule "activeUseStaticFieldReadAccess" (formula "8") (term "1")) - (rule "assignment_read_static_attribute" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "pullOutSelect" (formula "8") (term "0,1,0") (inst "selectSK=Figure2_w_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "9") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "eval_order_access4" (formula "8") (term "1") (inst "#v1=b") (inst "#v0=a_7")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "a_7")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "b_4")) - (rule "activeUseStaticFieldReadAccess" (formula "8") (term "1")) - (rule "assignment_read_static_attribute" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "pullOutSelect" (formula "8") (term "0,1,0") (inst "selectSK=Figure2_y_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "9") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_attribute" (formula "8") (term "1")) - (branch "Normal Execution (a_7 != null)" - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "6"))) - (rule "false_right" (formula "8")) - (builtin "One Step Simplification" (formula "8")) - (rule "ifUnfold" (formula "8") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x")) - (rule "compound_equality_comparison_2" (formula "8") (term "1") (inst "#v1=a_1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "a_8")) - (rule "activeUseStaticFieldReadAccess" (formula "8") (term "1")) - (rule "assignment_read_static_attribute" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "replaceKnownSelect_taclet00_9" (formula "8") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet00_10" (formula "8") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "a_9")) - (rule "activeUseStaticFieldReadAccess" (formula "8") (term "1")) - (rule "assignment_read_static_attribute" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "pullOutSelect" (formula "8") (term "0,1,0") (inst "selectSK=Figure2_z_0")) - (rule "simplifySelectOfCreate" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6")) (ifInst "" (formula "6"))) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "9") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "equality_comparison_simple" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "ifSplit" (formula "8")) - (branch "if x true" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "activeUseStaticFieldWriteAccess" (formula "8") (term "1") (inst "#v0=b")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "b_5")) - (rule "eval_order_access2" (formula "8") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "a_10")) - (rule "activeUseStaticFieldReadAccess" (formula "8") (term "1")) - (rule "assignment_read_static_attribute" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "8") (term "0,1,0")) - (rule "replaceKnownSelect_taclet000_13" (formula "8") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet000_15" (formula "8") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "8") (term "1")) - (branch "Normal Execution (a_10 != null)" - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "6"))) - (rule "false_right" (formula "8")) - (builtin "One Step Simplification" (formula "8")) - (rule "pullOutSelect" (formula "8") (term "0,1,0") (inst "selectSK=A_f_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "9") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_static_attribute" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (opengoal " ") - ) - (branch "Null Reference (a_10 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_7 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (b = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "4"))) - (rule "closeFalse" (formula "1")) -) -) -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Instance/Figure2Instance.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Instance/Figure2Instance.java deleted file mode 100644 index e052e03e0a9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Instance/Figure2Instance.java +++ /dev/null @@ -1,44 +0,0 @@ -/* @inproceedings{Sridharan:2007:TS:1250734.1250748, - * author = {Sridharan, Manu and Fink, Stephen J. and Bodik, Rastislav}, - * title = {Thin Slicing}, - * booktitle = {Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation}, - * series = {PLDI '07}, - * year = {2007}, - * isbn = {978-1-59593-633-2}, - * location = {San Diego, California, USA}, - * pages = {112--122}, - * numpages = {11}, - * url = {http://doi.acm.org/10.1145/1250734.1250748}, - * doi = {10.1145/1250734.1250748}, - * acmid = {1250748}, - * publisher = {ACM}, - * address = {New York, NY, USA}, - * keywords = {debugging, program understanding, slicing}, - *} - */ -public class Figure2Instance { - A x; - A z; - B y; - A w; - B v; - - public void main() { - x = new A(); - z = x; - y = new B(); - w = x; - w.f = y; - if (w == z) { - v = z.f; // the seed - } - } - - static class A { - public B f; - } - - static class B { - - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Instance/Figure2Instance.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Instance/Figure2Instance.proof deleted file mode 100644 index cc09e93d269..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Instance/Figure2Instance.proof +++ /dev/null @@ -1,387 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Tue Mar 19 13:46:43 CET 2019 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "Figure2Instance#main()", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "wolfram" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "2973") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "assignment" (formula "5")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "5")) -(rule "eval_order_access4_this" (formula "5") (term "1") (inst "#v1=a")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "a")) -(rule "instanceCreationAssignment" (formula "5") (term "1") (inst "#v0=a_1")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "a_1")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "5") (term "1") (inst "#v0=a_2")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "a_2")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) -(builtin "One Step Simplification" (formula "5")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "__NEW__")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "5") (term "1") (inst "#v0=a_3")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "a_3")) -(rule "allocateInstance" (formula "5")) -(builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) -(builtin "One Step Simplification" (formula "6")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "notLeft" (formula "1")) -(rule "blockEmpty" (formula "8") (term "1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_,savedHeapBefore_")) -(builtin "One Step Simplification" (formula "8")) -(rule "assignment_write_attribute_this" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallWithinClass" (formula "8") (term "1")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallSuper" (formula "8") (term "1")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallEmpty" (formula "8") (term "1")) -(rule "blockEmpty" (formula "8") (term "1")) -(rule "assignment_write_attribute_this" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallEmpty" (formula "8") (term "1")) -(rule "blockEmpty" (formula "8") (term "1")) -(rule "methodCallReturnIgnoreResult" (formula "8") (term "1")) -(rule "methodCallReturn" (formula "8") (term "1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallEmpty" (formula "8") (term "1")) -(rule "blockEmpty" (formula "8") (term "1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallSuper" (formula "8") (term "1")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallEmpty" (formula "8") (term "1")) -(rule "methodCallEmpty" (formula "8") (term "1")) -(rule "blockEmpty" (formula "8") (term "1")) -(rule "assignment_write_attribute" (formula "8") (term "1")) -(branch "Normal Execution (a_1 != null)" - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "5"))) - (rule "false_right" (formula "8")) - (builtin "One Step Simplification" (formula "8")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "assignment_write_attribute_this" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "eval_order_access4_this" (formula "8") (term "1") (inst "#v1=a")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "a_4")) - (rule "assignment_read_attribute_this" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "pullOutSelect" (formula "8") (term "0,1,0") (inst "selectSK=Figure2Instance_x_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "9") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_attribute_this" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "eval_order_access4_this" (formula "8") (term "1") (inst "#v1=b")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "b")) - (rule "instanceCreationAssignment" (formula "8") (term "1") (inst "#v0=b_1")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "b_1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "8") (term "1") (inst "#v0=b_2")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "b_2")) - (rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$createObject_0,savedHeapBefore_$createObject_0")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "__NEW___1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "8") (term "1") (inst "#v0=b_3")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "b_3")) - (rule "allocateInstance" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "wellFormedStoreObject" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0")) - (rule "wellFormedStoreObject" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "wellFormedStorePrimitive" (formula "1") (term "0,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "wellFormedStoreObject" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "wellFormedCreate" (formula "1") (term "0,0")) - (rule "replace_known_left" (formula "1") (term "0,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "1")) - (rule "pullOutSelect" (formula "1") (term "0,0,1") (inst "selectSK=java_lang_Object_created__0")) - (rule "simplifySelectOfCreate" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0")) - (rule "sortsDisjointModuloNull" (formula "1") (term "0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0") (ifseqformula "8")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "applyEqReverse" (formula "2") (term "0,0,1") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "pullOutSelect" (formula "1") (term "0,0") (inst "selectSK=java_lang_Object_created__1")) - (rule "simplifySelectOfCreate" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "2")) - (rule "notLeft" (formula "2")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodBodyExpand" (formula "11") (term "1") (newnames "heapBefore__0,savedHeapBefore__0")) - (builtin "One Step Simplification" (formula "11")) - (rule "assignment_write_attribute_this" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallWithinClass" (formula "11") (term "1")) - (rule "methodBodyExpand" (formula "11") (term "1") (newnames "heapBefore_$prepareEnter_0,savedHeapBefore_$prepareEnter_0")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallSuper" (formula "11") (term "1")) - (rule "methodBodyExpand" (formula "11") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "11") (term "1")) - (rule "methodCallReturn" (formula "11") (term "1")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodBodyExpand" (formula "11") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallSuper" (formula "11") (term "1")) - (rule "methodBodyExpand" (formula "11") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "assignment_write_attribute" (formula "11") (term "1")) - (branch "Normal Execution (b_1 != null)" - (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "7"))) - (rule "false_right" (formula "11")) - (builtin "One Step Simplification" (formula "11")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "assignment_write_attribute_this" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "eval_order_access4_this" (formula "11") (term "1") (inst "#v1=a")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "a_5")) - (rule "assignment_read_attribute_this" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "pullOutSelect" (formula "11") (term "0,1,0") (inst "selectSK=Figure2Instance_x_1")) - (rule "simplifySelectOfCreate" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "replaceKnownSelect_taclet0_0" (formula "1") (term "0")) - (rule "replaceKnownAuxiliaryConstant_taclet0_1" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "12") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_attribute_this" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "eval_order_access1" (formula "11") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "a_6")) - (rule "assignment_read_attribute_this" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "pullOutSelect" (formula "11") (term "0,1,0") (inst "selectSK=Figure2Instance_w_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "12") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "eval_order_access4" (formula "11") (term "1") (inst "#v1=b") (inst "#v0=a_7")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "a_7")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_4")) - (rule "assignment_read_attribute_this" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "pullOutSelect" (formula "11") (term "0,1,0") (inst "selectSK=Figure2Instance_y_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "12") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_attribute" (formula "11") (term "1")) - (branch "Normal Execution (a_7 != null)" - (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "8"))) - (rule "false_right" (formula "11")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifUnfold" (formula "11") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "x")) - (rule "compound_equality_comparison_2" (formula "11") (term "1") (inst "#v1=a_1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "a_8")) - (rule "assignment_read_attribute_this" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "replaceKnownSelect_taclet00_9" (formula "11") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet00_10" (formula "11") (term "0,1,0")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "a_9")) - (rule "assignment_read_attribute_this" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "pullOutSelect" (formula "11") (term "0,1,0") (inst "selectSK=Figure2Instance_z_0")) - (rule "simplifySelectOfCreate" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "12") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "equality_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifSplit" (formula "11")) - (branch "if x true" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "eval_order_access4_this" (formula "11") (term "1") (inst "#v1=b")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "b_5")) - (rule "eval_order_access2" (formula "11") (term "1") (inst "#v0=a")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "a_10")) - (rule "assignment_read_attribute_this" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "11") (term "0,1,0")) - (rule "replaceKnownSelect_taclet000_13" (formula "11") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet000_15" (formula "11") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "11") (term "1")) - (branch "Normal Execution (a_10 != null)" - (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "8"))) - (rule "false_right" (formula "11")) - (builtin "One Step Simplification" (formula "11")) - (rule "pullOutSelect" (formula "11") (term "0,1,0") (inst "selectSK=Figure2Instance_A_f_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "12") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_attribute_this" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "tryEmpty" (formula "11") (term "1")) - (rule "emptyModality" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (opengoal " ") - ) - (branch "Null Reference (a_10 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (a_7 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (b_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (a_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) -) -) -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Local/Figure2Local.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Local/Figure2Local.java deleted file mode 100644 index 21fdf63c873..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Local/Figure2Local.java +++ /dev/null @@ -1,38 +0,0 @@ -/* @inproceedings{Sridharan:2007:TS:1250734.1250748, - * author = {Sridharan, Manu and Fink, Stephen J. and Bodik, Rastislav}, - * title = {Thin Slicing}, - * booktitle = {Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation}, - * series = {PLDI '07}, - * year = {2007}, - * isbn = {978-1-59593-633-2}, - * location = {San Diego, California, USA}, - * pages = {112--122}, - * numpages = {11}, - * url = {http://doi.acm.org/10.1145/1250734.1250748}, - * doi = {10.1145/1250734.1250748}, - * acmid = {1250748}, - * publisher = {ACM}, - * address = {New York, NY, USA}, - * keywords = {debugging, program understanding, slicing}, - *} - */ -public class Figure2Local { - public void main() { - A x = new A(); - A z = x; - B y = new B(); - A w = x; - w.f = y; - if (w == z) { - B v = z.f; // the seed - } - } - - static class A { - public B f; - } - - static class B { - - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Local/Figure2Local.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Local/Figure2Local.proof deleted file mode 100644 index 0704c743312..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Local/Figure2Local.proof +++ /dev/null @@ -1,267 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Tue Mar 19 23:43:13 CET 2019 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "Figure2Local#main()", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "wolfram" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1093") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "assignment" (formula "5")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "5")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "x")) -(rule "instanceCreationAssignment" (formula "5") (term "1") (inst "#v0=a")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "a")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "5") (term "1") (inst "#v0=a_1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "a_1")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) -(builtin "One Step Simplification" (formula "5")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "__NEW__")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "5") (term "1") (inst "#v0=a_2")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "a_2")) -(rule "allocateInstance" (formula "5")) -(builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) -(builtin "One Step Simplification" (formula "6")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "notLeft" (formula "1")) -(rule "blockEmpty" (formula "8") (term "1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_,savedHeapBefore_")) -(builtin "One Step Simplification" (formula "8")) -(rule "assignment_write_attribute_this" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallWithinClass" (formula "8") (term "1")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallSuper" (formula "8") (term "1")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallEmpty" (formula "8") (term "1")) -(rule "blockEmpty" (formula "8") (term "1")) -(rule "assignment_write_attribute_this" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallEmpty" (formula "8") (term "1")) -(rule "blockEmpty" (formula "8") (term "1")) -(rule "methodCallReturnIgnoreResult" (formula "8") (term "1")) -(rule "methodCallReturn" (formula "8") (term "1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallEmpty" (formula "8") (term "1")) -(rule "blockEmpty" (formula "8") (term "1")) -(rule "assignment" (formula "8") (term "1")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallSuper" (formula "8") (term "1")) -(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) -(builtin "One Step Simplification" (formula "8")) -(rule "methodCallEmpty" (formula "8") (term "1")) -(rule "methodCallEmpty" (formula "8") (term "1")) -(rule "blockEmpty" (formula "8") (term "1")) -(rule "assignment_write_attribute" (formula "8") (term "1")) -(branch "Normal Execution (a != null)" - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "5"))) - (rule "false_right" (formula "8")) - (builtin "One Step Simplification" (formula "8")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "z")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "y")) - (rule "instanceCreationAssignment" (formula "8") (term "1") (inst "#v0=b")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "b")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "8") (term "1") (inst "#v0=b_1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "b_1")) - (rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_$createObject_0,savedHeapBefore_$createObject_0")) - (builtin "One Step Simplification" (formula "8")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "__NEW___1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "8") (term "1") (inst "#v0=b_2")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "b_2")) - (rule "allocateInstance" (formula "8")) - (builtin "One Step Simplification" (formula "1")) - (rule "wellFormedStorePrimitive" (formula "1") (term "0,1,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "wellFormedStoreObject" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "wellFormedCreate" (formula "1") (term "0")) - (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "pullOutSelect" (formula "6") (term "0") (inst "selectSK=java_lang_Object_created__0")) - (rule "simplifySelectOfCreate" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0")) - (rule "sortsDisjointModuloNull" (formula "1") (term "0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0") (ifseqformula "8")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "applyEqReverse" (formula "7") (term "0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodBodyExpand" (formula "11") (term "1") (newnames "heapBefore__0,savedHeapBefore__0")) - (builtin "One Step Simplification" (formula "11")) - (rule "assignment_write_attribute_this" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallWithinClass" (formula "11") (term "1")) - (rule "methodBodyExpand" (formula "11") (term "1") (newnames "heapBefore_$prepareEnter_0,savedHeapBefore_$prepareEnter_0")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallSuper" (formula "11") (term "1")) - (rule "methodBodyExpand" (formula "11") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "11") (term "1")) - (rule "methodCallReturn" (formula "11") (term "1")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodBodyExpand" (formula "11") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallSuper" (formula "11") (term "1")) - (rule "methodBodyExpand" (formula "11") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "blockEmpty" (formula "11") (term "1")) - (rule "assignment_write_attribute" (formula "11") (term "1")) - (branch "Normal Execution (b != null)" - (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "7"))) - (rule "false_right" (formula "11")) - (builtin "One Step Simplification" (formula "11")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "w")) - (rule "assignment" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "assignment_write_attribute" (formula "11") (term "1")) - (branch "Normal Execution (w != null)" - (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "8"))) - (rule "false_right" (formula "11")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifUnfold" (formula "11") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "x_1")) - (rule "equality_comparison_simple" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "ifSplit" (formula "11")) - (branch "if x_1 true" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "11")) - (rule "variableDeclarationAssign" (formula "11") (term "1")) - (rule "variableDeclaration" (formula "11") (term "1") (newnames "v")) - (rule "assignment_read_attribute" (formula "11") (term "1")) - (branch "Normal Execution (z != null)" - (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "8"))) - (rule "false_right" (formula "11")) - (builtin "One Step Simplification" (formula "11")) - (rule "methodCallEmpty" (formula "11") (term "1")) - (rule "tryEmpty" (formula "11") (term "1")) - (rule "emptyModality" (formula "11") (term "1")) - (builtin "One Step Simplification" (formula "11")) - (opengoal " ") - ) - (branch "Null Reference (z = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_1 false" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (w = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (b = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) -) -) -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Param/Figure2Param.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Param/Figure2Param.java deleted file mode 100644 index 6511ae6bab3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Param/Figure2Param.java +++ /dev/null @@ -1,38 +0,0 @@ -/* @inproceedings{Sridharan:2007:TS:1250734.1250748, - * author = {Sridharan, Manu and Fink, Stephen J. and Bodik, Rastislav}, - * title = {Thin Slicing}, - * booktitle = {Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation}, - * series = {PLDI '07}, - * year = {2007}, - * isbn = {978-1-59593-633-2}, - * location = {San Diego, California, USA}, - * pages = {112--122}, - * numpages = {11}, - * url = {http://doi.acm.org/10.1145/1250734.1250748}, - * doi = {10.1145/1250734.1250748}, - * acmid = {1250748}, - * publisher = {ACM}, - * address = {New York, NY, USA}, - * keywords = {debugging, program understanding, slicing}, - *} - */ -public class Figure2Param { - public void main(A x, A z, B y, A w, B v) { - x = new A(); - z = x; - y = new B(); - w = x; - w.f = y; - if (w == z) { - v = z.f; // the seed - } - } - - static class A { - public B f; - } - - static class B { - - } -} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Param/Figure2Param.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Param/Figure2Param.proof deleted file mode 100644 index 0a666dc8bf5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/figure2Param/Figure2Param.proof +++ /dev/null @@ -1,547 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 20 00:03:03 CET 2019 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "main(Figure2Param.A, Figure2Param.A, Figure2Param.B, Figure2Param.A, Figure2Param.B)", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "Figure2Param#main(Figure2Param.A, Figure2Param.A, Figure2Param.B, Figure2Param.A, Figure2Param.B)", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "wolfram" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "2013") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "5")) -(rule "notLeft" (formula "2")) -(rule "assignment" (formula "10")) -(rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "10")) -(rule "instanceCreationAssignment" (formula "10") (term "1") (inst "#v0=a")) -(rule "variableDeclarationAssign" (formula "10") (term "1")) -(rule "variableDeclaration" (formula "10") (term "1") (newnames "a")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "10") (term "1") (inst "#v0=a_1")) -(rule "variableDeclaration" (formula "10") (term "1") (newnames "a_1")) -(rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_$createObject,savedHeapBefore_$createObject")) -(builtin "One Step Simplification" (formula "10")) -(rule "variableDeclaration" (formula "10") (term "1") (newnames "__NEW__")) -(rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "10") (term "1") (inst "#v0=a_2")) -(rule "variableDeclaration" (formula "10") (term "1") (newnames "a_2")) -(rule "allocateInstance" (formula "10")) -(builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) -(builtin "One Step Simplification" (formula "11")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "notLeft" (formula "1")) -(rule "blockEmpty" (formula "13") (term "1")) -(rule "assignment" (formula "13") (term "1")) -(builtin "One Step Simplification" (formula "13")) -(rule "methodBodyExpand" (formula "13") (term "1") (newnames "heapBefore_,savedHeapBefore_")) -(builtin "One Step Simplification" (formula "13")) -(rule "assignment_write_attribute_this" (formula "13") (term "1")) -(builtin "One Step Simplification" (formula "13")) -(rule "methodCallWithinClass" (formula "13") (term "1")) -(rule "methodBodyExpand" (formula "13") (term "1") (newnames "heapBefore_$prepareEnter,savedHeapBefore_$prepareEnter")) -(builtin "One Step Simplification" (formula "13")) -(rule "methodCallSuper" (formula "13") (term "1")) -(rule "methodBodyExpand" (formula "13") (term "1") (newnames "heapBefore_$prepare,savedHeapBefore_$prepare")) -(builtin "One Step Simplification" (formula "13")) -(rule "methodCallEmpty" (formula "13") (term "1")) -(rule "blockEmpty" (formula "13") (term "1")) -(rule "assignment_write_attribute_this" (formula "13") (term "1")) -(builtin "One Step Simplification" (formula "13")) -(rule "methodCallEmpty" (formula "13") (term "1")) -(rule "blockEmpty" (formula "13") (term "1")) -(rule "methodCallReturnIgnoreResult" (formula "13") (term "1")) -(rule "methodCallReturn" (formula "13") (term "1")) -(rule "assignment" (formula "13") (term "1")) -(builtin "One Step Simplification" (formula "13")) -(rule "methodCallEmpty" (formula "13") (term "1")) -(rule "blockEmpty" (formula "13") (term "1")) -(rule "assignment" (formula "13") (term "1")) -(builtin "One Step Simplification" (formula "13")) -(rule "methodBodyExpand" (formula "13") (term "1") (newnames "heapBefore_$init,savedHeapBefore_$init")) -(builtin "One Step Simplification" (formula "13")) -(rule "methodCallSuper" (formula "13") (term "1")) -(rule "methodBodyExpand" (formula "13") (term "1") (newnames "heapBefore_$init_0,savedHeapBefore_$init_0")) -(builtin "One Step Simplification" (formula "13")) -(rule "methodCallEmpty" (formula "13") (term "1")) -(rule "methodCallEmpty" (formula "13") (term "1")) -(rule "blockEmpty" (formula "13") (term "1")) -(rule "assignment_write_attribute" (formula "13") (term "1")) -(branch "Normal Execution (a != null)" - (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "10"))) - (rule "false_right" (formula "13")) - (builtin "One Step Simplification" (formula "13")) - (rule "assignment" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "assignment" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "instanceCreationAssignment" (formula "13") (term "1") (inst "#v0=b")) - (rule "variableDeclarationAssign" (formula "13") (term "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "b")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "13") (term "1") (inst "#v0=b_1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "b_1")) - (rule "methodBodyExpand" (formula "13") (term "1") (newnames "heapBefore_$createObject_0,savedHeapBefore_$createObject_0")) - (builtin "One Step Simplification" (formula "13")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "__NEW___1")) - (rule "staticMethodCallStaticWithAssignmentViaTypereference" (formula "13") (term "1") (inst "#v0=b_2")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "b_2")) - (rule "allocateInstance" (formula "13")) - (builtin "One Step Simplification" (formula "1")) - (rule "wellFormedStorePrimitive" (formula "1") (term "0,1,0")) - (builtin "One Step Simplification" (formula "14")) - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1")) - (rule "wellFormedStoreObject" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "wellFormedCreate" (formula "1") (term "0")) - (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "pullOutSelect" (formula "11") (term "0") (inst "selectSK=java_lang_Object_created__0")) - (rule "simplifySelectOfCreate" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0")) - (rule "sortsDisjointModuloNull" (formula "1") (term "0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "applyEqReverse" (formula "12") (term "0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "blockEmpty" (formula "16") (term "1")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodBodyExpand" (formula "16") (term "1") (newnames "heapBefore__0,savedHeapBefore__0")) - (builtin "One Step Simplification" (formula "16")) - (rule "assignment_write_attribute_this" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodCallWithinClass" (formula "16") (term "1")) - (rule "methodBodyExpand" (formula "16") (term "1") (newnames "heapBefore_$prepareEnter_0,savedHeapBefore_$prepareEnter_0")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodCallSuper" (formula "16") (term "1")) - (rule "methodBodyExpand" (formula "16") (term "1") (newnames "heapBefore_$prepare_0,savedHeapBefore_$prepare_0")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodCallEmpty" (formula "16") (term "1")) - (rule "methodCallEmpty" (formula "16") (term "1")) - (rule "blockEmpty" (formula "16") (term "1")) - (rule "methodCallReturnIgnoreResult" (formula "16") (term "1")) - (rule "methodCallReturn" (formula "16") (term "1")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodCallEmpty" (formula "16") (term "1")) - (rule "blockEmpty" (formula "16") (term "1")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodBodyExpand" (formula "16") (term "1") (newnames "heapBefore_$init_1,savedHeapBefore_$init_1")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodCallSuper" (formula "16") (term "1")) - (rule "methodBodyExpand" (formula "16") (term "1") (newnames "heapBefore_$init_2,savedHeapBefore_$init_2")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodCallEmpty" (formula "16") (term "1")) - (rule "methodCallEmpty" (formula "16") (term "1")) - (rule "blockEmpty" (formula "16") (term "1")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (b != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "12"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (w != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "ifUnfold" (formula "16") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_1")) - (rule "equality_comparison_simple" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "ifSplit" (formula "16")) - (branch "if x_1 true" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (z != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=Figure2Param_A_f_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallEmpty" (formula "16") (term "1")) - (rule "tryEmpty" (formula "16") (term "1")) - (rule "emptyModality" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "cut_direct" (formula "9") (term "0")) - (branch "CUT: w = null TRUE" - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "10")) - (rule "cut_direct" (formula "6") (term "0")) - (branch "CUT: x = null TRUE" - (builtin "One Step Simplification" (formula "7")) - (rule "true_left" (formula "7")) - (rule "cut_direct" (formula "10") (term "0")) - (branch "CUT: v = null TRUE" - (builtin "One Step Simplification" (formula "11")) - (rule "true_left" (formula "11")) - (rule "cut_direct" (formula "8") (term "0")) - (branch "CUT: y = null TRUE" - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - (branch "CUT: y = null FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - ) - (branch "CUT: v = null FALSE" - (builtin "One Step Simplification" (formula "10")) - (rule "cut_direct" (formula "8") (term "0")) - (branch "CUT: y = null TRUE" - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - (branch "CUT: y = null FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - ) - ) - (branch "CUT: x = null FALSE" - (builtin "One Step Simplification" (formula "6")) - (rule "cut_direct" (formula "10") (term "0")) - (branch "CUT: v = null TRUE" - (builtin "One Step Simplification" (formula "11")) - (rule "true_left" (formula "11")) - (rule "cut_direct" (formula "8") (term "0")) - (branch "CUT: y = null TRUE" - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - (branch "CUT: y = null FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - ) - (branch "CUT: v = null FALSE" - (builtin "One Step Simplification" (formula "10")) - (rule "cut_direct" (formula "8") (term "0")) - (branch "CUT: y = null TRUE" - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - (branch "CUT: y = null FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - ) - ) - ) - (branch "CUT: w = null FALSE" - (builtin "One Step Simplification" (formula "9")) - (rule "cut_direct" (formula "6") (term "0")) - (branch "CUT: x = null TRUE" - (builtin "One Step Simplification" (formula "7")) - (rule "true_left" (formula "7")) - (rule "cut_direct" (formula "10") (term "0")) - (branch "CUT: v = null TRUE" - (builtin "One Step Simplification" (formula "11")) - (rule "true_left" (formula "11")) - (rule "cut_direct" (formula "8") (term "0")) - (branch "CUT: y = null TRUE" - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - (branch "CUT: y = null FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - ) - (branch "CUT: v = null FALSE" - (builtin "One Step Simplification" (formula "10")) - (rule "cut_direct" (formula "8") (term "0")) - (branch "CUT: y = null TRUE" - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - (branch "CUT: y = null FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - ) - ) - (branch "CUT: x = null FALSE" - (builtin "One Step Simplification" (formula "6")) - (rule "cut_direct" (formula "10") (term "0")) - (branch "CUT: v = null TRUE" - (builtin "One Step Simplification" (formula "11")) - (rule "true_left" (formula "11")) - (rule "cut_direct" (formula "8") (term "0")) - (branch "CUT: y = null TRUE" - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - (branch "CUT: y = null FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - ) - (branch "CUT: v = null FALSE" - (builtin "One Step Simplification" (formula "10")) - (rule "cut_direct" (formula "8") (term "0")) - (branch "CUT: y = null TRUE" - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - (branch "CUT: y = null FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "cut_direct" (formula "7") (term "0")) - (branch "CUT: z = null TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (opengoal " ") - ) - (branch "CUT: z = null FALSE" - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") - ) - ) - ) - ) - ) - ) - (branch "Null Reference (z = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_1 false" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (w = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (b = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (a = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) -) -) -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/instanceFieldsAliased/InstanceFieldsAliased.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/instanceFieldsAliased/InstanceFieldsAliased.java deleted file mode 100644 index f3bd93bdfe2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/instanceFieldsAliased/InstanceFieldsAliased.java +++ /dev/null @@ -1,31 +0,0 @@ - -public class InstanceFieldsAliased { - private Container container; - - /*@ normal_behavior - @ requires o1 != null && \invariant_for(o1); - @ requires o1.container != null && \invariant_for(o1.container); - @ requires o2 != null && \invariant_for(o2); - @ requires o2.container != null && \invariant_for(o2.container); - @ requires o1 != 02; - @ requires o1.container != o2.container; - @ ensures true; - @*/ - public static int main(InstanceFieldsAliased o1, - InstanceFieldsAliased o2) { - o2.container.x = 40; - Container c = o1.container; - o2.container = c; - c.y = 2; - o1.container.z = -4711; - o2.container.result = o2.container.x + o2.container.y; - return c.result; - } - - private static class Container { - private int x; - private int y; - private int z; - private int result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/instanceFieldsAliased/InstanceFieldsAliased.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/instanceFieldsAliased/InstanceFieldsAliased.proof deleted file mode 100644 index 25ef6b133d9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/instanceFieldsAliased/InstanceFieldsAliased.proof +++ /dev/null @@ -1,338 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:20:51 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:showSatisfiability , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "InstanceFieldsAliased[InstanceFieldsAliased::main(InstanceFieldsAliased,InstanceFieldsAliased)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "InstanceFieldsAliased[InstanceFieldsAliased::main(InstanceFieldsAliased,InstanceFieldsAliased)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "513") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "o1,o2,result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "6")) -(rule "andLeft" (formula "2")) -(rule "notLeft" (formula "5")) -(rule "andLeft" (formula "7")) -(rule "andLeft" (formula "6")) -(rule "andLeft" (formula "8")) -(rule "andLeft" (formula "10")) -(rule "notLeft" (formula "6")) -(rule "notLeft" (formula "7")) -(rule "andLeft" (formula "8")) -(rule "andLeft" (formula "10")) -(rule "notLeft" (formula "8")) -(rule "andLeft" (formula "10")) -(rule "notLeft" (formula "9")) -(rule "notLeft" (formula "9")) -(rule "notLeft" (formula "9")) -(rule "eqSymm" (formula "9")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "13")) -(builtin "One Step Simplification" (formula "2")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "11")) -(builtin "One Step Simplification" (formula "3")) -(rule "onlyCreatedObjectsAreReferenced" (formula "6") (term "1") (ifseqformula "1")) -(rule "replace_known_right" (formula "6") (term "0") (ifseqformula "13")) -(builtin "One Step Simplification" (formula "6")) -(rule "onlyCreatedObjectsAreReferenced" (formula "9") (term "1") (ifseqformula "1")) -(rule "replace_known_right" (formula "9") (term "0") (ifseqformula "12")) -(builtin "One Step Simplification" (formula "9")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_InstanceFieldsAliased" (formula "5")) -(rule "notLeft" (formula "5")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_InstanceFieldsAliased" (formula "8")) -(rule "notLeft" (formula "8")) -(rule "assignment" (formula "16") (term "1")) -(builtin "One Step Simplification" (formula "16")) -(rule "methodBodyExpand" (formula "16") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "16")) -(rule "eval_order_access1" (formula "16") (term "1") (inst "#v0=c_1")) -(rule "variableDeclarationAssign" (formula "16") (term "1")) -(rule "variableDeclaration" (formula "16") (term "1") (newnames "c_1")) -(rule "assignment_read_attribute" (formula "16") (term "1")) -(branch "Normal Execution (_o2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "12"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access1" (formula "16") (term "1") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_2")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o1 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "15"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=InstanceFieldsAliased_container_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access1" (formula "16") (term "1") (inst "#v0=c_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_3")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=InstanceFieldsAliased_container_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "eval_order_access4" (formula "16") (term "1") (inst "#v0=c_4") (inst "#v1=x")) - (rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_InstanceFieldsAliased" (formula "8")) - (rule "notLeft" (formula "8")) - (rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_InstanceFieldsAliased" (formula "5")) - (rule "notLeft" (formula "5")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_4")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x")) - (rule "compound_addition_2" (formula "16") (term "1") (inst "#v1=x_2") (inst "#v0=x_1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_1")) - (rule "eval_order_access2" (formula "16") (term "1") (inst "#v0=c_5")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_5")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "replaceKnownSelect_taclet00000000_2" (formula "16") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet00000000_3" (formula "16") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_5 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=InstanceFieldsAliased_Container_x_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_2")) - (rule "eval_order_access2" (formula "16") (term "1") (inst "#v0=c_5")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "c_6")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_o2 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "replaceKnownSelect_taclet00000000_2" (formula "16") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet00000000_3" (formula "16") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_6 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "dismissNonSelectedField" (formula "16") (term "0,1,0")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=InstanceFieldsAliased_Container_y_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignmentAdditionInt" (formula "16") (term "1")) - (rule "translateJavaAddInt" (formula "16") (term "0,0,1")) - (builtin "One Step Simplification" (formula "16")) - (rule "polySimp_addComm0" (formula "16") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c_4 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "returnUnfold" (formula "16") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_3")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (c != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "14"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "pullOutSelect" (formula "16") (term "0,1,0") (inst "selectSK=InstanceFieldsAliased_Container_result_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "17") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "16") (term "1")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodCallEmpty" (formula "16") (term "1")) - (rule "tryEmpty" (formula "16") (term "1")) - (rule "emptyModality" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (opengoal " ") - ) - (branch "Null Reference (c = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_4 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_6 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_5 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_o1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_o2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/intEndTest/IntEndTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/intEndTest/IntEndTest.java deleted file mode 100644 index f27cecae8e5..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/intEndTest/IntEndTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class IntEndTest { - /*@ normal_behavior - @ ensures \result == 42; - @ assignable \strictly_nothing; - @*/ - public static int main(int x) { - x = -4700; - x = x - 11; - x = 40; - x = x + 2; - return x; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/intEndTest/IntEndTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/intEndTest/IntEndTest.proof deleted file mode 100644 index 4cd94700bd2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/intEndTest/IntEndTest.proof +++ /dev/null @@ -1,87 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Mar 26 14:08:49 CEST 2018 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "main(int)", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "IntEndTest#main(int)", - } - -\proof { -(keyLog "0" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "52") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate")) -(rule "impRight" (formula "1")) -(rule "assignment" (formula "2")) -(rule "methodBodyExpand" (formula "2") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignmentSubtractionInt" (formula "2") (term "1")) -(rule "translateJavaSubInt" (formula "2") (term "0,0,1")) -(builtin "One Step Simplification" (formula "2")) -(rule "sub_literals" (formula "2") (term "0,1,0")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignmentAdditionInt" (formula "2") (term "1")) -(rule "translateJavaAddInt" (formula "2") (term "0,0,1")) -(builtin "One Step Simplification" (formula "2")) -(rule "add_literals" (formula "2") (term "0,1,0")) -(rule "methodCallReturn" (formula "2") (term "1")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "methodCallEmpty" (formula "2") (term "1")) -(rule "tryEmpty" (formula "2") (term "1")) -(rule "emptyModality" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(opengoal " ") -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantInListFieldsTest/LoopInvariantInListFieldsTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantInListFieldsTest/LoopInvariantInListFieldsTest.java deleted file mode 100644 index 2167722bbb0..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantInListFieldsTest/LoopInvariantInListFieldsTest.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class LoopInvariantInListFieldsTest { - private int i; - - private int j; - - private int k; - - public int main() { - i = 2; - j = 123; - k = 0; - /*@ loop_invariant i >= 0; - @ decreasing i; - @ assignable i, j; - @*/ - while (i > 0) { - i--; - } - return i; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantInListFieldsTest/LoopInvariantInListFieldsTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantInListFieldsTest/LoopInvariantInListFieldsTest.proof deleted file mode 100644 index 51939d92614..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantInListFieldsTest/LoopInvariantInListFieldsTest.proof +++ /dev/null @@ -1,404 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:21:18 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:on , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:ban , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:safe , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:treatAsAxiom , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "LoopInvariantInListFieldsTest#main()", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "395346053") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "assignment" (formula "5")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5")) -(builtin "One Step Simplification" (formula "5")) -(builtin "Loop Invariant" (formula "5") (newnames "variant,b,heapBefore_LOOP,heap_After_LOOP,anon_heap_LOOP,o,f")) -(branch "Invariant Initially Valid" - (builtin "One Step Simplification" (formula "5")) - (rule "wellFormedStorePrimitive" (formula "5") (term "1")) - (rule "wellFormedStorePrimitive" (formula "5") (term "1")) - (rule "wellFormedStorePrimitive" (formula "5") (term "1")) - (rule "replace_known_left" (formula "5") (term "1") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "dismissNonSelectedField" (formula "5") (term "0")) - (rule "dismissNonSelectedField" (formula "5") (term "0")) - (rule "inEqSimp_geqRight" (formula "5")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=LoopInvariantInListFieldsTest_i_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "0") (ifseqformula "1")) - (rule "leq_literals" (formula "2")) - (rule "closeFalse" (formula "2")) -) -(branch "Body Preserves Invariant" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "5")) - (rule "impRight" (formula "7")) - (rule "eqSymm" (formula "8") (term "1,0,0,1,0,0,1,1,0,1")) - (rule "pullOutSelect" (formula "8") (term "0,1,1,1,0") (inst "selectSK=LoopInvariantInListFieldsTest_i_1")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "replace_known_left" (formula "1") (term "0,1,0,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfUnion" (formula "9") (term "0,0,0,0,1,0,0,1,1,0,1")) - (rule "elementOfSingleton" (formula "9") (term "0,0,0,0,0,1,0,0,1,1,0,1")) - (rule "elementOfSingleton" (formula "9") (term "1,0,0,0,0,1,0,0,1,1,0,1")) - (rule "elementOfUnion" (formula "1") (term "0,0")) - (rule "elementOfSingleton" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "9") (term "0,1,1,1,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "7") (term "0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "boxToDiamond" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "b_2")) - (rule "compound_greater_than_comparison_1" (formula "6") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_2")) - (rule "assignment_read_attribute_this" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "replaceKnownSelect_taclet1_0" (formula "6") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "6") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "inEqSimp_gtToGeq" (formula "6") (term "0,0,1,0")) - (rule "times_zero_1" (formula "6") (term "1,0,0,0,0,1,0")) - (rule "add_literals" (formula "6") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "6") (term "0,0,1,0")) - (rule "mul_literals" (formula "6") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "notRight" (formula "6")) - (rule "inEqSimp_subsumption1" (formula "6") (ifseqformula "1")) - (rule "leq_literals" (formula "6") (term "0")) - (builtin "One Step Simplification" (formula "6")) - (rule "true_left" (formula "6")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "7") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_3")) - (rule "compound_greater_than_comparison_1" (formula "7") (term "1") (inst "#v0=x_4")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_4")) - (rule "blockThrow" (formula "7") (term "1,0,0,1")) - (rule "methodCallParamThrow" (formula "7") (term "1,0,0,1")) - (rule "tryCatchThrow" (formula "7") (term "1,0,0,1")) - (rule "ifElseUnfold" (formula "7") (term "1,0,0,1") (inst "#boolv=x")) - (rule "assignment_read_attribute_this" (formula "7")) - (builtin "One Step Simplification" (formula "7")) - (rule "replaceKnownSelect_taclet1_0" (formula "7") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "7") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "ifSplit" (formula "7")) - (branch "if x_3 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "inEqSimp_gtToGeq" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "postdecrement_attribute" (formula "7") (term "1") (inst "#v=l")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "l")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "variableDeclaration" (formula "7") (term "1,0,0,1") (newnames "x_5")) - (rule "equality_comparison_simple" (formula "7") (term "1,0,0,1")) - (rule "eval_order_access4" (formula "7") (term "1") (inst "#v1=x") (inst "#v0=l_1")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "l_1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_6")) - (rule "compound_int_cast_expression" (formula "7") (term "1") (inst "#v=x_7")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_7")) - (rule "remove_parentheses_right" (formula "7") (term "1")) - (rule "compound_subtraction_1" (formula "7") (term "1") (inst "#v=x_8")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_8")) - (rule "assignment_read_attribute" (formula "7")) - (branch "Normal Execution (l != null)" - (builtin "One Step Simplification" (formula "7")) - (rule "replaceKnownSelect_taclet1_0" (formula "7") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "7") (term "0,1,0")) - (rule "assignmentSubtractionInt" (formula "7") (term "1")) - (rule "translateJavaSubInt" (formula "7") (term "0,0,1")) - (builtin "One Step Simplification" (formula "7")) - (rule "polySimp_elimSub" (formula "7") (term "0,1,0")) - (rule "mul_literals" (formula "7") (term "1,0,1,0")) - (rule "polySimp_addComm0" (formula "7") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute" (formula "7")) - (branch "Normal Execution (l_1 != null)" - (builtin "One Step Simplification" (formula "7")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "eqSymm" (formula "7") (term "1,0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "7") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "precOfInt" (formula "7") (term "1,0")) - (rule "dismissNonSelectedField" (formula "7") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "7") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "inEqSimp_ltToLeq" (formula "7") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "7") (term "1,0,0,1,1,0")) - (rule "inEqSimp_commuteLeq" (formula "7") (term "0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "7") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "7") (term "1,1,1,0")) - (rule "polySimp_rightDist" (formula "7") (term "1,1,1,0")) - (rule "mul_literals" (formula "7") (term "0,1,1,1,0")) - (rule "polySimp_mulLiterals" (formula "7") (term "1,1,1,1,0")) - (rule "polySimp_elimOne" (formula "7") (term "1,1,1,1,0")) - (rule "pullOutSelect" (formula "7") (term "0,0,0,0") (inst "selectSK=LoopInvariantInListFieldsTest_i_3")) - (rule "applyEq" (formula "8") (term "0,1,1,0") (ifseqformula "1")) - (rule "applyEq" (formula "8") (term "0,0,1,0") (ifseqformula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "8") (term "0,0,0,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "8") (term "0,1,1,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "8") (term "0,0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_homoInEq0" (formula "7") (term "1,1,0")) - (rule "polySimp_pullOutFactor1" (formula "7") (term "0,1,1,0")) - (rule "add_literals" (formula "7") (term "1,0,1,1,0")) - (rule "times_zero_1" (formula "7") (term "0,1,1,0")) - (rule "qeq_literals" (formula "7") (term "1,1,0")) - (builtin "One Step Simplification" (formula "7")) - (rule "inEqSimp_sepPosMonomial1" (formula "7") (term "0,0,0")) - (rule "mul_literals" (formula "7") (term "1,0,0,0")) - (rule "replace_known_left" (formula "7") (term "0,0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "inEqSimp_sepPosMonomial1" (formula "7") (term "1,0")) - (rule "mul_literals" (formula "7") (term "1,1,0")) - (rule "replace_known_left" (formula "7") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "cut_direct" (formula "7") (term "1")) - (branch "CUT: SETAccumulate(heap[self.i := 2] [self.j := 123] [self.k := 0] [anon( {(self, LoopInvariantInListFieldsTest::$i)} cup {(self, LoopInvariantInListFieldsTest::$j)}, anon_heap_LOOP<>)] [self.i := -1 + self.i@anon_heap_LOOP<>], null) TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "allRight" (formula "8") (inst "sk=f_0")) - (rule "allRight" (formula "8") (inst "sk=o_0")) - (rule "orRight" (formula "8")) - (rule "orRight" (formula "8")) - (rule "orRight" (formula "8")) - (rule "pullOutSelect" (formula "11") (term "1") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "pullOutSelect" (formula "12") (term "0") (inst "selectSK=f_0_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "replaceKnownSelect_taclet00001_4" (formula "1") (term "2,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,1,0,0")) - (rule "replace_known_right" (formula "1") (term "1,0,0") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfUnion" (formula "1") (term "0,0,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0,0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0") (ifseqformula "11")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "13") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "closeTrue" (formula "13")) - ) - (branch "CUT: SETAccumulate(heap[self.i := 2] [self.j := 123] [self.k := 0] [anon( {(self, LoopInvariantInListFieldsTest::$i)} cup {(self, LoopInvariantInListFieldsTest::$j)}, anon_heap_LOOP<>)] [self.i := -1 + self.i@anon_heap_LOOP<>], null) FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (opengoal " ") - ) - ) - (branch "Null Reference (l_1 = null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (l = null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_3 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_gtRight" (formula "6")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Use Case" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "7")) - (rule "pullOutSelect" (formula "5") (term "0") (inst "selectSK=LoopInvariantInListFieldsTest_i_0")) - (rule "simplifySelectOfAnon" (formula "5")) - (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "7"))) - (rule "dismissNonSelectedField" (formula "5") (term "2,0")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "5") (term "2,0")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1,0,0")) - (rule "replace_known_left" (formula "5") (term "0,1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "5")) - (rule "elementOfUnion" (formula "5") (term "0,0")) - (rule "elementOfSingleton" (formula "5") (term "1,0,0")) - (builtin "One Step Simplification" (formula "5")) - (rule "elementOfSingleton" (formula "5") (term "0,0")) - (builtin "One Step Simplification" (formula "5")) - (rule "applyEqReverse" (formula "6") (term "0") (ifseqformula "5")) - (rule "hideAuxiliaryEq" (formula "5")) - (rule "returnUnfold" (formula "7") (term "1,0,1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "b_1")) - (rule "compound_greater_than_comparison_1" (formula "7") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x")) - (rule "assignment_read_attribute_this" (formula "7")) - (builtin "One Step Simplification" (formula "7")) - (rule "replaceKnownSelect_taclet2_0" (formula "7") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2_1" (formula "7") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "inEqSimp_gtToGeq" (formula "7") (term "0,0,1,0")) - (rule "times_zero_1" (formula "7") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "7") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "7") (term "0,0,1,0")) - (rule "mul_literals" (formula "7") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "impRight" (formula "7")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "6")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_antiSymm" (formula "6") (ifseqformula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEq" (formula "6") (term "0") (ifseqformula "5")) - (rule "qeq_literals" (formula "6")) - (rule "true_left" (formula "6")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_1")) - (rule "assignment_read_attribute_this" (formula "7")) - (builtin "One Step Simplification" (formula "7")) - (rule "replaceKnownSelect_taclet2_0" (formula "7") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2_1" (formula "7") (term "0,1,0")) - (rule "applyEq" (formula "7") (term "0,1,0") (ifseqformula "5")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNestedListFieldsTest/LoopInvariantNestedListFieldsTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNestedListFieldsTest/LoopInvariantNestedListFieldsTest.java deleted file mode 100644 index e982d249487..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNestedListFieldsTest/LoopInvariantNestedListFieldsTest.java +++ /dev/null @@ -1,33 +0,0 @@ - -public class LoopInvariantNestedListFieldsTest { - private IntWrapper i; - - private IntWrapper j; - - private IntWrapper k; - - /*@ normal_behavior - @ requires \invariant_for(obj); - @ requires obj.i != obj.j; - @ requires obj.i != obj.k; - @ requires obj.j != obj.k; - @ ensures true; - @*/ - public static int main(LoopInvariantNestedListFieldsTest obj) { - obj.i.value = 2; - obj.j.value = 123; - obj.k.value = 0; - /*@ loop_invariant obj.i.value >= 0; - @ decreasing obj.i.value; - @ assignable obj.i.value; - @*/ - while (obj.i.value > 0) { - obj.i.value--; - } - return obj.i.value; - } - - private static class IntWrapper { - private /*@ spec_public @*/ int value; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNestedListFieldsTest/LoopInvariantNestedListFieldsTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNestedListFieldsTest/LoopInvariantNestedListFieldsTest.proof deleted file mode 100644 index 558eff78aa7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNestedListFieldsTest/LoopInvariantNestedListFieldsTest.proof +++ /dev/null @@ -1,648 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:21:40 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:on , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:ban , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:safe , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:treatAsAxiom , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "LoopInvariantNestedListFieldsTest[LoopInvariantNestedListFieldsTest::main(LoopInvariantNestedListFieldsTest)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "LoopInvariantNestedListFieldsTest[LoopInvariantNestedListFieldsTest::main(LoopInvariantNestedListFieldsTest)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "562893512") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "obj,result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "6")) -(rule "notLeft" (formula "5")) -(rule "andLeft" (formula "6")) -(rule "notLeft" (formula "5")) -(rule "notLeft" (formula "5")) -(rule "notLeft" (formula "5")) -(rule "eqSymm" (formula "8")) -(rule "eqSymm" (formula "7")) -(rule "eqSymm" (formula "6")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) -(builtin "One Step Simplification" (formula "2")) -(rule "onlyCreatedObjectsAreReferenced" (formula "8") (term "0") (ifseqformula "1")) -(rule "onlyCreatedObjectsAreReferenced" (formula "9") (term "1") (ifseqformula "2")) -(rule "onlyCreatedObjectsAreReferenced" (formula "9") (term "0") (ifseqformula "3")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_1_in_LoopInvariantNestedListFieldsTest" (formula "7")) -(rule "notLeft" (formula "7")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "8")) -(builtin "One Step Simplification" (formula "3")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_2_in_LoopInvariantNestedListFieldsTest" (formula "7")) -(rule "notLeft" (formula "7")) -(rule "replace_known_right" (formula "1") (term "0") (ifseqformula "8")) -(builtin "One Step Simplification" (formula "1")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_LoopInvariantNestedListFieldsTest" (formula "7")) -(rule "notLeft" (formula "7")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "8")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment" (formula "15") (term "1")) -(builtin "One Step Simplification" (formula "15")) -(rule "methodBodyExpand" (formula "15") (term "1") (newnames "heapBefore_main,savedHeapBefore_main,_objBefore_main")) -(builtin "One Step Simplification" (formula "15")) -(rule "eval_order_access1" (formula "15") (term "1") (inst "#v0=i")) -(rule "variableDeclarationAssign" (formula "15") (term "1")) -(rule "variableDeclaration" (formula "15") (term "1") (newnames "i")) -(rule "assignment_read_attribute" (formula "15")) -(branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "15")) - (rule "assignment_write_attribute" (formula "15")) - (branch "Normal Execution (i != null)" - (builtin "One Step Simplification" (formula "15")) - (rule "eval_order_access1" (formula "15") (term "1") (inst "#v0=i")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "i_1")) - (rule "assignment_read_attribute" (formula "15")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "15")) - (rule "dismissNonSelectedField" (formula "15") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "15")) - (branch "Normal Execution (i_1 != null)" - (builtin "One Step Simplification" (formula "15")) - (rule "eval_order_access1" (formula "15") (term "1") (inst "#v0=i")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "i_2")) - (rule "assignment_read_attribute" (formula "15")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "15")) - (rule "dismissNonSelectedField" (formula "15") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "15") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "15")) - (branch "Normal Execution (i_2 != null)" - (builtin "One Step Simplification" (formula "15")) - (builtin "Loop Invariant" (formula "15") (newnames "variant,b,heapBefore_LOOP,heap_After_LOOP,anon_heap_LOOP,o,f")) - (branch "Invariant Initially Valid" - (builtin "One Step Simplification" (formula "15")) - (rule "wellFormedStorePrimitive" (formula "15") (term "1")) - (rule "wellFormedStorePrimitive" (formula "15") (term "1")) - (rule "wellFormedStorePrimitive" (formula "15") (term "1")) - (rule "replace_known_left" (formula "15") (term "1") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "15")) - (rule "dismissNonSelectedField" (formula "15") (term "1,0")) - (rule "dismissNonSelectedField" (formula "15") (term "1,0")) - (rule "dismissNonSelectedField" (formula "15") (term "1,0")) - (rule "inEqSimp_geqRight" (formula "15")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=LoopInvariantNestedListFieldsTest_IntWrapper_value_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "0") (ifseqformula "1")) - (rule "leq_literals" (formula "2")) - (rule "closeFalse" (formula "2")) - ) - (branch "Body Preserves Invariant" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "17")) - (rule "impRight" (formula "17")) - (rule "eqSymm" (formula "18") (term "1,0,0,1,0,0,1,1,0,1")) - (rule "dismissNonSelectedField" (formula "10") (term "0,1,0,0")) - (rule "dismissNonSelectedField" (formula "10") (term "0,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0,1,0,1,1,1,0")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0,0,1,1,1,0")) - (rule "elementOfSingleton" (formula "18") (term "0,0,0,0,1,0,0,1,1,0,1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "10") (term "0,1,0,0")) - (rule "dismissNonSelectedField" (formula "10") (term "0,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0,1,0,1,1,1,0")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0,0,1,1,1,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "10") (term "0,1,0,0")) - (rule "dismissNonSelectedField" (formula "10") (term "0,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0,1,0,1,1,1,0")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0,0,1,1,0")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0,0,1,1,1,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,1,0,1,0")) - (rule "pullOutSelect" (formula "18") (term "1,0,1,1,1,0") (inst "selectSK=LoopInvariantNestedListFieldsTest_i_1")) - (rule "applyEq" (formula "11") (term "1,0") (ifseqformula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "ifthenelse_negated" (formula "1") (term "0")) - (rule "dismissNonSelectedField" (formula "1") (term "1,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "1,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,0")) - (rule "replace_known_left" (formula "1") (term "0,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "11") (term "1,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "19") (term "1,0,1,1,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "pullOutSelect" (formula "18") (term "0,1,1,1,0") (inst "selectSK=LoopInvariantNestedListFieldsTest_IntWrapper_value_1")) - (rule "applyEq" (formula "11") (term "0") (ifseqformula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "elementOfSingleton" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "19") (term "0,1,1,1,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "11") (term "0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "boxToDiamond" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "b_1")) - (rule "compound_greater_than_comparison_1" (formula "10") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x")) - (rule "eval_order_access2" (formula "10") (term "1") (inst "#v0=i")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "i_3")) - (rule "assignment_read_attribute" (formula "10")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "10")) - (rule "replaceKnownSelect_taclet1000000_0" (formula "10") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1000000_1" (formula "10") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "10")) - (branch "Normal Execution (i_3 != null)" - (builtin "One Step Simplification" (formula "10")) - (rule "replaceKnownSelect_taclet1000000_2" (formula "10") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1000000_3" (formula "10") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "inEqSimp_gtToGeq" (formula "10") (term "0,0,1,0")) - (rule "times_zero_1" (formula "10") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "10") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "10") (term "0,0,1,0")) - (rule "mul_literals" (formula "10") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "emptyModality" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "notRight" (formula "10")) - (rule "inEqSimp_subsumption1" (formula "10") (ifseqformula "1")) - (rule "leq_literals" (formula "10") (term "0")) - (builtin "One Step Simplification" (formula "10")) - (rule "true_left" (formula "10")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "17") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "x_1")) - (rule "compound_greater_than_comparison_1" (formula "17") (term "1") (inst "#v0=x_2")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "x_2")) - (rule "eval_order_access2" (formula "17") (term "1") (inst "#v0=i")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "i_4")) - (rule "assignment_read_attribute" (formula "17")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "17")) - (rule "replaceKnownSelect_taclet1000000_0" (formula "17") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1000000_1" (formula "17") (term "0,1,0")) - (rule "blockThrow" (formula "17") (term "1,0,0,1")) - (rule "methodCallParamThrow" (formula "17") (term "1,0,0,1")) - (rule "tryCatchThrow" (formula "17") (term "1,0,0,1")) - (rule "ifElseUnfold" (formula "17") (term "1,0,0,1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "17") (term "1,0,0,1") (newnames "x_5")) - (rule "equality_comparison_simple" (formula "17") (term "1,0,0,1")) - (rule "assignment_read_attribute" (formula "17")) - (branch "Normal Execution (i_4 != null)" - (builtin "One Step Simplification" (formula "17")) - (rule "replaceKnownSelect_taclet1000000_2" (formula "17") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1000000_3" (formula "17") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "ifSplit" (formula "17")) - (branch "if x_1 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "inEqSimp_gtToGeq" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "postdecrement_attribute" (formula "17") (term "1") (inst "#v=i")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "i_7")) - (rule "assignment_read_attribute" (formula "17")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "17")) - (rule "replaceKnownSelect_taclet1000000_0" (formula "17") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1000000_1" (formula "17") (term "0,1,0")) - (rule "Partial_inv_axiom_for_JML_class_invariant_nr_2_in_LoopInvariantNestedListFieldsTest" (formula "8")) - (rule "notLeft" (formula "8")) - (rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_LoopInvariantNestedListFieldsTest" (formula "8")) - (rule "notLeft" (formula "8")) - (rule "Partial_inv_axiom_for_JML_class_invariant_nr_1_in_LoopInvariantNestedListFieldsTest" (formula "8")) - (rule "notLeft" (formula "8")) - (rule "eval_order_access4" (formula "17") (term "1") (inst "#v1=x") (inst "#v0=i")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "i_8")) - (rule "assignment" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "x_6")) - (rule "compound_int_cast_expression" (formula "17") (term "1") (inst "#v=x_7")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "x_7")) - (rule "remove_parentheses_right" (formula "17") (term "1")) - (rule "compound_subtraction_1" (formula "17") (term "1") (inst "#v=x_8")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "x_8")) - (rule "assignment_read_attribute" (formula "17")) - (branch "Normal Execution (i_7 != null)" - (builtin "One Step Simplification" (formula "17")) - (rule "replaceKnownSelect_taclet1000000_2" (formula "17") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1000000_3" (formula "17") (term "0,1,0")) - (rule "assignmentSubtractionInt" (formula "17") (term "1")) - (rule "translateJavaSubInt" (formula "17") (term "0,0,1")) - (builtin "One Step Simplification" (formula "17")) - (rule "polySimp_elimSub" (formula "17") (term "0,1,0")) - (rule "mul_literals" (formula "17") (term "1,0,1,0")) - (rule "polySimp_addComm0" (formula "17") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "17") (term "1")) - (rule "assignment" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "assignment_write_attribute" (formula "17")) - (branch "Normal Execution (i_8 != null)" - (builtin "One Step Simplification" (formula "17")) - (rule "tryEmpty" (formula "17") (term "1")) - (rule "methodCallEmpty" (formula "17") (term "1")) - (rule "emptyModality" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "eqSymm" (formula "17") (term "1,0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "17") (term "1,0,0,0,0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "17") (term "1,0,0,0,0")) - (rule "replaceKnownSelect_taclet1000000_0" (formula "17") (term "1,0,0,0,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1000000_1" (formula "17") (term "1,0,0,0,0")) - (rule "dismissNonSelectedField" (formula "17") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "precOfInt" (formula "17") (term "1,0")) - (rule "dismissNonSelectedField" (formula "17") (term "1,0,0,0,0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "17") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "17") (term "1,0,1,1,0")) - (rule "replaceKnownSelect_taclet1000000_0" (formula "17") (term "1,0,1,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1000000_1" (formula "17") (term "1,0,1,1,0")) - (rule "dismissNonSelectedField" (formula "17") (term "1,1,0,1,0")) - (rule "replaceKnownSelect_taclet1000000_0" (formula "17") (term "1,1,0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1000000_1" (formula "17") (term "1,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "17") (term "1,0,0,0,0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "17") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "inEqSimp_ltToLeq" (formula "17") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "17") (term "1,0,0,1,1,0")) - (rule "inEqSimp_commuteLeq" (formula "17") (term "0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "17") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "17") (term "1,1,1,0")) - (rule "polySimp_rightDist" (formula "17") (term "1,1,1,0")) - (rule "mul_literals" (formula "17") (term "0,1,1,1,0")) - (rule "polySimp_mulLiterals" (formula "17") (term "1,1,1,1,0")) - (rule "polySimp_elimOne" (formula "17") (term "1,1,1,1,0")) - (rule "pullOutSelect" (formula "17") (term "0,0,0,0") (inst "selectSK=LoopInvariantNestedListFieldsTest_IntWrapper_value_3")) - (rule "applyEq" (formula "18") (term "0,0,1,0") (ifseqformula "1")) - (rule "applyEq" (formula "18") (term "0,1,1,0") (ifseqformula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "18") (term "0,0,0,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "18") (term "0,0,1,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "18") (term "0,1,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_homoInEq0" (formula "17") (term "1,1,0")) - (rule "polySimp_pullOutFactor1" (formula "17") (term "0,1,1,0")) - (rule "add_literals" (formula "17") (term "1,0,1,1,0")) - (rule "times_zero_1" (formula "17") (term "0,1,1,0")) - (rule "qeq_literals" (formula "17") (term "1,1,0")) - (builtin "One Step Simplification" (formula "17")) - (rule "inEqSimp_sepPosMonomial1" (formula "17") (term "0,0,0")) - (rule "mul_literals" (formula "17") (term "1,0,0,0")) - (rule "replace_known_left" (formula "17") (term "0,0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "inEqSimp_sepPosMonomial1" (formula "17") (term "1,0")) - (rule "mul_literals" (formula "17") (term "1,1,0")) - (rule "replace_known_left" (formula "17") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "cut_direct" (formula "17") (term "1")) - (branch "CUT: SETAccumulate(heap[obj.i.value := 2] [obj.j.value := 123] [obj.k.value := 0] [anon({(obj.i, LoopInvariantNestedListFieldsTest.IntWrapper::$value)}, anon_heap_LOOP<>)] [obj.i.value := -1 + (obj.i@heap).value@anon_heap_LOOP<>], null, obj) TRUE" - (builtin "One Step Simplification" (formula "18")) - (rule "allRight" (formula "18") (inst "sk=f_0")) - (rule "allRight" (formula "18") (inst "sk=o_0")) - (rule "orRight" (formula "18")) - (rule "orRight" (formula "18")) - (rule "pullOutSelect" (formula "20") (term "1") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "pullOutSelect" (formula "21") (term "0") (inst "selectSK=f_0_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "20")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "replaceKnownSelect_taclet0000000001000000_6" (formula "1") (term "2,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0,0") (ifseqformula "20")) - (builtin "One Step Simplification" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "22") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "22")) - (rule "closeTrue" (formula "22")) - ) - (branch "CUT: SETAccumulate(heap[obj.i.value := 2] [obj.j.value := 123] [obj.k.value := 0] [anon({(obj.i, LoopInvariantNestedListFieldsTest.IntWrapper::$value)}, anon_heap_LOOP<>)] [obj.i.value := -1 + (obj.i@heap).value@anon_heap_LOOP<>], null, obj) FALSE" - (builtin "One Step Simplification" (formula "18")) - (rule "false_right" (formula "18")) - (opengoal " ") - ) - ) - (branch "Null Reference (i_8 = null)" - (rule "false_right" (formula "18")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (i_7 = null)" - (builtin "One Step Simplification" (formula "18")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "18")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_1 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_gtRight" (formula "10")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (i_4 = null)" - (rule "false_right" (formula "18")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "18")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (i_3 = null)" - (builtin "One Step Simplification" (formula "11")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (rule "false_right" (formula "11")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Use Case" - (builtin "One Step Simplification" (formula "9")) - (builtin "One Step Simplification" (formula "17")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "17") (term "0,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "17") (term "0,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0,1,0")) - (rule "dismissNonSelectedField" (formula "17") (term "0,1,0,1,0")) - (rule "pullOutSelect" (formula "9") (term "1,0") (inst "selectSK=LoopInvariantNestedListFieldsTest_i_0")) - (rule "simplifySelectOfAnon" (formula "9")) - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "14"))) - (rule "dismissNonSelectedField" (formula "9") (term "0,0,1,0,0")) - (rule "elementOfSingleton" (formula "9") (term "0,0,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "ifthenelse_negated" (formula "9") (term "0")) - (rule "dismissNonSelectedField" (formula "9") (term "1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,0,0")) - (rule "dismissNonSelectedField" (formula "9") (term "1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,0,0")) - (rule "replace_known_left" (formula "9") (term "0,0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "9")) - (rule "simplifySelectOfStore" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "applyEqReverse" (formula "10") (term "1,0") (ifseqformula "9")) - (rule "hideAuxiliaryEq" (formula "9")) - (rule "pullOutSelect" (formula "9") (term "0") (inst "selectSK=LoopInvariantNestedListFieldsTest_IntWrapper_value_0")) - (rule "simplifySelectOfAnon" (formula "9")) - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "11"))) - (rule "elementOfSingleton" (formula "9") (term "0,0,0")) - (builtin "One Step Simplification" (formula "9")) - (rule "applyEqReverse" (formula "10") (term "0") (ifseqformula "9")) - (rule "hideAuxiliaryEq" (formula "9")) - (rule "returnUnfold" (formula "17") (term "1,0,1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "b_2")) - (rule "compound_greater_than_comparison_1" (formula "17") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "x_3")) - (rule "eval_order_access2" (formula "17") (term "1") (inst "#v0=i")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "i_5")) - (rule "assignment_read_attribute" (formula "17")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "17")) - (rule "replaceKnownSelect_taclet2000000_0" (formula "17") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2000000_2" (formula "17") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "17")) - (branch "Normal Execution (i_5 != null)" - (builtin "One Step Simplification" (formula "17")) - (rule "replaceKnownSelect_taclet2000000_3" (formula "17") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2000000_4" (formula "17") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "inEqSimp_gtToGeq" (formula "17") (term "0,0,1,0")) - (rule "times_zero_1" (formula "17") (term "1,0,0,0,0,1,0")) - (rule "add_literals" (formula "17") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "17") (term "0,0,1,0")) - (rule "mul_literals" (formula "17") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "17") (term "1")) - (rule "emptyModality" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "impRight" (formula "17")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "10")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_antiSymm" (formula "10") (ifseqformula "1")) - (rule "applyEq" (formula "11") (term "0") (ifseqformula "10")) - (rule "qeq_literals" (formula "11")) - (rule "true_left" (formula "11")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "10")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "x_4")) - (rule "eval_order_access2" (formula "17") (term "1") (inst "#v0=i")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "i_6")) - (rule "assignment_read_attribute" (formula "17")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "17")) - (rule "replaceKnownSelect_taclet2000000_0" (formula "17") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2000000_2" (formula "17") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "17")) - (branch "Normal Execution (i_6 != null)" - (builtin "One Step Simplification" (formula "17")) - (rule "replaceKnownSelect_taclet2000000_3" (formula "17") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2000000_4" (formula "17") (term "0,1,0")) - (rule "applyEq" (formula "17") (term "0,1,0") (ifseqformula "9")) - (rule "methodCallReturn" (formula "17") (term "1")) - (rule "assignment" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "methodCallEmpty" (formula "17") (term "1")) - (rule "tryEmpty" (formula "17") (term "1")) - (rule "emptyModality" (formula "17") (term "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "Partial_inv_axiom_for_JML_class_invariant_nr_2_in_LoopInvariantNestedListFieldsTest" (formula "7")) - (rule "notLeft" (formula "7")) - (rule "Partial_inv_axiom_for_JML_class_invariant_nr_1_in_LoopInvariantNestedListFieldsTest" (formula "7")) - (rule "notLeft" (formula "7")) - (rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_LoopInvariantNestedListFieldsTest" (formula "7")) - (rule "notLeft" (formula "7")) - (opengoal " ") - ) - (branch "Null Reference (i_6 = null)" - (rule "false_right" (formula "18")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (rule "false_right" (formula "18")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (i_5 = null)" - (builtin "One Step Simplification" (formula "18")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "18")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Null Reference (i_2 = null)" - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "10"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "16")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (i_1 = null)" - (builtin "One Step Simplification" (formula "16")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "16")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (i = null)" - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNotInListFieldsTest/LoopInvariantNotInListFieldsTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNotInListFieldsTest/LoopInvariantNotInListFieldsTest.java deleted file mode 100644 index 18fc11c0140..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNotInListFieldsTest/LoopInvariantNotInListFieldsTest.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class LoopInvariantNotInListFieldsTest { - private int i; - - private int j; - - private int k; - - public int main() { - i = 2; - j = 123; - k = 0; - /*@ loop_invariant i >= 0; - @ decreasing i; - @ assignable i, j; - @*/ - while (i > 0) { - i--; - } - return k; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNotInListFieldsTest/LoopInvariantNotInListFieldsTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNotInListFieldsTest/LoopInvariantNotInListFieldsTest.proof deleted file mode 100644 index 6a728032079..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantNotInListFieldsTest/LoopInvariantNotInListFieldsTest.proof +++ /dev/null @@ -1,419 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:22:07 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:on , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:ban , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:safe , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:treatAsAxiom , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "LoopInvariantNotInListFieldsTest#main()", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "374055431") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "assignment" (formula "5")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5")) -(builtin "One Step Simplification" (formula "5")) -(builtin "Loop Invariant" (formula "5") (newnames "variant,b,heapBefore_LOOP,heap_After_LOOP,anon_heap_LOOP,o,f")) -(branch "Invariant Initially Valid" - (builtin "One Step Simplification" (formula "5")) - (rule "wellFormedStorePrimitive" (formula "5") (term "1")) - (rule "wellFormedStorePrimitive" (formula "5") (term "1")) - (rule "wellFormedStorePrimitive" (formula "5") (term "1")) - (rule "replace_known_left" (formula "5") (term "1") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "dismissNonSelectedField" (formula "5") (term "0")) - (rule "dismissNonSelectedField" (formula "5") (term "0")) - (rule "inEqSimp_geqRight" (formula "5")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=LoopInvariantNotInListFieldsTest_i_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "0") (ifseqformula "1")) - (rule "leq_literals" (formula "2")) - (rule "closeFalse" (formula "2")) -) -(branch "Body Preserves Invariant" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "5")) - (rule "impRight" (formula "7")) - (rule "eqSymm" (formula "8") (term "1,0,0,1,0,0,1,1,0,1")) - (rule "pullOutSelect" (formula "8") (term "0,1,1,1,0") (inst "selectSK=LoopInvariantNotInListFieldsTest_i_1")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "replace_known_left" (formula "1") (term "0,1,0,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfUnion" (formula "9") (term "0,0,0,0,1,0,0,1,1,0,1")) - (rule "elementOfSingleton" (formula "9") (term "0,0,0,0,0,1,0,0,1,1,0,1")) - (rule "elementOfSingleton" (formula "9") (term "1,0,0,0,0,1,0,0,1,1,0,1")) - (rule "elementOfUnion" (formula "1") (term "0,0")) - (rule "elementOfSingleton" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "9") (term "0,1,1,1,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "7") (term "0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "boxToDiamond" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "b_2")) - (rule "compound_greater_than_comparison_1" (formula "6") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_2")) - (rule "assignment_read_attribute_this" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "replaceKnownSelect_taclet1_0" (formula "6") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "6") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "inEqSimp_gtToGeq" (formula "6") (term "0,0,1,0")) - (rule "times_zero_1" (formula "6") (term "1,0,0,0,0,1,0")) - (rule "add_literals" (formula "6") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "6") (term "0,0,1,0")) - (rule "mul_literals" (formula "6") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "notRight" (formula "6")) - (rule "inEqSimp_subsumption1" (formula "6") (ifseqformula "1")) - (rule "leq_literals" (formula "6") (term "0")) - (builtin "One Step Simplification" (formula "6")) - (rule "true_left" (formula "6")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "7") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_3")) - (rule "compound_greater_than_comparison_1" (formula "7") (term "1") (inst "#v0=x_4")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_4")) - (rule "blockThrow" (formula "7") (term "1,0,0,1")) - (rule "methodCallParamThrow" (formula "7") (term "1,0,0,1")) - (rule "tryCatchThrow" (formula "7") (term "1,0,0,1")) - (rule "ifElseUnfold" (formula "7") (term "1,0,0,1") (inst "#boolv=x")) - (rule "assignment_read_attribute_this" (formula "7")) - (builtin "One Step Simplification" (formula "7")) - (rule "replaceKnownSelect_taclet1_0" (formula "7") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "7") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "ifSplit" (formula "7")) - (branch "if x_3 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "inEqSimp_gtToGeq" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "postdecrement_attribute" (formula "7") (term "1") (inst "#v=l")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "l")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "variableDeclaration" (formula "7") (term "1,0,0,1") (newnames "x_5")) - (rule "equality_comparison_simple" (formula "7") (term "1,0,0,1")) - (rule "eval_order_access4" (formula "7") (term "1") (inst "#v1=x") (inst "#v0=l_1")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "l_1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_6")) - (rule "compound_int_cast_expression" (formula "7") (term "1") (inst "#v=x_7")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_7")) - (rule "remove_parentheses_right" (formula "7") (term "1")) - (rule "compound_subtraction_1" (formula "7") (term "1") (inst "#v=x_8")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_8")) - (rule "assignment_read_attribute" (formula "7")) - (branch "Normal Execution (l != null)" - (builtin "One Step Simplification" (formula "7")) - (rule "replaceKnownSelect_taclet1_0" (formula "7") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "7") (term "0,1,0")) - (rule "assignmentSubtractionInt" (formula "7") (term "1")) - (rule "translateJavaSubInt" (formula "7") (term "0,0,1")) - (builtin "One Step Simplification" (formula "7")) - (rule "polySimp_elimSub" (formula "7") (term "0,1,0")) - (rule "mul_literals" (formula "7") (term "1,0,1,0")) - (rule "polySimp_addComm0" (formula "7") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute" (formula "7")) - (branch "Normal Execution (l_1 != null)" - (builtin "One Step Simplification" (formula "7")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "eqSymm" (formula "7") (term "1,0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "7") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "precOfInt" (formula "7") (term "1,0")) - (rule "dismissNonSelectedField" (formula "7") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "7") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "inEqSimp_ltToLeq" (formula "7") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "7") (term "1,0,0,1,1,0")) - (rule "inEqSimp_commuteLeq" (formula "7") (term "0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "7") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "7") (term "1,1,1,0")) - (rule "polySimp_rightDist" (formula "7") (term "1,1,1,0")) - (rule "mul_literals" (formula "7") (term "0,1,1,1,0")) - (rule "polySimp_mulLiterals" (formula "7") (term "1,1,1,1,0")) - (rule "polySimp_elimOne" (formula "7") (term "1,1,1,1,0")) - (rule "pullOutSelect" (formula "7") (term "0,0,0,0") (inst "selectSK=LoopInvariantNotInListFieldsTest_i_3")) - (rule "applyEq" (formula "8") (term "0,1,1,0") (ifseqformula "1")) - (rule "applyEq" (formula "8") (term "0,0,1,0") (ifseqformula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "8") (term "0,0,0,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "8") (term "0,1,1,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "8") (term "0,0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_homoInEq0" (formula "7") (term "1,1,0")) - (rule "polySimp_pullOutFactor1" (formula "7") (term "0,1,1,0")) - (rule "add_literals" (formula "7") (term "1,0,1,1,0")) - (rule "times_zero_1" (formula "7") (term "0,1,1,0")) - (rule "qeq_literals" (formula "7") (term "1,1,0")) - (builtin "One Step Simplification" (formula "7")) - (rule "inEqSimp_sepPosMonomial1" (formula "7") (term "0,0,0")) - (rule "mul_literals" (formula "7") (term "1,0,0,0")) - (rule "replace_known_left" (formula "7") (term "0,0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "inEqSimp_sepPosMonomial1" (formula "7") (term "1,0")) - (rule "mul_literals" (formula "7") (term "1,1,0")) - (rule "replace_known_left" (formula "7") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "cut_direct" (formula "7") (term "1")) - (branch "CUT: SETAccumulate(heap[self.i := 2] [self.j := 123] [self.k := 0] [anon( {(self, LoopInvariantNotInListFieldsTest::$i)} cup {(self, LoopInvariantNotInListFieldsTest::$j)}, anon_heap_LOOP<>)] [self.i := -1 + self.i@anon_heap_LOOP<>], null) TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "allRight" (formula "8") (inst "sk=f_0")) - (rule "allRight" (formula "8") (inst "sk=o_0")) - (rule "orRight" (formula "8")) - (rule "orRight" (formula "8")) - (rule "orRight" (formula "8")) - (rule "pullOutSelect" (formula "11") (term "1") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "pullOutSelect" (formula "12") (term "0") (inst "selectSK=f_0_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "replaceKnownSelect_taclet00001_4" (formula "1") (term "2,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,1,0,0")) - (rule "replace_known_right" (formula "1") (term "1,0,0") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfUnion" (formula "1") (term "0,0,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0,0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0") (ifseqformula "11")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "13") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "closeTrue" (formula "13")) - ) - (branch "CUT: SETAccumulate(heap[self.i := 2] [self.j := 123] [self.k := 0] [anon( {(self, LoopInvariantNotInListFieldsTest::$i)} cup {(self, LoopInvariantNotInListFieldsTest::$j)}, anon_heap_LOOP<>)] [self.i := -1 + self.i@anon_heap_LOOP<>], null) FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (opengoal " ") - ) - ) - (branch "Null Reference (l_1 = null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (l = null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_3 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_gtRight" (formula "6")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Use Case" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "7")) - (rule "pullOutSelect" (formula "5") (term "0") (inst "selectSK=LoopInvariantNotInListFieldsTest_i_0")) - (rule "simplifySelectOfAnon" (formula "5")) - (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "7"))) - (rule "dismissNonSelectedField" (formula "5") (term "2,0")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "5") (term "2,0")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "5") (term "0,0,1,0,0")) - (rule "replace_known_left" (formula "5") (term "0,1,0,0") (ifseqformula "2")) - (builtin "One Step Simplification" (formula "5")) - (rule "elementOfUnion" (formula "5") (term "0,0")) - (rule "elementOfSingleton" (formula "5") (term "1,0,0")) - (builtin "One Step Simplification" (formula "5")) - (rule "elementOfSingleton" (formula "5") (term "0,0")) - (builtin "One Step Simplification" (formula "5")) - (rule "applyEqReverse" (formula "6") (term "0") (ifseqformula "5")) - (rule "hideAuxiliaryEq" (formula "5")) - (rule "returnUnfold" (formula "7") (term "1,0,1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "b_1")) - (rule "compound_greater_than_comparison_1" (formula "7") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x")) - (rule "assignment_read_attribute_this" (formula "7")) - (builtin "One Step Simplification" (formula "7")) - (rule "replaceKnownSelect_taclet2_0" (formula "7") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2_1" (formula "7") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "inEqSimp_gtToGeq" (formula "7") (term "0,0,1,0")) - (rule "times_zero_1" (formula "7") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "7") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "7") (term "0,0,1,0")) - (rule "mul_literals" (formula "7") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "impRight" (formula "7")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "6")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_antiSymm" (formula "6") (ifseqformula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEq" (formula "6") (term "0") (ifseqformula "5")) - (rule "qeq_literals" (formula "6")) - (rule "true_left" (formula "6")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_1")) - (rule "assignment_read_attribute_this" (formula "7")) - (builtin "One Step Simplification" (formula "7")) - (rule "pullOutSelect" (formula "7") (term "0,1,0") (inst "selectSK=LoopInvariantNotInListFieldsTest_k_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "replace_known_left" (formula "1") (term "0,1,0,0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfUnion" (formula "1") (term "0,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "8") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantStarFieldsTest/LoopInvariantStarFieldsTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantStarFieldsTest/LoopInvariantStarFieldsTest.java deleted file mode 100644 index c6e1f0c74cb..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantStarFieldsTest/LoopInvariantStarFieldsTest.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class LoopInvariantStarFieldsTest { - private int i; - - private int j; - - public int main() { - i = 2; - j = 123; - /*@ loop_invariant i >= 0; - @ decreasing i; - @ assignable this.*; - @*/ - while (i > 0) { - i--; - } - return j; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantStarFieldsTest/LoopInvariantStarFieldsTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantStarFieldsTest/LoopInvariantStarFieldsTest.proof deleted file mode 100644 index 0e1b71de2ff..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/loopInvariantStarFieldsTest/LoopInvariantStarFieldsTest.proof +++ /dev/null @@ -1,357 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:22:27 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:on , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:ban , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:safe , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:treatAsAxiom , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "LoopInvariantStarFieldsTest#main()", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "434497215") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "assignment" (formula "5")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5")) -(builtin "One Step Simplification" (formula "5")) -(builtin "Loop Invariant" (formula "5") (newnames "variant,b,heapBefore_LOOP,heap_After_LOOP,anon_heap_LOOP,o,f")) -(branch "Invariant Initially Valid" - (builtin "One Step Simplification" (formula "5")) - (rule "wellFormedStorePrimitive" (formula "5") (term "1")) - (rule "wellFormedStorePrimitive" (formula "5") (term "1")) - (rule "replace_known_left" (formula "5") (term "1") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "dismissNonSelectedField" (formula "5") (term "0")) - (rule "inEqSimp_geqRight" (formula "5")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=LoopInvariantStarFieldsTest_i_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "0") (ifseqformula "1")) - (rule "leq_literals" (formula "2")) - (rule "closeFalse" (formula "2")) -) -(branch "Body Preserves Invariant" - (builtin "One Step Simplification" (formula "7")) - (builtin "One Step Simplification" (formula "5")) - (rule "impRight" (formula "7")) - (rule "eqSymm" (formula "8") (term "1,0,0,1,0,0,1,1,0,1")) - (rule "pullOutSelect" (formula "8") (term "0,1,1,1,0") (inst "selectSK=LoopInvariantStarFieldsTest_i_1")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "9") (term "0,1,1,1,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "7") (term "0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "boxToDiamond" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "b_2")) - (rule "compound_greater_than_comparison_1" (formula "6") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_2")) - (rule "assignment_read_attribute_this" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "replaceKnownSelect_taclet1_0" (formula "6") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "6") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "inEqSimp_gtToGeq" (formula "6") (term "0,0,1,0")) - (rule "times_zero_1" (formula "6") (term "1,0,0,0,0,1,0")) - (rule "add_literals" (formula "6") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "6") (term "0,0,1,0")) - (rule "mul_literals" (formula "6") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "notRight" (formula "6")) - (rule "inEqSimp_subsumption1" (formula "6") (ifseqformula "1")) - (rule "leq_literals" (formula "6") (term "0")) - (builtin "One Step Simplification" (formula "6")) - (rule "true_left" (formula "6")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "7") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_3")) - (rule "compound_greater_than_comparison_1" (formula "7") (term "1") (inst "#v0=x_4")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_4")) - (rule "blockThrow" (formula "7") (term "1,0,0,1")) - (rule "methodCallParamThrow" (formula "7") (term "1,0,0,1")) - (rule "tryCatchThrow" (formula "7") (term "1,0,0,1")) - (rule "ifElseUnfold" (formula "7") (term "1,0,0,1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "7") (term "1,0,0,1") (newnames "x_5")) - (rule "equality_comparison_simple" (formula "7") (term "1,0,0,1")) - (rule "assignment_read_attribute_this" (formula "7")) - (builtin "One Step Simplification" (formula "7")) - (rule "replaceKnownSelect_taclet1_0" (formula "7") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "7") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "ifSplit" (formula "7")) - (branch "if x_3 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "inEqSimp_gtToGeq" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "postdecrement_attribute" (formula "7") (term "1") (inst "#v=l")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "l")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "eval_order_access4" (formula "7") (term "1") (inst "#v1=x") (inst "#v0=l_1")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "l_1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_6")) - (rule "compound_int_cast_expression" (formula "7") (term "1") (inst "#v=x_7")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_7")) - (rule "remove_parentheses_right" (formula "7") (term "1")) - (rule "compound_subtraction_1" (formula "7") (term "1") (inst "#v=x_8")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_8")) - (rule "assignment_read_attribute" (formula "7")) - (branch "Normal Execution (l != null)" - (builtin "One Step Simplification" (formula "7")) - (rule "replaceKnownSelect_taclet1_0" (formula "7") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "7") (term "0,1,0")) - (rule "assignmentSubtractionInt" (formula "7") (term "1")) - (rule "translateJavaSubInt" (formula "7") (term "0,0,1")) - (builtin "One Step Simplification" (formula "7")) - (rule "polySimp_elimSub" (formula "7") (term "0,1,0")) - (rule "mul_literals" (formula "7") (term "1,0,1,0")) - (rule "polySimp_addComm0" (formula "7") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "assignment_write_attribute" (formula "7")) - (branch "Normal Execution (l_1 != null)" - (builtin "One Step Simplification" (formula "7")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "eqSymm" (formula "7") (term "1,0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "7") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "precOfInt" (formula "7") (term "1,0")) - (rule "dismissNonSelectedField" (formula "7") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "inEqSimp_ltToLeq" (formula "7") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "7") (term "1,0,0,1,1,0")) - (rule "inEqSimp_commuteLeq" (formula "7") (term "0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "7") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "7") (term "1,1,1,0")) - (rule "polySimp_rightDist" (formula "7") (term "1,1,1,0")) - (rule "mul_literals" (formula "7") (term "0,1,1,1,0")) - (rule "polySimp_mulLiterals" (formula "7") (term "1,1,1,1,0")) - (rule "polySimp_elimOne" (formula "7") (term "1,1,1,1,0")) - (rule "pullOutSelect" (formula "7") (term "0,0,0,0") (inst "selectSK=LoopInvariantStarFieldsTest_i_3")) - (rule "applyEq" (formula "8") (term "0,1,1,0") (ifseqformula "1")) - (rule "applyEq" (formula "8") (term "0,0,1,0") (ifseqformula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "8") (term "0,0,0,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "8") (term "0,1,1,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "8") (term "0,0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_homoInEq0" (formula "7") (term "1,1,0")) - (rule "polySimp_pullOutFactor1" (formula "7") (term "0,1,1,0")) - (rule "add_literals" (formula "7") (term "1,0,1,1,0")) - (rule "times_zero_1" (formula "7") (term "0,1,1,0")) - (rule "qeq_literals" (formula "7") (term "1,1,0")) - (builtin "One Step Simplification" (formula "7")) - (rule "inEqSimp_sepPosMonomial1" (formula "7") (term "1,0")) - (rule "mul_literals" (formula "7") (term "1,1,0")) - (rule "replace_known_left" (formula "7") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "inEqSimp_sepPosMonomial1" (formula "7") (term "0,0")) - (rule "mul_literals" (formula "7") (term "1,0,0")) - (rule "replace_known_left" (formula "7") (term "0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "cut_direct" (formula "7") (term "1")) - (branch "CUT: SETAccumulate(heap[self.i := 2] [self.j := 123] [anon(self.*, anon_heap_LOOP<>)] [self.i := -1 + self.i@anon_heap_LOOP<>], null) TRUE" - (builtin "One Step Simplification" (formula "8")) - (rule "allRight" (formula "8") (inst "sk=f_0")) - (rule "allRight" (formula "8") (inst "sk=o_0")) - (rule "orRight" (formula "8")) - (rule "orRight" (formula "8")) - (rule "pullOutSelect" (formula "10") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "11")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "11"))) - (rule "closeFalse" (formula "1")) - ) - (branch "CUT: SETAccumulate(heap[self.i := 2] [self.j := 123] [anon(self.*, anon_heap_LOOP<>)] [self.i := -1 + self.i@anon_heap_LOOP<>], null) FALSE" - (builtin "One Step Simplification" (formula "8")) - (rule "false_right" (formula "8")) - (opengoal " ") - ) - ) - (branch "Null Reference (l_1 = null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (l = null)" - (builtin "One Step Simplification" (formula "8")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "if x_3 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_gtRight" (formula "6")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Use Case" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "7")) - (rule "pullOutSelect" (formula "5") (term "0") (inst "selectSK=LoopInvariantStarFieldsTest_i_0")) - (rule "simplifySelectOfAnon" (formula "5")) - (builtin "One Step Simplification" (formula "5")) - (rule "applyEqReverse" (formula "6") (term "0") (ifseqformula "5")) - (rule "hideAuxiliaryEq" (formula "5")) - (rule "returnUnfold" (formula "7") (term "1,0,1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "b_1")) - (rule "compound_greater_than_comparison_1" (formula "7") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x")) - (rule "assignment_read_attribute_this" (formula "7")) - (builtin "One Step Simplification" (formula "7")) - (rule "replaceKnownSelect_taclet2_0" (formula "7") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2_1" (formula "7") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "inEqSimp_gtToGeq" (formula "7") (term "0,0,1,0")) - (rule "times_zero_1" (formula "7") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "7") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "7") (term "0,0,1,0")) - (rule "mul_literals" (formula "7") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "impRight" (formula "7")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "6")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_antiSymm" (formula "6") (ifseqformula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEq" (formula "6") (term "0") (ifseqformula "5")) - (rule "qeq_literals" (formula "6")) - (rule "true_left" (formula "6")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_1")) - (rule "assignment_read_attribute_this" (formula "7")) - (builtin "One Step Simplification" (formula "7")) - (rule "pullOutSelect" (formula "7") (term "0,1,0") (inst "selectSK=LoopInvariantStarFieldsTest_j_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "8") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "7") (term "1")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "methodCallEmpty" (formula "7") (term "1")) - (rule "tryEmpty" (formula "7") (term "1")) - (rule "emptyModality" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (opengoal " ") -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodCallTest/MethodCallTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodCallTest/MethodCallTest.java deleted file mode 100644 index 1824dfb4099..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodCallTest/MethodCallTest.java +++ /dev/null @@ -1,24 +0,0 @@ - -public class MethodCallTest { - private int value; - - /*@ normal_behavior - @ requires \invariant_for(obj); - @ ensures \result == 4; - @ assignable \everything; - @*/ - public static int main(MethodCallTest obj) { - obj.value = 0; - sub(obj); - sub(obj); - return obj.value; - } - - public static void sub(MethodCallTest obj) { - subsub(obj); - } - - public static void subsub(MethodCallTest obj) { - obj.value += 2; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodCallTest/MethodCallTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodCallTest/MethodCallTest.proof deleted file mode 100644 index 77d6b3bb2ca..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodCallTest/MethodCallTest.proof +++ /dev/null @@ -1,251 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:22:46 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:showSatisfiability , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "MethodCallTest[MethodCallTest::main(MethodCallTest)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "MethodCallTest[MethodCallTest::main(MethodCallTest)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1652") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "obj,result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "6") (term "1,0,0,1,0,1")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) -(builtin "One Step Simplification" (formula "2")) -(rule "elementOfSetMinus" (formula "6") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "6")) -(rule "assignment" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "6")) -(rule "assignment_write_attribute" (formula "6") (term "1")) -(branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallWithinClass" (formula "6") (term "1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "obj_1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_sub,savedHeapBefore_sub")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallWithinClass" (formula "6") (term "1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "obj_2")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_subsub,savedHeapBefore_subsub")) - (builtin "One Step Simplification" (formula "6")) - (rule "compound_assignment_op_plus_attr" (formula "6") (term "1") (inst "#v=m")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "m")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "eval_order_access4" (formula "6") (term "1") (inst "#v0=m_1") (inst "#v1=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "m_1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x")) - (rule "compound_int_cast_expression" (formula "6") (term "1") (inst "#v=x_1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_1")) - (rule "remove_parentheses_right" (formula "6") (term "1")) - (rule "compound_addition_1" (formula "6") (term "1") (inst "#v=x_2")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_2")) - (rule "assignment_read_attribute" (formula "6") (term "1")) - (branch "Normal Execution (m != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=MethodCallTest_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignmentAdditionInt" (formula "6") (term "1")) - (rule "translateJavaAddInt" (formula "6") (term "0,0,1")) - (builtin "One Step Simplification" (formula "6")) - (rule "add_zero_left" (formula "6") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "assignment_write_attribute" (formula "6") (term "1")) - (branch "Normal Execution (m_1 != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "blockEmpty" (formula "6") (term "1")) - (rule "methodCallWithinClass" (formula "6") (term "1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "obj_3")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_sub_0,savedHeapBefore_sub_0")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallWithinClass" (formula "6") (term "1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "obj_4")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_subsub_0,savedHeapBefore_subsub_0")) - (builtin "One Step Simplification" (formula "6")) - (rule "compound_assignment_op_plus_attr" (formula "6") (term "1") (inst "#v=m")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "m_2")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "eval_order_access4" (formula "6") (term "1") (inst "#v1=x") (inst "#v0=m_3")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "m_3")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_3")) - (rule "compound_int_cast_expression" (formula "6") (term "1") (inst "#v=x_4")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_4")) - (rule "remove_parentheses_right" (formula "6") (term "1")) - (rule "compound_addition_1" (formula "6") (term "1") (inst "#v=x_5")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_5")) - (rule "assignment_read_attribute" (formula "6") (term "1")) - (branch "Normal Execution (m_2 != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=MethodCallTest_value_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignmentAdditionInt" (formula "6") (term "1")) - (rule "translateJavaAddInt" (formula "6") (term "0,0,1")) - (builtin "One Step Simplification" (formula "6")) - (rule "add_literals" (formula "6") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "assignment_write_attribute" (formula "6") (term "1")) - (branch "Normal Execution (m_3 != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "blockEmpty" (formula "6") (term "1")) - (rule "returnUnfold" (formula "6") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_6")) - (rule "assignment_read_attribute" (formula "6") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=MethodCallTest_value_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (opengoal " ") - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (m_3 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (m_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (m_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (m = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableEverything/MethodContractModifiableExample.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableEverything/MethodContractModifiableExample.java deleted file mode 100644 index f7705a67021..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableEverything/MethodContractModifiableExample.java +++ /dev/null @@ -1,26 +0,0 @@ - -public class MethodContractModifiableExample { - private static int x; - - private static int y; - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int main() { - x = 2; - y = 3; - magic(); - return x; - } - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static void magic() { - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableEverything/MethodContractModifiableExample.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableEverything/MethodContractModifiableExample.proof deleted file mode 100644 index 41295e2b1c2..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableEverything/MethodContractModifiableExample.proof +++ /dev/null @@ -1,128 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 30 14:05:35 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "MethodContractModifiableExample[MethodContractModifiableExample::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "MethodContractModifiableExample[MethodContractModifiableExample::main()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "669") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(builtin "Use Operation Contract" (formula "3") (newnames "heapBefore_magic,exc_0,heapAfter_magic,anon_heap_magic") (contract "MethodContractModifiableExample[MethodContractModifiableExample::magic()].JML normal_behavior operation contract.0")) -(branch "Post (magic)" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "5")) - (rule "andLeft" (formula "4")) - (rule "returnUnfold" (formula "6") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_2")) - (rule "activeUseStaticFieldReadAccess" (formula "6") (term "1")) - (rule "assignment_read_static_attribute" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=MethodContractModifiableExample_x_0")) - (rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "elementOfSetMinus" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "closeTrue" (formula "6")) -) -(branch "Exceptional Post (magic)" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "5") (term "1,0") (ifseqformula "4")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "5")) - (rule "notLeft" (formula "5")) - (rule "close" (formula "7") (ifseqformula "6")) -) -(branch "Pre (magic)" - (builtin "One Step Simplification" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "close" (formula "3") (ifseqformula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableLocationNotRequested/MethodContractModifiableLocationNotRequested.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableLocationNotRequested/MethodContractModifiableLocationNotRequested.java deleted file mode 100644 index c4bcb64b23b..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableLocationNotRequested/MethodContractModifiableLocationNotRequested.java +++ /dev/null @@ -1,26 +0,0 @@ - -public class MethodContractModifiableLocationNotRequested { - private static int x; - - private static int y; - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int main() { - x = 2; - y = 3; - magic(); - return x; - } - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable y; - @*/ - public static void magic() { - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableLocationNotRequested/MethodContractModifiableLocationNotRequested.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableLocationNotRequested/MethodContractModifiableLocationNotRequested.proof deleted file mode 100644 index 98b426854df..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableLocationNotRequested/MethodContractModifiableLocationNotRequested.proof +++ /dev/null @@ -1,131 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 30 15:55:42 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "MethodContractModifiableLocationNotRequested[MethodContractModifiableLocationNotRequested::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "MethodContractModifiableLocationNotRequested[MethodContractModifiableLocationNotRequested::main()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "339") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(builtin "Use Operation Contract" (formula "3") (newnames "heapBefore_magic,exc_0,heapAfter_magic,anon_heap_magic") (contract "MethodContractModifiableLocationNotRequested[MethodContractModifiableLocationNotRequested::magic()].JML normal_behavior operation contract.0")) -(branch "Post (magic)" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "5")) - (rule "andLeft" (formula "4")) - (rule "returnUnfold" (formula "6") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_2")) - (rule "activeUseStaticFieldReadAccess" (formula "6") (term "1")) - (rule "assignment_read_static_attribute" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=MethodContractModifiableLocationNotRequested_x_0")) - (rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "closeTrue" (formula "6")) -) -(branch "Exceptional Post (magic)" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "5") (term "1,0") (ifseqformula "4")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "5")) - (rule "notLeft" (formula "5")) - (rule "close" (formula "7") (ifseqformula "6")) -) -(branch "Pre (magic)" - (builtin "One Step Simplification" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "close" (formula "3") (ifseqformula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableRequestedLocation/MethodContractModifiableRequestedLocation.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableRequestedLocation/MethodContractModifiableRequestedLocation.java deleted file mode 100644 index 9d4628e302c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableRequestedLocation/MethodContractModifiableRequestedLocation.java +++ /dev/null @@ -1,26 +0,0 @@ - -public class MethodContractModifiableRequestedLocation { - private static int x; - - private static int y; - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable \everything; - @*/ - public static int main() { - x = 2; - y = 3; - magic(); - return x; - } - - /*@ normal_behavior - @ requires true; - @ ensures true; - @ assignable x; - @*/ - public static void magic() { - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableRequestedLocation/MethodContractModifiableRequestedLocation.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableRequestedLocation/MethodContractModifiableRequestedLocation.proof deleted file mode 100644 index d8b66d819e4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/methodContractModifiableRequestedLocation/MethodContractModifiableRequestedLocation.proof +++ /dev/null @@ -1,129 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Mar 30 15:53:10 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "MethodContractModifiableRequestedLocation[MethodContractModifiableRequestedLocation::main()].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "MethodContractModifiableRequestedLocation[MethodContractModifiableRequestedLocation::main()].JML normal_behavior operation contract.0", - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "401") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "result,exc,heapAtPre,o,f")) -(rule "andLeft" (formula "1")) -(rule "eqSymm" (formula "3") (term "1,0,0,1,0,1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "3")) -(rule "methodBodyExpand" (formula "3") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "activeUseStaticFieldWriteAccess" (formula "3") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "3") (term "1")) -(rule "variableDeclaration" (formula "3") (term "1") (newnames "x_1")) -(rule "assignment" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(rule "assignment_write_static_attribute" (formula "3") (term "1")) -(builtin "One Step Simplification" (formula "3")) -(builtin "Use Operation Contract" (formula "3") (newnames "heapBefore_magic,exc_0,heapAfter_magic,anon_heap_magic") (contract "MethodContractModifiableRequestedLocation[MethodContractModifiableRequestedLocation::magic()].JML normal_behavior operation contract.0")) -(branch "Post (magic)" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "5")) - (rule "andLeft" (formula "4")) - (rule "returnUnfold" (formula "6") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_2")) - (rule "activeUseStaticFieldReadAccess" (formula "6") (term "1")) - (rule "assignment_read_static_attribute" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=MethodContractModifiableRequestedLocation_x_0")) - (rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "dismissNonSelectedField" (formula "1") (term "2,0")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "closeTrue" (formula "6")) -) -(branch "Exceptional Post (magic)" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "4")) - (rule "andLeft" (formula "4")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "5") (term "1,0") (ifseqformula "4")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "5")) - (rule "notLeft" (formula "5")) - (rule "close" (formula "7") (ifseqformula "6")) -) -(branch "Pre (magic)" - (builtin "One Step Simplification" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "wellFormedStorePrimitive" (formula "3")) - (rule "close" (formula "3") (ifseqformula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceAccess/NestedInstanceAccess.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceAccess/NestedInstanceAccess.java deleted file mode 100644 index b1a60cdfd13..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceAccess/NestedInstanceAccess.java +++ /dev/null @@ -1,30 +0,0 @@ - -public class NestedInstanceAccess { - /*@ normal_behavior - @ requires \invariant_for(first); - @ requires \invariant_for(first.b); - @ requires \invariant_for(second); - @ requires \invariant_for(second.b); - @ ensures true; - @*/ - public int main(A first, A second) { - first.b.value = 2; - second.b.value = 3; - int subResult = subMain(first, second); - return subResult; - } - - public int subMain(A first, A second) { - int fbv = first.b.value; - int sbv = second.b.value; - return fbv + sbv; - } - - private static class A { - public B b; - } - - private static class B { - public int value; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceAccess/NestedInstanceAccess.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceAccess/NestedInstanceAccess.proof deleted file mode 100644 index a15a516850d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceAccess/NestedInstanceAccess.proof +++ /dev/null @@ -1,537 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Feb 02 13:28:41 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "NestedInstanceAccess[NestedInstanceAccess::main(NestedInstanceAccess.A,NestedInstanceAccess.A)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "NestedInstanceAccess[NestedInstanceAccess::main(NestedInstanceAccess.A,NestedInstanceAccess.A)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "422") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "5")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "8")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "10")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "12")) -(rule "notLeft" (formula "2")) -(rule "andLeft" (formula "12")) -(rule "notLeft" (formula "13")) -(rule "notLeft" (formula "12")) -(rule "replace_known_right" (formula "5") (term "0") (ifseqformula "13")) -(builtin "One Step Simplification" (formula "5")) -(rule "replace_known_right" (formula "4") (term "0") (ifseqformula "12")) -(builtin "One Step Simplification" (formula "4")) -(rule "Class_invariant_axiom_for_NestedInstanceAccess" (formula "11") (inst "sk=sk_0") (ifseqformula "3")) -(branch "Use Axiom" - (rule "true_left" (formula "11")) - (rule "onlyCreatedObjectsAreReferenced" (formula "10") (term "1") (ifseqformula "1")) - (rule "onlyCreatedObjectsAreReferenced" (formula "8") (term "1") (ifseqformula "1")) - (rule "assignment" (formula "16") (term "1")) - (builtin "One Step Simplification" (formula "16")) - (rule "methodBodyExpand" (formula "16") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) - (builtin "One Step Simplification" (formula "16")) - (rule "eval_order_access1" (formula "16") (term "1") (inst "#v0=b")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "b")) - (rule "assignment_read_attribute" (formula "16") (term "1")) - (branch "Normal Execution (_first_0 != null)" - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "13"))) - (rule "false_right" (formula "16")) - (builtin "One Step Simplification" (formula "16")) - (rule "assignment_write_attribute" (formula "16") (term "1")) - (branch "Normal Execution (b != null)" - (builtin "One Step Simplification" (formula "16")) - (builtin "One Step Simplification" (formula "17")) - (rule "replace_known_right" (formula "8") (term "0") (ifseqformula "16")) - (builtin "One Step Simplification" (formula "8")) - (rule "eval_order_access1" (formula "17") (term "1") (inst "#v0=b")) - (rule "variableDeclarationAssign" (formula "17") (term "1")) - (rule "variableDeclaration" (formula "17") (term "1") (newnames "b_1")) - (rule "assignment_read_attribute" (formula "17") (term "1")) - (branch "Normal Execution (_second_0 != null)" - (builtin "One Step Simplification" (formula "17") (ifInst "" (formula "14"))) - (rule "false_right" (formula "17")) - (builtin "One Step Simplification" (formula "17")) - (rule "dismissNonSelectedField" (formula "17") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "17") (term "1")) - (branch "Normal Execution (b_1 != null)" - (builtin "One Step Simplification" (formula "17")) - (builtin "One Step Simplification" (formula "18")) - (rule "replace_known_right" (formula "11") (term "0") (ifseqformula "17")) - (builtin "One Step Simplification" (formula "11")) - (rule "variableDeclarationAssign" (formula "18") (term "1")) - (rule "variableDeclaration" (formula "18") (term "1") (newnames "subResult")) - (rule "methodCallWithAssignmentWithinClass" (formula "18") (term "1") (inst "#v0=x")) - (rule "variableDeclaration" (formula "18") (term "1") (newnames "x")) - (rule "variableDeclarationAssign" (formula "18") (term "1")) - (rule "variableDeclaration" (formula "18") (term "1") (newnames "first_1")) - (rule "assignment" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "variableDeclarationAssign" (formula "18") (term "1")) - (rule "variableDeclaration" (formula "18") (term "1") (newnames "second_1")) - (rule "assignment" (formula "18") (term "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "methodBodyExpand" (formula "18") (term "1") (newnames "heapBefore_subMain,savedHeapBefore_subMain")) - (builtin "One Step Simplification" (formula "18")) - (rule "variableDeclarationAssign" (formula "18") (term "1")) - (rule "variableDeclaration" (formula "18") (term "1") (newnames "fbv")) - (rule "eval_order_access2" (formula "18") (term "1") (inst "#v0=b")) - (rule "variableDeclarationAssign" (formula "18") (term "1")) - (rule "variableDeclaration" (formula "18") (term "1") (newnames "b_2")) - (rule "assignment_read_attribute" (formula "18") (term "1")) - (branch "Normal Execution (first_1 != null)" - (builtin "One Step Simplification" (formula "18") (ifInst "" (formula "13"))) - (rule "false_right" (formula "18")) - (builtin "One Step Simplification" (formula "18")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "18") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "18") (term "1")) - (branch "Normal Execution (b_2 != null)" - (builtin "One Step Simplification" (formula "18") (ifInst "" (formula "16"))) - (rule "false_right" (formula "18")) - (builtin "One Step Simplification" (formula "18")) - (rule "pullOutSelect" (formula "18") (term "0,1,0") (inst "selectSK=NestedInstanceAccess_B_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=NestedInstanceAccess_B_value_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "2,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "variableDeclarationAssign" (formula "19") (term "1")) - (rule "variableDeclaration" (formula "19") (term "1") (newnames "sbv")) - (rule "eval_order_access2" (formula "19") (term "1") (inst "#v0=b")) - (rule "variableDeclarationAssign" (formula "19") (term "1")) - (rule "variableDeclaration" (formula "19") (term "1") (newnames "b_3")) - (rule "assignment_read_attribute" (formula "19") (term "1")) - (branch "Normal Execution (second_1 != null)" - (builtin "One Step Simplification" (formula "19") (ifInst "" (formula "15"))) - (rule "false_right" (formula "19")) - (builtin "One Step Simplification" (formula "19")) - (rule "dismissNonSelectedField" (formula "19") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "19") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "19") (term "1")) - (branch "Normal Execution (b_3 != null)" - (builtin "One Step Simplification" (formula "19") (ifInst "" (formula "18"))) - (rule "false_right" (formula "19")) - (builtin "One Step Simplification" (formula "19")) - (rule "pullOutSelect" (formula "19") (term "0,1,0") (inst "selectSK=NestedInstanceAccess_B_value_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "20") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "returnUnfold" (formula "19") (term "1") (inst "#v0=x_1")) - (rule "variableDeclarationAssign" (formula "19") (term "1")) - (rule "variableDeclaration" (formula "19") (term "1") (newnames "x_3")) - (rule "assignmentAdditionInt" (formula "19") (term "1")) - (rule "translateJavaAddInt" (formula "19") (term "0,0,1")) - (builtin "One Step Simplification" (formula "19")) - (rule "polySimp_addComm0" (formula "19") (term "0,1,0")) - (rule "methodCallReturn" (formula "19") (term "1")) - (rule "assignment" (formula "19") (term "1")) - (builtin "One Step Simplification" (formula "19")) - (rule "methodCallEmpty" (formula "19") (term "1")) - (rule "blockEmpty" (formula "19") (term "1")) - (rule "assignment" (formula "19") (term "1")) - (builtin "One Step Simplification" (formula "19")) - (rule "methodCallReturn" (formula "19") (term "1")) - (rule "assignment" (formula "19") (term "1")) - (builtin "One Step Simplification" (formula "19")) - (rule "methodCallEmpty" (formula "19") (term "1")) - (rule "tryEmpty" (formula "19") (term "1")) - (rule "emptyModality" (formula "19") (term "1")) - (builtin "One Step Simplification" (formula "19")) - (rule "Class_invariant_axiom_for_NestedInstanceAccess" (formula "19") (term "0") (inst "sk=sk_4") (ifseqformula "4")) - (branch "Use Axiom" - (builtin "One Step Simplification" (formula "19")) - (rule "ifthenelse_split" (formula "1") (term "0")) - (branch "second_0.b = first_0.b TRUE" - (rule "hideAuxiliaryEq" (formula "2")) - (rule "applyEq" (formula "12") (term "1,0") (ifseqformula "1")) - (rule "applyEq" (formula "17") (term "0") (ifseqformula "1")) - (rule "applyEq" (formula "12") (term "1") (ifseqformula "1")) - (rule "applyEq" (formula "16") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "16")) - (opengoal " ") - ) - (branch "second_0.b = first_0.b FALSE" - (rule "hideAuxiliaryEq" (formula "1")) - (opengoal " ") - ) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "19")) - (rule "closeTrue" (formula "19")) - ) - ) - (branch "Null Reference (b_3 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "19"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (second_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (b_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "17"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (first_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (b_1 = null)" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "18")) - (rule "replace_known_left" (formula "12") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "12")) - (rule "true_left" (formula "12")) - (rule "applyEq" (formula "12") (term "1") (ifseqformula "1")) - (rule "Class_invariant_axiom_for_java_lang_Class" (formula "12") (inst "sk=sk_2")) - (branch "Use Axiom" - (rule "true_left" (formula "12")) - (rule "throwUnfold" (formula "16") (term "1") (inst "#v0=n")) - (rule "variableDeclarationAssign" (formula "16") (term "1")) - (rule "variableDeclaration" (formula "16") (term "1") (newnames "n_1")) - (builtin "Use Operation Contract" (formula "16") (newnames "heapBefore_NullPointerException_0,self_1,exc_1,heapAfter_NullPointerException_0,anon_heap_NullPointerException_0") (contract "java.lang.NullPointerException[java.lang.NullPointerException::NullPointerException()].JML normal_behavior operation contract.0")) - (branch "Post (NullPointerException)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "18")) - (rule "andLeft" (formula "13")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,1,0,1,0") (ifseqformula "13")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "16")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "15")) - (rule "notLeft" (formula "14")) - (rule "notLeft" (formula "14")) - (rule "replace_known_right" (formula "14") (term "0") (ifseqformula "20")) - (builtin "One Step Simplification" (formula "14")) - (rule "dismissNonSelectedField" (formula "20") (term "0")) - (rule "pullOutSelect" (formula "17") (term "0") (inst "selectSK=java_lang_Throwable_cause_1")) - (rule "simplifySelectOfAnonEQ" (formula "17") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "17") (ifInst "" (formula "22"))) - (rule "dismissNonSelectedField" (formula "17") (term "0,0,1,0,0")) - (rule "replace_known_right" (formula "17") (term "0,1,0,0") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "17")) - (rule "applyEqReverse" (formula "18") (term "0") (ifseqformula "17")) - (rule "hideAuxiliaryEq" (formula "17")) - (rule "pullOutSelect" (formula "16") (term "0") (inst "selectSK=java_lang_Throwable_message_1")) - (rule "simplifySelectOfAnonEQ" (formula "16") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "22"))) - (rule "dismissNonSelectedField" (formula "16") (term "2,0")) - (rule "dismissNonSelectedField" (formula "16") (term "0,0,1,0,0")) - (rule "replace_known_right" (formula "16") (term "0,1,0,0") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "16")) - (rule "applyEqReverse" (formula "17") (term "0") (ifseqformula "16")) - (rule "hideAuxiliaryEq" (formula "16")) - (rule "commuteUnion" (formula "13") (term "1,0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "16") (term "0") (ifseqformula "12")) - (rule "replace_known_left" (formula "16") (term "0") (ifseqformula "17")) - (builtin "One Step Simplification" (formula "16")) - (rule "true_left" (formula "16")) - (rule "onlyCreatedObjectsAreReferenced" (formula "17") (term "0") (ifseqformula "12")) - (rule "replace_known_left" (formula "17") (term "0") (ifseqformula "18")) - (builtin "One Step Simplification" (formula "17")) - (rule "true_left" (formula "17")) - (rule "assignment" (formula "26") (term "1")) - (builtin "One Step Simplification" (formula "26")) - (rule "methodCallParamThrow" (formula "26") (term "1")) - (rule "tryCatchThrow" (formula "26") (term "1")) - (rule "ifElseUnfold" (formula "26") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "26") (term "1") (newnames "x_2")) - (rule "equality_comparison_simple" (formula "26") (term "1")) - (builtin "One Step Simplification" (formula "26")) - (rule "replace_known_right" (formula "26") (term "0,0,1,0") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "26")) - (rule "ifElseSplit" (formula "26")) - (branch "if x_2 true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_2 false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "26")) - (rule "ifElseSplit" (formula "26")) - (branch "if n_1 instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "22"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "26") (term "1") (newnames "e_1")) - (rule "reference_type_cast" (formula "26") (term "1")) - (branch "Normal Execution (n_1 instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "26")) - (rule "assignment" (formula "26") (term "1")) - (builtin "One Step Simplification" (formula "26")) - (rule "emptyModality" (formula "26") (term "1")) - (builtin "One Step Simplification" (formula "26") (ifInst "" (formula "21"))) - (rule "false_right" (formula "26")) - (opengoal " ") - ) - (branch "ClassCastException (!(n_1 instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "26")) - (rule "closeTrue" (formula "26")) - ) - ) - (branch "if n_1 instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "22"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Exceptional Post (NullPointerException)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "18")) - (rule "andLeft" (formula "13")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,0,0") (ifseqformula "13")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,1,0,1,0") (ifseqformula "13")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "16")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "18")) - (rule "andLeft" (formula "16")) - (rule "notLeft" (formula "14")) - (rule "close" (formula "21") (ifseqformula "20")) - ) - (branch "Pre (NullPointerException)" - (builtin "One Step Simplification" (formula "16")) - (rule "wellFormedStorePrimitive" (formula "16")) - (rule "close" (formula "16") (ifseqformula "2")) - ) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "13")) - (rule "closeTrue" (formula "13")) - ) - ) - ) - (branch "Null Reference (_second_0 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "15"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (b = null)" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "17")) - (rule "replace_known_left" (formula "9") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "applyEq" (formula "9") (term "1") (ifseqformula "1")) - (rule "Class_invariant_axiom_for_java_lang_Character" (formula "9") (inst "sk=sk_1")) - (branch "Use Axiom" - (rule "true_left" (formula "9")) - (rule "throwUnfold" (formula "15") (term "1") (inst "#v0=n")) - (rule "variableDeclarationAssign" (formula "15") (term "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "n")) - (builtin "Use Operation Contract" (formula "15") (newnames "heapBefore_NullPointerException,self_0,exc_0,heapAfter_NullPointerException,anon_heap_NullPointerException") (contract "java.lang.NullPointerException[java.lang.NullPointerException::NullPointerException()].JML normal_behavior operation contract.0")) - (branch "Post (NullPointerException)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "17")) - (rule "andLeft" (formula "13")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,1,0,1,0") (ifseqformula "13")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "15")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "16")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "15")) - (rule "notLeft" (formula "14")) - (rule "notLeft" (formula "14")) - (rule "replace_known_right" (formula "14") (term "0") (ifseqformula "20")) - (builtin "One Step Simplification" (formula "14")) - (rule "pullOutSelect" (formula "16") (term "0") (inst "selectSK=java_lang_Throwable_message_0")) - (rule "simplifySelectOfAnonEQ" (formula "16") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "22")) (ifInst "" (formula "21"))) - (rule "applyEqReverse" (formula "17") (term "0") (ifseqformula "16")) - (rule "hideAuxiliaryEq" (formula "16")) - (rule "pullOutSelect" (formula "17") (term "0") (inst "selectSK=java_lang_Throwable_cause_0")) - (rule "simplifySelectOfAnonEQ" (formula "17") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "17") (ifInst "" (formula "22")) (ifInst "" (formula "21"))) - (rule "applyEqReverse" (formula "18") (term "0") (ifseqformula "17")) - (rule "hideAuxiliaryEq" (formula "17")) - (rule "commuteUnion" (formula "13") (term "1,0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "17") (term "0") (ifseqformula "12")) - (rule "replace_known_left" (formula "17") (term "0") (ifseqformula "18")) - (builtin "One Step Simplification" (formula "17")) - (rule "true_left" (formula "17")) - (rule "onlyCreatedObjectsAreReferenced" (formula "16") (term "0") (ifseqformula "12")) - (rule "replace_known_left" (formula "16") (term "0") (ifseqformula "17")) - (builtin "One Step Simplification" (formula "16")) - (rule "true_left" (formula "16")) - (rule "assignment" (formula "25") (term "1")) - (builtin "One Step Simplification" (formula "25")) - (rule "methodCallParamThrow" (formula "25") (term "1")) - (rule "tryCatchThrow" (formula "25") (term "1")) - (rule "ifElseUnfold" (formula "25") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "25") (term "1") (newnames "x_1")) - (rule "equality_comparison_simple" (formula "25") (term "1")) - (builtin "One Step Simplification" (formula "25")) - (rule "replace_known_right" (formula "25") (term "0,0,1,0") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "25")) - (rule "ifElseSplit" (formula "25")) - (branch "if x_1 true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x_1 false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "25")) - (rule "ifElseSplit" (formula "25")) - (branch "if n instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "22"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "25") (term "1") (newnames "e")) - (rule "reference_type_cast" (formula "25") (term "1")) - (branch "Normal Execution (n instanceof java.lang.Throwable)" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "25")) - (rule "assignment" (formula "25") (term "1")) - (builtin "One Step Simplification" (formula "25")) - (rule "emptyModality" (formula "25") (term "1")) - (builtin "One Step Simplification" (formula "25") (ifInst "" (formula "21"))) - (rule "false_right" (formula "25")) - (rule "cut_direct" (formula "10") (term "0")) - (branch "CUT: second_0.b = null TRUE" - (builtin "One Step Simplification" (formula "11")) - (rule "true_left" (formula "11")) - (rule "applyEq" (formula "11") (term "1") (ifseqformula "10")) - (rule "Class_invariant_axiom_for_java_lang_Character" (formula "11") (inst "sk=sk_3")) - (branch "Use Axiom" - (rule "true_left" (formula "11")) - (opengoal " ") - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "20")) - (rule "closeTrue" (formula "20")) - ) - ) - (branch "CUT: second_0.b = null FALSE" - (builtin "One Step Simplification" (formula "10")) - (opengoal " ") - ) - ) - (branch "ClassCastException (!(n instanceof java.lang.Throwable))" - (builtin "One Step Simplification" (formula "25")) - (rule "closeTrue" (formula "25")) - ) - ) - (branch "if n instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "22"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Exceptional Post (NullPointerException)" - (builtin "One Step Simplification" (formula "13")) - (builtin "One Step Simplification" (formula "17")) - (rule "andLeft" (formula "13")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,0,0") (ifseqformula "13")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "14") (term "1,1,0,1,0") (ifseqformula "13")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "16")) - (rule "andLeft" (formula "14")) - (rule "andLeft" (formula "16")) - (rule "andLeft" (formula "18")) - (rule "notLeft" (formula "14")) - (rule "close" (formula "20") (ifseqformula "19")) - ) - (branch "Pre (NullPointerException)" - (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "2"))) - (rule "closeTrue" (formula "15")) - ) - ) - (branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "13")) - (rule "closeTrue" (formula "13")) - ) - ) - ) - (branch "Null Reference (_first_0 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Show Axiom Satisfiability" - (builtin "One Step Simplification" (formula "12")) - (rule "closeTrue" (formula "12")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceFields/NestedInstanceFields.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceFields/NestedInstanceFields.java deleted file mode 100644 index 08b767eff2a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceFields/NestedInstanceFields.java +++ /dev/null @@ -1,24 +0,0 @@ - -public class NestedInstanceFields { - private Container container; - - /*@ normal_behavior - @ requires \invariant_for(obj); - @ requires \invariant_for(obj.container); - @ ensures true; - @*/ - public static int main(NestedInstanceFields obj) { - obj.container.x = 40; - obj.container.y = 2; - obj.container.z = -4711; - obj.container.result = obj.container.x + obj.container.y; - return obj.container.result; - } - - private static class Container { - private int x; - private int y; - private int z; - private int result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceFields/NestedInstanceFields.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceFields/NestedInstanceFields.proof deleted file mode 100644 index c5af37e85f1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/nestedInstanceFields/NestedInstanceFields.proof +++ /dev/null @@ -1,307 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:23:10 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:showSatisfiability , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "NestedInstanceFields[NestedInstanceFields::main(NestedInstanceFields)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "NestedInstanceFields[NestedInstanceFields::main(NestedInstanceFields)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "482") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "obj,result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "6")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "6")) -(builtin "One Step Simplification" (formula "2")) -(rule "onlyCreatedObjectsAreReferenced" (formula "5") (term "1") (ifseqformula "1")) -(rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_NestedInstanceFields" (formula "4")) -(rule "notLeft" (formula "4")) -(rule "replace_known_right" (formula "5") (term "0") (ifseqformula "7")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment" (formula "9") (term "1")) -(builtin "One Step Simplification" (formula "9")) -(rule "methodBodyExpand" (formula "9") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "9")) -(rule "eval_order_access1" (formula "9") (term "1") (inst "#v0=c")) -(rule "variableDeclarationAssign" (formula "9") (term "1")) -(rule "variableDeclaration" (formula "9") (term "1") (newnames "c")) -(rule "assignment_read_attribute" (formula "9") (term "1")) -(branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "assignment_write_attribute" (formula "9") (term "1")) - (branch "Normal Execution (c != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "7"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "eval_order_access1" (formula "9") (term "1") (inst "#v0=c")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "c_1")) - (rule "assignment_read_attribute" (formula "9") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "9") (term "1")) - (branch "Normal Execution (c_1 != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "7"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "eval_order_access1" (formula "9") (term "1") (inst "#v0=c")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "c_2")) - (rule "assignment_read_attribute" (formula "9") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "9") (term "1")) - (branch "Normal Execution (c_2 != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "7"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "eval_order_access1" (formula "9") (term "1") (inst "#v0=c")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "c_3")) - (rule "assignment_read_attribute" (formula "9") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "eval_order_access4" (formula "9") (term "1") (inst "#v0=c_4") (inst "#v1=x")) - (rule "Partial_inv_axiom_for_JML_class_invariant_nr_0_in_NestedInstanceFields" (formula "4")) - (rule "notLeft" (formula "4")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "c_4")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x")) - (rule "compound_addition_2" (formula "9") (term "1") (inst "#v1=x_2") (inst "#v0=x_1")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_1")) - (rule "eval_order_access2" (formula "9") (term "1") (inst "#v0=c_5")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "c_5")) - (rule "assignment_read_attribute" (formula "9") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "9") (term "1")) - (branch "Normal Execution (c_5 != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "7"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "pullOutSelect" (formula "9") (term "0,1,0") (inst "selectSK=NestedInstanceFields_Container_x_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "10") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_2")) - (rule "eval_order_access2" (formula "9") (term "1") (inst "#v0=c_5")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "c_6")) - (rule "assignment_read_attribute" (formula "9") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "9") (term "1")) - (branch "Normal Execution (c_6 != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "7"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "pullOutSelect" (formula "9") (term "0,1,0") (inst "selectSK=NestedInstanceFields_Container_y_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "10") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignmentAdditionInt" (formula "9") (term "1")) - (rule "translateJavaAddInt" (formula "9") (term "0,0,1")) - (builtin "One Step Simplification" (formula "9")) - (rule "add_literals" (formula "9") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "9") (term "1")) - (branch "Normal Execution (c_4 != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "7"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "returnUnfold" (formula "9") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_3")) - (rule "eval_order_access2" (formula "9") (term "1") (inst "#v0=c")) - (rule "variableDeclarationAssign" (formula "9") (term "1")) - (rule "variableDeclaration" (formula "9") (term "1") (newnames "c_7")) - (rule "assignment_read_attribute" (formula "9") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "9") (term "0,1,0")) - (rule "assignment_read_attribute" (formula "9") (term "1")) - (branch "Normal Execution (c_7 != null)" - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "7"))) - (rule "false_right" (formula "9")) - (builtin "One Step Simplification" (formula "9")) - (rule "pullOutSelect" (formula "9") (term "0,1,0") (inst "selectSK=NestedInstanceFields_Container_result_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "10") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "9") (term "1")) - (rule "assignment" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "methodCallEmpty" (formula "9") (term "1")) - (rule "tryEmpty" (formula "9") (term "1")) - (rule "emptyModality" (formula "9") (term "1")) - (builtin "One Step Simplification" (formula "9")) - (opengoal " ") - ) - (branch "Null Reference (c_7 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_4 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_6 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_5 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (c = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/readWriteTest/ReadWriteTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/readWriteTest/ReadWriteTest.java deleted file mode 100644 index d956fc77bf6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/readWriteTest/ReadWriteTest.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class ReadWriteTest { - public static int staticInt; - - public int instanceInt; - - public int main(int paramInt) { - int localInt = 2; - int resultInt = localInt + paramInt + staticInt + instanceInt; - return resultInt; - } - - public static int functionTest(int paramInt) { - int localInt = 2; - int resultValue = magic() + paramInt + localInt; - return resultValue; - } - - public static int magic() { - return 42; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/readWriteTest/ReadWriteTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/readWriteTest/ReadWriteTest.proof deleted file mode 100644 index 4c91922a998..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/readWriteTest/ReadWriteTest.proof +++ /dev/null @@ -1,108 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Feb 04 10:23:47 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "main(int)", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "ReadWriteTest#main(int)", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "109") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "assignment" (formula "5")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "5")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "localInt")) -(rule "assignment" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "resultInt")) -(rule "compound_addition_2" (formula "5") (term "1") (inst "#v1=x_1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "x")) -(rule "compound_addition_2" (formula "5") (term "1") (inst "#v1=x_3") (inst "#v0=x_2")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "x_2")) -(rule "assignmentAdditionInt" (formula "5") (term "1")) -(rule "translateJavaAddInt" (formula "5") (term "0,0,1")) -(builtin "One Step Simplification" (formula "5")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "x_3")) -(rule "activeUseStaticFieldReadAccess" (formula "5") (term "1")) -(rule "assignment_read_static_attribute" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignmentAdditionInt" (formula "5") (term "1")) -(rule "translateJavaAddInt" (formula "5") (term "0,0,1")) -(builtin "One Step Simplification" (formula "5")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "x_1")) -(rule "assignment_read_attribute_this" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignmentAdditionInt" (formula "5") (term "1")) -(rule "translateJavaAddInt" (formula "5") (term "0,0,1")) -(builtin "One Step Simplification" (formula "5")) -(rule "polySimp_addComm1" (formula "5") (term "0,1,0")) -(rule "methodCallReturn" (formula "5") (term "1")) -(rule "assignment" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodCallEmpty" (formula "5") (term "1")) -(rule "tryEmpty" (formula "5") (term "1")) -(rule "emptyModality" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(opengoal " ") -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleAliasChanged/SimpleAliasChanged.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleAliasChanged/SimpleAliasChanged.java deleted file mode 100644 index b2fc5820c55..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleAliasChanged/SimpleAliasChanged.java +++ /dev/null @@ -1,18 +0,0 @@ - -public class SimpleAliasChanged { - private int value; - - /*@ normal_behavior - @ requires \invariant_for(x); - @ requires \invariant_for(y); - @ requires x != y; - @ ensures \result == 42; - @ assignable \everything; - @*/ - public static int main(SimpleAliasChanged x, SimpleAliasChanged y) { - y.value = 42; - x.value = -666; - x = y; - return x.value; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleAliasChanged/SimpleAliasChanged.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleAliasChanged/SimpleAliasChanged.proof deleted file mode 100644 index f91d89790b4..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleAliasChanged/SimpleAliasChanged.proof +++ /dev/null @@ -1,139 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Tue Feb 03 14:53:39 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "SimpleAliasChanged[SimpleAliasChanged::main(SimpleAliasChanged,SimpleAliasChanged)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "SimpleAliasChanged[SimpleAliasChanged::main(SimpleAliasChanged,SimpleAliasChanged)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "639") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "heapAtPre")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "5")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "7")) -(rule "andLeft" (formula "8")) -(rule "notLeft" (formula "7")) -(rule "notLeft" (formula "8")) -(rule "notLeft" (formula "7")) -(rule "eqSymm" (formula "10") (term "1,0,0,1,0,1")) -(rule "eqSymm" (formula "9")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "7")) -(builtin "One Step Simplification" (formula "2")) -(rule "replace_known_right" (formula "3") (term "0") (ifseqformula "8")) -(builtin "One Step Simplification" (formula "3")) -(rule "elementOfSetMinus" (formula "10") (term "0,0,0,0,1,0,1")) -(builtin "One Step Simplification" (formula "10")) -(rule "assignment" (formula "10") (term "1")) -(builtin "One Step Simplification" (formula "10")) -(rule "methodBodyExpand" (formula "10") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "10")) -(rule "assignment_write_attribute" (formula "10") (term "1")) -(branch "Normal Execution (_y != null)" - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "8"))) - (rule "false_right" (formula "10")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignment_write_attribute" (formula "10") (term "1")) - (branch "Normal Execution (_x != null)" - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "7"))) - (rule "false_right" (formula "10")) - (builtin "One Step Simplification" (formula "10")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "returnUnfold" (formula "10") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "10") (term "1")) - (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_1")) - (rule "assignment_read_attribute" (formula "10") (term "1")) - (branch "Normal Execution (_x != null)" - (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "8"))) - (rule "false_right" (formula "10")) - (builtin "One Step Simplification" (formula "10")) - (rule "pullOutSelect" (formula "10") (term "0,1,0") (inst "selectSK=SimpleAliasChanged_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "11") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "10") (term "1")) - (rule "assignment" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (rule "methodCallEmpty" (formula "10") (term "1")) - (rule "tryEmpty" (formula "10") (term "1")) - (rule "emptyModality" (formula "10") (term "1")) - (builtin "One Step Simplification" (formula "10")) - (opengoal " ") - ) - (branch "Null Reference (_x = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_x = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_y = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleArrayTest/SimpleArrayTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleArrayTest/SimpleArrayTest.java deleted file mode 100644 index a82d4831ee1..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleArrayTest/SimpleArrayTest.java +++ /dev/null @@ -1,15 +0,0 @@ - -public class SimpleArrayTest { - /*@ normal_behavior - @ requires \invariant_for(array); - @ requires array.length == 4; - @ ensures true; - @*/ - public static int main(int[] array) { - array[0] = 40; - array[1] = 2; - array[2] = -4711; - array[3] = array[0] + array[1]; - return array[3]; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleArrayTest/SimpleArrayTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleArrayTest/SimpleArrayTest.proof deleted file mode 100644 index a509d590fcf..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleArrayTest/SimpleArrayTest.proof +++ /dev/null @@ -1,340 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:23:31 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:showSatisfiability , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "SimpleArrayTest[SimpleArrayTest::main([I)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "SimpleArrayTest[SimpleArrayTest::main([I)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "1608") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "array,result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "6")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "6")) -(builtin "One Step Simplification" (formula "2")) -(rule "arrayLengthNotNegative" (formula "5") (term "0")) -(rule "applyEq" (formula "5") (term "0") (ifseqformula "6")) -(rule "qeq_literals" (formula "5")) -(rule "true_left" (formula "5")) -(rule "arrayLengthIsAnInt" (formula "5") (term "0")) -(builtin "One Step Simplification" (formula "5")) -(rule "true_left" (formula "5")) -(rule "assignment" (formula "7") (term "1")) -(builtin "One Step Simplification" (formula "7")) -(rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "7")) -(rule "assignment_to_primitive_array_component" (formula "7") (term "1")) -(branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (builtin "One Step Simplification" (formula "8")) - (rule "qeq_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "applyEq" (formula "1") (term "0,1,0") (ifseqformula "6")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_to_primitive_array_component" (formula "7") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (builtin "One Step Simplification" (formula "8")) - (rule "qeq_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "applyEq" (formula "1") (term "0,1,0") (ifseqformula "6")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_to_primitive_array_component" (formula "7") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (builtin "One Step Simplification" (formula "8")) - (rule "qeq_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "applyEq" (formula "1") (term "0,1,0") (ifseqformula "6")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "eval_order_array_access3" (formula "7") (term "1") (inst "#v0=x_arr") (inst "#v2=x") (inst "#v1=x_1")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x_arr")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "variableDeclarationAssign" (formula "7") (term "1")) - (rule "variableDeclaration" (formula "7") (term "1") (newnames "x")) - (rule "assignment" (formula "7") (term "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "arrayLengthIsAnInt" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "true_left" (formula "5")) - (rule "arrayLengthNotNegative" (formula "5") (term "0")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_1")) - (rule "compound_addition_2" (formula "8") (term "1") (inst "#v1=x_3") (inst "#v0=x_2")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_2")) - (rule "assignment_array2" (formula "8") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "7"))) - (builtin "One Step Simplification" (formula "9")) - (rule "less_literals" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "inEqSimp_leqRight" (formula "8")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "9") (term "0,1,0") (inst "selectSK=arr_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "equal_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "equal_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "10") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "7")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_3")) - (rule "assignment_array2" (formula "8") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "7"))) - (builtin "One Step Simplification" (formula "9")) - (rule "less_literals" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "inEqSimp_leqRight" (formula "8")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "9") (term "0,1,0") (inst "selectSK=arr_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "equal_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "10") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "7")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignmentAdditionInt" (formula "8") (term "1")) - (rule "translateJavaAddInt" (formula "8") (term "0,0,1")) - (builtin "One Step Simplification" (formula "8")) - (rule "add_literals" (formula "8") (term "0,1,0")) - (rule "assignment_to_primitive_array_component" (formula "8") (term "1")) - (branch "Normal Execution (x_arr != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "9")) - (rule "qeq_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "applyEq" (formula "1") (term "0,1,0") (ifseqformula "7")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "returnUnfold" (formula "8") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "8") (term "1")) - (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_4")) - (rule "assignment_array2" (formula "8") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "7"))) - (builtin "One Step Simplification" (formula "9")) - (rule "less_literals" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "inEqSimp_leqRight" (formula "8")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "9") (term "0,1,0") (inst "selectSK=arr_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "10") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "7")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "methodCallReturn" (formula "8") (term "1")) - (rule "assignment" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (rule "methodCallEmpty" (formula "8") (term "1")) - (rule "tryEmpty" (formula "8") (term "1")) - (rule "emptyModality" (formula "8") (term "1")) - (builtin "One Step Simplification" (formula "8")) - (opengoal " ") - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 3 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "7")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (x_arr = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr != null, but x Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (builtin "One Step Simplification" (formula "9")) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "7")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 1 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "7")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 0 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "7")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 2 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 1 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "closeFalse" (formula "1")) -) -(branch "Index Out of Bounds (_array != null, but 0 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleInstanceFields/SimpleInstanceFields.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleInstanceFields/SimpleInstanceFields.java deleted file mode 100644 index b9ac62b14b7..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleInstanceFields/SimpleInstanceFields.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class SimpleInstanceFields { - private int x; - private int y; - private int z; - private int result; - - /*@ normal_behavior - @ requires \invariant_for(obj); - @ ensures true; - @*/ - public static int main(SimpleInstanceFields obj) { - obj.x = 40; - obj.y = 2; - obj.z = -4711; - obj.result = obj.x + obj.y; - return obj.result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleInstanceFields/SimpleInstanceFields.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleInstanceFields/SimpleInstanceFields.proof deleted file mode 100644 index bd9a5105e9a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleInstanceFields/SimpleInstanceFields.proof +++ /dev/null @@ -1,192 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:23:50 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:showSatisfiability , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "SimpleInstanceFields[SimpleInstanceFields::main(SimpleInstanceFields)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "SimpleInstanceFields[SimpleInstanceFields::main(SimpleInstanceFields)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "625") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "obj,result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "2")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "4")) -(rule "andLeft" (formula "1")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment" (formula "6") (term "1")) -(builtin "One Step Simplification" (formula "6")) -(rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "6")) -(rule "assignment_write_attribute" (formula "6") (term "1")) -(branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "assignment_write_attribute" (formula "6") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "assignment_write_attribute" (formula "6") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "eval_order_access4" (formula "6") (term "1") (inst "#v0=s") (inst "#v1=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "s")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x")) - (rule "compound_addition_2" (formula "6") (term "1") (inst "#v1=x_2") (inst "#v0=x_1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_1")) - (rule "assignment_read_attribute" (formula "6") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "dismissNonSelectedField" (formula "6") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "6") (term "0,1,0")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=SimpleInstanceFields_x_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_2")) - (rule "assignment_read_attribute" (formula "6") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "dismissNonSelectedField" (formula "6") (term "0,1,0")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=SimpleInstanceFields_y_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignmentAdditionInt" (formula "6") (term "1")) - (rule "translateJavaAddInt" (formula "6") (term "0,0,1")) - (builtin "One Step Simplification" (formula "6")) - (rule "add_literals" (formula "6") (term "0,1,0")) - (rule "assignment_write_attribute" (formula "6") (term "1")) - (branch "Normal Execution (s != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "returnUnfold" (formula "6") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_3")) - (rule "assignment_read_attribute" (formula "6") (term "1")) - (branch "Normal Execution (_obj != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=SimpleInstanceFields_result_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (opengoal " ") - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (s = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_obj = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLocalVariables/SimpleLocalVariables.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLocalVariables/SimpleLocalVariables.java deleted file mode 100644 index 3bc2af00e9c..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLocalVariables/SimpleLocalVariables.java +++ /dev/null @@ -1,10 +0,0 @@ - -public class SimpleLocalVariables { - public static int main() { - int x = 40; - int y = 2; - int z = -4711; - int result = x + y; - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLocalVariables/SimpleLocalVariables.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLocalVariables/SimpleLocalVariables.proof deleted file mode 100644 index 570dbf0c42e..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLocalVariables/SimpleLocalVariables.proof +++ /dev/null @@ -1,93 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Mar 26 14:14:07 CEST 2018 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "SimpleLocalVariables#main()", - } - -\proof { -(keyLog "0" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "36") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate")) -(rule "impRight" (formula "1")) -(rule "assignment" (formula "2")) -(rule "methodBodyExpand" (formula "2") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "2")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "y")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "z")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "result_1")) -(rule "assignmentAdditionInt" (formula "2") (term "1")) -(rule "translateJavaAddInt" (formula "2") (term "0,0,1")) -(builtin "One Step Simplification" (formula "2")) -(rule "add_literals" (formula "2") (term "0,1,0")) -(rule "methodCallReturn" (formula "2") (term "1")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "methodCallEmpty" (formula "2") (term "1")) -(rule "tryEmpty" (formula "2") (term "1")) -(rule "emptyModality" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(opengoal " ") -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLoopInvariantTest/SimpleLoopInvariantTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLoopInvariantTest/SimpleLoopInvariantTest.java deleted file mode 100644 index 6e9da2f6f08..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLoopInvariantTest/SimpleLoopInvariantTest.java +++ /dev/null @@ -1,14 +0,0 @@ - -public class SimpleLoopInvariantTest { - public static int main() { - int i = 2; - /*@ loop_invariant i >= 0; - @ decreasing i; - @ assignable i; - @*/ - while (i > 0) { - i--; - } - return i; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLoopInvariantTest/SimpleLoopInvariantTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLoopInvariantTest/SimpleLoopInvariantTest.proof deleted file mode 100644 index a9905cbfa91..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleLoopInvariantTest/SimpleLoopInvariantTest.proof +++ /dev/null @@ -1,230 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Feb 18 16:54:18 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "SimpleLoopInvariantTest#main()", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "741") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "impRight" (formula "1")) -(rule "assignment" (formula "2")) -(rule "methodBodyExpand" (formula "2") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "2")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "i")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(builtin "Loop Invariant" (formula "2") (newnames "variant,b,heapBefore_LOOP,iBefore_LOOP,i_0,heap_After_LOOP,anon_heap_LOOP,o,f")) -(branch "Invariant Initially Valid" - (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "1"))) - (rule "qeq_literals" (formula "2")) - (rule "closeTrue" (formula "2")) -) -(branch "Body Preserves Invariant" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "4")) - (rule "impRight" (formula "4")) - (rule "eqSymm" (formula "5") (term "1,0,0,1,0,0,1,1,0,1")) - (rule "boxToDiamond" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "b_2")) - (rule "greater_than_comparison_simple" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "inEqSimp_gtToGeq" (formula "4") (term "0,0,1,0")) - (rule "times_zero_1" (formula "4") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "4") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "4") (term "0,0,1,0")) - (rule "mul_literals" (formula "4") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "notRight" (formula "4")) - (rule "inEqSimp_subsumption1" (formula "4") (ifseqformula "1")) - (rule "leq_literals" (formula "4") (term "0")) - (builtin "One Step Simplification" (formula "4")) - (rule "true_left" (formula "4")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "4") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x")) - (rule "greater_than_comparison_simple" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "ifSplit" (formula "4")) - (branch "if x true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "inEqSimp_gtToGeq" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "postdecrement" (formula "4") (term "1")) - (rule "compound_subtraction_1" (formula "4") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_1")) - (rule "widening_identity_cast_5" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "assignmentSubtractionInt" (formula "4") (term "1")) - (rule "translateJavaSubInt" (formula "4") (term "0,0,1")) - (builtin "One Step Simplification" (formula "4")) - (rule "polySimp_elimSub" (formula "4") (term "0,1,0")) - (rule "mul_literals" (formula "4") (term "1,0,1,0")) - (rule "polySimp_addComm0" (formula "4") (term "0,1,0")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,0")) - (rule "precOfInt" (formula "4") (term "1,0")) - (rule "inEqSimp_ltToLeq" (formula "4") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "4") (term "1,0,0,1,1,0")) - (rule "polySimp_addAssoc" (formula "4") (term "0,1,1,0")) - (rule "polySimp_addComm1" (formula "4") (term "0,0,1,1,0")) - (rule "add_literals" (formula "4") (term "0,0,0,1,1,0")) - (rule "add_zero_left" (formula "4") (term "0,0,1,1,0")) - (rule "polySimp_pullOutFactor2" (formula "4") (term "0,1,1,0")) - (rule "add_literals" (formula "4") (term "1,0,1,1,0")) - (rule "times_zero_1" (formula "4") (term "0,1,1,0")) - (rule "leq_literals" (formula "4") (term "1,1,0")) - (builtin "One Step Simplification" (formula "4")) - (rule "inEqSimp_homoInEq0" (formula "4") (term "1,0")) - (rule "times_zero_2" (formula "4") (term "1,0,1,0")) - (rule "add_zero_right" (formula "4") (term "0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "4") (term "0,0,0")) - (rule "mul_literals" (formula "4") (term "1,0,0,0")) - (rule "replace_known_left" (formula "4") (term "0,0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "inEqSimp_sepPosMonomial1" (formula "4") (term "1,0")) - (rule "mul_literals" (formula "4") (term "1,1,0")) - (rule "replace_known_left" (formula "4") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "cut_direct" (formula "4") (term "1")) - (branch "CUT: SETAccumulate(heap[anon({}, anon_heap_LOOP<>)], null) TRUE" - (builtin "One Step Simplification" (formula "5")) - (rule "allRight" (formula "5") (inst "sk=f_0")) - (rule "allRight" (formula "5") (inst "sk=o_0")) - (rule "orRight" (formula "5")) - (rule "pullOutSelect" (formula "6") (term "0") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "applyEqReverse" (formula "7") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "7")) - (rule "closeTrue" (formula "7")) - ) - (branch "CUT: SETAccumulate(heap[anon({}, anon_heap_LOOP<>)], null) FALSE" - (builtin "One Step Simplification" (formula "5")) - (rule "false_right" (formula "5")) - (opengoal " ") - ) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_gtRight" (formula "4")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Use Case" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "4")) - (rule "methodCallReturn" (formula "4") (term "1,0,1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "b_1")) - (rule "greater_than_comparison_simple" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "inEqSimp_gtToGeq" (formula "4") (term "0,0,1,0")) - (rule "times_zero_1" (formula "4") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "4") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "4") (term "0,0,1,0")) - (rule "mul_literals" (formula "4") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "impRight" (formula "4")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "4")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_antiSymm" (formula "4") (ifseqformula "1")) - (rule "applyEq" (formula "5") (term "0") (ifseqformula "4")) - (rule "qeq_literals" (formula "5")) - (rule "true_left" (formula "5")) - (rule "applyEqRigid" (formula "5") (term "0,0,1,0") (ifseqformula "4")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "4")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (opengoal " ") -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleMultidimensionArrayTest/SimpleMultidimensionArrayTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleMultidimensionArrayTest/SimpleMultidimensionArrayTest.java deleted file mode 100644 index 82aa0d265a3..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleMultidimensionArrayTest/SimpleMultidimensionArrayTest.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class SimpleMultidimensionArrayTest { - /*@ normal_behavior - @ requires \invariant_for(array); - @ requires array.length == 4; - @ requires array[0].length == 4; - @ requires array[1].length == 4; - @ requires array[2].length == 4; - @ requires array[3].length == 4; - @ ensures true; - @*/ - public static int main(int[][] array) { - array[0][0] = 40; - array[1][1] = 2; - array[2][2] = -4711; - array[3][3] = array[0][0] + array[1][1]; - return array[3][3]; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleMultidimensionArrayTest/SimpleMultidimensionArrayTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleMultidimensionArrayTest/SimpleMultidimensionArrayTest.proof deleted file mode 100644 index 5fc8f2aa46d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleMultidimensionArrayTest/SimpleMultidimensionArrayTest.proof +++ /dev/null @@ -1,750 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jul 15 10:24:10 CEST 2016 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,wdChecks-wdChecks\\:off , JavaCard-JavaCard\\:off , bigint-bigint\\:on , programRules-programRules\\:Java , intRules-intRules\\:arithmeticSemanticsIgnoringOF , moreSeqRules-moreSeqRules\\:off , sequences-sequences\\:on , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , Strings-Strings\\:on , reach-reach\\:on , assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , modelFields-modelFields\\:showSatisfiability , wdOperator-wdOperator\\:L , permissions-permissions\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "SimpleMultidimensionArrayTest[SimpleMultidimensionArrayTest::main([[I)].JML normal_behavior operation contract.0", - "addSymbolicExecutionLabel": true, - "contract": "SimpleMultidimensionArrayTest[SimpleMultidimensionArrayTest::main([[I)].JML normal_behavior operation contract.0", - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.proof.init.FunctionalOperationContractPO", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "marti" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "3803") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "array,result,exc,heapAtPre,SETAccumulate,o,f")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "5")) -(rule "andLeft" (formula "6")) -(rule "andLeft" (formula "7")) -(rule "andLeft" (formula "8")) -(rule "andLeft" (formula "9")) -(rule "nonNull" (formula "10") (inst "i=i")) -(rule "sub_literals" (formula "10") (term "2,1,0,1,1")) -(builtin "One Step Simplification" (formula "10")) -(rule "greater_literals" (formula "10") (term "0,1")) -(builtin "One Step Simplification" (formula "10")) -(rule "andLeft" (formula "10")) -(rule "notLeft" (formula "10")) -(rule "replace_known_right" (formula "2") (term "0") (ifseqformula "11")) -(builtin "One Step Simplification" (formula "2")) -(rule "narrowSelectArrayType" (formula "10") (term "0,0,1,0") (ifseqformula "1") (ifseqformula "11")) -(rule "inEqSimp_ltToLeq" (formula "10") (term "1,0,0")) -(rule "polySimp_mulComm0" (formula "10") (term "1,0,0,1,0,0")) -(rule "inEqSimp_commuteLeq" (formula "10") (term "0,0,0")) -(rule "applyEq" (formula "10") (term "0,1,0,0,1,0,0") (ifseqformula "5")) -(rule "mul_literals" (formula "10") (term "1,0,0,1,0,0")) -(rule "add_literals" (formula "10") (term "0,0,1,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "10") (term "1,0,0")) -(rule "mul_literals" (formula "10") (term "1,1,0,0")) -(rule "nnf_imp2or" (formula "10") (term "0")) -(rule "nnf_notAnd" (formula "10") (term "0,0")) -(rule "inEqSimp_notLeq" (formula "10") (term "1,0,0")) -(rule "mul_literals" (formula "10") (term "1,0,0,1,0,0")) -(rule "add_literals" (formula "10") (term "0,0,1,0,0")) -(rule "inEqSimp_sepPosMonomial1" (formula "10") (term "1,0,0")) -(rule "mul_literals" (formula "10") (term "1,1,0,0")) -(rule "inEqSimp_notGeq" (formula "10") (term "0,0,0")) -(rule "times_zero_1" (formula "10") (term "1,0,0,0,0,0")) -(rule "add_zero_right" (formula "10") (term "0,0,0,0,0")) -(rule "inEqSimp_sepPosMonomial0" (formula "10") (term "0,0,0")) -(rule "mul_literals" (formula "10") (term "1,0,0,0")) -(rule "allLeft" (formula "10") (inst "t=Z(1(#))")) -(rule "leq_literals" (formula "10") (term "0,0")) -(builtin "One Step Simplification" (formula "10")) -(rule "qeq_literals" (formula "10") (term "0")) -(builtin "One Step Simplification" (formula "10")) -(rule "notLeft" (formula "10")) -(rule "allLeft" (formula "10") (inst "t=Z(3(#))")) -(rule "leq_literals" (formula "10") (term "0,0")) -(builtin "One Step Simplification" (formula "10")) -(rule "qeq_literals" (formula "10") (term "0")) -(builtin "One Step Simplification" (formula "10")) -(rule "notLeft" (formula "10")) -(rule "allLeft" (formula "10") (inst "t=Z(2(#))")) -(rule "leq_literals" (formula "10") (term "0,0")) -(builtin "One Step Simplification" (formula "10")) -(rule "qeq_literals" (formula "10") (term "0")) -(builtin "One Step Simplification" (formula "10")) -(rule "notLeft" (formula "10")) -(rule "allLeft" (formula "10") (inst "t=Z(0(#))")) -(rule "leq_literals" (formula "10") (term "0,0")) -(builtin "One Step Simplification" (formula "10")) -(rule "qeq_literals" (formula "10") (term "0")) -(builtin "One Step Simplification" (formula "10")) -(rule "notLeft" (formula "10")) -(rule "arrayLengthNotNegative" (formula "5") (term "0")) -(rule "applyEq" (formula "5") (term "0") (ifseqformula "6")) -(rule "qeq_literals" (formula "5")) -(rule "true_left" (formula "5")) -(rule "arrayLengthIsAnInt" (formula "5") (term "0")) -(builtin "One Step Simplification" (formula "5")) -(rule "true_left" (formula "5")) -(rule "arrayLengthIsAnInt" (formula "6") (term "0")) -(builtin "One Step Simplification" (formula "6")) -(rule "true_left" (formula "6")) -(rule "arrayLengthNotNegative" (formula "6") (term "0")) -(rule "applyEq" (formula "6") (term "0") (ifseqformula "7")) -(rule "qeq_literals" (formula "6")) -(rule "true_left" (formula "6")) -(rule "arrayLengthNotNegative" (formula "7") (term "0")) -(rule "applyEq" (formula "7") (term "0") (ifseqformula "8")) -(rule "qeq_literals" (formula "7")) -(rule "true_left" (formula "7")) -(rule "arrayLengthIsAnInt" (formula "7") (term "0")) -(builtin "One Step Simplification" (formula "7")) -(rule "true_left" (formula "7")) -(rule "arrayLengthIsAnInt" (formula "8") (term "0")) -(builtin "One Step Simplification" (formula "8")) -(rule "true_left" (formula "8")) -(rule "arrayLengthNotNegative" (formula "8") (term "0")) -(rule "applyEq" (formula "8") (term "0") (ifseqformula "9")) -(rule "qeq_literals" (formula "8")) -(rule "true_left" (formula "8")) -(rule "arrayLengthIsAnInt" (formula "9") (term "0")) -(builtin "One Step Simplification" (formula "9")) -(rule "true_left" (formula "9")) -(rule "arrayLengthNotNegative" (formula "9") (term "0")) -(rule "applyEq" (formula "9") (term "0") (ifseqformula "10")) -(rule "qeq_literals" (formula "9")) -(rule "true_left" (formula "9")) -(rule "onlyCreatedObjectsAreReferenced" (formula "6") (term "0,0") (ifseqformula "1")) -(rule "replace_known_right" (formula "6") (term "0") (ifseqformula "12")) -(builtin "One Step Simplification" (formula "6")) -(rule "onlyCreatedObjectsAreReferenced" (formula "8") (term "0,0") (ifseqformula "1")) -(rule "replace_known_right" (formula "8") (term "0") (ifseqformula "16")) -(builtin "One Step Simplification" (formula "8")) -(rule "onlyCreatedObjectsAreReferenced" (formula "10") (term "0,0") (ifseqformula "1")) -(rule "replace_known_right" (formula "10") (term "0") (ifseqformula "15")) -(builtin "One Step Simplification" (formula "10")) -(rule "onlyCreatedObjectsAreReferenced" (formula "12") (term "0,0") (ifseqformula "1")) -(rule "replace_known_right" (formula "12") (term "0") (ifseqformula "17")) -(builtin "One Step Simplification" (formula "12")) -(rule "assignment" (formula "20") (term "1")) -(builtin "One Step Simplification" (formula "20")) -(rule "methodBodyExpand" (formula "20") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "20")) -(rule "eval_order_array_access1" (formula "20") (term "1") (inst "#v0=x_arr")) -(rule "variableDeclarationAssign" (formula "20") (term "1")) -(rule "variableDeclaration" (formula "20") (term "1") (newnames "x_arr")) -(rule "assignment_array2" (formula "20") (term "1")) -(branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "20") (ifInst "" (formula "19"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "inEqSimp_leqRight" (formula "20")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "6")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_to_primitive_array_component" (formula "20") (term "1")) - (branch "Normal Execution (x_arr != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (builtin "One Step Simplification" (formula "21")) - (rule "qeq_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "add_zero_right" (formula "1") (term "0")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "applyEq" (formula "1") (term "0,1,0") (ifseqformula "8")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "eval_order_array_access1" (formula "20") (term "1") (inst "#v0=x_arr")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x_arr_1")) - (rule "assignment_array2" (formula "20") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "20") (ifInst "" (formula "19"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "inEqSimp_leqRight" (formula "20")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "21") (term "0,1,0") (inst "selectSK=arr_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "22") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "6")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_to_primitive_array_component" (formula "20") (term "1")) - (branch "Normal Execution (x_arr_1 != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "19"))) - (builtin "One Step Simplification" (formula "21")) - (rule "qeq_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "applyEq" (formula "1") (term "0,1,0") (ifseqformula "10")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "eval_order_array_access1" (formula "20") (term "1") (inst "#v0=x_arr")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x_arr_2")) - (rule "assignment_array2" (formula "20") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "20") (ifInst "" (formula "19"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "inEqSimp_leqRight" (formula "20")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "21") (term "0,1,0") (inst "selectSK=arr_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "22") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "6")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_to_primitive_array_component" (formula "20") (term "1")) - (branch "Normal Execution (x_arr_2 != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "17"))) - (builtin "One Step Simplification" (formula "21")) - (rule "qeq_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "applyEq" (formula "1") (term "0,1,0") (ifseqformula "12")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "eval_order_array_access1" (formula "20") (term "1") (inst "#v0=x_arr")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x_arr_3")) - (rule "assignment_array2" (formula "20") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "20") (ifInst "" (formula "19"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "inEqSimp_leqRight" (formula "20")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "21") (term "0,1,0") (inst "selectSK=arr_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "22") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "6")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "eval_order_array_access3" (formula "20") (term "1") (inst "#v0=x_arr_4") (inst "#v2=x") (inst "#v1=x_1")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x_arr_4")) - (rule "assignment" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x")) - (rule "assignment" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "commute_or_2" (formula "14") (term "0")) - (rule "commute_or" (formula "14") (term "0,0")) - (rule "arrayLengthNotNegative" (formula "5") (term "0")) - (rule "applyEq" (formula "5") (term "0") (ifseqformula "6")) - (rule "qeq_literals" (formula "5")) - (rule "true_left" (formula "5")) - (rule "arrayLengthIsAnInt" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "true_left" (formula "5")) - (rule "arrayLengthIsAnInt" (formula "7") (term "0")) - (builtin "One Step Simplification" (formula "7")) - (rule "true_left" (formula "7")) - (rule "arrayLengthIsAnInt" (formula "9") (term "0")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "arrayLengthIsAnInt" (formula "11") (term "0")) - (builtin "One Step Simplification" (formula "11")) - (rule "true_left" (formula "11")) - (rule "arrayLengthNotNegative" (formula "9") (term "0")) - (rule "applyEq" (formula "9") (term "0") (ifseqformula "10")) - (rule "qeq_literals" (formula "9")) - (rule "true_left" (formula "9")) - (rule "arrayLengthNotNegative" (formula "7") (term "0")) - (rule "applyEq" (formula "7") (term "0") (ifseqformula "8")) - (rule "qeq_literals" (formula "7")) - (rule "true_left" (formula "7")) - (rule "arrayLengthIsAnInt" (formula "13") (term "0")) - (builtin "One Step Simplification" (formula "13")) - (rule "true_left" (formula "13")) - (rule "arrayLengthNotNegative" (formula "11") (term "0")) - (rule "applyEq" (formula "11") (term "0") (ifseqformula "12")) - (rule "qeq_literals" (formula "11")) - (rule "true_left" (formula "11")) - (rule "arrayLengthNotNegative" (formula "13") (term "0")) - (rule "applyEq" (formula "13") (term "0") (ifseqformula "14")) - (rule "qeq_literals" (formula "13")) - (rule "true_left" (formula "13")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x_1")) - (rule "compound_addition_2" (formula "20") (term "1") (inst "#v1=x_3") (inst "#v0=x_2")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x_2")) - (rule "eval_order_array_access4" (formula "20") (term "1") (inst "#v0=x_arr_5")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x_arr_5")) - (rule "assignment_array2" (formula "20") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "20") (ifInst "" (formula "19"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "inEqSimp_leqRight" (formula "20")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "21") (term "0,1,0") (inst "selectSK=arr_3")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "sortsDisjointModuloNull" (formula "1") (term "0,0")) - (rule "replace_known_right" (formula "1") (term "1,0,0") (ifseqformula "21")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "17"))) - (rule "applyEqReverse" (formula "22") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "6")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_array2" (formula "20") (term "1")) - (branch "Normal Execution (x_arr_5 != null)" - (builtin "One Step Simplification" (formula "20") (ifInst "" (formula "15"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "inEqSimp_leqRight" (formula "20")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "21") (term "0,1,0") (inst "selectSK=arr_4")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "22") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "8")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x_3")) - (rule "eval_order_array_access4" (formula "20") (term "1") (inst "#v0=x_arr_5")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x_arr_6")) - (rule "assignment_array2" (formula "20") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "20") (ifInst "" (formula "19"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "inEqSimp_leqRight" (formula "20")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "21") (term "0,1,0") (inst "selectSK=arr_5")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "replaceKnownSelect_taclet000_0" (formula "1") (term "2,0")) - (rule "replaceKnownAuxiliaryConstant_taclet000_1" (formula "1") (term "2,0")) - (rule "sortsDisjointModuloNull" (formula "1") (term "0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0") (ifseqformula "20")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "21"))) - (rule "applyEqReverse" (formula "22") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "6")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_array2" (formula "20") (term "1")) - (branch "Normal Execution (x_arr_6 != null)" - (builtin "One Step Simplification" (formula "20") (ifInst "" (formula "18"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "inEqSimp_leqRight" (formula "20")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "21") (term "0,1,0") (inst "selectSK=arr_6")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "equal_literals" (formula "1") (term "1,0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "22") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "10")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignmentAdditionInt" (formula "20") (term "1")) - (rule "translateJavaAddInt" (formula "20") (term "0,0,1")) - (builtin "One Step Simplification" (formula "20")) - (rule "add_literals" (formula "20") (term "0,1,0")) - (rule "assignment_to_primitive_array_component" (formula "20") (term "1")) - (branch "Normal Execution (x_arr_4 != null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "18"))) - (builtin "One Step Simplification" (formula "21")) - (rule "qeq_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "inEqSimp_ltToLeq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "applyEq" (formula "1") (term "0,1,0") (ifseqformula "14")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "add_literals" (formula "1") (term "0")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "returnUnfold" (formula "20") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x_4")) - (rule "eval_order_array_access4" (formula "20") (term "1") (inst "#v0=x_arr")) - (rule "variableDeclarationAssign" (formula "20") (term "1")) - (rule "variableDeclaration" (formula "20") (term "1") (newnames "x_arr_7")) - (rule "assignment_array2" (formula "20") (term "1")) - (branch "Normal Execution (_array != null)" - (builtin "One Step Simplification" (formula "20") (ifInst "" (formula "19"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "inEqSimp_leqRight" (formula "20")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "21") (term "0,1,0") (inst "selectSK=arr_7")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "replaceKnownSelect_taclet0000000_5" (formula "1") (term "2,0")) - (rule "replaceKnownAuxiliaryConstant_taclet0000000_8" (formula "1") (term "2,0")) - (rule "sortsDisjointModuloNull" (formula "1") (term "0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0") (ifseqformula "19")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "21"))) - (rule "applyEqReverse" (formula "22") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "6")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "assignment_array2" (formula "20") (term "1")) - (branch "Normal Execution (x_arr_7 != null)" - (builtin "One Step Simplification" (formula "20") (ifInst "" (formula "17"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "inEqSimp_leqRight" (formula "20")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "pullOutSelect" (formula "21") (term "0,1,0") (inst "selectSK=arr_8")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "22") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "14")) - (rule "add_literals" (formula "1") (term "0")) - (rule "qeq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "methodCallReturn" (formula "20") (term "1")) - (rule "assignment" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (rule "methodCallEmpty" (formula "20") (term "1")) - (rule "tryEmpty" (formula "20") (term "1")) - (rule "emptyModality" (formula "20") (term "1")) - (builtin "One Step Simplification" (formula "20")) - (opengoal " ") - ) - (branch "Null Reference (x_arr_7 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "18"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr_7 != null, but 3 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "18"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "14")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 3 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (x_arr_4 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "18"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr_4 != null, but x Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "18"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "14")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (x_arr_6 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "19"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr_6 != null, but 1 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "19"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "10")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 1 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (x_arr_5 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr_5 != null, but 0 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "8")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 0 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 3 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (x_arr_2 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "17"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr_2 != null, but 2 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "17"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "12")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 2 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (x_arr_1 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "19"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr_1 != null, but 1 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "19"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "10")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (_array != null, but 1 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (x_arr = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (rule "closeFalse" (formula "1")) - ) - (branch "Index Out of Bounds (x_arr != null, but 0 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "16"))) - (builtin "One Step Simplification" (formula "21")) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "8")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Null Reference (_array = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "closeFalse" (formula "1")) -) -(branch "Index Out of Bounds (_array != null, but 0 Out of Bounds!)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "20"))) - (rule "less_literals" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEq" (formula "1") (term "0") (ifseqformula "6")) - (rule "leq_literals" (formula "1")) - (rule "closeFalse" (formula "1")) -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticFields/SimpleStaticFields.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticFields/SimpleStaticFields.java deleted file mode 100644 index 0bf1ce04a61..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticFields/SimpleStaticFields.java +++ /dev/null @@ -1,15 +0,0 @@ - -public class SimpleStaticFields { - private static int x; - private static int y; - private static int z; - private static int result; - - public static int main() { - x = 40; - y = 2; - z = -4711; - result = x + y; - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticFields/SimpleStaticFields.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticFields/SimpleStaticFields.proof deleted file mode 100644 index f99c36df83d..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticFields/SimpleStaticFields.proof +++ /dev/null @@ -1,143 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Mar 26 14:55:30 CEST 2018 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "SimpleStaticFields#main()", - } - -\proof { -(keyLog "0" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "77") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate")) -(rule "impRight" (formula "1")) -(rule "assignment" (formula "2")) -(rule "methodBodyExpand" (formula "2") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "2")) -(rule "activeUseStaticFieldWriteAccess" (formula "2") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment_write_static_attribute" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "activeUseStaticFieldWriteAccess" (formula "2") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x_1")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment_write_static_attribute" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "activeUseStaticFieldWriteAccess" (formula "2") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x_2")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment_write_static_attribute" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "compound_addition_2" (formula "2") (term "1") (inst "#v1=x_1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x_3")) -(rule "activeUseStaticFieldReadAccess" (formula "2") (term "1")) -(rule "assignment_read_static_attribute" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "dismissNonSelectedField" (formula "2") (term "0,1,0")) -(rule "dismissNonSelectedField" (formula "2") (term "0,1,0")) -(rule "pullOutSelect" (formula "2") (term "0,1,0") (inst "selectSK=SimpleStaticFields_x_0")) -(rule "simplifySelectOfStore" (formula "1")) -(builtin "One Step Simplification" (formula "1")) -(rule "castDel" (formula "1") (term "0")) -(rule "applyEqReverse" (formula "3") (term "0,1,0") (ifseqformula "1")) -(rule "hideAuxiliaryEq" (formula "1")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x_4")) -(rule "activeUseStaticFieldReadAccess" (formula "2") (term "1")) -(rule "assignment_read_static_attribute" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "dismissNonSelectedField" (formula "2") (term "0,1,0")) -(rule "pullOutSelect" (formula "2") (term "0,1,0") (inst "selectSK=SimpleStaticFields_y_0")) -(rule "simplifySelectOfStore" (formula "1")) -(builtin "One Step Simplification" (formula "1")) -(rule "castDel" (formula "1") (term "0")) -(rule "applyEqReverse" (formula "3") (term "0,1,0") (ifseqformula "1")) -(rule "hideAuxiliaryEq" (formula "1")) -(rule "activeUseAddition" (formula "2") (term "1") (inst "#v0=x_5")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x_5")) -(rule "assignmentAdditionInt" (formula "2") (term "1")) -(rule "translateJavaAddInt" (formula "2") (term "0,0,1")) -(builtin "One Step Simplification" (formula "2")) -(rule "add_literals" (formula "2") (term "0,1,0")) -(rule "assignment_write_static_attribute" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "returnUnfold" (formula "2") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x_6")) -(rule "activeUseStaticFieldReadAccess" (formula "2") (term "1")) -(rule "assignment_read_static_attribute" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "pullOutSelect" (formula "2") (term "0,1,0") (inst "selectSK=SimpleStaticFields_result_0")) -(rule "simplifySelectOfStore" (formula "1")) -(builtin "One Step Simplification" (formula "1")) -(rule "castDel" (formula "1") (term "0")) -(rule "applyEqReverse" (formula "3") (term "0,1,0") (ifseqformula "1")) -(rule "hideAuxiliaryEq" (formula "1")) -(rule "methodCallReturn" (formula "2") (term "1")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "methodCallEmpty" (formula "2") (term "1")) -(rule "tryEmpty" (formula "2") (term "1")) -(rule "emptyModality" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(opengoal " ") -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticLoopInvariantTest/SimpleStatiLoopInvariantTest.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticLoopInvariantTest/SimpleStatiLoopInvariantTest.java deleted file mode 100644 index db55faaca59..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticLoopInvariantTest/SimpleStatiLoopInvariantTest.java +++ /dev/null @@ -1,16 +0,0 @@ - -public class SimpleStatiLoopInvariantTest { - private static int i; - - public static int main() { - i = 2; - /*@ loop_invariant i >= 0; - @ decreasing i; - @ assignable i; - @*/ - while (i > 0) { - i--; - } - return i; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticLoopInvariantTest/SimpleStatiLoopInvariantTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticLoopInvariantTest/SimpleStatiLoopInvariantTest.proof deleted file mode 100644 index f060b77f162..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleStaticLoopInvariantTest/SimpleStatiLoopInvariantTest.proof +++ /dev/null @@ -1,345 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Wed Feb 18 16:56:09 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "SimpleStatiLoopInvariantTest#main()", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "406") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "impRight" (formula "1")) -(rule "assignment" (formula "2")) -(rule "methodBodyExpand" (formula "2") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "2")) -(rule "activeUseStaticFieldWriteAccess" (formula "2") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "x")) -(rule "assignment" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "assignment_write_static_attribute" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(builtin "Loop Invariant" (formula "2") (newnames "variant,b,heapBefore_LOOP,heap_After_LOOP,anon_heap_LOOP,o,f")) -(branch "Invariant Initially Valid" - (builtin "One Step Simplification" (formula "2")) - (rule "wellFormedStorePrimitive" (formula "2") (term "1")) - (rule "replace_known_left" (formula "2") (term "1") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "2")) - (rule "inEqSimp_geqRight" (formula "2")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=SimpleStatiLoopInvariantTest_i_2")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "2") (term "0") (ifseqformula "1")) - (rule "leq_literals" (formula "2")) - (rule "closeFalse" (formula "2")) -) -(branch "Body Preserves Invariant" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "4")) - (rule "impRight" (formula "4")) - (rule "eqSymm" (formula "5") (term "1,0,0,1,0,0,1,1,0,1")) - (rule "elementOfSingleton" (formula "5") (term "0,0,0,0,1,0,0,1,1,0,1")) - (rule "pullOutSelect" (formula "5") (term "0,1,1,1,0") (inst "selectSK=SimpleStatiLoopInvariantTest_i_1")) - (rule "applyEq" (formula "5") (term "0") (ifseqformula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfSingleton" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "5") (term "0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "6") (term "0,1,1,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "boxToDiamond" (formula "1") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "notLeft" (formula "1")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "b_2")) - (rule "compound_greater_than_comparison_1" (formula "4") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_3")) - (rule "activeUseStaticFieldReadAccess" (formula "4") (term "1")) - (rule "assignment_read_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "replaceKnownSelect_taclet1_0" (formula "4") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "4") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "inEqSimp_gtToGeq" (formula "4") (term "0,0,1,0")) - (rule "times_zero_1" (formula "4") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "4") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "4") (term "0,0,1,0")) - (rule "mul_literals" (formula "4") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "notRight" (formula "4")) - (rule "inEqSimp_subsumption1" (formula "4") (ifseqformula "1")) - (rule "leq_literals" (formula "4") (term "0")) - (builtin "One Step Simplification" (formula "4")) - (rule "true_left" (formula "4")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "exc_1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "thrownExc")) - (rule "ifUnfold" (formula "4") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_4")) - (rule "compound_greater_than_comparison_1" (formula "4") (term "1") (inst "#v0=x_5")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_5")) - (rule "activeUseStaticFieldReadAccess" (formula "4") (term "1")) - (rule "assignment_read_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "replaceKnownSelect_taclet1_0" (formula "4") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "4") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "ifSplit" (formula "4")) - (branch "if x_4 true" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "inEqSimp_gtToGeq" (formula "1")) - (rule "times_zero_1" (formula "1") (term "1,0,0")) - (rule "add_zero_right" (formula "1") (term "0,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "postdecrement" (formula "4") (term "1")) - (rule "compound_subtraction_1" (formula "4") (term "1") (inst "#v=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_6")) - (rule "compound_int_cast_expression" (formula "4") (term "1") (inst "#v=x_7")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_7")) - (rule "activeUseStaticFieldReadAccess" (formula "4") (term "1")) - (rule "assignment_read_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "replaceKnownSelect_taclet1_0" (formula "4") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet1_1" (formula "4") (term "0,1,0")) - (rule "widening_identity_cast_5" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "activeUseSubtraction" (formula "4") (term "1") (inst "#v0=x_7")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_8")) - (rule "assignmentSubtractionInt" (formula "4") (term "1")) - (rule "translateJavaSubInt" (formula "4") (term "0,0,1")) - (builtin "One Step Simplification" (formula "4")) - (rule "polySimp_elimSub" (formula "4") (term "0,1,0")) - (rule "mul_literals" (formula "4") (term "1,0,1,0")) - (rule "polySimp_addComm0" (formula "4") (term "0,1,0")) - (rule "assignment_write_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "eqSymm" (formula "4") (term "1,0,0,1,0,0")) - (rule "precOfInt" (formula "4") (term "1,0")) - (rule "dismissNonSelectedField" (formula "4") (term "0,0,1,1,0,0,0,1,0,0")) - (rule "inEqSimp_ltToLeq" (formula "4") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "4") (term "1,0,0,1,1,0")) - (rule "inEqSimp_commuteLeq" (formula "4") (term "0,1,0")) - (rule "inEqSimp_sepPosMonomial0" (formula "4") (term "1,1,0")) - (rule "polySimp_mulComm0" (formula "4") (term "1,1,1,0")) - (rule "polySimp_rightDist" (formula "4") (term "1,1,1,0")) - (rule "mul_literals" (formula "4") (term "0,1,1,1,0")) - (rule "polySimp_mulLiterals" (formula "4") (term "1,1,1,1,0")) - (rule "polySimp_elimOne" (formula "4") (term "1,1,1,1,0")) - (rule "pullOutSelect" (formula "4") (term "0,0,0,0") (inst "selectSK=SimpleStatiLoopInvariantTest_i_3")) - (rule "applyEq" (formula "5") (term "0,1,1,0") (ifseqformula "1")) - (rule "applyEq" (formula "5") (term "0,0,1,0") (ifseqformula "1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "5") (term "0,0,0,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "5") (term "0,1,1,0") (ifseqformula "1")) - (rule "applyEqReverse" (formula "5") (term "0,0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "inEqSimp_homoInEq0" (formula "4") (term "1,1,0")) - (rule "polySimp_pullOutFactor1" (formula "4") (term "0,1,1,0")) - (rule "add_literals" (formula "4") (term "1,0,1,1,0")) - (rule "times_zero_1" (formula "4") (term "0,1,1,0")) - (rule "qeq_literals" (formula "4") (term "1,1,0")) - (builtin "One Step Simplification" (formula "4")) - (rule "inEqSimp_sepPosMonomial1" (formula "4") (term "0,0,0")) - (rule "mul_literals" (formula "4") (term "1,0,0,0")) - (rule "replace_known_left" (formula "4") (term "0,0,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "inEqSimp_sepPosMonomial1" (formula "4") (term "1,0")) - (rule "mul_literals" (formula "4") (term "1,1,0")) - (rule "replace_known_left" (formula "4") (term "1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "cut_direct" (formula "4") (term "1")) - (branch "CUT: SETAccumulate(heap[SimpleStatiLoopInvariantTest.i := 2] [anon({(null, SimpleStatiLoopInvariantTest::$i)}, anon_heap_LOOP<>)] [SimpleStatiLoopInvariantTest.i := -1 + SimpleStatiLoopInvariantTest.i@anon_heap_LOOP<>], null) TRUE" - (builtin "One Step Simplification" (formula "5")) - (rule "allRight" (formula "5") (inst "sk=f_0")) - (rule "allRight" (formula "5") (inst "sk=o_0")) - (rule "orRight" (formula "5")) - (rule "orRight" (formula "5")) - (rule "pullOutSelect" (formula "7") (term "1") (inst "selectSK=f_0_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "applyEqReverse" (formula "8") (term "1") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "pullOutSelect" (formula "7") (term "0") (inst "selectSK=f_0_1")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "1,0")) - (rule "eqSymm" (formula "8")) - (rule "eqSymm" (formula "1") (term "1,0,0")) - (rule "eqSymm" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "1")) - (rule "simplifySelectOfAnon" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "replaceKnownSelect_taclet001_4" (formula "1") (term "2,0")) - (rule "replaceKnownAuxiliaryConstant_taclet001_5" (formula "1") (term "2,0")) - (rule "dismissNonSelectedField" (formula "1") (term "0,0,1,1,0,0")) - (rule "replace_known_right" (formula "1") (term "1,0,0") (ifseqformula "7")) - (builtin "One Step Simplification" (formula "1")) - (rule "elementOfSingleton" (formula "1") (term "0,0,0")) - (rule "replace_known_right" (formula "1") (term "0,0,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) - (rule "closeFalse" (formula "1")) - ) - (branch "CUT: SETAccumulate(heap[SimpleStatiLoopInvariantTest.i := 2] [anon({(null, SimpleStatiLoopInvariantTest::$i)}, anon_heap_LOOP<>)] [SimpleStatiLoopInvariantTest.i := -1 + SimpleStatiLoopInvariantTest.i@anon_heap_LOOP<>], null) FALSE" - (builtin "One Step Simplification" (formula "5")) - (rule "false_right" (formula "5")) - (opengoal " ") - ) - ) - (branch "if x_4 false" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "5")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_gtRight" (formula "4")) - (rule "times_zero_1" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) - (rule "qeq_literals" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) -) -(branch "Use Case" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "4")) - (rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=SimpleStatiLoopInvariantTest_i_0")) - (rule "simplifySelectOfAnon" (formula "3")) - (builtin "One Step Simplification" (formula "3")) - (rule "elementOfSingleton" (formula "3") (term "0,0")) - (builtin "One Step Simplification" (formula "3")) - (rule "applyEqReverse" (formula "4") (term "0") (ifseqformula "3")) - (rule "hideAuxiliaryEq" (formula "3")) - (rule "returnUnfold" (formula "4") (term "1,0,1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "b_1")) - (rule "compound_greater_than_comparison_1" (formula "4") (term "1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_1")) - (rule "activeUseStaticFieldReadAccess" (formula "4") (term "1")) - (rule "assignment_read_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "replaceKnownSelect_taclet2_0" (formula "4") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2_1" (formula "4") (term "0,1,0")) - (rule "greater_than_comparison_simple" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "inEqSimp_gtToGeq" (formula "4") (term "0,0,1,0")) - (rule "times_zero_1" (formula "4") (term "1,0,0,0,0,1,0")) - (rule "add_zero_right" (formula "4") (term "0,0,0,0,1,0")) - (rule "inEqSimp_sepPosMonomial1" (formula "4") (term "0,0,1,0")) - (rule "mul_literals" (formula "4") (term "1,0,0,1,0")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "impRight" (formula "4")) - (rule "notLeft" (formula "1")) - (rule "inEqSimp_geqRight" (formula "4")) - (rule "mul_literals" (formula "1") (term "1,0,0")) - (rule "add_literals" (formula "1") (term "0,0")) - (rule "add_zero_left" (formula "1") (term "0")) - (rule "inEqSimp_antiSymm" (formula "4") (ifseqformula "1")) - (rule "applyEqRigid" (formula "1") (term "0") (ifseqformula "4")) - (rule "leq_literals" (formula "1")) - (rule "true_left" (formula "1")) - (rule "applyEqRigid" (formula "4") (term "0") (ifseqformula "3")) - (rule "qeq_literals" (formula "4")) - (rule "true_left" (formula "4")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "x_2")) - (rule "activeUseStaticFieldReadAccess" (formula "4") (term "1")) - (rule "assignment_read_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "replaceKnownSelect_taclet2_0" (formula "4") (term "0,1,0")) - (rule "replaceKnownAuxiliaryConstant_taclet2_1" (formula "4") (term "0,1,0")) - (rule "applyEq" (formula "4") (term "0,1,0") (ifseqformula "3")) - (rule "methodCallReturn" (formula "4") (term "1")) - (rule "assignment" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "methodCallEmpty" (formula "4") (term "1")) - (rule "tryEmpty" (formula "4") (term "1")) - (rule "emptyModality" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (opengoal " ") -) -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleThisInstanceFields/SimpleThisInstanceFields.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleThisInstanceFields/SimpleThisInstanceFields.java deleted file mode 100644 index dee230cd424..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleThisInstanceFields/SimpleThisInstanceFields.java +++ /dev/null @@ -1,15 +0,0 @@ - -public class SimpleThisInstanceFields { - private int x; - private int y; - private int z; - private int result; - - public int main() { - x = 40; - y = 2; - z = -4711; - result = x + y; - return result; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleThisInstanceFields/SimpleThisInstanceFields.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleThisInstanceFields/SimpleThisInstanceFields.proof deleted file mode 100644 index 9e9ac8003d6..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/simpleThisInstanceFields/SimpleThisInstanceFields.proof +++ /dev/null @@ -1,127 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Fri Jan 30 14:53:56 CET 2015 -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets= -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_EXPAND -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=1000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,Strings-Strings\\:on , reach-reach\\:on , JavaCard-JavaCard\\:off , assertions-assertions\\:on , bigint-bigint\\:on , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , modelFields-modelFields\\:showSatisfiability , initialisation-initialisation\\:disableStaticInitialisation , sequences-sequences\\:on , runtimeExceptions-runtimeExceptions\\:allow , integerSimplificationRules-integerSimplificationRules\\:full , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , moreSeqRules-moreSeqRules\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "SimpleThisInstanceFields#main()", - } - -\proof { -(keyLog "0" (keyUser "Martin" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "245") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre")) -(rule "impRight" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "andLeft" (formula "1")) -(rule "notLeft" (formula "2")) -(rule "assignment" (formula "5")) -(rule "methodBodyExpand" (formula "5") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "assignment_write_attribute_this" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "eval_order_access4_this" (formula "5") (term "1") (inst "#v1=x")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "x")) -(rule "compound_addition_2" (formula "5") (term "1") (inst "#v1=x_2") (inst "#v0=x_1")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "x_1")) -(rule "assignment_read_attribute_this" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "dismissNonSelectedField" (formula "5") (term "0,1,0")) -(rule "dismissNonSelectedField" (formula "5") (term "0,1,0")) -(rule "pullOutSelect" (formula "5") (term "0,1,0") (inst "selectSK=SimpleThisInstanceFields_x_0")) -(rule "simplifySelectOfStore" (formula "1")) -(builtin "One Step Simplification" (formula "1")) -(rule "castDel" (formula "1") (term "0")) -(rule "applyEqReverse" (formula "6") (term "0,1,0") (ifseqformula "1")) -(rule "hideAuxiliaryEq" (formula "1")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "x_2")) -(rule "assignment_read_attribute_this" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "dismissNonSelectedField" (formula "5") (term "0,1,0")) -(rule "pullOutSelect" (formula "5") (term "0,1,0") (inst "selectSK=SimpleThisInstanceFields_y_0")) -(rule "simplifySelectOfStore" (formula "1")) -(builtin "One Step Simplification" (formula "1")) -(rule "castDel" (formula "1") (term "0")) -(rule "applyEqReverse" (formula "6") (term "0,1,0") (ifseqformula "1")) -(rule "hideAuxiliaryEq" (formula "1")) -(rule "assignmentAdditionInt" (formula "5") (term "1")) -(rule "translateJavaAddInt" (formula "5") (term "0,0,1")) -(builtin "One Step Simplification" (formula "5")) -(rule "add_literals" (formula "5") (term "0,1,0")) -(rule "assignment_write_attribute_this" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "returnUnfold" (formula "5") (term "1") (inst "#v0=x")) -(rule "variableDeclarationAssign" (formula "5") (term "1")) -(rule "variableDeclaration" (formula "5") (term "1") (newnames "x_3")) -(rule "assignment_read_attribute_this" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "pullOutSelect" (formula "5") (term "0,1,0") (inst "selectSK=SimpleThisInstanceFields_result_0")) -(rule "simplifySelectOfStore" (formula "1")) -(builtin "One Step Simplification" (formula "1")) -(rule "castDel" (formula "1") (term "0")) -(rule "applyEqReverse" (formula "6") (term "0,1,0") (ifseqformula "1")) -(rule "hideAuxiliaryEq" (formula "1")) -(rule "methodCallReturn" (formula "5") (term "1")) -(rule "assignment" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(rule "methodCallEmpty" (formula "5") (term "1")) -(rule "tryEmpty" (formula "5") (term "1")) -(rule "emptyModality" (formula "5") (term "1")) -(builtin "One Step Simplification" (formula "5")) -(opengoal " ") -) - -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/valueChange/ValueChange.java b/key.core.symbolic_execution/src/test/resources/testcase/slicing/valueChange/ValueChange.java deleted file mode 100644 index a0a2f7ad8d9..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/valueChange/ValueChange.java +++ /dev/null @@ -1,27 +0,0 @@ - -public class ValueChange { - private int value; - - public static ValueChange a; - - public static ValueChange b; - - /*@ normal_behavior - @ requires a != b; - @ requires \invariant_for(a); - @ requires \invariant_for(b); - @ ensures \result == -4711; - @ assignable \everything; - @*/ - public static int main() { - a.value = 47; - b.value = -4711; - int resultValue = zero() + a.value; - return resultValue; - } - - private static int zero() { - a = b; - return 0; - } -} diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/valueChange/ValueChange.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/valueChange/ValueChange.proof deleted file mode 100644 index 8925596df5a..00000000000 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/valueChange/ValueChange.proof +++ /dev/null @@ -1,393 +0,0 @@ -\profile "Java Profile for Symbolic Execution"; - -\settings { -"#Proof-Settings-Config-File -#Mon Mar 26 14:38:35 CEST 2018 -[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON -[StrategyProperty]VBT_PHASE=VBT_SYM_EX -[SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end -[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF -[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER -[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT -[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF -[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF -[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_INSTANTIATE -[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS -[SMTSettings]instantiateHierarchyAssumptions=true -[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF -[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF -[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL -[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE -[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF -[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED -[Strategy]Timeout=-1 -[Strategy]MaximumNumberOfAutomaticApplications=10000 -[SMTSettings]integersMaximum=2147483645 -[Choice]DefaultChoices=methodExpansion-methodExpansion:noRestriction,assertions-assertions\\:on , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:allow , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:showSatisfiability , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off -[SMTSettings]useConstantsForBigOrSmallIntegers=true -[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON -[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE -[SMTSettings]maxGenericSorts=2 -[SMTSettings]integersMinimum=-2147483645 -[SMTSettings]invariantForall=false -[SMTSettings]UseBuiltUniqueness=false -[SMTSettings]explicitTypeHierarchy=false -[Strategy]ActiveStrategy=Symbolic Execution Strategy -[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED -[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE -" -} - -\javaSource ""; - -\proofObligation { - "name": "main()", - "addSymbolicExecutionLabel": true, - "addUninterpretedPredicate": true, - "class": "de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO", - "method": "ValueChange#main()", - } - -\proof { -(keyLog "0" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "1" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "2" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "3" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "4" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) -(keyLog "5" (keyUser "bubel" ) (keyVersion "90bb886cd7b78027c8f6703803461f09e5699bb9")) - -(autoModeTime "270") - -(branch "dummy ID" -(builtin "One Step Simplification" (formula "1") (newnames "heapAtPre,SETAccumulate")) -(rule "impRight" (formula "1")) -(rule "assignment" (formula "2")) -(rule "methodBodyExpand" (formula "2") (term "1") (newnames "heapBefore_main,savedHeapBefore_main")) -(builtin "One Step Simplification" (formula "2")) -(rule "eval_order_access1" (formula "2") (term "1") (inst "#v0=v")) -(rule "variableDeclarationAssign" (formula "2") (term "1")) -(rule "variableDeclaration" (formula "2") (term "1") (newnames "v")) -(rule "activeUseStaticFieldReadAccess" (formula "2") (term "1")) -(rule "assignment_read_static_attribute" (formula "2") (term "1")) -(builtin "One Step Simplification" (formula "2")) -(rule "onlyCreatedObjectsAreReferenced" (formula "2") (term "0,1,0") (ifseqformula "1")) -(rule "assignment_write_attribute" (formula "3") (term "1")) -(branch "Normal Execution (v != null)" - (builtin "One Step Simplification" (formula "3")) - (builtin "One Step Simplification" (formula "4")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "3")) - (builtin "One Step Simplification" (formula "1")) - (rule "eval_order_access1" (formula "4") (term "1") (inst "#v0=v")) - (rule "variableDeclarationAssign" (formula "4") (term "1")) - (rule "variableDeclaration" (formula "4") (term "1") (newnames "v_1")) - (rule "activeUseStaticFieldReadAccess" (formula "4") (term "1")) - (rule "assignment_read_static_attribute" (formula "4") (term "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "dismissNonSelectedField" (formula "4") (term "0,1,0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "4") (term "0,1,0") (ifseqformula "2")) - (rule "assignment_write_attribute" (formula "5") (term "1")) - (branch "Normal Execution (v_1 != null)" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "6")) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "resultValue")) - (rule "compound_addition_2" (formula "6") (term "1") (inst "#v1=x_1") (inst "#v0=x")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x")) - (rule "methodCallWithAssignmentWithinClass" (formula "6") (term "1") (inst "#v0=x_2")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_2")) - (rule "methodBodyExpand" (formula "6") (term "1") (newnames "heapBefore_zero,savedHeapBefore_zero")) - (builtin "One Step Simplification" (formula "6")) - (rule "activeUseStaticFieldWriteAccess" (formula "6") (term "1") (inst "#v0=v")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "v_2")) - (rule "activeUseStaticFieldReadAccess" (formula "6") (term "1")) - (rule "assignment_read_static_attribute" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "dismissNonSelectedField" (formula "6") (term "0,1,0")) - (rule "dismissNonSelectedField" (formula "6") (term "0,1,0")) - (rule "assignment_write_static_attribute" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "blockEmpty" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "x_1")) - (rule "eval_order_access2" (formula "6") (term "1") (inst "#v0=v")) - (rule "variableDeclarationAssign" (formula "6") (term "1")) - (rule "variableDeclaration" (formula "6") (term "1") (newnames "v_3")) - (rule "activeUseStaticFieldReadAccess" (formula "6") (term "1")) - (rule "assignment_read_static_attribute" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=ValueChange_a_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignment_read_attribute" (formula "6") (term "1")) - (branch "Normal Execution (v_3 != null)" - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "5"))) - (rule "false_right" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "dismissNonSelectedField" (formula "6") (term "0,1,0")) - (rule "pullOutSelect" (formula "6") (term "0,1,0") (inst "selectSK=ValueChange_value_0")) - (rule "simplifySelectOfStore" (formula "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "castDel" (formula "1") (term "0")) - (rule "applyEqReverse" (formula "7") (term "0,1,0") (ifseqformula "1")) - (rule "hideAuxiliaryEq" (formula "1")) - (rule "assignmentAdditionInt" (formula "6") (term "1")) - (rule "translateJavaAddInt" (formula "6") (term "0,0,1")) - (builtin "One Step Simplification" (formula "6")) - (rule "add_zero_left" (formula "6") (term "0,1,0")) - (rule "methodCallReturn" (formula "6") (term "1")) - (rule "assignment" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "methodCallEmpty" (formula "6") (term "1")) - (rule "tryEmpty" (formula "6") (term "1")) - (rule "emptyModality" (formula "6") (term "1")) - (builtin "One Step Simplification" (formula "6")) - (opengoal " ") - ) - (branch "Null Reference (v_3 = null)" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) - (rule "closeFalse" (formula "1")) - ) - ) - (branch "Null Reference (v_1 = null)" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "replace_known_left" (formula "2") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "throwUnfold" (formula "5") (term "1") (inst "#v0=n")) - (rule "variableDeclarationAssign" (formula "5") (term "1")) - (rule "variableDeclaration" (formula "5") (term "1") (newnames "n")) - (builtin "Use Operation Contract" (formula "5") (newnames "heapBefore_NullPointerException,self,exc_0,heapAfter_NullPointerException,anon_heap_NullPointerException") (contract "java.lang.NullPointerException[java.lang.NullPointerException::NullPointerException()].JML normal_behavior operation contract.0")) - (branch "Post (NullPointerException)" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "7")) - (rule "andLeft" (formula "5")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "6") (term "1,1,0,1,0") (ifseqformula "5")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "8")) - (rule "andLeft" (formula "6")) - (rule "notLeft" (formula "6")) - (rule "andLeft" (formula "6")) - (rule "notLeft" (formula "6")) - (rule "replace_known_right" (formula "6") (term "0") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "6")) - (rule "dismissNonSelectedField" (formula "12") (term "0")) - (rule "pullOutSelect" (formula "8") (term "0") (inst "selectSK=java_lang_Throwable_message_0")) - (rule "simplifySelectOfAnonEQ" (formula "8") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "14"))) - (rule "dismissNonSelectedField" (formula "8") (term "2,0")) - (rule "dismissNonSelectedField" (formula "8") (term "0,0,1,0,0")) - (rule "replace_known_right" (formula "8") (term "0,1,0,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "8")) - (rule "applyEqReverse" (formula "9") (term "0") (ifseqformula "8")) - (rule "hideAuxiliaryEq" (formula "8")) - (rule "pullOutSelect" (formula "9") (term "0") (inst "selectSK=java_lang_Throwable_cause_0")) - (rule "simplifySelectOfAnonEQ" (formula "9") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "14"))) - (rule "dismissNonSelectedField" (formula "9") (term "0,0,1,0,0")) - (rule "replace_known_right" (formula "9") (term "0,1,0,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "9")) - (rule "applyEqReverse" (formula "10") (term "0") (ifseqformula "9")) - (rule "hideAuxiliaryEq" (formula "9")) - (rule "commuteUnion" (formula "5") (term "1,0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "8") (term "0") (ifseqformula "4")) - (rule "replace_known_left" (formula "8") (term "0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (rule "onlyCreatedObjectsAreReferenced" (formula "9") (term "0") (ifseqformula "4")) - (rule "replace_known_left" (formula "9") (term "0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "assignment" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "methodCallParamThrow" (formula "15") (term "1")) - (rule "tryCatchThrow" (formula "15") (term "1")) - (rule "ifElseUnfold" (formula "15") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "x")) - (rule "equality_comparison_simple" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "replace_known_right" (formula "15") (term "0,0,1,0") (ifseqformula "13")) - (builtin "One Step Simplification" (formula "15")) - (rule "ifElseSplit" (formula "15")) - (branch "if x true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "ifElseSplit" (formula "15")) - (branch "if n instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "15") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "assignment" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (rule "emptyModality" (formula "15") (term "1")) - (builtin "One Step Simplification" (formula "15")) - (opengoal " ") - ) - (branch "if n instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Exceptional Post (NullPointerException)" - (builtin "One Step Simplification" (formula "5")) - (builtin "One Step Simplification" (formula "7")) - (rule "andLeft" (formula "5")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "6") (term "1,0,0") (ifseqformula "5")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "6") (term "1,1,0,1,0") (ifseqformula "5")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "8")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "10")) - (rule "andLeft" (formula "8")) - (rule "notLeft" (formula "6")) - (rule "close" (formula "14") (ifseqformula "13")) - ) - (branch "Pre (NullPointerException)" - (builtin "One Step Simplification" (formula "5")) - (rule "wellFormedStorePrimitive" (formula "5")) - (rule "close" (formula "5") (ifseqformula "3")) - ) - ) -) -(branch "Null Reference (v = null)" - (builtin "One Step Simplification" (formula "1")) - (builtin "One Step Simplification" (formula "4")) - (rule "replace_known_left" (formula "2") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "throwUnfold" (formula "3") (term "1") (inst "#v0=n")) - (rule "variableDeclarationAssign" (formula "3") (term "1")) - (rule "variableDeclaration" (formula "3") (term "1") (newnames "n")) - (builtin "Use Operation Contract" (formula "3") (newnames "heapBefore_NullPointerException,self,exc_0,heapAfter_NullPointerException,anon_heap_NullPointerException") (contract "java.lang.NullPointerException[java.lang.NullPointerException::NullPointerException()].JML normal_behavior operation contract.0")) - (branch "Post (NullPointerException)" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "5")) - (rule "andLeft" (formula "4")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "5") (term "1,1,0,1,0") (ifseqformula "4")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "8")) - (rule "andLeft" (formula "6")) - (rule "andLeft" (formula "9")) - (rule "andLeft" (formula "7")) - (rule "notLeft" (formula "6")) - (rule "notLeft" (formula "6")) - (rule "replace_known_right" (formula "6") (term "0") (ifseqformula "11")) - (builtin "One Step Simplification" (formula "6")) - (rule "pullOutSelect" (formula "9") (term "0") (inst "selectSK=java_lang_Throwable_cause_0")) - (rule "simplifySelectOfAnonEQ" (formula "9") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "13")) (ifInst "" (formula "12"))) - (rule "applyEqReverse" (formula "10") (term "0") (ifseqformula "9")) - (rule "hideAuxiliaryEq" (formula "9")) - (rule "pullOutSelect" (formula "8") (term "0") (inst "selectSK=java_lang_Throwable_message_0")) - (rule "simplifySelectOfAnonEQ" (formula "8") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "13")) (ifInst "" (formula "12"))) - (rule "applyEqReverse" (formula "9") (term "0") (ifseqformula "8")) - (rule "hideAuxiliaryEq" (formula "8")) - (rule "commuteUnion" (formula "4") (term "1,0")) - (rule "onlyCreatedObjectsAreReferenced" (formula "8") (term "0") (ifseqformula "3")) - (rule "replace_known_left" (formula "8") (term "0") (ifseqformula "9")) - (builtin "One Step Simplification" (formula "8")) - (rule "true_left" (formula "8")) - (rule "onlyCreatedObjectsAreReferenced" (formula "9") (term "0") (ifseqformula "3")) - (rule "replace_known_left" (formula "9") (term "0") (ifseqformula "10")) - (builtin "One Step Simplification" (formula "9")) - (rule "true_left" (formula "9")) - (rule "assignment" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "methodCallParamThrow" (formula "13") (term "1")) - (rule "tryCatchThrow" (formula "13") (term "1")) - (rule "ifElseUnfold" (formula "13") (term "1") (inst "#boolv=x")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "x")) - (rule "equality_comparison_simple" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "replace_known_right" (formula "13") (term "0,0,1,0") (ifseqformula "12")) - (builtin "One Step Simplification" (formula "13")) - (rule "ifElseSplit" (formula "13")) - (branch "if x true" - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "if x false" - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "ifElseSplit" (formula "13")) - (branch "if n instanceof java.lang.Throwable true" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "true_left" (formula "1")) - (rule "variableDeclaration" (formula "13") (term "1") (newnames "e")) - (rule "delete_unnecessary_cast" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "1")) - (rule "true_left" (formula "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "assignment" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (rule "emptyModality" (formula "13") (term "1")) - (builtin "One Step Simplification" (formula "13")) - (opengoal " ") - ) - (branch "if n instanceof java.lang.Throwable false" - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) - (rule "closeFalse" (formula "1")) - ) - ) - ) - (branch "Exceptional Post (NullPointerException)" - (builtin "One Step Simplification" (formula "4")) - (builtin "One Step Simplification" (formula "5")) - (rule "andLeft" (formula "4")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "5") (term "1,0,0") (ifseqformula "4")) - (rule "selectCreatedOfAnonAsFormulaEQ" (formula "5") (term "1,1,0,1,0") (ifseqformula "4")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "5")) - (rule "andLeft" (formula "7")) - (rule "andLeft" (formula "9")) - (rule "notLeft" (formula "5")) - (rule "close" (formula "11") (ifseqformula "10")) - ) - (branch "Pre (NullPointerException)" - (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "2"))) - (rule "closeTrue" (formula "3")) - ) -) -) - -} diff --git a/key.ui/build.gradle b/key.ui/build.gradle index fffc3457c5e..a380ab55e48 100644 --- a/key.ui/build.gradle +++ b/key.ui/build.gradle @@ -22,10 +22,6 @@ dependencies { implementation project(":key.core.infflow") implementation project(":key.core.wd") - implementation project(":key.core.proof_references") - implementation project(":key.core.symbolic_execution") - //implementation project(":key.removegenerics") - api(libs.miglayout.swing) implementation(libs.picocli) diff --git a/settings.gradle b/settings.gradle index 35058bedc1c..0a203781aea 100644 --- a/settings.gradle +++ b/settings.gradle @@ -19,13 +19,9 @@ include "key.core" //include "key.core.rifl" include "key.core.infflow" include "key.core.wd" -include "key.core.symbolic_execution" include "key.core.testgen" -include "key.core.proof_references" -//include "key.removegenerics" include "key.core.example" -include "key.core.symbolic_execution.example" include "key.ui"