From 230f842dffa19a02727547fb52f1cd4db0670264 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Sun, 1 Jun 2025 18:30:12 +0200 Subject: [PATCH 01/27] add the ownership rules --- .../de/uka/ilkd/key/proof/rules/locSets.key | 4 + .../uka/ilkd/key/proof/rules/locSetsRules.key | 158 ++++++++++++++++++ 2 files changed, 162 insertions(+) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSets.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSets.key index b1a2a9a2cd4..f3561bcb0bc 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSets.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSets.key @@ -34,4 +34,8 @@ subset(LocSet, LocSet); disjoint(LocSet, LocSet); createdInHeap(LocSet, Heap); + owns(Object, Object); + dominates(Object, Object); + dominatesSet(Object, LocSet); + undom(Object, Object); } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key index a1f63101ffb..4f67bb9fbe6 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key @@ -1770,4 +1770,162 @@ \heuristics(simplify) }; + peerOwn { + \schemaVar \term Object x, y; + + \assumes(owns(y, x) ==>) + \find(owns(x, y) ==>) + \replacewith(false ==>) + }; + + // --------------------------------------------------- + // Ownership Rules + // --------------------------------------------------- + + ownsSelf { + \schemaVar \term Object o; + + \find(owns(o, o)) + + \replacewith(false) + }; + + dominatesDef { + \schemaVar \term Object x, y; + \schemaVar \variables Object ov; + + \find(dominates(x, y)) + \varcond(\notFreeIn(ov, x, y)) + \replacewith(owns(x, y) | \exists ov; (owns(x, ov) & dominates(ov, y))) + }; + + peerDominate { + \schemaVar \term Object x, y; + + \assumes(dominates(y, x) ==>) + \find(dominates(x, y) ==>) + \replacewith(false ==>) + }; + + undomDef { + \schemaVar \term Object x, y; + + \find(undom(x, y)) + + \replacewith(!dominates(x, y) & !dominates(y, x)) + }; + + dominatesSetDef { + \schemaVar \term LocSet s; + \schemaVar \term Object x; + \schemaVar \variables Object o; + \schemaVar \variables Field f; + + \find(dominatesSet(x, s)) + + \varcond(\notFreeIn(o, s, x), \notFreeIn(f, s, x)) + \replacewith(\forall o; (\forall f; (elementOf(o, f, s) -> dominates(x, o)))) + }; + + dominatesSelf { + \schemaVar \term Object o; + + \find(dominates(o, o)) + + \replacewith(false) + }; + + + // These are the rules that should be derivable from the first rules + + dominatesSetEmpty { + \schemaVar \term Object o; + + \find(dominatesSet(o, empty)) + + \replacewith(true) + }; + + dominatesSetAllLocs { + \schemaVar \term Object o; + + \find(dominatesSet(o, allLocs)) + + \replacewith(false) + }; + + dominatesSetUnion { + \schemaVar \term LocSet s1, s2; + \schemaVar \term Object o; + + \find(dominatesSet(o, union(s1, s2))) + + \replacewith(dominatesSet(o, s1) & dominatesSet(o, s2)) + }; + + dominatesSetSubset { + \schemaVar \term LocSet s1, s2; + \schemaVar \term Object o; + + \assumes(subset(s2, s1) ==>) + \find(dominatesSet(o, s1) ==>) + + \add(dominatesSet(o, s2) ==>) + }; + + dominatesSetDisjoint { + \schemaVar \term Object o1, o2; + \schemaVar \term LocSet s1, s2; + + \assumes(dominatesSet(o1, s1), dominatesSet(o2, s2) ==>) + \find(undom(o1, o2) ==>) + \add(disjoint(s1, s2) ==>) + }; + + // rules to just get going + anyOwns { + \schemaVar \term Object o1, o2; + \find(o1) + \add(owns(o1, o2) ==>) + }; + + anyDominates { + \schemaVar \term Object o1, o2; + \find(o1) + \add(dominates(o1, o2) ==>) + }; + + dominatesTransitive { + \schemaVar \term Object x, y, z; + \assumes(dominates(x, y), dominates(y, z) ==>) + \add(dominates(x, z) ==>) + }; + + dominatesSetElement { + \schemaVar \term LocSet s; + \schemaVar \term Object x, o; + \schemaVar \term Field f; + + \assumes(elementOf(o, f, s) ==>) + \find(dominatesSet(x, s) ==>) + + \add(dominates(x, o) ==>) + }; + + anyDominatesSet { + \schemaVar \term Object o; + \schemaVar \term LocSet s; + + \find(o) + \add(dominatesSet(o, s) ==>) + }; + + sameLevelUndom { + \schemaVar \term Object o, x, y; + + \assumes(owns(o, x), owns(o, y) ==>) + \find(==> x = y) + + \add(undom(x, y) ==>) + }; } From 6a195ddfd5059403671195997c30a83dda0e305d Mon Sep 17 00:00:00 2001 From: PiisRational Date: Wed, 4 Jun 2025 22:25:14 +0200 Subject: [PATCH 02/27] added the new rules --- key.core.example/.factorypath | 8 ++++++ key.core.proof_references/.factorypath | 8 ++++++ key.core.rifl/.factorypath | 8 ++++++ .../.factorypath | 8 ++++++ key.core.symbolic_execution/.factorypath | 8 ++++++ key.core.testgen/.factorypath | 8 ++++++ key.core/.factorypath | 8 ++++++ .../uka/ilkd/key/proof/rules/locSetsRules.key | 16 ++++++++++++ key.ncore.calculus/.factorypath | 8 ++++++ key.ncore/.factorypath | 8 ++++++ key.removegenerics/.factorypath | 8 ++++++ key.ui/.factorypath | 8 ++++++ .../javac/JavaCompilerCheckFacade.java | 25 ++++++++++++++++++- .../key/gui/plugins/javac/JavacExtension.java | 9 ++++++- key.util/.factorypath | 8 ++++++ keyext.caching/.factorypath | 8 ++++++ keyext.exploration/.factorypath | 8 ++++++ keyext.isabelletranslation/.factorypath | 8 ++++++ keyext.proofmanagement/.factorypath | 8 ++++++ keyext.slicing/.factorypath | 8 ++++++ keyext.ui.testgen/.factorypath | 8 ++++++ recoder/.factorypath | 8 ++++++ 22 files changed, 200 insertions(+), 2 deletions(-) create mode 100644 key.core.example/.factorypath create mode 100644 key.core.proof_references/.factorypath create mode 100644 key.core.rifl/.factorypath create mode 100644 key.core.symbolic_execution.example/.factorypath create mode 100644 key.core.symbolic_execution/.factorypath create mode 100644 key.core.testgen/.factorypath create mode 100644 key.core/.factorypath create mode 100644 key.ncore.calculus/.factorypath create mode 100644 key.ncore/.factorypath create mode 100644 key.removegenerics/.factorypath create mode 100644 key.ui/.factorypath create mode 100644 key.util/.factorypath create mode 100644 keyext.caching/.factorypath create mode 100644 keyext.exploration/.factorypath create mode 100644 keyext.isabelletranslation/.factorypath create mode 100644 keyext.proofmanagement/.factorypath create mode 100644 keyext.slicing/.factorypath create mode 100644 keyext.ui.testgen/.factorypath create mode 100644 recoder/.factorypath diff --git a/key.core.example/.factorypath b/key.core.example/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.core.example/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/key.core.proof_references/.factorypath b/key.core.proof_references/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.core.proof_references/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/key.core.rifl/.factorypath b/key.core.rifl/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.core.rifl/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/key.core.symbolic_execution.example/.factorypath b/key.core.symbolic_execution.example/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.core.symbolic_execution.example/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/key.core.symbolic_execution/.factorypath b/key.core.symbolic_execution/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.core.symbolic_execution/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/key.core.testgen/.factorypath b/key.core.testgen/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.core.testgen/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/key.core/.factorypath b/key.core/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.core/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key index 4f67bb9fbe6..2243d52a3be 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key @@ -1835,6 +1835,14 @@ \replacewith(false) }; + singleOwner { + \schemaVar \term Object x, y, z; + + \assumes(owns(z, y) ==>) + \find(owns(x, y) ==>) + + \add(x = z ==>) + }; // These are the rules that should be derivable from the first rules @@ -1920,6 +1928,14 @@ \add(dominatesSet(o, s) ==>) }; + dominatesSetUnion { + \schemaVar \term LocSet s1, s2; + \schemaVar \term Object o; + + \find(dominatesSet(o, union(s1, s2))) + \replacewith(dominatesSet(o, s1) & dominatesSet(o, s2)) + }; + sameLevelUndom { \schemaVar \term Object o, x, y; diff --git a/key.ncore.calculus/.factorypath b/key.ncore.calculus/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.ncore.calculus/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/key.ncore/.factorypath b/key.ncore/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.ncore/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/key.removegenerics/.factorypath b/key.removegenerics/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.removegenerics/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/key.ui/.factorypath b/key.ui/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.ui/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavaCompilerCheckFacade.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavaCompilerCheckFacade.java index 01759d83660..79de1024f1f 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavaCompilerCheckFacade.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavaCompilerCheckFacade.java @@ -56,11 +56,12 @@ public class JavaCompilerCheckFacade { * @param classPath the {@link List} of {@link File}s referring to the directory that make up * the target Java programs classpath * @param javaPath the {@link String} with the path to the source of the target Java program + * @param processors the {@link List} of {@link File}s referring to the annotation processors to run * @return future providing the list of diagnostics */ public static @NonNull CompletableFuture> check( ProblemInitializer.ProblemInitializerListener listener, - File bootClassPath, List classPath, File javaPath) { + File bootClassPath, List classPath, File javaPath, List processors) { if (Boolean.getBoolean("KEY_JAVAC_DISABLE")) { LOGGER.info("Javac check is disabled by system property -PKEY_JAVAC_DISABLE"); return CompletableFuture.completedFuture(Collections.emptyList()); @@ -86,6 +87,20 @@ public class JavaCompilerCheckFacade { // gather configured bootstrap classpath and regular classpath List options = new ArrayList<>(); + if (false) { + options.addAll(Arrays.asList( + "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED" + )); + } + if (bootClassPath != null) { options.add("-Xbootclasspath"); options.add(bootClassPath.getAbsolutePath()); @@ -95,6 +110,14 @@ public class JavaCompilerCheckFacade { options.add( classPath.stream().map(File::getAbsolutePath).collect(Collectors.joining(":"))); } + + if (processors != null && !processors.isEmpty()) { + options.add("-processor"); + options.add(processors.stream().collect(Collectors.joining(","))); + } + + LOGGER.info("{}", options); + ArrayList files = new ArrayList<>(); if (javaPath.isDirectory()) { try (var s = Files.walk(javaPath.toPath())) { diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacExtension.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacExtension.java index c8d62a2e080..ce54dcfcf75 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacExtension.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacExtension.java @@ -5,6 +5,8 @@ import java.awt.*; import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.TreeSet; @@ -147,6 +149,10 @@ private void loadProof(Proof selectedProof) throws RuntimeException { File bootClassPath = jm.getBootClassPath() != null ? new File(jm.getBootClassPath()) : null; List classpath = jm.getClassPathEntries(); + if (false) { + if (classpath == null) classpath = new ArrayList<>(); + classpath.addAll(Arrays.asList("build/classes/java/main:./build/libs/checker-3.42.0-eisop3.jar:./build/libs/checker-qual-3.42.0-eisop3.jar:./build/libs/checker-util-3.42.0-eisop3.jar:./build/libs/universe.jar:./build/resources/main".split(":./")).stream().map(p -> new File("/home/boby/Dev/java/universe/" + p)).toList()); + } File javaPath = new File(jm.getModelDir()); lblStatus.setForeground(Color.black); @@ -154,7 +160,8 @@ private void loadProof(Proof selectedProof) throws RuntimeException { lblStatus.setIcon(ICON_WAIT.get(16)); CompletableFuture> task = - JavaCompilerCheckFacade.check(mediator.getUI(), bootClassPath, classpath, javaPath); + JavaCompilerCheckFacade.check(mediator.getUI(), bootClassPath, classpath, javaPath, + false ? Arrays.asList("universe.UniverseChecker"): null); try { task.thenAccept(it -> SwingUtilities.invokeLater(() -> { lblStatus.setText("Javac finished"); diff --git a/key.util/.factorypath b/key.util/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/key.util/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/keyext.caching/.factorypath b/keyext.caching/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/keyext.caching/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/keyext.exploration/.factorypath b/keyext.exploration/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/keyext.exploration/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/keyext.isabelletranslation/.factorypath b/keyext.isabelletranslation/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/keyext.isabelletranslation/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/keyext.proofmanagement/.factorypath b/keyext.proofmanagement/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/keyext.proofmanagement/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/keyext.slicing/.factorypath b/keyext.slicing/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/keyext.slicing/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/keyext.ui.testgen/.factorypath b/keyext.ui.testgen/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/keyext.ui.testgen/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/recoder/.factorypath b/recoder/.factorypath new file mode 100644 index 00000000000..eed262358e1 --- /dev/null +++ b/recoder/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + From 415f9dba5e629ec685ad2f5721453543176081d3 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Sun, 8 Jun 2025 11:52:42 +0200 Subject: [PATCH 03/27] extend the javac extension --- .../uka/ilkd/key/proof/rules/locSetsRules.key | 8 -- key.ui/build.gradle | 22 ++++- .../javac/JavaCompilerCheckFacade.java | 15 --- .../key/gui/plugins/javac/JavacExtension.java | 24 +++-- .../key/gui/plugins/javac/JavacSettings.java | 96 +++++++++++++++++++ .../plugins/javac/JavacSettingsProvider.java | 80 ++++++++++++++++ 6 files changed, 215 insertions(+), 30 deletions(-) create mode 100644 key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettings.java create mode 100644 key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettingsProvider.java diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key index 2243d52a3be..aadcf130fec 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key @@ -1928,14 +1928,6 @@ \add(dominatesSet(o, s) ==>) }; - dominatesSetUnion { - \schemaVar \term LocSet s1, s2; - \schemaVar \term Object o; - - \find(dominatesSet(o, union(s1, s2))) - \replacewith(dominatesSet(o, s1) & dominatesSet(o, s2)) - }; - sameLevelUndom { \schemaVar \term Object o, x, y; diff --git a/key.ui/build.gradle b/key.ui/build.gradle index 5ec55a4a26b..f5db1e9eb11 100644 --- a/key.ui/build.gradle +++ b/key.ui/build.gradle @@ -69,7 +69,27 @@ run { // this can be used to solve a problem where the OS hangs during debugging of popup menus // (see https://docs.oracle.com/javase/10/troubleshoot/awt.htm#JSTGD425) - jvmArgs += "-Dsun.awt.disablegrab=true" + jvmArgs += [ + "-Dsun.awt.disablegrab=true ", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + "--add-opens", + "jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED" + ] } task runWithProfiler(type: JavaExec) { diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavaCompilerCheckFacade.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavaCompilerCheckFacade.java index 79de1024f1f..fe9a63618f8 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavaCompilerCheckFacade.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavaCompilerCheckFacade.java @@ -87,19 +87,6 @@ public class JavaCompilerCheckFacade { // gather configured bootstrap classpath and regular classpath List options = new ArrayList<>(); - if (false) { - options.addAll(Arrays.asList( - "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", - "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", - "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", - "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED", - "--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED", - "--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED", - "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", - "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", - "--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED" - )); - } if (bootClassPath != null) { options.add("-Xbootclasspath"); @@ -116,8 +103,6 @@ public class JavaCompilerCheckFacade { options.add(processors.stream().collect(Collectors.joining(","))); } - LOGGER.info("{}", options); - ArrayList files = new ArrayList<>(); if (javaPath.isDirectory()) { try (var s = Files.walk(javaPath.toPath())) { diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacExtension.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacExtension.java index ce54dcfcf75..e9c587a04f7 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacExtension.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacExtension.java @@ -26,6 +26,7 @@ import de.uka.ilkd.key.gui.fonticons.MaterialDesignRegular; import de.uka.ilkd.key.proof.JavaModel; import de.uka.ilkd.key.proof.Proof; +import de.uka.ilkd.key.gui.settings.SettingsProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,7 +45,7 @@ experimental = false) public class JavacExtension implements KeYGuiExtension, KeYGuiExtension.StatusLine, KeYGuiExtension.Startup, - KeYSelectionListener { + KeYSelectionListener, KeYGuiExtension.Settings { /** * Color used for the label if javac didn't produce any diagnostics. */ @@ -149,10 +150,18 @@ private void loadProof(Proof selectedProof) throws RuntimeException { File bootClassPath = jm.getBootClassPath() != null ? new File(jm.getBootClassPath()) : null; List classpath = jm.getClassPathEntries(); - if (false) { - if (classpath == null) classpath = new ArrayList<>(); - classpath.addAll(Arrays.asList("build/classes/java/main:./build/libs/checker-3.42.0-eisop3.jar:./build/libs/checker-qual-3.42.0-eisop3.jar:./build/libs/checker-util-3.42.0-eisop3.jar:./build/libs/universe.jar:./build/resources/main".split(":./")).stream().map(p -> new File("/home/boby/Dev/java/universe/" + p)).toList()); + JavacSettings settings = JavacSettingsProvider.getJavacSettings(); + + List checkers = null; + if (settings.getUseCheckers()) { + if (classpath == null) classpath = new ArrayList<>(); + + classpath.addAll(Arrays.asList(settings.getCheckerPaths().split(System.lineSeparator())) + .stream().map(p -> new File(p)).toList()); + + checkers = Arrays.asList(settings.getCheckers().split(System.lineSeparator())); } + File javaPath = new File(jm.getModelDir()); lblStatus.setForeground(Color.black); @@ -160,8 +169,7 @@ private void loadProof(Proof selectedProof) throws RuntimeException { lblStatus.setIcon(ICON_WAIT.get(16)); CompletableFuture> task = - JavaCompilerCheckFacade.check(mediator.getUI(), bootClassPath, classpath, javaPath, - false ? Arrays.asList("universe.UniverseChecker"): null); + JavaCompilerCheckFacade.check(mediator.getUI(), bootClassPath, classpath, javaPath, checkers); try { task.thenAccept(it -> SwingUtilities.invokeLater(() -> { lblStatus.setText("Javac finished"); @@ -234,6 +242,10 @@ public void selectedNodeChanged(KeYSelectionEvent e) { public void selectedProofChanged(KeYSelectionEvent e) { loadProof(e.getSource().getSelectedProof()); } + + public SettingsProvider getSettings() { + return new JavacSettingsProvider(); + } } diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettings.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettings.java new file mode 100644 index 00000000000..a68e6070f4d --- /dev/null +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettings.java @@ -0,0 +1,96 @@ +/* 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.gui.plugins.javac; +import java.lang.Boolean; + +import de.uka.ilkd.key.settings.AbstractPropertiesSettings; + +/** + * Settings for the javac extention. + * + * @author Daniel Grévent + */ +public class JavacSettings extends AbstractPropertiesSettings { + + public static final String CATEGORY = "Type Checking"; + + /** + * Config key for {@link #checkers}. + */ + private static final String KEY_USE_CHECKERS = "useCheckers"; + + /** + * Config key for {@link #checkers}. + */ + private static final String KEY_CHECKERS = "checkers"; + + /** + * Config key for {@link #checkerPaths}. + */ + private static final String KEY_CHECKER_PATHS = "checkerPaths"; + + /** + * The type checkers (processors) to be run. + */ + private final PropertyEntry useCheckers = + createBooleanProperty(KEY_USE_CHECKERS, false); + + /** + * The type checkers (processors) to be run. + */ + private final PropertyEntry checkers = + createStringProperty(KEY_CHECKERS, ""); + + /** + * The paths needed for the checkers (processors). + */ + private final PropertyEntry checkerPaths = + createStringProperty(KEY_CHECKER_PATHS, ""); + + public JavacSettings() { + super(CATEGORY); + } + + /** + * @param useCheckers if the type checkers should be used + */ + public void setUseCheckers(boolean useCheckers) { + this.useCheckers.set(useCheckers); + } + + /** + * @param checkers the type checkers to use + */ + public void setCheckers(String checkers) { + this.checkers.set(checkers); + } + + /** + * @param paths the paths on which the type checkers are + */ + public void setCheckerPaths(String paths) { + this.checkerPaths.set(paths); + } + + /** + * @return true iff the checkers should be used + */ + public boolean getUseCheckers() { + return useCheckers.get(); + } + + /** + * @return all the checkers in a comma separated string + */ + public String getCheckers() { + return checkers.get(); + } + + /** + * @return all checker paths spearated by a colon + */ + public String getCheckerPaths() { + return checkerPaths.get(); + } +} diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettingsProvider.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettingsProvider.java new file mode 100644 index 00000000000..dffebd2b728 --- /dev/null +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettingsProvider.java @@ -0,0 +1,80 @@ +/* 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.gui.plugins.javac; + +import javax.swing.*; + +import de.uka.ilkd.key.gui.MainWindow; +import de.uka.ilkd.key.gui.settings.SettingsPanel; +import de.uka.ilkd.key.gui.settings.SettingsProvider; +import de.uka.ilkd.key.settings.ProofIndependentSettings; + +/** + * Settings for the javac extension. + * + * @author Daniel Grévent + */ +public class JavacSettingsProvider extends SettingsPanel implements SettingsProvider { + /** + * Singleton instance of the slicing settings. + */ + private static final JavacSettings JAVAC_SETTINGS = new JavacSettings(); + + private static final String USE_CHECKERS_INFO = "If enabled the type checkers will be run in addition to the default java type checker."; + private static final String CHECKERS_INFO = "The list of type checkers to run in addition to the default Java type checker. Each checkers should be written on a new line."; + private static final String CHECKER_PATHS_INFO = "The list of paths to the type checkers and their dependencies. Each path should be absolute and be written on a new line."; + + private final JCheckBox useCheckers; + private final JTextArea checkers; + private final JTextArea paths; + + /** + * Construct a new settings provider. + */ + public JavacSettingsProvider() { + useCheckers = addCheckBox( + "use checkers", USE_CHECKERS_INFO, false, e -> {}); + checkers = addTextArea("checkers", "", CHECKERS_INFO, e -> {}); + paths = addTextArea("checker paths", "", CHECKER_PATHS_INFO, e -> {}); + + setHeaderText("Javac Options"); + } + + @Override + public String getDescription() { + return "Java Type Checking"; + } + + public static JavacSettings getJavacSettings() { + ProofIndependentSettings.DEFAULT_INSTANCE.addSettings(JAVAC_SETTINGS); + return JAVAC_SETTINGS; + } + + + @Override + public JPanel getPanel(MainWindow window) { + JavacSettings settings = getJavacSettings(); + + useCheckers.setSelected(settings.getUseCheckers()); + checkers.setText(settings.getCheckers()); + paths.setText(settings.getCheckerPaths()); + + return this; + } + + @Override + public void applySettings(MainWindow window) { + JavacSettings settings = getJavacSettings(); + + settings.setUseCheckers(useCheckers.isSelected()); + settings.setCheckers(checkers.getText()); + settings.setCheckerPaths(paths.getText()); + } + + + @Override + public int getPriorityOfSettings() { + return 10000; + } +} From f37d143e72dfb9b5a93dc9ce1c46db79da6119e3 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Sun, 8 Jun 2025 12:42:47 +0200 Subject: [PATCH 04/27] change the way the universe rules are treated --- .../de/uka/ilkd/key/proof/rules/locSets.key | 4 - .../uka/ilkd/key/proof/rules/locSetsRules.key | 167 ----------------- universe.key | 177 ++++++++++++++++++ 3 files changed, 177 insertions(+), 171 deletions(-) create mode 100644 universe.key diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSets.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSets.key index f3561bcb0bc..b1a2a9a2cd4 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSets.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSets.key @@ -34,8 +34,4 @@ subset(LocSet, LocSet); disjoint(LocSet, LocSet); createdInHeap(LocSet, Heap); - owns(Object, Object); - dominates(Object, Object); - dominatesSet(Object, LocSet); - undom(Object, Object); } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key index aadcf130fec..40fc57b2780 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key @@ -1769,171 +1769,4 @@ \else(empty))) \heuristics(simplify) }; - - peerOwn { - \schemaVar \term Object x, y; - - \assumes(owns(y, x) ==>) - \find(owns(x, y) ==>) - \replacewith(false ==>) - }; - - // --------------------------------------------------- - // Ownership Rules - // --------------------------------------------------- - - ownsSelf { - \schemaVar \term Object o; - - \find(owns(o, o)) - - \replacewith(false) - }; - - dominatesDef { - \schemaVar \term Object x, y; - \schemaVar \variables Object ov; - - \find(dominates(x, y)) - \varcond(\notFreeIn(ov, x, y)) - \replacewith(owns(x, y) | \exists ov; (owns(x, ov) & dominates(ov, y))) - }; - - peerDominate { - \schemaVar \term Object x, y; - - \assumes(dominates(y, x) ==>) - \find(dominates(x, y) ==>) - \replacewith(false ==>) - }; - - undomDef { - \schemaVar \term Object x, y; - - \find(undom(x, y)) - - \replacewith(!dominates(x, y) & !dominates(y, x)) - }; - - dominatesSetDef { - \schemaVar \term LocSet s; - \schemaVar \term Object x; - \schemaVar \variables Object o; - \schemaVar \variables Field f; - - \find(dominatesSet(x, s)) - - \varcond(\notFreeIn(o, s, x), \notFreeIn(f, s, x)) - \replacewith(\forall o; (\forall f; (elementOf(o, f, s) -> dominates(x, o)))) - }; - - dominatesSelf { - \schemaVar \term Object o; - - \find(dominates(o, o)) - - \replacewith(false) - }; - - singleOwner { - \schemaVar \term Object x, y, z; - - \assumes(owns(z, y) ==>) - \find(owns(x, y) ==>) - - \add(x = z ==>) - }; - - // These are the rules that should be derivable from the first rules - - dominatesSetEmpty { - \schemaVar \term Object o; - - \find(dominatesSet(o, empty)) - - \replacewith(true) - }; - - dominatesSetAllLocs { - \schemaVar \term Object o; - - \find(dominatesSet(o, allLocs)) - - \replacewith(false) - }; - - dominatesSetUnion { - \schemaVar \term LocSet s1, s2; - \schemaVar \term Object o; - - \find(dominatesSet(o, union(s1, s2))) - - \replacewith(dominatesSet(o, s1) & dominatesSet(o, s2)) - }; - - dominatesSetSubset { - \schemaVar \term LocSet s1, s2; - \schemaVar \term Object o; - - \assumes(subset(s2, s1) ==>) - \find(dominatesSet(o, s1) ==>) - - \add(dominatesSet(o, s2) ==>) - }; - - dominatesSetDisjoint { - \schemaVar \term Object o1, o2; - \schemaVar \term LocSet s1, s2; - - \assumes(dominatesSet(o1, s1), dominatesSet(o2, s2) ==>) - \find(undom(o1, o2) ==>) - \add(disjoint(s1, s2) ==>) - }; - - // rules to just get going - anyOwns { - \schemaVar \term Object o1, o2; - \find(o1) - \add(owns(o1, o2) ==>) - }; - - anyDominates { - \schemaVar \term Object o1, o2; - \find(o1) - \add(dominates(o1, o2) ==>) - }; - - dominatesTransitive { - \schemaVar \term Object x, y, z; - \assumes(dominates(x, y), dominates(y, z) ==>) - \add(dominates(x, z) ==>) - }; - - dominatesSetElement { - \schemaVar \term LocSet s; - \schemaVar \term Object x, o; - \schemaVar \term Field f; - - \assumes(elementOf(o, f, s) ==>) - \find(dominatesSet(x, s) ==>) - - \add(dominates(x, o) ==>) - }; - - anyDominatesSet { - \schemaVar \term Object o; - \schemaVar \term LocSet s; - - \find(o) - \add(dominatesSet(o, s) ==>) - }; - - sameLevelUndom { - \schemaVar \term Object o, x, y; - - \assumes(owns(o, x), owns(o, y) ==>) - \find(==> x = y) - - \add(undom(x, y) ==>) - }; } diff --git a/universe.key b/universe.key new file mode 100644 index 00000000000..7b8f67169a6 --- /dev/null +++ b/universe.key @@ -0,0 +1,177 @@ + +\predicates { + owns(Object, Object); + dominates(Object, Object); + dominatesSet(Object, LocSet); + undom(Object, Object); +} + +\rules(programRules:Java) { + // --------------------------------------------------- + // Ownership Rules + // --------------------------------------------------- + + ownsSelf { + \schemaVar \term Object o; + + \find(owns(o, o)) + + \replacewith(false) + }; + + dominatesDef { + \schemaVar \term Object x, y; + \schemaVar \variables Object ov; + + \find(dominates(x, y)) + \varcond(\notFreeIn(ov, x, y)) + \replacewith(owns(x, y) | \exists ov; (owns(x, ov) & dominates(ov, y))) + }; + + peerOwn { + \schemaVar \term Object x, y; + + \assumes(owns(y, x) ==>) + \find(owns(x, y) ==>) + \closegoal + }; + + + undomDef { + \schemaVar \term Object x, y; + + \find(undom(x, y)) + + \replacewith(!dominates(x, y) & !dominates(y, x)) + }; + + dominatesSetDef { + \schemaVar \term LocSet s; + \schemaVar \term Object x; + \schemaVar \variables Object o; + \schemaVar \variables Field f; + + \find(dominatesSet(x, s)) + + \varcond(\notFreeIn(o, s, x), \notFreeIn(f, s, x)) + \replacewith(\forall o; (\forall f; (elementOf(o, f, s) -> dominates(x, o)))) + }; + + dominatesSelf { + \schemaVar \term Object o; + + \find(dominates(o, o)) + + \replacewith(false) + }; + + singleOwner { + \schemaVar \term Object x, y, z; + + \assumes(owns(z, y) ==>) + \find(owns(x, y) ==>) + + \add(x = z ==>) + }; + + // These are the rules that should be derivable from the first rules + + peerDominate { + \schemaVar \term Object x, y; + + \assumes(dominates(y, x) ==>) + \find(dominates(x, y) ==>) + \closegoal + }; + + dominatesSetEmpty { + \schemaVar \term Object o; + + \find(dominatesSet(o, empty)) + + \replacewith(true) + }; + + dominatesSetAllLocs { + \schemaVar \term Object o; + + \find(dominatesSet(o, allLocs)) + + \replacewith(false) + }; + + dominatesSetUnion { + \schemaVar \term LocSet s1, s2; + \schemaVar \term Object o; + + \find(dominatesSet(o, union(s1, s2))) + + \replacewith(dominatesSet(o, s1) & dominatesSet(o, s2)) + }; + + dominatesSetSubset { + \schemaVar \term LocSet s1, s2; + \schemaVar \term Object o; + + \assumes(subset(s2, s1) ==>) + \find(dominatesSet(o, s1) ==>) + + \add(dominatesSet(o, s2) ==>) + }; + + dominatesSetDisjoint { + \schemaVar \term Object o1, o2; + \schemaVar \term LocSet s1, s2; + + \assumes(dominatesSet(o1, s1), dominatesSet(o2, s2) ==>) + \find(undom(o1, o2) ==>) + \add(disjoint(s1, s2) ==>) + }; + + // rules to just get going + anyOwns { + \schemaVar \term Object o1, o2; + \find(o1) + \add(owns(o1, o2) ==>) + }; + + anyDominates { + \schemaVar \term Object o1, o2; + \find(o1) + \add(dominates(o1, o2) ==>) + }; + + dominatesTransitive { + \schemaVar \term Object x, y, z; + \assumes(dominates(x, y), dominates(y, z) ==>) + \add(dominates(x, z) ==>) + }; + + dominatesSetElement { + \schemaVar \term LocSet s; + \schemaVar \term Object x, o; + \schemaVar \term Field f; + + \assumes(elementOf(o, f, s) ==>) + \find(dominatesSet(x, s) ==>) + + \add(dominates(x, o) ==>) + }; + + anyDominatesSet { + \schemaVar \term Object o; + \schemaVar \term LocSet s; + + \find(o) + \add(dominatesSet(o, s) ==>) + }; + + sameLevelUndom { + \schemaVar \term Object o, x, y; + + \assumes(owns(o, x), owns(o, y) ==>) + \find(==> x = y) + + \add(undom(x, y) ==>) + }; +} From c337d495a9cd29bec31c3c1afa78c8a8311cf3d8 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Mon, 16 Jun 2025 22:49:36 +0200 Subject: [PATCH 05/27] update to add the latest changes --- key.core/src/main/antlr4/KeYLexer.g4 | 1 + key.core/src/main/antlr4/KeYParser.g4 | 1 + .../de/uka/ilkd/key/java/Recoder2KeY.java | 2 +- .../key/java/SchemaRecoder2KeYConverter.java | 11 +- .../recoderext/SchemaJavaProgramFactory.java | 4 + .../de/uka/ilkd/key/ldt/JavaDLTheory.java | 2 +- .../varexp/TacletBuilderManipulators.java | 5 +- .../conditions/HasAnnotationCondition.java | 100 ++++++++++ .../key/rule/match/vm/TacletMatchProgram.java | 12 ++ .../MatchElementaryUpdateInstruction.java | 5 + .../MatchFormulaSVInstruction.java | 4 + .../MatchModalOperatorSVInstruction.java | 5 + .../MatchModalityInstruction.java | 8 + .../MatchOpIdentityInstruction.java | 5 + .../MatchOperatorInstruction.java | 1 + .../instructions/MatchProgramInstruction.java | 17 ++ .../MatchProgramSVInstruction.java | 5 + .../MatchSchemaVariableInstruction.java | 4 + ...MatchSortDependingFunctionInstruction.java | 4 + .../MatchTermLabelInstruction.java | 5 + .../instructions/MatchTermSVInstruction.java | 5 + .../MatchUpdateSVInstruction.java | 4 + .../MatchVariableSVInstruction.java | 5 + .../UnbindVariablesInstruction.java | 4 + .../lemma/DefaultLemmaGenerator.java | 5 + .../key/parser/schemajava/SchemaJavaParser.jj | 39 ++-- .../java/recoder/java/StatementBlock.java | 13 ++ .../AnnotationUseSpecification.java | 6 +- .../declaration/LocalVariableDeclaration.java | 9 + .../declaration/VariableSpecification.java | 5 + universe.key | 177 ------------------ 31 files changed, 264 insertions(+), 209 deletions(-) create mode 100644 key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java delete mode 100644 universe.key diff --git a/key.core/src/main/antlr4/KeYLexer.g4 b/key.core/src/main/antlr4/KeYLexer.g4 index 544c9371a42..1ddd2174691 100644 --- a/key.core/src/main/antlr4/KeYLexer.g4 +++ b/key.core/src/main/antlr4/KeYLexer.g4 @@ -159,6 +159,7 @@ MAXEXPANDMETHOD : '\\mayExpandMethod'; STRICT : '\\strict'; TYPEOF : '\\typeof'; INSTANTIATE_GENERIC : '\\instantiateGeneric'; +HAS_ANNOTATION: '\\hasAnnotation'; // Quantifiers, binding, substitution FORALL : '\\forall' | '\u2200'; diff --git a/key.core/src/main/antlr4/KeYParser.g4 b/key.core/src/main/antlr4/KeYParser.g4 index 6c262484c93..ef2ca0b00d7 100644 --- a/key.core/src/main/antlr4/KeYParser.g4 +++ b/key.core/src/main/antlr4/KeYParser.g4 @@ -708,6 +708,7 @@ varexpId: // weigl, 2021-03-12: This will be later just an arbitrary identifier. | GET_VARIANT | IS_LABELED | ISINSTRICTFP + | HAS_ANNOTATION ; varexp_argument diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeY.java b/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeY.java index acfc54551ed..253c8acf7de 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeY.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeY.java @@ -67,7 +67,7 @@ * * It manages the entire contact with the recoder framework and ensures that their cross-referencing * data is always uptodate. Prior to reading any source code, special classes (i.e. stubs for some - * needed library classes) are parsed in to have them available at any time. + * needed library classes) are parsed in order to have them available at any time. * * To use a Recoder2KeY bridge to convert data structures you can use the functions: * {@link #readCompilationUnit(String)}, {@link #readCompilationUnitsAsFiles(String[], FileRepo)} or diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/SchemaRecoder2KeYConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/SchemaRecoder2KeYConverter.java index c97fa310414..9b0623219ff 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/SchemaRecoder2KeYConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/SchemaRecoder2KeYConverter.java @@ -312,10 +312,17 @@ public LocalVariableDeclaration convert(recoder.java.declaration.LocalVariableDe SchemaVariable typesv = ((TypeSVWrapper) lvd.getTypeReference()).getSV(); List mods = lvd.getModifiers(); - Modifier[] modifiers = new Modifier[mods == null ? 0 : mods.size()]; - for (int i = 0; i < modifiers.length; i++) { + List annots = lvd.getAnnotations(); + var modCount = mods == null ? 0 : mods.size(); + var annotCount = annots == null ? 0 : annots.size(); + Modifier[] modifiers = new Modifier[modCount + annotCount]; + + for (int i = 0; i < modCount; i++) { modifiers[i] = (Modifier) callConvert(mods.get(i)); } + for (int i = 0; i < annotCount; i++) { + modifiers[i + modCount] = (Modifier) callConvert(annots.get(i)); + } return new LocalVariableDeclaration(modifiers, (ProgramSV) typesv, varspecs); } else { diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaJavaProgramFactory.java b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaJavaProgramFactory.java index 18202e0b800..efd28d00f34 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaJavaProgramFactory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaJavaProgramFactory.java @@ -33,7 +33,11 @@ import recoder.list.generic.ASTArrayList; import recoder.list.generic.ASTList; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class SchemaJavaProgramFactory extends JavaProgramFactory { + private static final Logger LOGGER = LoggerFactory.getLogger(SchemaJavaProgramFactory.class); protected Namespace svns; diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/JavaDLTheory.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/JavaDLTheory.java index 49f1f6ac0d9..a79ced3f819 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/JavaDLTheory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/JavaDLTheory.java @@ -21,7 +21,7 @@ import org.key_project.util.ExtList; /** - * The JavaDL theory class provides access to function symvols, sorts that are part of the core + * The JavaDL theory class provides access to function symbols, sorts that are part of the core * logic * like cast or instanceof functions. */ diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/varexp/TacletBuilderManipulators.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/varexp/TacletBuilderManipulators.java index ef17dc69038..4dc9f0a0565 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/varexp/TacletBuilderManipulators.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/varexp/TacletBuilderManipulators.java @@ -270,6 +270,8 @@ public VariableCondition build(Object[] arguments, List parameters, new ConstructorBasedBuilder("static", StaticReferenceCondition.class, SV); public static final TacletBuilderCommand DIFFERENT_FIELDS = new ConstructorBasedBuilder("differentFields", DifferentFields.class, SV, SV); + public static final AbstractConditionBuilder HAS_ANNOTATION = + new ConstructorBasedBuilder("hasAnnotation", HasAnnotationCondition.class, SV, S); public static final AbstractConditionBuilder SAME_OBSERVER = new ConstructorBasedBuilder("sameObserver", SameObserverCondition.class, PV, PV); public static final AbstractConditionBuilder applyUpdateOnRigid = new ConstructorBasedBuilder( @@ -381,7 +383,8 @@ public IsLabeledCondition build(Object[] arguments, List parameters, applyUpdateOnRigid, DROP_EFFECTLESS_ELEMENTARIES, SIMPLIFY_ITE_UPDATE, SUBFORMULAS, STATIC_FIELD, MODEL_FIELD, SUBFORMULA, DROP_EFFECTLESS_STORES, EQUAL_UNIQUE, META_DISJOINT, - IS_OBSERVER, CONSTANT, HAS_SORT, LABEL, NEW_LABEL, HAS_ELEM_SORT, IS_IN_STRICTFP); + IS_OBSERVER, CONSTANT, HAS_SORT, LABEL, NEW_LABEL, HAS_ELEM_SORT, IS_IN_STRICTFP, + HAS_ANNOTATION); register(STORE_TERM_IN, STORE_STMT_IN, HAS_INVARIANT, GET_INVARIANT, GET_FREE_INVARIANT, GET_VARIANT, IS_LABELED); loadWithServiceLoader(); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java new file mode 100644 index 00000000000..78023f9ce78 --- /dev/null +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java @@ -0,0 +1,100 @@ +/* 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.conditions; + +import de.uka.ilkd.key.java.Services; +import de.uka.ilkd.key.rule.VariableConditionAdapter; +import de.uka.ilkd.key.rule.inst.SVInstantiations; + +import de.uka.ilkd.key.java.declaration.*; + +import org.key_project.logic.SyntaxElement; +import org.key_project.logic.op.sv.SchemaVariable; +import de.uka.ilkd.key.logic.Term; +import de.uka.ilkd.key.ldt.HeapLDT; +import org.key_project.logic.op.Function; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class HasAnnotationCondition extends VariableConditionAdapter { + private static final Logger LOGGER = LoggerFactory.getLogger(HasAnnotationCondition.class); + + private final SchemaVariable variable; + private final String annot; + + public HasAnnotationCondition(SchemaVariable variable, String annot) { + this.variable = variable; + this.annot = annot; + } + + @Override + public boolean check(SchemaVariable var, SyntaxElement subst, + SVInstantiations svInst, Services services) { + + if (var != variable) return true; + + var inst = svInst.getInstantiation(variable); + + if (!(inst instanceof Term)) return false; + var op = ((Term) inst).op(); + + LOGGER.info("{} {}", variable, variable.getClass()); + + if (op.arity() != 0) return false; + + if (op instanceof Function) { + return matchesField(services, (Function)op); + } + + return false; + } + + public boolean matchesField(Services services, Function op) { + var kpmi = services.getJavaInfo().getKeYProgModelInfo(); + + HeapLDT.SplitFieldName name = HeapLDT.trySplitFieldName(op); + if (name == null) return false; + + var classType = ((Services) services).getJavaInfo() + .getTypeByName(name.className()); + + if (classType == null || + !(classType.getJavaType() instanceof ClassDeclaration)) return false; + + var recoderTypeDecl = (recoder.java.declaration.TypeDeclaration) + kpmi.rec2key().toRecoder(classType); + + var fields = recoderTypeDecl.getAllFields(); + var field = fields.stream() + .filter(f -> f.getName().equals(name.attributeName())) + .findFirst() + .orElse(null); + + if (field == null) return false; + + var fType = field.getContainingClassType(); + if (!(fType instanceof recoder.java.declaration.TypeDeclaration)) return false; + + var fieldSpec = ((recoder.java.declaration.TypeDeclaration)fType) + .getFields().stream() + .filter(spec -> spec.getName().equals(name.attributeName())) + .findFirst() + .orElse(null); + + if (fieldSpec == null) return false; + + var fieldDecl = fieldSpec.getParent(); + var declAnnotations = fieldDecl.getAnnotations(); + var value = declAnnotations.stream() + .anyMatch(a -> a.getTypeReference().getName().equals(annot)); + + return value; + } + + @Override + public String toString() { + return "\\hasAnnotation(" + variable + ", " + annot + ")"; + } +} diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/TacletMatchProgram.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/TacletMatchProgram.java index 4fe1e671e8f..a54135978b2 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/TacletMatchProgram.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/TacletMatchProgram.java @@ -171,4 +171,16 @@ public MatchConditions match(Term p_toMatch, MatchConditions p_matchCond, return mc; } + @Override + public String toString() { + String s = "MatchProgram {" + System.lineSeparator(); + for (var inst : instruction) { + s += " " + inst.toString() + System.lineSeparator(); + } + + s += "}" + System.lineSeparator(); + + return s; + } + } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchElementaryUpdateInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchElementaryUpdateInstruction.java index 3f4c57e6bf4..a647f1ee96e 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchElementaryUpdateInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchElementaryUpdateInstruction.java @@ -54,4 +54,9 @@ public MatchConditions match(TermNavigator termPosition, MatchConditions matchCo } return result; } + + @Override + public String toString() { + return "MatchElemantaryUpdateInstruction"; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchFormulaSVInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchFormulaSVInstruction.java index c926c716847..a8fa274731e 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchFormulaSVInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchFormulaSVInstruction.java @@ -40,4 +40,8 @@ public MatchConditions match(TermNavigator termPosition, MatchConditions mc, return result; } + @Override + public String toString() { + return "MatchFormulaSVInstruction(op: " + op + ")"; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchModalOperatorSVInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchModalOperatorSVInstruction.java index 5e06303b293..3e6061301f9 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchModalOperatorSVInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchModalOperatorSVInstruction.java @@ -35,4 +35,9 @@ public MatchConditions match(TermNavigator termPosition, LogicServices services) { return match(termPosition.getCurrentSubterm(), mc, services); } + + @Override + public String toString() { + return "MatchModalOperatorSVInstruction"; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchModalityInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchModalityInstruction.java index dc655cd3027..355b2dc36fc 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchModalityInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchModalityInstruction.java @@ -11,6 +11,9 @@ import org.key_project.logic.LogicServices; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * The match instruction reports a success if the top level operator of the term to be matched is * the same modality like the one for which this instruction has been @@ -18,6 +21,7 @@ */ public class MatchModalityInstruction extends Instruction implements MatchOperatorInstruction { + private static final Logger LOGGER = LoggerFactory.getLogger(MatchModalityInstruction.class); public MatchModalityInstruction(Modality op) { super(op); @@ -54,4 +58,8 @@ public MatchConditions match(TermNavigator termPosition, MatchConditions matchCo return match(termPosition.getCurrentSubterm(), matchConditions, services); } + @Override + public String toString() { + return "MatchModalityInstruction(op: " + op.toString() + ")"; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchOpIdentityInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchOpIdentityInstruction.java index 33c727c2096..7f7c2f21bbf 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchOpIdentityInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchOpIdentityInstruction.java @@ -61,4 +61,9 @@ public MatchConditions match(TermNavigator termPosition, MatchConditions matchCo return result; } + @Override + public String toString() { + return "MatchIdentityInstruction"; + } + } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchOperatorInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchOperatorInstruction.java index 4cd996587c6..fc9ce66c713 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchOperatorInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchOperatorInstruction.java @@ -13,4 +13,5 @@ public interface MatchOperatorInstruction extends MatchInstruction { MatchConditions match(Operator instantiationCandidate, MatchConditions matchConditions, LogicServices services); + String toString(); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramInstruction.java index e313232406e..3f086650e5f 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramInstruction.java @@ -9,6 +9,9 @@ import de.uka.ilkd.key.rule.MatchConditions; import de.uka.ilkd.key.rule.match.vm.TermNavigator; +import de.uka.ilkd.key.java.StatementBlock; +import de.uka.ilkd.key.java.declaration.JavaDeclaration; + import org.key_project.logic.LogicServices; public class MatchProgramInstruction implements MatchInstruction { @@ -31,4 +34,18 @@ public MatchConditions match(TermNavigator termPosition, MatchConditions matchCo } return result; } + + @Override + public String toString() { + var add = ""; + + if (pe instanceof StatementBlock) { + var body = ((StatementBlock)pe).getBody(); + var first = body.get(0); + + add += " " + first.toString() + " " + first.getClass() + " " + ((JavaDeclaration)first).getModifiers(); + } + + return "MatchProgramInstruction(pe: " + pe.toString() + ", " + pe.getClass() + ")" + add; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramSVInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramSVInstruction.java index 8906ea19c35..479268aec77 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramSVInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramSVInstruction.java @@ -126,4 +126,9 @@ public MatchConditions match(TermNavigator termPosition, } return result; } + + @Override + public String toString() { + return "MatchProgramSVInstruction"; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchSchemaVariableInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchSchemaVariableInstruction.java index 815513d44ee..7a177e23967 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchSchemaVariableInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchSchemaVariableInstruction.java @@ -77,4 +77,8 @@ public MatchConditions match(ProgramElement instantiationCandidate, MatchConditi } + @Override + public String toString() { + return "MatchSchemaVariableInstruction"; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchSortDependingFunctionInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchSortDependingFunctionInstruction.java index c1000e6b69a..bb5a64725fd 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchSortDependingFunctionInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchSortDependingFunctionInstruction.java @@ -99,4 +99,8 @@ public MatchConditions match(TermNavigator termPosition, MatchConditions mc, return result; } + @Override + public String toString() { + return "MatchSortDependingFunctionInstruction"; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchTermLabelInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchTermLabelInstruction.java index 0d96c4d78f7..a2c28703f9b 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchTermLabelInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchTermLabelInstruction.java @@ -68,4 +68,9 @@ public MatchConditions match(TermNavigator termPosition, MatchConditions matchCo return result; } + @Override + public String toString() { + return "MatchTermLabelInstruction"; + } + } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchTermSVInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchTermSVInstruction.java index 1d127b553ff..8867d940ad8 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchTermSVInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchTermSVInstruction.java @@ -34,4 +34,9 @@ public MatchConditions match(TermNavigator termPosition, MatchConditions mc, return result; } + @Override + public String toString() { + return "MatchTermSVInstruction"; + } + } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchUpdateSVInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchUpdateSVInstruction.java index 9449b8e0092..57b47b4d0e0 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchUpdateSVInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchUpdateSVInstruction.java @@ -34,4 +34,8 @@ public MatchConditions match(TermNavigator termPosition, MatchConditions mc, return result; } + @Override + public String toString() { + return "MatchUpdateSVInstruction"; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchVariableSVInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchVariableSVInstruction.java index 6ce54507974..27ef838481e 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchVariableSVInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchVariableSVInstruction.java @@ -43,4 +43,9 @@ public MatchConditions match(TermNavigator termPosition, MatchConditions mc, return result; } + @Override + public String toString() { + return "MatchVariableSVInstruction"; + } + } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/UnbindVariablesInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/UnbindVariablesInstruction.java index 3f0facaaf60..d3f1a0b5335 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/UnbindVariablesInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/UnbindVariablesInstruction.java @@ -16,4 +16,8 @@ public MatchConditions match(TermNavigator termPosition, MatchConditions matchCo return matchConditions.shrinkRenameTable(); } + @Override + public String toString() { + return "UnbindVariablesInstruction"; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/DefaultLemmaGenerator.java b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/DefaultLemmaGenerator.java index 2c5917fc031..0bbaa22675c 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/DefaultLemmaGenerator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/DefaultLemmaGenerator.java @@ -29,6 +29,9 @@ import org.key_project.util.collection.ImmutableArray; import org.key_project.util.collection.ImmutableSet; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * The default lemma generator: Supports only certain types of taclets. If a taclet is not * supported, the generator throws an exception. @@ -38,6 +41,7 @@ class DefaultLemmaGenerator implements LemmaGenerator { // Describes how a schema variable is mapped to another operator, e.g. // logical variable. private final HashMap mapping = new LinkedHashMap<>(); + private static final Logger LOGGER = LoggerFactory.getLogger(DefaultLemmaGenerator.class); @Override public TacletFormula translate(Taclet taclet, TermServices services) { @@ -100,6 +104,7 @@ public String visit(Taclet taclet, boolean visitAddrules) { } public static String checkForIllegalConditions(Taclet taclet) { + LOGGER.info("{} {}", taclet, taclet.getVariableConditions()); if (!taclet.getVariableConditions().isEmpty()) { return "The given taclet " + taclet.name() + " contains variable conditions that are not supported."; diff --git a/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj b/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj index 0577ae58ba0..163237a94e6 100644 --- a/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj +++ b/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj @@ -847,11 +847,11 @@ PackageSpecification PackageDeclaration() : annotations.trimToSize(); } "package" - { - result = factory.createPackageSpecification(); - setPrefixInfo(result); - result.setAnnotations(annotations); - } + { + result = factory.createPackageSpecification(); + setPrefixInfo(result); + result.setAnnotations(annotations); + } qn = Name() ";" { result.setPackageReference(qn.toPackageReference()); @@ -3792,25 +3792,8 @@ Statement BlockStatement() : { (LOOKAHEAD((AnnotationUse())* [ "final" ] "(" ")") result = SVLocalVariableDeclaration() ";" - | LOOKAHEAD((AnnotationUse())* [ "final" | "ghost" ] ";" , - { - isLocalVariable((getToken(1).kind == FINAL || getToken(1).kind == GHOST ? getToken(3) : getToken(2)).toString()) - }) - result = SVLocalVariableDeclaration() ";" - | LOOKAHEAD((AnnotationUse())* [ "final" | "ghost" ] "=" , - { - isLocalVariable((getToken(1).kind == FINAL || getToken(1).kind == GHOST ? getToken(3) : getToken(2)).toString()) - }) - result = SVLocalVariableDeclaration() ";" - | LOOKAHEAD((AnnotationUse())* [ "final" | "ghost" ] Type() ";" , - { - isLocalVariable((getToken(1).kind == FINAL || getToken(1).kind == GHOST ? getToken(3) : getToken(2)).toString()) - }) - result = SVLocalVariableDeclaration() ";" - | LOOKAHEAD((AnnotationUse())* [ "final" | "ghost" ] Type() "=" , - { - isLocalVariable((getToken(1).kind == FINAL || getToken(1).kind == GHOST ? getToken(3) : getToken(2)).toString()) - }) + | LOOKAHEAD((AnnotationUse())* [ "final" | "ghost" ] ( | Type()) + LOOKAHEAD( (";" | "=" ), { isLocalVariable(getToken(1).toString()) })) result = SVLocalVariableDeclaration() ";" | LOOKAHEAD((AnnotationUse())* [ "final" ] Type() ) @@ -3876,7 +3859,9 @@ LocalVariableDeclaration SVLocalVariableDeclaration() : { LocalVariableDeclaration result; ASTList vl = new ASTArrayList(1); + ASTList sl = new ASTArrayList(); TypeReference tr; + AnnotationUseSpecification annot; VariableSpecification var; } { @@ -3884,23 +3869,25 @@ LocalVariableDeclaration SVLocalVariableDeclaration() : result = factory.createLocalVariableDeclaration(); setPrefixInfo(result); } + (annot = AnnotationUse() { sl.add(annot); })* [ "final" { Final fi = factory.createFinal(); setPrefixInfo(fi); - result.setDeclarationSpecifiers(new ASTArrayList(fi)); + sl.add(fi); } | "ghost" { Ghost g = new Ghost(); setPrefixInfo(g); - result.setDeclarationSpecifiers(new ASTArrayList(g)); + sl.add(g); } ] (tr = TypeMC() | tr = TypeSV() | tr = Type() ) var = SVVariableDeclarator(false) {vl.add(var);} { + result.setDeclarationSpecifiers(sl); result.setTypeReference(tr); result.setVariableSpecifications(vl); checkConstruction(result); diff --git a/recoder/src/main/java/recoder/java/StatementBlock.java b/recoder/src/main/java/recoder/java/StatementBlock.java index 35cf61f5641..2e08585bfce 100644 --- a/recoder/src/main/java/recoder/java/StatementBlock.java +++ b/recoder/src/main/java/recoder/java/StatementBlock.java @@ -350,4 +350,17 @@ public void removeVariableFromScope(String name) { public void accept(SourceVisitor v) { v.visitStatementBlock(this); } + + @Override + public String toString() { + var out = "{" + System.lineSeparator(); + + for (var statement : body) { + out += " " + statement.toString() + System.lineSeparator(); + } + + out += "}" + System.lineSeparator(); + + return out; + } } diff --git a/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java b/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java index baef2de3f25..554311e324d 100644 --- a/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java +++ b/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java @@ -50,7 +50,7 @@ public AnnotationUseSpecification(TypeReference reference) { */ public AnnotationUseSpecification(AnnotationUseSpecification proto) { super(proto); - this.reference = (TypeReference) proto.parent.deepClone(); + this.reference = (TypeReference) proto.parent; this.elementValuePairs = proto.elementValuePairs.deepClone(); makeParentRoleValid(); } @@ -266,4 +266,8 @@ public void setExpressionContainer(ExpressionContainer c) { parent = c; } + @Override + public String toString() { + return "@" + reference.getName(); + } } diff --git a/recoder/src/main/java/recoder/java/declaration/LocalVariableDeclaration.java b/recoder/src/main/java/recoder/java/declaration/LocalVariableDeclaration.java index d1e4588b36e..834da7a3c53 100644 --- a/recoder/src/main/java/recoder/java/declaration/LocalVariableDeclaration.java +++ b/recoder/src/main/java/recoder/java/declaration/LocalVariableDeclaration.java @@ -343,4 +343,13 @@ public boolean isTransient() { public void accept(SourceVisitor v) { v.visitLocalVariableDeclaration(this); } + + @Override + public String toString() { + var declspecs = getDeclarationSpecifiers(); + + return declspecs == null ? "" : declspecs.toString() + + " " + getTypeReference().toString() + + " " + varSpecs.toString() + ";"; + } } diff --git a/recoder/src/main/java/recoder/java/declaration/VariableSpecification.java b/recoder/src/main/java/recoder/java/declaration/VariableSpecification.java index 6c530533f1e..efdd95416f0 100644 --- a/recoder/src/main/java/recoder/java/declaration/VariableSpecification.java +++ b/recoder/src/main/java/recoder/java/declaration/VariableSpecification.java @@ -438,4 +438,9 @@ public SourceElement getLastElement() { public void accept(SourceVisitor v) { v.visitVariableSpecification(this); } + + @Override + public String toString() { + return getFullName(); + } } diff --git a/universe.key b/universe.key deleted file mode 100644 index 7b8f67169a6..00000000000 --- a/universe.key +++ /dev/null @@ -1,177 +0,0 @@ - -\predicates { - owns(Object, Object); - dominates(Object, Object); - dominatesSet(Object, LocSet); - undom(Object, Object); -} - -\rules(programRules:Java) { - // --------------------------------------------------- - // Ownership Rules - // --------------------------------------------------- - - ownsSelf { - \schemaVar \term Object o; - - \find(owns(o, o)) - - \replacewith(false) - }; - - dominatesDef { - \schemaVar \term Object x, y; - \schemaVar \variables Object ov; - - \find(dominates(x, y)) - \varcond(\notFreeIn(ov, x, y)) - \replacewith(owns(x, y) | \exists ov; (owns(x, ov) & dominates(ov, y))) - }; - - peerOwn { - \schemaVar \term Object x, y; - - \assumes(owns(y, x) ==>) - \find(owns(x, y) ==>) - \closegoal - }; - - - undomDef { - \schemaVar \term Object x, y; - - \find(undom(x, y)) - - \replacewith(!dominates(x, y) & !dominates(y, x)) - }; - - dominatesSetDef { - \schemaVar \term LocSet s; - \schemaVar \term Object x; - \schemaVar \variables Object o; - \schemaVar \variables Field f; - - \find(dominatesSet(x, s)) - - \varcond(\notFreeIn(o, s, x), \notFreeIn(f, s, x)) - \replacewith(\forall o; (\forall f; (elementOf(o, f, s) -> dominates(x, o)))) - }; - - dominatesSelf { - \schemaVar \term Object o; - - \find(dominates(o, o)) - - \replacewith(false) - }; - - singleOwner { - \schemaVar \term Object x, y, z; - - \assumes(owns(z, y) ==>) - \find(owns(x, y) ==>) - - \add(x = z ==>) - }; - - // These are the rules that should be derivable from the first rules - - peerDominate { - \schemaVar \term Object x, y; - - \assumes(dominates(y, x) ==>) - \find(dominates(x, y) ==>) - \closegoal - }; - - dominatesSetEmpty { - \schemaVar \term Object o; - - \find(dominatesSet(o, empty)) - - \replacewith(true) - }; - - dominatesSetAllLocs { - \schemaVar \term Object o; - - \find(dominatesSet(o, allLocs)) - - \replacewith(false) - }; - - dominatesSetUnion { - \schemaVar \term LocSet s1, s2; - \schemaVar \term Object o; - - \find(dominatesSet(o, union(s1, s2))) - - \replacewith(dominatesSet(o, s1) & dominatesSet(o, s2)) - }; - - dominatesSetSubset { - \schemaVar \term LocSet s1, s2; - \schemaVar \term Object o; - - \assumes(subset(s2, s1) ==>) - \find(dominatesSet(o, s1) ==>) - - \add(dominatesSet(o, s2) ==>) - }; - - dominatesSetDisjoint { - \schemaVar \term Object o1, o2; - \schemaVar \term LocSet s1, s2; - - \assumes(dominatesSet(o1, s1), dominatesSet(o2, s2) ==>) - \find(undom(o1, o2) ==>) - \add(disjoint(s1, s2) ==>) - }; - - // rules to just get going - anyOwns { - \schemaVar \term Object o1, o2; - \find(o1) - \add(owns(o1, o2) ==>) - }; - - anyDominates { - \schemaVar \term Object o1, o2; - \find(o1) - \add(dominates(o1, o2) ==>) - }; - - dominatesTransitive { - \schemaVar \term Object x, y, z; - \assumes(dominates(x, y), dominates(y, z) ==>) - \add(dominates(x, z) ==>) - }; - - dominatesSetElement { - \schemaVar \term LocSet s; - \schemaVar \term Object x, o; - \schemaVar \term Field f; - - \assumes(elementOf(o, f, s) ==>) - \find(dominatesSet(x, s) ==>) - - \add(dominates(x, o) ==>) - }; - - anyDominatesSet { - \schemaVar \term Object o; - \schemaVar \term LocSet s; - - \find(o) - \add(dominatesSet(o, s) ==>) - }; - - sameLevelUndom { - \schemaVar \term Object o, x, y; - - \assumes(owns(o, x), owns(o, y) ==>) - \find(==> x = y) - - \add(undom(x, y) ==>) - }; -} From 82f0bccdcac1f3c3ce468ca4e6c88a44bed9715a Mon Sep 17 00:00:00 2001 From: PiisRational Date: Wed, 2 Jul 2025 12:38:35 +0200 Subject: [PATCH 06/27] do some bugfixes in the recoder parsers --- .../modifier/AnnotationUseSpecification.java | 7 +++++++ .../key/rule/conditions/HasAnnotationCondition.java | 2 -- .../uka/ilkd/key/parser/proofjava/ProofJavaParser.jj | 10 ++++------ .../ilkd/key/parser/schemajava/SchemaJavaParser.jj | 11 +++++------ .../de/uka/ilkd/key/proof/rules/heapRules.key | 2 +- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java b/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java index fa81c6b4a6d..dfcbe591dd6 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java @@ -3,6 +3,8 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.java.declaration.modifier; +import org.key_project.logic.SyntaxElement; + import de.uka.ilkd.key.java.ProgramElement; import de.uka.ilkd.key.java.declaration.Modifier; import de.uka.ilkd.key.java.reference.TypeReference; @@ -39,6 +41,11 @@ public ProgramElement getChildAt(int index) { throw new ArrayIndexOutOfBoundsException(); } + @Override + public SyntaxElement getChild(int index) { + return getChildAt(index); + } + public int getChildCount() { return 1; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java index 78023f9ce78..4e7be041043 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java @@ -40,8 +40,6 @@ public boolean check(SchemaVariable var, SyntaxElement subst, if (!(inst instanceof Term)) return false; var op = ((Term) inst).op(); - LOGGER.info("{} {}", variable, variable.getClass()); - if (op.arity() != 0) return false; if (op instanceof Function) { diff --git a/key.core/src/main/javacc/de/uka/ilkd/key/parser/proofjava/ProofJavaParser.jj b/key.core/src/main/javacc/de/uka/ilkd/key/parser/proofjava/ProofJavaParser.jj index 849094e6a9d..7b05784360a 100644 --- a/key.core/src/main/javacc/de/uka/ilkd/key/parser/proofjava/ProofJavaParser.jj +++ b/key.core/src/main/javacc/de/uka/ilkd/key/parser/proofjava/ProofJavaParser.jj @@ -3583,25 +3583,23 @@ TypeOperator AllocationExpression() : ASTList typeArgs; } { + "new" + (AnnotationUse())* ( LOOKAHEAD(2) - "new" + tr = PrimitiveType() { na = factory.createNewArray(); setPrefixInfo(na); - } - tr = PrimitiveType() - { na.setTypeReference(tr); } result = ArrayDimsAndInits(na) | - "new" + qn = TypedName() { result = factory.createNew(); setPrefixInfo(result); } - qn = TypedName() [typeArgs = NonWildcardTypeArguments() { qn.setTypeArguments(typeArgs); } ] ( args = Arguments() diff --git a/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj b/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj index 163237a94e6..034dd121e59 100644 --- a/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj +++ b/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj @@ -3455,26 +3455,25 @@ TypeOperator AllocationExpression() : ASTList typeArgs; } { + "new" + (AnnotationUse())* ( LOOKAHEAD(2) - ( "new" + ( + (tr = PrimitiveType() | tr = TypeMC()) { na = factory.createNewArray(); setPrefixInfo(na); - } - (tr = PrimitiveType() | tr = TypeMC()) - { na.setTypeReference(tr); } result = ArrayDimsAndInits(na) ) | ( - "new" + (qn = TypedName() | tr = TypeSV()) { result = factory.createNew(); setPrefixInfo(result); } - (qn = TypedName() | tr = TypeSV()) [typeArgs = NonWildcardTypeArguments() { qn.setTypeArguments(typeArgs); } ] ( ( args = Arguments() diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key index 6936e4daea1..44f6e21d4ae 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key @@ -3,7 +3,7 @@ * SPDX-License-Identifier: GPL-2.0-only */ // This file contains the RULES for heaps -// To find the DECLARATIONS for heaps, please visit heapRules.key +// To find the DECLARATIONS for heaps, please visit heap.key \rules(programRules:Java) { From 912cc8c8c5ea957df521c89ba963cf6ded8f1265 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Mon, 21 Jul 2025 23:25:15 +0200 Subject: [PATCH 07/27] the last changes --- .../ilkd/key/java/Recoder2KeYConverter.java | 21 +- .../modifier/AnnotationUseSpecification.java | 2 +- .../key/java/expression/operator/New.java | 29 +- .../java/expression/operator/NewArray.java | 10 + .../expression/operator/TypeOperator.java | 31 +- .../de/uka/ilkd/key/pp/PrettyPrinter.java | 18 +- .../conditions/HasAnnotationCondition.java | 9 +- .../rule/tacletbuilder/TacletGenerator.java | 8 +- .../key/parser/proofjava/ProofJavaParser.jj | 9 +- .../key/parser/schemajava/SchemaJavaParser.jj | 11 +- .../key/proof/rules/instanceAllocation.key | 2 +- .../uka/ilkd/key/proof/rules/locSetsRules.key | 2 +- .../ilkd/key/proof/rules/standardRules.key | 5 + .../de/uka/ilkd/key/proof/rules/universe.key | 14 + .../uka/ilkd/key/proof/rules/universeDefs.key | 252 +++++++++++ .../ilkd/key/proof/rules/universeLemmas.key | 415 ++++++++++++++++++ .../AnnotationUseSpecification.java | 10 +- .../expression/operator/TypeOperator.java | 34 ++ 18 files changed, 864 insertions(+), 18 deletions(-) create mode 100644 key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key create mode 100644 key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key create mode 100644 key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java index 28002dfabd6..f0369eb9a2a 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java @@ -629,6 +629,11 @@ public Instanceof convert(recoder.java.expression.operator.Instanceof rio) { public NewArray convert(recoder.java.expression.operator.NewArray newArr) { // first we need to collect all children ExtList children = collectChildren(newArr); + + // annotations are collected separatly as they are not tracked + var annots = newArr.getAnnotations(); + for (int i = annots.size() - 1; i >= 0; i--) children.add(convert(annots.get(i))); + // now we have to extract the array initializer // is stored separately and must not appear in the children list ArrayInitializer arrInit = children.get(ArrayInitializer.class); @@ -1750,6 +1755,18 @@ public New convert(recoder.java.expression.operator.New n) { } } + // annotations are collected separatly as they are not tracked + var annots = n.getAnnotations(); + ImmutableArray immutableAnnots = null; + if (annots != null) { + var annotArr = new AnnotationUseSpecification[annots.size()]; + assert annots.size() >= 1; + for (int i = annots.size() - 1; i >= 0; i--) { + annotArr[i] = convert(annots.get(i)); + } + immutableAnnots = new ImmutableArray<>(annotArr); + } + TypeReference maybeAnonClass = (TypeReference) callConvert(tr); if (n.getClassDeclaration() != null) { callConvert(n.getClassDeclaration()); @@ -1758,9 +1775,9 @@ public New convert(recoder.java.expression.operator.New n) { } if (rp == null) { - return new New(arguments, maybeAnonClass, null); + return new New(arguments, maybeAnonClass, null, immutableAnnots); } else { - return new New(arguments, maybeAnonClass, (ReferencePrefix) callConvert(rp)); + return new New(arguments, maybeAnonClass, (ReferencePrefix) callConvert(rp), immutableAnnots); } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java b/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java index dfcbe591dd6..a9324ac091c 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java @@ -20,7 +20,7 @@ public AnnotationUseSpecification(TypeReference tr) { } protected String getSymbol() { - return "@" + tr.toString(); + return "@" + tr.getName(); } public TypeReference getTypeReferenceAt(int index) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/New.java b/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/New.java index bd5c67dfdcc..a0d8febe50d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/New.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/New.java @@ -7,6 +7,7 @@ import de.uka.ilkd.key.java.declaration.ClassDeclaration; import de.uka.ilkd.key.java.declaration.TypeDeclaration; import de.uka.ilkd.key.java.declaration.TypeDeclarationContainer; +import de.uka.ilkd.key.java.declaration.modifier.AnnotationUseSpecification; import de.uka.ilkd.key.java.expression.ExpressionStatement; import de.uka.ilkd.key.java.reference.ConstructorReference; import de.uka.ilkd.key.java.reference.ReferencePrefix; @@ -14,6 +15,8 @@ import de.uka.ilkd.key.java.reference.TypeReference; import de.uka.ilkd.key.java.visitor.Visitor; + +import org.key_project.util.collection.ImmutableArray; import org.key_project.util.ExtList; /** @@ -72,10 +75,10 @@ public New(ExtList children, ReferencePrefix rp, PositionInfo pi) { accessPath = rp; } - /** * Constructor for the transformation of COMPOST ASTs to KeY. * + * @param arguments the arguments to the constructor * @param type a TypeReference (the referred type) * @param rp a ReferencePrefix as access path for the constructor */ @@ -85,6 +88,20 @@ public New(Expression[] arguments, TypeReference type, ReferencePrefix rp) { accessPath = rp; } + /** + * Constructor for the transformation of COMPOST ASTs to KeY. + * + * @param arguments the arguments to the constructor + * @param type a TypeReference (the referred type) + * @param rp a ReferencePrefix as access path for the constructor + * @param annotations the annotations on the constructor call + */ + public New(Expression[] arguments, TypeReference type, ReferencePrefix rp, ImmutableArray annotations) { + super(arguments, type, annotations); + anonymousClass = null; + accessPath = rp; + } + @Override public SourceElement getFirstElement() { @@ -156,6 +173,9 @@ public int getChildCount() { if (anonymousClass != null) { result++; } + if (annotations != null) { + result += annotations.size(); + } return result; } @@ -186,6 +206,13 @@ public ProgramElement getChildAt(int index) { if (index == 0) { return anonymousClass; } + index--; + } + if (annotations != null) { + len = annotations.size(); + if (len > index) { + return annotations.get(index); + } } throw new ArrayIndexOutOfBoundsException(); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/NewArray.java b/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/NewArray.java index 2496a1a84cd..8304eefbe7f 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/NewArray.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/NewArray.java @@ -159,6 +159,9 @@ public int getChildCount() { if (arrayInitializer != null) { result++; } + if (annotations != null) { + result += annotations.size(); + } return result; } @@ -189,6 +192,13 @@ public ProgramElement getChildAt(int index) { if (index == 0) { return arrayInitializer; } + index--; + } + if (annotations != null) { + len = annotations.size(); + if (len > index) { + return annotations.get(index); + } } throw new ArrayIndexOutOfBoundsException(); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/TypeOperator.java b/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/TypeOperator.java index f947db77c8c..fbddcb19802 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/TypeOperator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/TypeOperator.java @@ -11,7 +11,9 @@ import de.uka.ilkd.key.java.reference.ExecutionContext; import de.uka.ilkd.key.java.reference.TypeReference; import de.uka.ilkd.key.java.reference.TypeReferenceContainer; +import de.uka.ilkd.key.java.declaration.modifier.AnnotationUseSpecification; +import org.key_project.util.collection.ImmutableArray; import org.key_project.util.ExtList; /** @@ -27,6 +29,11 @@ public abstract class TypeOperator extends Operator implements TypeReferenceCont */ protected final TypeReference typeReference; + /** + * Annotations. + */ + protected final ImmutableArray annotations; + /** * Constructor for the transformation of COMPOST ASTs to KeY. @@ -38,6 +45,8 @@ public abstract class TypeOperator extends Operator implements TypeReferenceCont protected TypeOperator(ExtList children) { super(children); typeReference = children.get(TypeReference.class); + annotations = new ImmutableArray<>( + children.collect(AnnotationUseSpecification.class)); } /** @@ -50,20 +59,32 @@ protected TypeOperator(ExtList children) { protected TypeOperator(ExtList children, PositionInfo pi) { super(children); typeReference = children.get(TypeReference.class); + annotations = new ImmutableArray<>( + children.collect(AnnotationUseSpecification.class)); } protected TypeOperator(Expression unaryChild, TypeReference typeref) { super(unaryChild); typeReference = typeref; + annotations = null; } protected TypeOperator(Expression[] arguments, TypeReference typeref) { super(arguments); typeReference = typeref; + annotations = null; + } + + protected TypeOperator(Expression[] arguments, TypeReference typeref, + ImmutableArray annotations) { + super(arguments); + typeReference = typeref; + this.annotations = annotations; } protected TypeOperator() { typeReference = null; + annotations = null; } /** @@ -110,6 +131,12 @@ public KeYJavaType getKeYJavaType(Services javaServ) { return getTypeReference().getKeYJavaType(); } - - + /** + * Get the annotations. + * + * @return the annotations. + */ + public ImmutableArray getAnnotations() { + return annotations; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java b/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java index 7b8feda4500..4e276d5cde4 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java @@ -9,6 +9,7 @@ import de.uka.ilkd.key.java.abstraction.KeYJavaType; import de.uka.ilkd.key.java.abstraction.Type; import de.uka.ilkd.key.java.declaration.*; +import de.uka.ilkd.key.java.declaration.modifier.AnnotationUseSpecification; import de.uka.ilkd.key.java.expression.ArrayInitializer; import de.uka.ilkd.key.java.expression.Operator; import de.uka.ilkd.key.java.expression.ParenthesizedExpression; @@ -184,7 +185,7 @@ protected static String encodeUnicodeChars(String str) { * * @param list a program element list. */ - protected void writeKeywordList(ImmutableArray list) { + protected void writeKeywordList(ImmutableArray list) { for (int i = 0; i < list.size(); i++) { if (i != 0) { layouter.brk(); @@ -1451,6 +1452,14 @@ public void performActionOnNewArray(NewArray x) { if (addParentheses) { layouter.print("("); } + + ImmutableArray annots = x.getAnnotations(); + boolean hasAnnots = annots != null && !annots.isEmpty(); + if (hasAnnots) { + writeKeywordList(annots); + layouter.print(" "); + } + layouter.print("new "); x.getTypeReference().visit(this); @@ -1512,6 +1521,13 @@ public void performActionOnNew(New x) { printReferencePrefix(x.getReferencePrefix()); layouter.keyWord("new").print(" "); + ImmutableArray annots = x.getAnnotations(); + boolean hasAnnots = annots != null && !annots.isEmpty(); + if (hasAnnots) { + writeKeywordList(annots); + layouter.print(" "); + } + x.getTypeReference().visit(this); printArguments(x.getArguments()); if (x.getClassDeclaration() != null) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java index 4e7be041043..f4daa90658b 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java @@ -8,6 +8,7 @@ import de.uka.ilkd.key.rule.inst.SVInstantiations; import de.uka.ilkd.key.java.declaration.*; +import de.uka.ilkd.key.java.expression.operator.TypeOperator; import org.key_project.logic.SyntaxElement; import org.key_project.logic.op.sv.SchemaVariable; @@ -37,7 +38,13 @@ public boolean check(SchemaVariable var, SyntaxElement subst, var inst = svInst.getInstantiation(variable); - if (!(inst instanceof Term)) return false; + if (inst instanceof TypeOperator) { + var out = ((TypeOperator)inst) + .getAnnotations() + .stream() + .anyMatch(a -> a.getTypeReferenceAt(0).getName().equals(annot)); + return out; + } else if (!(inst instanceof Term)) return false; var op = ((Term) inst).op(); if (op.arity() != 0) return false; diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletGenerator.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletGenerator.java index 729dce19cbd..1b915f85d15 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletGenerator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletGenerator.java @@ -240,6 +240,10 @@ public ImmutableSet generateFunctionalRepresentsTaclets(Name name, Term final Pair> limited = limitTerm(schemaRhs, toLimit, services); final Term limitedRhs = limited.first; result = result.union(limited.second); + final TermAndBoundVarPair schemaRepresentsLimited = + new TermAndBoundVarPair( + OpReplacer.replace(schemaRepresents.term.sub(1), limitedRhs, schemaRepresents.term, services.getTermFactory()), + schemaRepresents.boundVars); // create if sequent final boolean finalClass = kjt.getJavaType() instanceof ClassDeclaration @@ -321,7 +325,7 @@ public ImmutableSet generateFunctionalRepresentsTaclets(Name name, Term if (satisfiability) { tacletBuilder.addRuleSet(new RuleSet(new Name("split"))); } - for (VariableSV boundSV : schemaRepresents.boundVars) { + for (VariableSV boundSV : schemaRepresentsLimited.boundVars) { for (SchemaVariable heapSV : heapSVs) { tacletBuilder.addVarsNotFreeIn(boundSV, heapSV); } @@ -338,7 +342,7 @@ public ImmutableSet generateFunctionalRepresentsTaclets(Name name, Term if (satisfiability) { functionalRepresentsAddSatisfiabilityBranch(target, services, heapSVs, selfSV, paramSVs, - schemaRepresents, tacletBuilder); + schemaRepresentsLimited, tacletBuilder); } tacletBuilder.setApplicationRestriction(RewriteTaclet.SAME_UPDATE_LEVEL); result = result.add(tacletBuilder.getTaclet()); diff --git a/key.core/src/main/javacc/de/uka/ilkd/key/parser/proofjava/ProofJavaParser.jj b/key.core/src/main/javacc/de/uka/ilkd/key/parser/proofjava/ProofJavaParser.jj index 7b05784360a..448f617a0b0 100644 --- a/key.core/src/main/javacc/de/uka/ilkd/key/parser/proofjava/ProofJavaParser.jj +++ b/key.core/src/main/javacc/de/uka/ilkd/key/parser/proofjava/ProofJavaParser.jj @@ -3581,10 +3581,15 @@ TypeOperator AllocationExpression() : ClassDeclaration cd = null; NewArray na; ASTList typeArgs; + ASTList annotations = new ASTArrayList(); + AnnotationUseSpecification annot; } { "new" - (AnnotationUse())* + (annot = AnnotationUse() { + annot.makeParentRoleValid(); + annotations.add(annot); + })* ( LOOKAHEAD(2) tr = PrimitiveType() @@ -3631,6 +3636,8 @@ TypeOperator AllocationExpression() : ) ) { + result.setAnnotations(annotations); + result.makeParentRoleValid(); checkConstruction(result); setPostfixInfo(result); return result; diff --git a/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj b/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj index 034dd121e59..4dad0f415a0 100644 --- a/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj +++ b/key.core/src/main/javacc/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj @@ -3453,10 +3453,15 @@ TypeOperator AllocationExpression() : ClassDeclaration cd = null; NewArray na; ASTList typeArgs; + ASTList annotations = new ASTArrayList(); + AnnotationUseSpecification annot; } { "new" - (AnnotationUse())* + (annot = AnnotationUse() { + annot.makeParentRoleValid(); + annotations.add(annot); + })* ( LOOKAHEAD(2) ( @@ -3470,7 +3475,7 @@ TypeOperator AllocationExpression() : ) | ( (qn = TypedName() | tr = TypeSV()) - { + { result = factory.createNew(); setPrefixInfo(result); } @@ -3510,6 +3515,8 @@ TypeOperator AllocationExpression() : ) ) { + result.setAnnotations(annotations); + result.makeParentRoleValid(); checkConstruction(result); return result; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/instanceAllocation.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/instanceAllocation.key index 6c4ec56fdd5..747230bc3d6 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/instanceAllocation.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/instanceAllocation.key @@ -82,7 +82,7 @@ instanceCreationAssignment { \schemaVar \modalOperator {diamond, box} #normal; - \find(\modality{#normal}{.. #lhs = #n; ...}\endmodality (post)) + \find(\modality{#normal}{.. #lhs = #n; ...}\endmodality (post)) \varcond(\newTypeOf(#v0, #lhs)) \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); #constructor-call(#v0, #n); diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key index 40fc57b2780..970be110807 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key @@ -3,7 +3,7 @@ * SPDX-License-Identifier: GPL-2.0-only */ // This file contains the RULES for location sets. -// Find the DECLARATIONS in file locSet.key +// Find the DECLARATIONS in file locSets.key \rules(programRules:Java) { diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key index 90e8d1940cc..522a42e0977 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key @@ -48,6 +48,11 @@ \include seqPerm; \include seqPerm2; +//universe definitions +\include universe; +\include universeDefs; +\include universeLemmas; + // rules for Java (order does not matter, since not provable anyway) \include javaRules; \include loopRules; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key new file mode 100644 index 00000000000..0a00fda0f9c --- /dev/null +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key @@ -0,0 +1,14 @@ +\functions { + Object owner(Object); + LocSet domfp(Object); + LocSet domfpDepth(Object, int); + LocSet repfp(Object); +} + +\predicates { + payload(Object, Field); + dominatesDepth(Object, Object, int); + dominates(Object, Object); + dominatesSet(Object, LocSet); + undom(Object, Object); +} diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key new file mode 100644 index 00000000000..3c67d758dec --- /dev/null +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key @@ -0,0 +1,252 @@ +\rules(programRules:Java) { + // --------------------------------------------------- + // Introduction Rules + // --------------------------------------------------- + + variableDeclarationPeer { + \schemaVar \formula post; + \schemaVar \program Variable #v, #v0; + \schemaVar \program Type #t, #t0; + \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + \schemaVar \program ProgramMethod #pm; + + \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Peer #t0 #v0; ...}\endmodality (post)) + \sameUpdateLevel + + \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) + \add(#v0 != null -> owner(#v) = owner(#v0) ==>) + \addprogvars(#v0) + + \heuristics(simplify_prog, simplify_prog_subset) + //\displayname "variableDeclaration" + }; + + variableDeclarationPeerAssign { + \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + \schemaVar \formula post; + \schemaVar \program Variable #v0; + \schemaVar \program Type #t; + \schemaVar \program VariableInitializer #vi; + + \find(\modality{#allmodal}{.. @universe.qual.Peer #t #v0 = #vi; ...}\endmodality (post)) + \replacewith(\modality{#allmodal}{.. @universe.qual.Peer #t #v0; #v0 = #vi; ...}\endmodality (post)) + + \heuristics(simplify_prog, simplify_prog_subset) + \displayname "variableDeclaration" + }; + + variableDeclarationRep { + \schemaVar \formula post; + \schemaVar \program Variable #v, #v0; + \schemaVar \program Type #t, #t0; + \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + \schemaVar \program ProgramMethod #pm; + + \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Rep #t0 #v0; ...}\endmodality (post)) + + \sameUpdateLevel + \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) + \add(#v0 != null -> #v = owner(#v0) ==>) + \addprogvars(#v0) + + \heuristics(simplify_prog, simplify_prog_subset) + //\displayname "variableDeclaration" + }; + + variableDeclarationRepAssign { + \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + \schemaVar \formula post; + \schemaVar \program Variable #v0; + \schemaVar \program Type #t; + \schemaVar \program VariableInitializer #vi; + + \find(\modality{#allmodal}{.. @universe.qual.Rep #t #v0 = #vi; ...}\endmodality (post)) + \replacewith(\modality{#allmodal}{.. @universe.qual.Rep #t #v0; #v0 = #vi; ...}\endmodality (post)) + + \heuristics(simplify_prog, simplify_prog_subset) + \displayname "variableDeclaration" + }; + + + //instanceCreationAssignmentRep { + // \schemaVar \modalOperator {diamond, box} #normal; + // \schemaVar \program LeftHandSide #lhs; + // \schemaVar \program SimpleInstanceCreation #n; + // \schemaVar \formula post; + // \schemaVar \program Variable #v0; + // + // \find(==> \modality{#normal}{.. #lhs = #n; ...}\endmodality (post)) + // \varcond(\newTypeOf(#v0, #lhs)) + // \replacewith(==> \modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); + // #constructor-call(#v0, #n); + // #post-work(#v0); + // #lhs = #v0; + // ...}\endmodality (post)) + // \heuristics(method_expand) + //}; + instanceCreationAssignmentRep { + \schemaVar \modalOperator {diamond} #diamond; + \schemaVar \modalOperator {diamond, box} #normal; + \schemaVar \formula post; + \schemaVar \program ProgramMethod #pm; + \schemaVar \program Type #t; + \schemaVar \program SimpleInstanceCreation #n; + \schemaVar \program LeftHandSide #lhs; + \schemaVar \program Variable #v0, #v; + + \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) + \sameUpdateLevel + + \varcond(\newTypeOf(#v0, #lhs), \hasAnnotation(#n, Rep)) + + \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); + #constructor-call(#v0, #n); + #post-work(#v0); + #lhs = #v0; + ...}\endmodality (post)) + \add(#v0 != null -> #v = owner(#v0) ==>) + \heuristics(method_expand) + }; + + peerField { + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term Heap h; + + \find(alpha::select(h, o, f)) + \varcond(\hasAnnotation(f, Peer)) + \add(alpha::select(h, o, f) != null -> owner(Object::cast(o)) = owner(Object::cast(alpha::select(h, o, f))) ==>) + \heuristics(simplify) + }; + + ownsField { + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term Heap h; + + \find(alpha::select(h, o, f)) + \varcond(\hasAnnotation(f, Rep)) + \add(alpha::select(h, o, f) != null -> o = owner(Object::cast(alpha::select(h, o, f))) ==>) + \heuristics(simplify) + }; + + //methodArgRep { + // \schemaVar \formula post; + // \schemaVar \modalOperator {diamond, diamond_transaction} #diamond; + // \schemaVar \program Variable #v0, #v1; + // \schemaVar \program MethodName #mn; + // \schemaVar \program [list] Expression #elist0, #elist1; + // + // \find(==> \modality{#diamond}{.. #v0.#mn(#elist0, #v1, #elist1); ...}\endmodality (post)) + // \replacewith(#v0 = owner(#v1) ==> \modality{#diamond}{.. #v0.#mn(#elist0, #v1, #elist1); ...}\endmodality (post)) + //}; + + //ownsParameter { + // \schemaVar \term Object o; + // \schemaVar \term + //}; + + + // --------------------------------------------------- + // Predicate and Function definitions + // --------------------------------------------------- + + dominatesDepthDef { + \schemaVar \term Object x, y; + \schemaVar \variables Object ov; + \schemaVar \term int n; + + \find(dominatesDepth(x, y, n)) + \varcond(\notFreeIn(ov, x, y, n)) + \replacewith(\if (n <= 0) + \then(false) + \else(\if (n = 1) \then(x = owner(y)) \else(\exists ov; (x = owner(ov) & dominatesDepth(ov, y, n - 1))))) + }; + + dominatesDef { + \schemaVar \term Object x, y; + \schemaVar \variables int n; + + \find(dominates(x, y)) + + \varcond(\notFreeIn(n, x, y)) + \replacewith(\exists n; (dominatesDepth(x, y, n))) + }; + + + undomDef { + \schemaVar \term Object x, y; + + \find(undom(x, y)) + + \replacewith(!dominates(x, y) & !dominates(y, x) & !(x = y)) + }; + + dominatesSetDef { + \schemaVar \term LocSet s; + \schemaVar \term Object x; + \schemaVar \variables Object o; + \schemaVar \variables Field f; + + \find(dominatesSet(x, s)) + + \varcond(\notFreeIn(o, s, x), \notFreeIn(f, s, x)) + \replacewith(\forall o; (\forall f; (elementOf(o, f, s) -> dominates(x, o)))) + }; + + domfpDef { + \schemaVar \term Object x; + \schemaVar \variables Object y; + + \find(domfp(x)) + \varcond(\notFreeIn(y, x)) + \replacewith(infiniteUnion{y;}(\if(x = owner(y)) \then(repfp(y)) \else(empty))) + }; + + repfpDef { + \schemaVar \term Object x; + + \find(repfp(x)) + \replacewith(union(domfp(x), x.*)) + }; + + domfpDepthDef { + \schemaVar \term Object x; + \schemaVar \term int n; + \schemaVar \variables Object y; + + \find(domfpDepth(x, n)) + + \varcond(\notFreeIn(y, x, n)) + + \replacewith(\if(n <= 0) \then(empty) \else(infiniteUnion{y;}(\if(x = owner(y)) \then(\if(n = 1) \then(y.*) \else(domfpDepth(y, n - 1))) \else(empty)))) + }; + + + // --------------------------------------------------- + // axioms for ownership + // --------------------------------------------------- + + dominatesSelf { + \schemaVar \term Object o; + + \find(dominates(o, o)) + + \replacewith(false) + + \heuristics(concrete) + }; + + dominatesMaxDepth { + \schemaVar \term Object x; + \schemaVar \variables Object y; + \schemaVar \variables int m, n; + + \find(x) + + \varcond(\notFreeIn(y, x), \notFreeIn(m, x), \notFreeIn(n, x)) + + \add(\exists n; (n >= 0 & (\forall y; (dominates(x, y) -> + (\exists m; (dominatesDepth(x, y, m) & m < n))))) ==>) + }; +} diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key new file mode 100644 index 00000000000..89e9665a428 --- /dev/null +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key @@ -0,0 +1,415 @@ +\rules(programRules:Java) { + \lemma + dominatesSetElement { + \schemaVar \term LocSet s; + \schemaVar \term Object x, o; + \schemaVar \term Field f; + + \assumes(dominatesSet(x, s) ==>) + \find(elementOf(o, f, s) ==>) + + \add(dominates(x, o) ==>) + \heuristics(inReachableStateImplication) + }; + + \lemma + dominatesSetNotElement { + \schemaVar \term LocSet s; + \schemaVar \term Object x; + \schemaVar \term Field f; + + \assumes(dominatesSet(x, s) ==>) + \find(elementOf(x, f, s)) + + \sameUpdateLevel + + \replacewith(false) + \heuristics(simplify) + }; + + \lemma + dominatesNotEqual { + \schemaVar \term Object x, y; + + \assumes(dominates(x, y) ==>) + \find(x = y) + + \sameUpdateLevel + + \replacewith(false) + + \heuristics(simplify) + }; + + \lemma + dominatesNotEqualLeft { + \schemaVar \term Object x, y; + + \assumes(dominates(x, y) ==>) + \find(y = x) + + \sameUpdateLevel + + \replacewith(false) + + \heuristics(simplify) + \displayname "dominatesNotEqual" + }; + + \lemma + undomRefl { + \schemaVar \term Object x, y; + + \find(undom(x, y)) + + \replacewith(undom(y, x)) + }; + + \lemma + dominatesDepthTransitive { + \schemaVar \term Object x, y, z; + \schemaVar \term int n1, n2; + + \assumes(dominatesDepth(x, y, n1) ==>) + \find(dominatesDepth(y, z, n2) ==>) + \add(dominatesDepth(x, z, n1 + n2) ==>) + }; + + \lemma + dominatesDepth2Dominates { + \schemaVar \term int n; + \schemaVar \term Object x, y; + + \find(dominatesDepth(x, y, n) ==>) + + \add(n > 0 & dominates(x, y) ==>) + }; + + \lemma + dominatesSameDepth { + \schemaVar \term Object x, y, z; + \schemaVar \term int n; + + \assumes(dominatesDepth(x, z, n) ==>) + \find(dominatesDepth(y, z, n) ==>) + \add(x = y ==>) + }; + + \lemma + dominatesLargerDepth { + \schemaVar \term Object x, y, z; + \schemaVar \term int n, m; + + \assumes(m > n, dominatesDepth(x, z, n) ==>) + \find(dominatesDepth(y, z, m) ==>) + \add(dominatesDepth(y, x, m - n) ==>) + }; + + \lemma + dominatesSingleDepth { + \schemaVar \term Object x, y, z; + \schemaVar \term int n; + \schemaVar \variables int m; + + \find(dominatesDepth(x, y, n) ==>) + + \varcond(\notFreeIn(m, n, x, y)) + \add(\forall m; (dominatesDepth(x, y, m) -> m = n) ==>) + }; + + \lemma + dominatesTransitive { + \schemaVar \term Object x, y, z; + \assumes(dominates(x, y) ==>) + \find(dominates(y, z) ==>) + \add(dominates(x, z) ==>) + \heuristics(inReachableStateImplication) + }; + + \lemma + dominatesSetAllLocs { + \schemaVar \term Object o; + + \find(dominatesSet(o, allLocs)) + + \replacewith(false) + + \heuristics(concrete) + }; + + \lemma + dominatesSetEmpty { + \schemaVar \term Object o; + + \find(dominatesSet(o, empty)) + + \replacewith(true) + + \heuristics(concrete) + }; + + \lemma + closePeerDominate { + \schemaVar \term Object x, y; + + \assumes(dominates(y, x) ==>) + \find(dominates(x, y) ==>) + \closegoal + \heuristics(simplify) + }; + + \lemma + dominatesAntisymm { + \schemaVar \term Object x, y; + \find(dominates(x, y) ==>) + \add(==> x = y, dominates(y, x)) + }; + + \lemma + dominatesSetTransitive { + \schemaVar \term Object x, y; + \schemaVar \term LocSet s; + \assumes(dominates(x, y) ==>) + \find(dominatesSet(y, s) ==>) + \add(dominatesSet(x, s) ==>) + \heuristics(inReachableStateImplication) + }; + + \lemma + dominatesSetUnion { + \schemaVar \term LocSet s1, s2; + \schemaVar \term Object o; + + \find(dominatesSet(o, union(s1, s2))) + + \replacewith(dominatesSet(o, s1) & dominatesSet(o, s2)) + \heuristics(simplify) + }; + + \lemma + dominatesSetSubset { + \schemaVar \term LocSet s1, s2; + \schemaVar \term Object o; + + \assumes(subset(s2, s1) ==>) + \find(dominatesSet(o, s1) ==>) + + \add(dominatesSet(o, s2) ==>) + \heuristics(inReachableStateImplication) + }; + + \lemma + owns2Dominates { + \schemaVar \term Object x, y; + + \find(x = owner(y) ==>) + + \add(dominates(x, y) ==>) + \heuristics(inReachableStateImplication) + }; + + \lemma + owns2DominatesLeft { + \schemaVar \term Object x, y; + + \find(owner(y) = x ==>) + + \add(dominates(x, y) ==>) + \heuristics(inReachableStateImplication) + \displayname "owns2Dominates" + }; + + \lemma + ownsSelf { + \schemaVar \term Object o; + + \find(o = owner(o)) + + \replacewith(false) + + \heuristics(simplify) + }; + + + \lemma + closePeerOwn { + \schemaVar \term Object x, y; + + \assumes(y = owner(x) ==>) + \find(x = owner(y) ==>) + \closegoal + + \heuristics(simplify) + }; + + \lemma + dominatesSetDisjoint { + \schemaVar \term Object o1, o2; + \schemaVar \term LocSet s1, s2; + + \assumes(dominatesSet(o1, s1), dominatesSet(o2, s2) ==>) + \find(undom(o1, o2) ==>) + \add(disjoint(s1, s2) ==>) + \heuristics(inReachableStateImplication) + }; + + \lemma + sameLevelUndom { + \schemaVar \term Object o, x, y; + + \assumes(o = owner(x), o = owner(y) ==>) + \find(==> x = y) + + \add(undom(x, y) ==>) + \heuristics(inReachableStateImplication) + }; + + \lemma + domfpDepthEquivDominates { + \schemaVar \term Object x; + \schemaVar \term int n; + \schemaVar \variables Object y; + + \find(domfpDepth(x, n)) + + \varcond(\notFreeIn(y, x, n)) + + \replacewith(infiniteUnion{y;}(\if(dominatesDepth(x, y, n)) \then(y.*) \else(empty))) + }; + + \lemma + domfpFinalDepth { + \schemaVar \term Object x; + \schemaVar \variables int n, m; + + \find(x) + + \varcond(\notFreeIn(n, x), \notFreeIn(m, x)) + \add(\exists n; (n >= 0 & \forall m; (m >= n -> domfpDepth(x, m) = empty)) ==>) + }; + + \lemma + domfpEqdomfpDepthUnion { + \schemaVar \term Object x; + \schemaVar \variables int n; + + \find(domfp(x)) + + \varcond(\notFreeIn(n, x)) + \replacewith(infiniteUnion{n;}(domfpDepth(x, n))) + }; + + \lemma + domfpEquivDominates { + \schemaVar \term Object x; + \schemaVar \variables Object y; + + \find(domfp(x)) + \varcond(\notFreeIn(y, x)) + \replacewith(infiniteUnion{y;}(\if(dominates(x, y)) \then(y.*) \else(empty))) + }; + + \lemma + domfpElement { + \schemaVar \term Object x, y; + \schemaVar \term Field f; + + \find(elementOf(x, f, domfp(y))) + \replacewith(dominates(y, x)) + \heuristics(simplify) + }; + + \lemma + repfpElement { + \schemaVar \term Object x, y; + \schemaVar \term Field f; + + \find(elementOf(x, f, repfp(y))) + \replacewith(dominates(y, x) | x = y) + \heuristics(simplify) + }; + + \lemma + dominatesInverse { + \schemaVar \term Object x, y; + + \assumes(dominates(x, y) ==>) + + \find(dominates(y, x)) + + \sameUpdateLevel + + \replacewith(false) + \heuristics(simplify) + }; + + //\lemma + //selectOfDominatedAnon { + // \schemaVar \term Heap h, h2; + // \schemaVar \term LocSet s; + // \schemaVar \term Object o; + // \schemaVar \term Field f; + // + // \find(beta::select(anon(h, s, h2), o, f)) + // + // \replacewith(beta::select(\if(dominatesSet(o, s) & !elementOf(o, f, freshLocs(h))) + // \then(h) + // \else(anon(h, s, h2)), o, f)) + // \heuristics(semantics_blasting) + //}; + // + //\lemma + //selectOfDominatedAnonEQ { + // \schemaVar \term Heap h, h2; + // \schemaVar \term LocSet s; + // \schemaVar \term Object o; + // \schemaVar \term Field f; + // \schemaVar \term Heap EQ; + // + // \assumes(anon(h, s, h2) = EQ ==>) + // \find(beta::select(EQ, o, f)) + // \sameUpdateLevel + // + // \replacewith(beta::select(\if(dominatesSet(o, s) & !elementOf(o, f, freshLocs(h))) + // \then(h) + // \else(EQ), o, f)) + // \heuristics(simplify_heap_high_costs) + //}; + // + //\lemma + //selectOfDominatedStore { + // \schemaVar \term Heap h, h2; + // \schemaVar \term LocSet s; + // \schemaVar \term Object o, o2; + // \schemaVar \term Field f, f2; + // \schemaVar \term alpha x; + // + // \find(beta::select(store(h, o, f, x), o2, f2)) + // \sameUpdateLevel + // + // \replacewith(beta::select(\if(dominates(o2, o) | dominates(o, o2)) + // \then(h) + // \else(store(h, o, f, x)), o2, f2)) + // \heuristics(semantics_blasting) + //}; + // + //\lemma + //selectOfDominatedStoreEQ { + // \schemaVar \term Heap h, h2; + // \schemaVar \term LocSet s; + // \schemaVar \term Object o, o2; + // \schemaVar \term Field f, f2; + // \schemaVar \term Heap EQ; + // \schemaVar \term alpha x; + // + // \assumes(store(h, o, f, x) = EQ ==>) + // \find(beta::select(EQ, o2, f2)) + // + // \sameUpdateLevel + // + // \replacewith(beta::select(\if(dominates(o2, o) | dominates(o, o2)) + // \then(h) + // \else(EQ), o2, f2)) + // \heuristics(simplify_heap_high_costs) + //}; +} diff --git a/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java b/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java index 554311e324d..0420855b2f3 100644 --- a/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java +++ b/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java @@ -8,6 +8,7 @@ import recoder.java.*; import recoder.java.reference.TypeReference; import recoder.java.reference.TypeReferenceContainer; +import recoder.java.expression.operator.TypeOperator; import recoder.list.generic.ASTList; /** @@ -18,7 +19,6 @@ */ public class AnnotationUseSpecification extends JavaNonTerminalProgramElement implements AnnotationUse, DeclarationSpecifier, TypeReferenceContainer, Expression { - /** * serialization id */ @@ -50,8 +50,8 @@ public AnnotationUseSpecification(TypeReference reference) { */ public AnnotationUseSpecification(AnnotationUseSpecification proto) { super(proto); - this.reference = (TypeReference) proto.parent; - this.elementValuePairs = proto.elementValuePairs.deepClone(); + this.reference = proto.reference; + this.elementValuePairs = proto.elementValuePairs == null ? null :proto.elementValuePairs.deepClone(); makeParentRoleValid(); } @@ -211,6 +211,10 @@ public void setParent(PackageSpecification parent) { this.parent = parent; } + public void setParent(TypeOperator parent) { + this.parent = parent; + } + public TypeReference getTypeReference() { return reference; } diff --git a/recoder/src/main/java/recoder/java/expression/operator/TypeOperator.java b/recoder/src/main/java/recoder/java/expression/operator/TypeOperator.java index e887a63b5ac..30977e189cc 100644 --- a/recoder/src/main/java/recoder/java/expression/operator/TypeOperator.java +++ b/recoder/src/main/java/recoder/java/expression/operator/TypeOperator.java @@ -9,6 +9,9 @@ import recoder.java.expression.Operator; import recoder.java.reference.TypeReference; import recoder.java.reference.TypeReferenceContainer; +import recoder.java.declaration.AnnotationUseSpecification; + +import recoder.list.generic.ASTList; /** * Type operator. @@ -23,6 +26,11 @@ public abstract class TypeOperator extends Operator implements TypeReferenceCont */ protected TypeReference typeReference; + /** + * Annotations. + */ + protected ASTList annotations; + /** * Type operator. */ @@ -60,9 +68,15 @@ public TypeOperator(Expression lhs, Expression rhs, TypeReference typeref) { */ protected TypeOperator(TypeOperator proto) { super(proto); + if (proto.annotations != null) { + annotations = proto.annotations.deepClone(); + } + if (proto.typeReference != null) { typeReference = proto.typeReference.deepClone(); } + + makeParentRoleValid(); } /** @@ -73,6 +87,12 @@ public void makeParentRoleValid() { if (typeReference != null) { typeReference.setParent(this); } + + if (annotations != null) { + for (int i = annotations.size() - 1; i >= 0; i -= 1) { + annotations.get(i).setParent(this); + } + } } public int getChildPositionCode(ProgramElement child) { @@ -166,6 +186,10 @@ public TypeReference getTypeReference() { return typeReference; } + public ASTList getAnnotations() { + return annotations; + } + /** * Set type reference. * @@ -175,4 +199,14 @@ public TypeReference getTypeReference() { public void setTypeReference(TypeReference t) { typeReference = t; } + + /** + * Set Annotations. + * + * @param l a list of annotations. + */ + + public void setAnnotations(ASTList l) { + annotations = l; + } } From 94763f17ad7ede485b4d899433f418954fb7a6f9 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Wed, 23 Jul 2025 23:29:48 +0200 Subject: [PATCH 08/27] update the match conditions --- .../modifier/AnnotationUseSpecification.java | 18 +++ .../key/proof/init/AbstractOperationPO.java | 4 + .../uka/ilkd/key/proof/init/AbstractPO.java | 3 + .../init/FunctionalOperationContractPO.java | 4 + .../jml/translation/JMLSpecFactory.java | 12 ++ .../de/uka/ilkd/key/proof/rules/universe.key | 1 + .../uka/ilkd/key/proof/rules/universeDefs.key | 14 ++ .../ilkd/key/proof/rules/universeLemmas.key | 146 +++++++++--------- 8 files changed, 133 insertions(+), 69 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java b/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java index a9324ac091c..f7c6768cf17 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java @@ -10,7 +10,14 @@ import de.uka.ilkd.key.java.reference.TypeReference; import de.uka.ilkd.key.java.reference.TypeReferenceContainer; +import de.uka.ilkd.key.java.SourceData; +import de.uka.ilkd.key.rule.MatchConditions; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class AnnotationUseSpecification extends Modifier implements TypeReferenceContainer { + private static final Logger LOGGER = LoggerFactory.getLogger(AnnotationUseSpecification.class); protected final TypeReference tr; @@ -50,4 +57,15 @@ public int getChildCount() { return 1; } + @Override + public MatchConditions match(SourceData source, MatchConditions matchCond) { + final ProgramElement pe = source.getSource(); + matchCond = super.match(source, matchCond); + + if (matchCond != null && !tr.getName().equals(((AnnotationUseSpecification)pe).tr.getName())) { + return null; + } + + return matchCond; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java b/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java index e4322308fbd..f5a5c687aec 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java @@ -40,6 +40,9 @@ import org.jspecify.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** *

* This abstract implementation of {@link ProofOblInput} extends the functionality of @@ -77,6 +80,7 @@ * @author Martin Hentschel */ public abstract class AbstractOperationPO extends AbstractPO { + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractOperationPO.class); private static final String JAVA_LANG_THROWABLE = "java.lang.Throwable"; protected InitConfig proofConfig; diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractPO.java b/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractPO.java index ea00e468f23..4dde28602c4 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractPO.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractPO.java @@ -33,11 +33,14 @@ import org.key_project.util.collection.ImmutableSet; import org.key_project.util.collection.Pair; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * An abstract proof obligation implementing common functionality. */ public abstract class AbstractPO implements IPersistablePO { + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractPO.class); protected TermBuilder tb; protected final InitConfig environmentConfig; diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalOperationContractPO.java b/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalOperationContractPO.java index 3830e404ea1..b124e2a0f49 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalOperationContractPO.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalOperationContractPO.java @@ -39,6 +39,9 @@ import static de.uka.ilkd.key.java.KeYJavaASTFactory.declare; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** *

* The proof obligation for operation contracts. @@ -62,6 +65,7 @@ *

*/ public class FunctionalOperationContractPO extends AbstractOperationPO implements ContractPO { + private static final Logger LOGGER = LoggerFactory.getLogger(FunctionalOperationContractPO.class); public static final Map TRANSACTION_TAGS = new LinkedHashMap<>(); diff --git a/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java b/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java index 4ef53e320c1..9361758ce41 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java @@ -62,11 +62,15 @@ import static de.uka.ilkd.key.speclang.jml.pretranslation.TextualJMLSpecCase.ClauseHd.REQUIRES; import static java.lang.String.format; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * A factory for creating class invariants and operation contracts from textual JML specifications. * This is the public interface to the jml.translation package. */ public class JMLSpecFactory { + private static final Logger LOGGER = LoggerFactory.getLogger(JMLSpecFactory.class); public static final String AT_PRE = "AtPre"; protected final TermBuilder tb; @@ -966,6 +970,14 @@ public ImmutableSet createFunctionalOperationContracts(String name, IP Map posts, Map axioms) { ImmutableSet result = DefaultImmutableSet.nil(); + var right = pm.getName().equals("client"); + if (right) { + LOGGER.info("we arrived! {}", pm.getName()); + LOGGER.info("{}", pm); + LOGGER.info("{}", progVars); + LOGGER.info("{}", clauses); + } + Term abbrvLhs = null; if (!clauses.abbreviations.isEmpty()) { abbrvLhs = tb.sequential(clauses.abbreviations); diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key index 0a00fda0f9c..40bf51f9e37 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key @@ -3,6 +3,7 @@ LocSet domfp(Object); LocSet domfpDepth(Object, int); LocSet repfp(Object); + LocSet createdRepfp(Heap, Object); } \predicates { diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key index 3c67d758dec..7734dcbadd2 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key @@ -222,6 +222,20 @@ \replacewith(\if(n <= 0) \then(empty) \else(infiniteUnion{y;}(\if(x = owner(y)) \then(\if(n = 1) \then(y.*) \else(domfpDepth(y, n - 1))) \else(empty)))) }; + createdRepfpDef { + \schemaVar \term Object x; + \schemaVar \term Heap h; + \schemaVar \variables Object y; + + \find(createdRepfp(h, x)) + + \varcond(\notFreeIn(y, x, h)) + + \replacewith(intersect(infiniteUnion{y;}(\if(boolean::select(h, y, java.lang.Object::) = TRUE) \then(y.*) \else(empty)), repfp(x))) + + \heuristics(classAxiom) + }; + // --------------------------------------------------- // axioms for ownership diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key index 89e9665a428..866908fdf5f 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key @@ -343,73 +343,81 @@ \heuristics(simplify) }; - //\lemma - //selectOfDominatedAnon { - // \schemaVar \term Heap h, h2; - // \schemaVar \term LocSet s; - // \schemaVar \term Object o; - // \schemaVar \term Field f; - // - // \find(beta::select(anon(h, s, h2), o, f)) - // - // \replacewith(beta::select(\if(dominatesSet(o, s) & !elementOf(o, f, freshLocs(h))) - // \then(h) - // \else(anon(h, s, h2)), o, f)) - // \heuristics(semantics_blasting) - //}; - // - //\lemma - //selectOfDominatedAnonEQ { - // \schemaVar \term Heap h, h2; - // \schemaVar \term LocSet s; - // \schemaVar \term Object o; - // \schemaVar \term Field f; - // \schemaVar \term Heap EQ; - // - // \assumes(anon(h, s, h2) = EQ ==>) - // \find(beta::select(EQ, o, f)) - // \sameUpdateLevel - // - // \replacewith(beta::select(\if(dominatesSet(o, s) & !elementOf(o, f, freshLocs(h))) - // \then(h) - // \else(EQ), o, f)) - // \heuristics(simplify_heap_high_costs) - //}; - // - //\lemma - //selectOfDominatedStore { - // \schemaVar \term Heap h, h2; - // \schemaVar \term LocSet s; - // \schemaVar \term Object o, o2; - // \schemaVar \term Field f, f2; - // \schemaVar \term alpha x; - // - // \find(beta::select(store(h, o, f, x), o2, f2)) - // \sameUpdateLevel - // - // \replacewith(beta::select(\if(dominates(o2, o) | dominates(o, o2)) - // \then(h) - // \else(store(h, o, f, x)), o2, f2)) - // \heuristics(semantics_blasting) - //}; - // - //\lemma - //selectOfDominatedStoreEQ { - // \schemaVar \term Heap h, h2; - // \schemaVar \term LocSet s; - // \schemaVar \term Object o, o2; - // \schemaVar \term Field f, f2; - // \schemaVar \term Heap EQ; - // \schemaVar \term alpha x; - // - // \assumes(store(h, o, f, x) = EQ ==>) - // \find(beta::select(EQ, o2, f2)) - // - // \sameUpdateLevel - // - // \replacewith(beta::select(\if(dominates(o2, o) | dominates(o, o2)) - // \then(h) - // \else(EQ), o2, f2)) - // \heuristics(simplify_heap_high_costs) - //}; + \lemma + repfpSubset { + \schemaVar \term Object x, y; + + \assumes(dominates(x, y) ==>) + + \find(repfp(y)) + + \add(subset(repfp(y), repfp(x)) ==>) + \heuristics(inReachableStateImplication) + }; + + \lemma + selectOfDominatedAnon { + \schemaVar \term Heap h, h2; + \schemaVar \term LocSet s; + \schemaVar \term Object o; + \schemaVar \term Field f; + + \find(beta::select(anon(h, s, h2), o, f)) + + \replacewith(beta::select(\if(dominatesSet(o, s) & !elementOf(o, f, freshLocs(h))) + \then(h) + \else(anon(h, s, h2)), o, f)) + }; + + \lemma + selectOfDominatedAnonEQ { + \schemaVar \term Heap h, h2; + \schemaVar \term LocSet s; + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term Heap EQ; + + \assumes(anon(h, s, h2) = EQ ==>) + \find(beta::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(beta::select(\if(dominatesSet(o, s) & !elementOf(o, f, freshLocs(h))) + \then(h) + \else(EQ), o, f)) + }; + + \lemma + selectOfDominatedStore { + \schemaVar \term Heap h, h2; + \schemaVar \term LocSet s; + \schemaVar \term Object o, o2; + \schemaVar \term Field f, f2; + \schemaVar \term alpha x; + + \find(beta::select(store(h, o, f, x), o2, f2)) + \sameUpdateLevel + + \replacewith(beta::select(\if(dominates(o2, o) | dominates(o, o2)) + \then(h) + \else(store(h, o, f, x)), o2, f2)) + }; + + \lemma + selectOfDominatedStoreEQ { + \schemaVar \term Heap h, h2; + \schemaVar \term LocSet s; + \schemaVar \term Object o, o2; + \schemaVar \term Field f, f2; + \schemaVar \term Heap EQ; + \schemaVar \term alpha x; + + \assumes(store(h, o, f, x) = EQ ==>) + \find(beta::select(EQ, o2, f2)) + + \sameUpdateLevel + + \replacewith(beta::select(\if(dominates(o2, o) | dominates(o, o2)) + \then(h) + \else(EQ), o2, f2)) + }; } From 19f98e9b750147137d3ed98179e16502b6f60abf Mon Sep 17 00:00:00 2001 From: PiisRational Date: Sat, 26 Jul 2025 17:55:46 +0200 Subject: [PATCH 09/27] add support for args and results in contracts --- .../ilkd/key/speclang/ContractFactory.java | 83 +++++++++++++++++++ .../jml/translation/JMLSpecFactory.java | 7 -- 2 files changed, 83 insertions(+), 7 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java b/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java index ed66b22e096..1340534a367 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java @@ -7,6 +7,7 @@ import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.declaration.modifier.AnnotationUseSpecification; import de.uka.ilkd.key.logic.Term; import de.uka.ilkd.key.logic.TermBuilder; import de.uka.ilkd.key.logic.label.OriginTermLabel; @@ -20,6 +21,7 @@ import de.uka.ilkd.key.util.InfFlowSpec; import org.key_project.util.collection.ImmutableArray; +import org.key_project.util.collection.ImmutableMap; import org.key_project.util.collection.ImmutableList; import static de.uka.ilkd.key.logic.equality.TermLabelsProperty.TERM_LABELS_PROPERTY; @@ -322,6 +324,10 @@ public FunctionalOperationContract func(String baseName, KeYJavaType kjt, IProgr ImmutableList paramVars, LocationVariable resultVar, LocationVariable excVar, Map atPreVars, boolean toBeSaved) { + + // add the conditions for the universe types to the pre- and post-conditions + addUniverseConds(pm, freePres, freePosts, selfVar, paramVars, resultVar); + return new FunctionalOperationContractImpl(baseName, null, kjt, pm, pm.getContainerType(), modalityKind, pres, freePres, mby, posts, freePosts, axioms, modifiables, freeModifiables, accs, @@ -333,6 +339,80 @@ public FunctionalOperationContract func(String baseName, KeYJavaType kjt, IProgr services); } + private void addUniverseConds(IProgramMethod pm, + Map freePres, Map freePosts, + LocationVariable selfVar, + ImmutableList paramVars, LocationVariable resultVar) { + + var heap = services.getTypeConverter().getHeapLDT().getHeap(); + final TermBuilder tb = services.getTermBuilder(); + final var owner = services.getNamespaces().functions().lookup("owner"); + + int i = 0; + + var change = false; + var pres = freePres.get(heap); + for (var param : pm.getMethodDeclaration().getParameters()) { + var modifiers = param.getModifiers(); + for (var modifier : modifiers) { + if (!(modifier instanceof AnnotationUseSpecification)) continue; + var specifier = (AnnotationUseSpecification)modifier; + if (specifier.getTypeReferenceAt(0).getName().equals("Rep")) { + change = true; + pres = tb.and(pres, + tb.imp( + tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), + tb.equals(tb.var(selfVar), tb.func(owner, tb.var(paramVars.get(i)))))); + break; + } else if (specifier.getTypeReferenceAt(0).getName().equals("Peer")) { + change = true; + pres = tb.and(pres, + tb.imp( + tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), + tb.equals(tb.func(owner, tb.var(selfVar)), tb.func(owner, tb.var(paramVars.get(i)))))); + break; + } else if (specifier.getTypeReferenceAt(0).getName().equals("Payload")) { + change = true; + break; + } + } + + i++; + } + + if (change) freePres.put(heap, pres); + change = false; + + var posts = freePosts.get(heap); + if (resultVar != null) { + var modifiers = pm.getMethodDeclaration().getModifiers(); + for (var modifier : modifiers) { + if (!(modifier instanceof AnnotationUseSpecification)) continue; + var specifier = (AnnotationUseSpecification)modifier; + if (specifier.getTypeReferenceAt(0).getName().equals("Rep")) { + change = true; + posts = tb.and(posts, + tb.imp( + tb.not(tb.equals(tb.var(resultVar), tb.NULL())), + tb.equals(tb.var(selfVar), tb.func(owner, tb.var(resultVar))))); + break; + } else if (specifier.getTypeReferenceAt(0).getName().equals("Peer")) { + change = true; + posts = tb.and(posts, + tb.imp( + tb.not(tb.equals(tb.var(resultVar), tb.NULL())), + tb.equals(tb.func(owner, tb.var(selfVar)), tb.func(owner, tb.var(resultVar))))); + break; + } else if (specifier.getTypeReferenceAt(0).getName().equals("Payload")) { + change = true; + break; + } + } + } + + if (change) freePosts.put(heap, posts); + } + /** * Creates a new functional operation contract. * @@ -400,6 +480,9 @@ public FunctionalOperationContract func(String baseName, IProgramMethod pm, Map hasModifiable, Map hasFreeModifiable, ProgramVariableCollection progVars, boolean toBeSaved, boolean transaction) { + // add the conditions for the universe types to the pre- and post-conditions + addUniverseConds(pm, freePres, freePosts, progVars.selfVar, progVars.paramVars, progVars.resultVar); + return new FunctionalOperationContractImpl(baseName, null, pm.getContainerType(), pm, pm.getContainerType(), modalityKind, pres, freePres, mby, posts, freePosts, axioms, modifiables, diff --git a/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java b/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java index 9361758ce41..4394faf0323 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java @@ -970,13 +970,6 @@ public ImmutableSet createFunctionalOperationContracts(String name, IP Map posts, Map axioms) { ImmutableSet result = DefaultImmutableSet.nil(); - var right = pm.getName().equals("client"); - if (right) { - LOGGER.info("we arrived! {}", pm.getName()); - LOGGER.info("{}", pm); - LOGGER.info("{}", progVars); - LOGGER.info("{}", clauses); - } Term abbrvLhs = null; if (!clauses.abbreviations.isEmpty()) { From 0d932a902c4cd4172c468f1ad71d43c93a174150 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Sat, 9 Aug 2025 22:46:39 +0200 Subject: [PATCH 10/27] some changes --- .../uka/ilkd/key/java/JavaRedux/JAVALANG.TXT | 5 +- .../java/lang/annotation/Annotation.java | 5 +- .../java/lang/annotation/Documented.java | 4 + .../java/lang/annotation/ElementType.java | 16 + .../java/lang/annotation/Retention.java | 5 + .../java/lang/annotation/RetentionPolicy.java | 7 + .../java/lang/annotation/Target.java | 5 + .../de/uka/ilkd/key/proof/rules/heapRules.key | 6 +- .../de/uka/ilkd/key/proof/rules/universe.key | 5 - .../uka/ilkd/key/proof/rules/universeDefs.key | 149 ++---- .../ilkd/key/proof/rules/universeLemmas.key | 432 ++++++++---------- key.ui/build.gradle | 6 + 12 files changed, 273 insertions(+), 372 deletions(-) create mode 100644 key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Documented.java create mode 100644 key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/ElementType.java create mode 100644 key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Retention.java create mode 100644 key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/RetentionPolicy.java create mode 100644 key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Target.java diff --git a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/JAVALANG.TXT b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/JAVALANG.TXT index ece9cf04a53..a86564689ec 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/JAVALANG.TXT +++ b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/JAVALANG.TXT @@ -1,5 +1,9 @@ java.lang.Object java.lang.annotation.Annotation +java.lang.annotation.ElementType +java.lang.annotation.Retention +java.lang.annotation.RetentionPolicy +java.lang.annotation.Target java.lang.ArithmeticException java.lang.ArrayIndexOutOfBoundsException java.lang.ArrayStoreException @@ -58,4 +62,3 @@ java.util.ListIteratorImpl java.util.Date java.util.LinkedHashMap java.util.LinkedList - diff --git a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Annotation.java b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Annotation.java index ed8b65547ec..a65813efb64 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Annotation.java +++ b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Annotation.java @@ -5,6 +5,9 @@ public interface Annotation { + public int hashCode(); - public java.lang.Class annotationType(); + public String toString(); + + public java.lang.Class annotationType(); } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Documented.java b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Documented.java new file mode 100644 index 00000000000..c068b55a50e --- /dev/null +++ b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Documented.java @@ -0,0 +1,4 @@ +package java.lang.annotation; + +public @interface Documented { +} diff --git a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/ElementType.java b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/ElementType.java new file mode 100644 index 00000000000..4a09eb9312e --- /dev/null +++ b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/ElementType.java @@ -0,0 +1,16 @@ +package java.lang.annotation; + +public enum ElementType { + TYPE, + FIELD, + METHOD, + PARAMETER, + CONSTRUCTOR, + LOCAL_VARIABLE, + ANNOTATION_TYPE, + PACKAGE, + TYPE_PARAMETER, + TYPE_USE, + MODULE, + RECORD_COMPONENT +} diff --git a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Retention.java b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Retention.java new file mode 100644 index 00000000000..bb54c77a35e --- /dev/null +++ b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Retention.java @@ -0,0 +1,5 @@ +package java.lang.annotation; + +public @interface Retention { + public RetentionPolicy value(); +} diff --git a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/RetentionPolicy.java b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/RetentionPolicy.java new file mode 100644 index 00000000000..bcd9b9d8158 --- /dev/null +++ b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/RetentionPolicy.java @@ -0,0 +1,7 @@ +package java.lang.annotation; + +public enum RetentionPolicy { + SOURCE, + CLASS, + RUNTIME +} diff --git a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Target.java b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Target.java new file mode 100644 index 00000000000..f1e24a4cf6e --- /dev/null +++ b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/annotation/Target.java @@ -0,0 +1,5 @@ +package java.lang.annotation; + +public @interface Target { + public ElementType[] value(); +} diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key index 44f6e21d4ae..bc2257d6a7b 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key @@ -1366,7 +1366,7 @@ \replacewith(alpha::final(o,f)) - \heuristics(simplify) + \heuristics(simplify) }; @@ -1391,7 +1391,7 @@ \schemaVar \term Object o; \schemaVar \term int idx; - \assumes( ==> o = null ) + \assumes( ==> o = null ) \find(beta::final(o,arr(idx))) \sameUpdateLevel @@ -1400,7 +1400,7 @@ \replacewith(alpha::final(o,arr(idx))) - \heuristics(simplify) + \heuristics(simplify) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key index 40bf51f9e37..13da6fd4f6f 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key @@ -1,15 +1,10 @@ \functions { Object owner(Object); - LocSet domfp(Object); - LocSet domfpDepth(Object, int); LocSet repfp(Object); LocSet createdRepfp(Heap, Object); } \predicates { - payload(Object, Field); - dominatesDepth(Object, Object, int); dominates(Object, Object); - dominatesSet(Object, LocSet); undom(Object, Object); } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key index 7734dcbadd2..8fd53c4f983 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key @@ -2,6 +2,36 @@ // --------------------------------------------------- // Introduction Rules // --------------------------------------------------- + variableDeclarationPayload { + \schemaVar \formula post; + \schemaVar \program Variable #v0; + \schemaVar \program Type #t0; + \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + \schemaVar \program ProgramMethod #pm; + + \find(\modality{#allmodal}{.. @universe.qual.Payload #t0 #v0; ...}\endmodality (post)) + \sameUpdateLevel + + \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) + \addprogvars(#v0) + + \heuristics(simplify_prog, simplify_prog_subset) + //\displayname "variableDeclaration" + }; + + variableDeclarationPayloadAssign { + \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + \schemaVar \formula post; + \schemaVar \program Variable #v0; + \schemaVar \program Type #t; + \schemaVar \program VariableInitializer #vi; + + \find(\modality{#allmodal}{.. @universe.qual.Payload #t #v0 = #vi; ...}\endmodality (post)) + \replacewith(\modality{#allmodal}{.. @universe.qual.Payload #t #v0; #v0 = #vi; ...}\endmodality (post)) + + \heuristics(simplify_prog, simplify_prog_subset) + \displayname "variableDeclaration" + }; variableDeclarationPeer { \schemaVar \formula post; @@ -68,22 +98,6 @@ }; - //instanceCreationAssignmentRep { - // \schemaVar \modalOperator {diamond, box} #normal; - // \schemaVar \program LeftHandSide #lhs; - // \schemaVar \program SimpleInstanceCreation #n; - // \schemaVar \formula post; - // \schemaVar \program Variable #v0; - // - // \find(==> \modality{#normal}{.. #lhs = #n; ...}\endmodality (post)) - // \varcond(\newTypeOf(#v0, #lhs)) - // \replacewith(==> \modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); - // #constructor-call(#v0, #n); - // #post-work(#v0); - // #lhs = #v0; - // ...}\endmodality (post)) - // \heuristics(method_expand) - //}; instanceCreationAssignmentRep { \schemaVar \modalOperator {diamond} #diamond; \schemaVar \modalOperator {diamond, box} #normal; @@ -130,50 +144,10 @@ \heuristics(simplify) }; - //methodArgRep { - // \schemaVar \formula post; - // \schemaVar \modalOperator {diamond, diamond_transaction} #diamond; - // \schemaVar \program Variable #v0, #v1; - // \schemaVar \program MethodName #mn; - // \schemaVar \program [list] Expression #elist0, #elist1; - // - // \find(==> \modality{#diamond}{.. #v0.#mn(#elist0, #v1, #elist1); ...}\endmodality (post)) - // \replacewith(#v0 = owner(#v1) ==> \modality{#diamond}{.. #v0.#mn(#elist0, #v1, #elist1); ...}\endmodality (post)) - //}; - - //ownsParameter { - // \schemaVar \term Object o; - // \schemaVar \term - //}; - - // --------------------------------------------------- // Predicate and Function definitions // --------------------------------------------------- - dominatesDepthDef { - \schemaVar \term Object x, y; - \schemaVar \variables Object ov; - \schemaVar \term int n; - - \find(dominatesDepth(x, y, n)) - \varcond(\notFreeIn(ov, x, y, n)) - \replacewith(\if (n <= 0) - \then(false) - \else(\if (n = 1) \then(x = owner(y)) \else(\exists ov; (x = owner(ov) & dominatesDepth(ov, y, n - 1))))) - }; - - dominatesDef { - \schemaVar \term Object x, y; - \schemaVar \variables int n; - - \find(dominates(x, y)) - - \varcond(\notFreeIn(n, x, y)) - \replacewith(\exists n; (dominatesDepth(x, y, n))) - }; - - undomDef { \schemaVar \term Object x, y; @@ -182,46 +156,6 @@ \replacewith(!dominates(x, y) & !dominates(y, x) & !(x = y)) }; - dominatesSetDef { - \schemaVar \term LocSet s; - \schemaVar \term Object x; - \schemaVar \variables Object o; - \schemaVar \variables Field f; - - \find(dominatesSet(x, s)) - - \varcond(\notFreeIn(o, s, x), \notFreeIn(f, s, x)) - \replacewith(\forall o; (\forall f; (elementOf(o, f, s) -> dominates(x, o)))) - }; - - domfpDef { - \schemaVar \term Object x; - \schemaVar \variables Object y; - - \find(domfp(x)) - \varcond(\notFreeIn(y, x)) - \replacewith(infiniteUnion{y;}(\if(x = owner(y)) \then(repfp(y)) \else(empty))) - }; - - repfpDef { - \schemaVar \term Object x; - - \find(repfp(x)) - \replacewith(union(domfp(x), x.*)) - }; - - domfpDepthDef { - \schemaVar \term Object x; - \schemaVar \term int n; - \schemaVar \variables Object y; - - \find(domfpDepth(x, n)) - - \varcond(\notFreeIn(y, x, n)) - - \replacewith(\if(n <= 0) \then(empty) \else(infiniteUnion{y;}(\if(x = owner(y)) \then(\if(n = 1) \then(y.*) \else(domfpDepth(y, n - 1))) \else(empty)))) - }; - createdRepfpDef { \schemaVar \term Object x; \schemaVar \term Heap h; @@ -236,6 +170,16 @@ \heuristics(classAxiom) }; + \lemma + repfpDef { + \schemaVar \term Object x; + \schemaVar \variables Object y; + + \find(repfp(x)) + \varcond(\notFreeIn(y, x)) + \replacewith(union(x.*, infiniteUnion{y;}(\if(dominates(x, y)) \then(y.*) \else(empty)))) + }; + // --------------------------------------------------- // axioms for ownership @@ -250,17 +194,4 @@ \heuristics(concrete) }; - - dominatesMaxDepth { - \schemaVar \term Object x; - \schemaVar \variables Object y; - \schemaVar \variables int m, n; - - \find(x) - - \varcond(\notFreeIn(y, x), \notFreeIn(m, x), \notFreeIn(n, x)) - - \add(\exists n; (n >= 0 & (\forall y; (dominates(x, y) -> - (\exists m; (dominatesDepth(x, y, m) & m < n))))) ==>) - }; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key index 866908fdf5f..00dbdf729cb 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key @@ -1,32 +1,4 @@ \rules(programRules:Java) { - \lemma - dominatesSetElement { - \schemaVar \term LocSet s; - \schemaVar \term Object x, o; - \schemaVar \term Field f; - - \assumes(dominatesSet(x, s) ==>) - \find(elementOf(o, f, s) ==>) - - \add(dominates(x, o) ==>) - \heuristics(inReachableStateImplication) - }; - - \lemma - dominatesSetNotElement { - \schemaVar \term LocSet s; - \schemaVar \term Object x; - \schemaVar \term Field f; - - \assumes(dominatesSet(x, s) ==>) - \find(elementOf(x, f, s)) - - \sameUpdateLevel - - \replacewith(false) - \heuristics(simplify) - }; - \lemma dominatesNotEqual { \schemaVar \term Object x, y; @@ -65,87 +37,13 @@ \replacewith(undom(y, x)) }; - \lemma - dominatesDepthTransitive { - \schemaVar \term Object x, y, z; - \schemaVar \term int n1, n2; - - \assumes(dominatesDepth(x, y, n1) ==>) - \find(dominatesDepth(y, z, n2) ==>) - \add(dominatesDepth(x, z, n1 + n2) ==>) - }; - - \lemma - dominatesDepth2Dominates { - \schemaVar \term int n; - \schemaVar \term Object x, y; - - \find(dominatesDepth(x, y, n) ==>) - - \add(n > 0 & dominates(x, y) ==>) - }; - - \lemma - dominatesSameDepth { - \schemaVar \term Object x, y, z; - \schemaVar \term int n; - - \assumes(dominatesDepth(x, z, n) ==>) - \find(dominatesDepth(y, z, n) ==>) - \add(x = y ==>) - }; - - \lemma - dominatesLargerDepth { - \schemaVar \term Object x, y, z; - \schemaVar \term int n, m; - - \assumes(m > n, dominatesDepth(x, z, n) ==>) - \find(dominatesDepth(y, z, m) ==>) - \add(dominatesDepth(y, x, m - n) ==>) - }; - - \lemma - dominatesSingleDepth { - \schemaVar \term Object x, y, z; - \schemaVar \term int n; - \schemaVar \variables int m; - - \find(dominatesDepth(x, y, n) ==>) - - \varcond(\notFreeIn(m, n, x, y)) - \add(\forall m; (dominatesDepth(x, y, m) -> m = n) ==>) - }; - \lemma dominatesTransitive { \schemaVar \term Object x, y, z; \assumes(dominates(x, y) ==>) \find(dominates(y, z) ==>) \add(dominates(x, z) ==>) - \heuristics(inReachableStateImplication) - }; - - \lemma - dominatesSetAllLocs { - \schemaVar \term Object o; - - \find(dominatesSet(o, allLocs)) - - \replacewith(false) - - \heuristics(concrete) - }; - - \lemma - dominatesSetEmpty { - \schemaVar \term Object o; - - \find(dominatesSet(o, empty)) - - \replacewith(true) - - \heuristics(concrete) + \heuristics(simplify) }; \lemma @@ -165,39 +63,6 @@ \add(==> x = y, dominates(y, x)) }; - \lemma - dominatesSetTransitive { - \schemaVar \term Object x, y; - \schemaVar \term LocSet s; - \assumes(dominates(x, y) ==>) - \find(dominatesSet(y, s) ==>) - \add(dominatesSet(x, s) ==>) - \heuristics(inReachableStateImplication) - }; - - \lemma - dominatesSetUnion { - \schemaVar \term LocSet s1, s2; - \schemaVar \term Object o; - - \find(dominatesSet(o, union(s1, s2))) - - \replacewith(dominatesSet(o, s1) & dominatesSet(o, s2)) - \heuristics(simplify) - }; - - \lemma - dominatesSetSubset { - \schemaVar \term LocSet s1, s2; - \schemaVar \term Object o; - - \assumes(subset(s2, s1) ==>) - \find(dominatesSet(o, s1) ==>) - - \add(dominatesSet(o, s2) ==>) - \heuristics(inReachableStateImplication) - }; - \lemma owns2Dominates { \schemaVar \term Object x, y; @@ -205,7 +70,7 @@ \find(x = owner(y) ==>) \add(dominates(x, y) ==>) - \heuristics(inReachableStateImplication) + \heuristics(simplify) }; \lemma @@ -215,7 +80,7 @@ \find(owner(y) = x ==>) \add(dominates(x, y) ==>) - \heuristics(inReachableStateImplication) + \heuristics(simplify) \displayname "owns2Dominates" }; @@ -242,17 +107,6 @@ \heuristics(simplify) }; - \lemma - dominatesSetDisjoint { - \schemaVar \term Object o1, o2; - \schemaVar \term LocSet s1, s2; - - \assumes(dominatesSet(o1, s1), dominatesSet(o2, s2) ==>) - \find(undom(o1, o2) ==>) - \add(disjoint(s1, s2) ==>) - \heuristics(inReachableStateImplication) - }; - \lemma sameLevelUndom { \schemaVar \term Object o, x, y; @@ -261,163 +115,235 @@ \find(==> x = y) \add(undom(x, y) ==>) - \heuristics(inReachableStateImplication) + \heuristics(simplify) }; - \lemma - domfpDepthEquivDominates { - \schemaVar \term Object x; - \schemaVar \term int n; - \schemaVar \variables Object y; - \find(domfpDepth(x, n)) + \lemma + repfpElement { + \schemaVar \term Object x, y; + \schemaVar \term Field f; - \varcond(\notFreeIn(y, x, n)) - - \replacewith(infiniteUnion{y;}(\if(dominatesDepth(x, y, n)) \then(y.*) \else(empty))) + \find(elementOf(x, f, repfp(y))) + \replacewith(dominates(y, x) | x = y) + \heuristics(simplify) }; - \lemma - domfpFinalDepth { - \schemaVar \term Object x; - \schemaVar \variables int n, m; + \lemma + dominatesInverse { + \schemaVar \term Object x, y; + + \assumes(dominates(x, y) ==>) + + \find(dominates(y, x)) + + \sameUpdateLevel - \find(x) + \replacewith(false) + \heuristics(simplify) + }; + + \lemma + repfpSubset { + \schemaVar \term Object x, y; + + \assumes(dominates(x, y) ==>) + + \find(repfp(y)) + + \sameUpdateLevel - \varcond(\notFreeIn(n, x), \notFreeIn(m, x)) - \add(\exists n; (n >= 0 & \forall m; (m >= n -> domfpDepth(x, m) = empty)) ==>) + \add(subset(repfp(y), repfp(x)) ==>) + \heuristics(simplify) }; - \lemma - domfpEqdomfpDepthUnion { - \schemaVar \term Object x; - \schemaVar \variables int n; + \lemma + dominatesNegTransitive { + \schemaVar \term Object x, y, z; + + \assumes(dominates(x, z) ==> dominates(x, y)) + \find(dominates(z, y)) + \sameUpdateLevel + \replacewith(false) + \heuristics(simplify) + }; - \find(domfp(x)) + \lemma + dominatesNegNotEqual { + \schemaVar \term Object x, y, z; - \varcond(\notFreeIn(n, x)) - \replacewith(infiniteUnion{n;}(domfpDepth(x, n))) + \assumes(dominates(x, z) ==> dominates(x, y)) + \find(y = z) + \sameUpdateLevel + \replacewith(false) + \heuristics(simplify) }; - \lemma - domfpEquivDominates { - \schemaVar \term Object x; - \schemaVar \variables Object y; + \lemma + repfpDisjointComplement { + \schemaVar \term Object x, y; - \find(domfp(x)) - \varcond(\notFreeIn(y, x)) - \replacewith(infiniteUnion{y;}(\if(dominates(x, y)) \then(y.*) \else(empty))) + \find(disjoint(setMinus(allLocs, repfp(x)), repfp(y))) + + \replacewith(x = y | dominates(x, y)) + \heuristics(simplify) }; \lemma - domfpElement { + createdRepfpDisjointComplementRepfp { \schemaVar \term Object x, y; - \schemaVar \term Field f; + \schemaVar \term Heap h; + + \assumes(boolean::select(h, y, java.lang.Object::) = TRUE ==>) + + \find(disjoint(setMinus(allLocs, repfp(x)), createdRepfp(h, y))) + \sameUpdateLevel - \find(elementOf(x, f, domfp(y))) - \replacewith(dominates(y, x)) + \replacewith(x = y | dominates(x, y)) \heuristics(simplify) }; \lemma - repfpElement { + createdRepfpDisjointComplement { \schemaVar \term Object x, y; - \schemaVar \term Field f; + \schemaVar \term Heap h; - \find(elementOf(x, f, repfp(y))) - \replacewith(dominates(y, x) | x = y) + \assumes(boolean::select(h, x, java.lang.Object::) = TRUE, boolean::select(h, y, java.lang.Object::) = TRUE ==>) + \find(disjoint(setMinus(allLocs, createdRepfp(h, x)), createdRepfp(h, y))) + \sameUpdateLevel + + \replacewith(x = y | dominates(x, y)) \heuristics(simplify) }; \lemma - dominatesInverse { + createdRepfpElement { \schemaVar \term Object x, y; + \schemaVar \term Heap h; + \schemaVar \term Field f; - \assumes(dominates(x, y) ==>) + \find(elementOf(x, f, createdRepfp(h, y))) + \replacewith((dominates(y, x) | x = y) & boolean::select(h, x, java.lang.Object::) = TRUE) + \heuristics(simplify) + }; - \find(dominates(y, x)) + \lemma + dismissSelectOfDominatedObject { + \schemaVar \term Heap h; + \schemaVar \term Object o, u; + \schemaVar \term Field f1, f2; + \schemaVar \term any x; + + \assumes(dominates(o, u) ==>) + \find(alpha::select(store(h, o, f1, x), u, f2)) + \sameUpdateLevel + \replacewith(alpha::select(h, u, f2)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatingObject { + \schemaVar \term Heap h; + \schemaVar \term Object o, u; + \schemaVar \term Field f1, f2; + \schemaVar \term any x; + + \assumes(dominates(u, o) ==>) + \find(alpha::select(store(h, o, f1, x), u, f2)) \sameUpdateLevel - \replacewith(false) + \replacewith(alpha::select(h, u, f2)) \heuristics(simplify) }; \lemma - repfpSubset { - \schemaVar \term Object x, y; + dismissSelectOfDominatedObjectEQ { + \schemaVar \term Heap h, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f1, f2; + \schemaVar \term any x; + + \assumes(store(h, o, f1, x) = EQ, dominates(o, u) ==>) + \find(alpha::select(EQ, u, f2)) + \sameUpdateLevel - \assumes(dominates(x, y) ==>) + \replacewith(alpha::select(h, u, f2)) + \heuristics(simplify) + }; - \find(repfp(y)) + \lemma + dismissSelectOfDominatingObjectEQ { + \schemaVar \term Heap h, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f1, f2; + \schemaVar \term any x; + + \assumes(store(h, o, f1, x) = EQ, dominates(u, o) ==>) + \find(alpha::select(EQ, u, f2)) + \sameUpdateLevel - \add(subset(repfp(y), repfp(x)) ==>) - \heuristics(inReachableStateImplication) + \replacewith(alpha::select(h, u, f2)) + \heuristics(simplify) }; - \lemma - selectOfDominatedAnon { - \schemaVar \term Heap h, h2; - \schemaVar \term LocSet s; - \schemaVar \term Object o; + \lemma + dismissSelectOfDominatedAnonEQ { + \schemaVar \term Heap h, h2, EQ; + \schemaVar \term Object o, u; \schemaVar \term Field f; - - \find(beta::select(anon(h, s, h2), o, f)) - - \replacewith(beta::select(\if(dominatesSet(o, s) & !elementOf(o, f, freshLocs(h))) - \then(h) - \else(anon(h, s, h2)), o, f)) + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, anon(h, repfp(u), h2) = EQ, dominates(o, u) ==>) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) }; - - \lemma - selectOfDominatedAnonEQ { - \schemaVar \term Heap h, h2; - \schemaVar \term LocSet s; - \schemaVar \term Object o; + + \lemma + dismissSelectOfDominatedCreatedAnonEQ { + \schemaVar \term Heap h, h2, h3, EQ; + \schemaVar \term Object o, u; \schemaVar \term Field f; - \schemaVar \term Heap EQ; - - \assumes(anon(h, s, h2) = EQ ==>) - \find(beta::select(EQ, o, f)) + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, anon(h, createdRepfp(h3, u), h2) = EQ, dominates(o, u) ==>) + \find(alpha::select(EQ, o, f)) \sameUpdateLevel - - \replacewith(beta::select(\if(dominatesSet(o, s) & !elementOf(o, f, freshLocs(h))) - \then(h) - \else(EQ), o, f)) + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) }; - - \lemma - selectOfDominatedStore { + + \lemma + dismissSelectOfDominatedAnon { \schemaVar \term Heap h, h2; - \schemaVar \term LocSet s; - \schemaVar \term Object o, o2; - \schemaVar \term Field f, f2; - \schemaVar \term alpha x; - - \find(beta::select(store(h, o, f, x), o2, f2)) + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(o, u) ==>) + \find(alpha::select(anon(h, repfp(u), h2), o, f)) \sameUpdateLevel - - \replacewith(beta::select(\if(dominates(o2, o) | dominates(o, o2)) - \then(h) - \else(store(h, o, f, x)), o2, f2)) + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) }; - - \lemma - selectOfDominatedStoreEQ { - \schemaVar \term Heap h, h2; - \schemaVar \term LocSet s; - \schemaVar \term Object o, o2; - \schemaVar \term Field f, f2; - \schemaVar \term Heap EQ; - \schemaVar \term alpha x; - - \assumes(store(h, o, f, x) = EQ ==>) - \find(beta::select(EQ, o2, f2)) - + + \lemma + dismissSelectOfDominatedCreatedAnon { + \schemaVar \term Heap h, h2, h3; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(o, u) ==>) + \find(alpha::select(anon(h, createdRepfp(h3, u), h2), o, f)) \sameUpdateLevel - - \replacewith(beta::select(\if(dominates(o2, o) | dominates(o, o2)) - \then(h) - \else(EQ), o2, f2)) + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) }; } diff --git a/key.ui/build.gradle b/key.ui/build.gradle index f5db1e9eb11..1761c0c0603 100644 --- a/key.ui/build.gradle +++ b/key.ui/build.gradle @@ -61,6 +61,12 @@ application { mainClass.set("de.uka.ilkd.key.core.Main") } +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} + run { systemProperties["key.examples.dir"] = "$projectDir/examples" //systemProperties["slf4j.detectLoggerNameMismatch"] = true From a82c2c2006f2bf3fdcc88c69c1783b596d99ef67 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Mon, 22 Sep 2025 15:04:25 +0200 Subject: [PATCH 11/27] the new rule files --- .../ilkd/key/proof/rules/standardRules.key | 2 + .../uka/ilkd/key/proof/rules/universeDefs.key | 29 +- .../key/proof/rules/universeDismissLemmas.key | 480 ++++ .../ilkd/key/proof/rules/universeLemmas.key | 143 +- .../de/uka/ilkd/key/proof/rules/various.key | 95 + key.ui/report.html | 2016 +++++++++++++++++ 6 files changed, 2635 insertions(+), 130 deletions(-) create mode 100644 key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key create mode 100644 key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key create mode 100644 key.ui/report.html diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key index 522a42e0977..5b07bcde6a6 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key @@ -52,6 +52,8 @@ \include universe; \include universeDefs; \include universeLemmas; +\include universeDismissLemmas; +\include various; // rules for Java (order does not matter, since not provable anyway) \include javaRules; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key index 8fd53c4f983..e576adef58e 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key @@ -44,7 +44,6 @@ \sameUpdateLevel \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) - \add(#v0 != null -> owner(#v) = owner(#v0) ==>) \addprogvars(#v0) \heuristics(simplify_prog, simplify_prog_subset) @@ -76,7 +75,6 @@ \sameUpdateLevel \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) - \add(#v0 != null -> #v = owner(#v0) ==>) \addprogvars(#v0) \heuristics(simplify_prog, simplify_prog_subset) @@ -97,6 +95,28 @@ \displayname "variableDeclaration" }; + instanceCreationAssignmentPeer { + \schemaVar \modalOperator {diamond} #diamond; + \schemaVar \modalOperator {diamond, box} #normal; + \schemaVar \formula post; + \schemaVar \program ProgramMethod #pm; + \schemaVar \program Type #t; + \schemaVar \program SimpleInstanceCreation #n; + \schemaVar \program LeftHandSide #lhs; + \schemaVar \program Variable #v0, #v; + + \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) + \sameUpdateLevel + + \varcond(\newTypeOf(#v0, #lhs), \hasAnnotation(#n, Peer)) + + \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); + #constructor-call(#v0, #n); + #post-work(#v0); + #lhs = #v0; + ...}\endmodality (post | !(#v0 != null -> owner(#v0) = owner(#v)))) + \heuristics(method_expand) + }; instanceCreationAssignmentRep { \schemaVar \modalOperator {diamond} #diamond; @@ -117,8 +137,7 @@ #constructor-call(#v0, #n); #post-work(#v0); #lhs = #v0; - ...}\endmodality (post)) - \add(#v0 != null -> #v = owner(#v0) ==>) + ...}\endmodality (post | !(#v0 != null -> owner(#v0) = #v))) \heuristics(method_expand) }; @@ -140,7 +159,7 @@ \find(alpha::select(h, o, f)) \varcond(\hasAnnotation(f, Rep)) - \add(alpha::select(h, o, f) != null -> o = owner(Object::cast(alpha::select(h, o, f))) ==>) + \add(alpha::select(h, o, f) != null -> owner(Object::cast(alpha::select(h, o, f))) = o ==>) \heuristics(simplify) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key new file mode 100644 index 00000000000..93d188b89a6 --- /dev/null +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key @@ -0,0 +1,480 @@ + +\rules(programRules:Java) { + // =============================== + // Normal Variant + // =============================== + + \lemma + dismissSelectOfDominatedObject { + \schemaVar \term Heap h; + \schemaVar \term Object o, u; + \schemaVar \term Field f1, f2; + \schemaVar \term any x; + + \assumes(dominates(o, u) ==>) + \find(alpha::select(store(h, o, f1, x), u, f2)) + \sameUpdateLevel + + \replacewith(alpha::select(h, u, f2)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatedObjectEQ { + \schemaVar \term Heap h, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f1, f2; + \schemaVar \term any x; + + \assumes(store(h, o, f1, x) = EQ, dominates(o, u) ==>) + \find(alpha::select(EQ, u, f2)) + \sameUpdateLevel + + \replacewith(alpha::select(h, u, f2)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatingObject { + \schemaVar \term Heap h; + \schemaVar \term Object o, u; + \schemaVar \term Field f1, f2; + \schemaVar \term any x; + + \assumes(dominates(u, o) ==>) + \find(alpha::select(store(h, o, f1, x), u, f2)) + \sameUpdateLevel + + \replacewith(alpha::select(h, u, f2)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatingObjectEQ { + \schemaVar \term Heap h, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f1, f2; + \schemaVar \term any x; + + \assumes(store(h, o, f1, x) = EQ, dominates(u, o) ==>) + \find(alpha::select(EQ, u, f2)) + \sameUpdateLevel + + \replacewith(alpha::select(h, u, f2)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatedAnon { + \schemaVar \term Heap h, h2; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(o, u) ==>) + \find(alpha::select(anon(h, repfp(u), h2), o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatedAnonEQ { + \schemaVar \term Heap h, h2, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, anon(h, repfp(u), h2) = EQ, dominates(o, u) ==>) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatedCreatedAnon { + \schemaVar \term Heap h, h2, h3; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(o, u) ==>) + \find(alpha::select(anon(h, createdRepfp(h3, u), h2), o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatedCreatedAnonEQ { + \schemaVar \term Heap h, h2, h3, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, anon(h, createdRepfp(h3, u), h2) = EQ, dominates(o, u) ==>) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + + // ============================================ + // Complement Rules (for accessible) + // ============================================ + + \lemma + dismissSelectOfSelfRepfpComplementAnon { + \schemaVar \term Heap h, h2; + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE ==>) + \find(alpha::select(anon(h, setMinus(allLocs, repfp(o)), h2), o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfSelfCreatedRepfpComplementAnon { + \schemaVar \term Heap h, h2, h3; + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, boolean::select(h3, o, java.lang.Object::) = TRUE ==>) + \find(alpha::select(anon(h, setMinus(allLocs, createdRepfp(h3, o)), h2), o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatingRepfpComplementAnon { + \schemaVar \term Heap h, h2; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(u, o) ==>) + \find(alpha::select(anon(h, setMinus(allLocs, repfp(u)), h2), o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatingCreatedRepfpComplementAnon { + \schemaVar \term Heap h, h2, h3; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, boolean::select(h3, o, java.lang.Object::) = TRUE, dominates(u, o) ==>) + \find(alpha::select(anon(h, setMinus(allLocs, createdRepfp(h3, u)), h2), o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + + // ------------------------------------- + // EQ rules + + \lemma + dismissSelectOfSelfRepfpComplementAnonEQ { + \schemaVar \term Heap h, h2, EQ; + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, anon(h, setMinus(allLocs, repfp(o)), h2) = EQ ==>) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfSelfCreatedRepfpComplementAnonEQ { + \schemaVar \term Heap h, h2, h3, EQ; + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, boolean::select(h3, o, java.lang.Object::) = TRUE, anon(h, setMinus(allLocs, createdRepfp(h3, o)), h2) = EQ ==>) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatingRepfpComplementAnonEQ { + \schemaVar \term Heap h, h2, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(u, o), anon(h, setMinus(allLocs, repfp(u)), h2) = EQ ==>) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + + \lemma + dismissSelectOfDominatingCreatedRepfpComplementAnonEQ { + \schemaVar \term Heap h, h2, h3, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, boolean::select(h3, o, java.lang.Object::) = TRUE, dominates(u, o), anon(h, setMinus(allLocs, createdRepfp(h3, u)), h2) = EQ ==>) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(alpha::select(h, o, f)) + \heuristics(simplify) + }; + +// ======================================================== +// ======================================================== +// ======================================================== +// ======================================================== +// ======================================================== + + + // =============================== + // Normal Variant + // =============================== + + \lemma + simplifySelectOfDominatedAnon { + \schemaVar \term Heap h, h2; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(dominates(o, u) ==> o = null) + \find(alpha::select(anon(h, repfp(u), h2), o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; + + \lemma + simplifySelectOfDominatedCreatedAnon { + \schemaVar \term Heap h, h2, h3; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(dominates(o, u) ==> o = null) + \find(alpha::select(anon(h, createdRepfp(h3, u), h2), o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; + + // -------------------------------------------- + // EQ Rules + + \lemma + simplifySelectOfDominatedAnonEQ { + \schemaVar \term Heap h, h2, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(anon(h, repfp(u), h2) = EQ, dominates(o, u) ==> o = null) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; + + \lemma + simplifySelectOfDominatedCreatedAnonEQ { + \schemaVar \term Heap h, h2, h3, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(anon(h, createdRepfp(h3, u), h2) = EQ, dominates(o, u) ==> o = null) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; + + // ============================================ + // Complement Rules (for accessible) + // ============================================ + + \lemma + simplifySelectOfSelfRepfpComplementAnon { + \schemaVar \term Heap h, h2; + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(==> o = null) + + \find(alpha::select(anon(h, setMinus(allLocs, repfp(o)), h2), o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; + + \lemma + simplifySelectOfSelfRepfpComplementAnonEQ { + \schemaVar \term Heap h, h2, EQ; + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(anon(h, setMinus(allLocs, repfp(o)), h2) = EQ ==> o = null) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; + + \lemma + simplifySelectOfSelfCreatedRepfpComplementAnon { + \schemaVar \term Heap h, h2, h3; + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(==> o = null) + \find(alpha::select(anon(h, setMinus(allLocs, createdRepfp(h3, o)), h2), o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & + (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; + + \lemma + simplifySelectOfSelfCreatedRepfpComplementAnonEQ { + \schemaVar \term Heap h, h2, h3, EQ; + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(anon(h, setMinus(allLocs, createdRepfp(h3, o)), h2) = EQ ==> o = null) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & + (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; + + \lemma + simplifySelectOfDominatingRepfpComplementAnon { + \schemaVar \term Heap h, h2; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(dominates(u, o) ==> o = null) + \find(alpha::select(anon(h, setMinus(allLocs, repfp(u)), h2), o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; + + \lemma + simplifySelectOfDominatingRepfpComplementAnonEQ { + \schemaVar \term Heap h, h2, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(dominates(u, o), anon(h, setMinus(allLocs, repfp(u)), h2) = EQ ==> o = null) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; + + \lemma + simplifySelectOfDominatingCreatedRepfpComplementAnon { + \schemaVar \term Heap h, h2, h3; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(dominates(u, o) ==> o = null) + \find(alpha::select(anon(h, setMinus(allLocs, createdRepfp(h3, u)), h2), o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & + (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; + + \lemma + simplifySelectOfDominatingCreatedRepfpComplementAnonEQ { + \schemaVar \term Heap h, h2, h3, EQ; + \schemaVar \term Object o, u; + \schemaVar \term Field f; + \schemaVar \term any x; + + \assumes(dominates(u, o), anon(h, setMinus(allLocs, createdRepfp(h3, u)), h2) = EQ ==> o = null) + \find(alpha::select(EQ, o, f)) + \sameUpdateLevel + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & + (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + \heuristics(simplify) + }; +} diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key index 00dbdf729cb..82c9869ec07 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key @@ -67,28 +67,17 @@ owns2Dominates { \schemaVar \term Object x, y; - \find(x = owner(y) ==>) - - \add(dominates(x, y) ==>) - \heuristics(simplify) - }; - - \lemma - owns2DominatesLeft { - \schemaVar \term Object x, y; - \find(owner(y) = x ==>) \add(dominates(x, y) ==>) \heuristics(simplify) - \displayname "owns2Dominates" }; \lemma ownsSelf { \schemaVar \term Object o; - \find(o = owner(o)) + \find(owner(o) = o) \replacewith(false) @@ -100,8 +89,8 @@ closePeerOwn { \schemaVar \term Object x, y; - \assumes(y = owner(x) ==>) - \find(x = owner(y) ==>) + \assumes(owner(x) = y ==>) + \find(owner(y) = x ==>) \closegoal \heuristics(simplify) @@ -111,7 +100,7 @@ sameLevelUndom { \schemaVar \term Object o, x, y; - \assumes(o = owner(x), o = owner(y) ==>) + \assumes(owner(x) = o, owner(y) = o ==>) \find(==> x = y) \add(undom(x, y) ==>) @@ -227,123 +216,27 @@ \heuristics(simplify) }; - \lemma - dismissSelectOfDominatedObject { - \schemaVar \term Heap h; - \schemaVar \term Object o, u; - \schemaVar \term Field f1, f2; - \schemaVar \term any x; - - \assumes(dominates(o, u) ==>) - \find(alpha::select(store(h, o, f1, x), u, f2)) - \sameUpdateLevel - - \replacewith(alpha::select(h, u, f2)) - \heuristics(simplify) - }; - - \lemma - dismissSelectOfDominatingObject { - \schemaVar \term Heap h; - \schemaVar \term Object o, u; - \schemaVar \term Field f1, f2; - \schemaVar \term any x; - - \assumes(dominates(u, o) ==>) - \find(alpha::select(store(h, o, f1, x), u, f2)) - \sameUpdateLevel - - \replacewith(alpha::select(h, u, f2)) - \heuristics(simplify) - }; - - \lemma - dismissSelectOfDominatedObjectEQ { - \schemaVar \term Heap h, EQ; - \schemaVar \term Object o, u; - \schemaVar \term Field f1, f2; - \schemaVar \term any x; - - \assumes(store(h, o, f1, x) = EQ, dominates(o, u) ==>) - \find(alpha::select(EQ, u, f2)) - \sameUpdateLevel - - \replacewith(alpha::select(h, u, f2)) - \heuristics(simplify) - }; - - \lemma - dismissSelectOfDominatingObjectEQ { - \schemaVar \term Heap h, EQ; - \schemaVar \term Object o, u; - \schemaVar \term Field f1, f2; - \schemaVar \term any x; - - \assumes(store(h, o, f1, x) = EQ, dominates(u, o) ==>) - \find(alpha::select(EQ, u, f2)) - \sameUpdateLevel - - \replacewith(alpha::select(h, u, f2)) - \heuristics(simplify) - }; - - \lemma - dismissSelectOfDominatedAnonEQ { - \schemaVar \term Heap h, h2, EQ; - \schemaVar \term Object o, u; - \schemaVar \term Field f; - \schemaVar \term any x; - - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, anon(h, repfp(u), h2) = EQ, dominates(o, u) ==>) - \find(alpha::select(EQ, o, f)) - \sameUpdateLevel - - \replacewith(alpha::select(h, o, f)) - \heuristics(simplify) - }; - - \lemma - dismissSelectOfDominatedCreatedAnonEQ { - \schemaVar \term Heap h, h2, h3, EQ; - \schemaVar \term Object o, u; - \schemaVar \term Field f; - \schemaVar \term any x; + \lemma + dominatesSameNotUndom { + \schemaVar \term Object x, y, z; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, anon(h, createdRepfp(h3, u), h2) = EQ, dominates(o, u) ==>) - \find(alpha::select(EQ, o, f)) - \sameUpdateLevel + \assumes(dominates(x, z) ==>) + \find(dominates(y, z) ==>) - \replacewith(alpha::select(h, o, f)) + \add(==> undom(x, y)) \heuristics(simplify) }; - \lemma - dismissSelectOfDominatedAnon { - \schemaVar \term Heap h, h2; - \schemaVar \term Object o, u; - \schemaVar \term Field f; - \schemaVar \term any x; - - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(o, u) ==>) - \find(alpha::select(anon(h, repfp(u), h2), o, f)) - \sameUpdateLevel - - \replacewith(alpha::select(h, o, f)) - \heuristics(simplify) - }; + \lemma + undomTransitive { + \schemaVar \term Object x, y, z; - \lemma - dismissSelectOfDominatedCreatedAnon { - \schemaVar \term Heap h, h2, h3; - \schemaVar \term Object o, u; - \schemaVar \term Field f; - \schemaVar \term any x; + \assumes(dominates(y, z) ==>) + \find(undom(x, y) ==>) - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(o, u) ==>) - \find(alpha::select(anon(h, createdRepfp(h3, u), h2), o, f)) - \sameUpdateLevel + \add(undom(x, z) ==>) - \replacewith(alpha::select(h, o, f)) - \heuristics(simplify) + // do it by hand currently since there may be nicer ways to do that + //\heuristics(simplify) }; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key new file mode 100644 index 00000000000..d31da5d55d0 --- /dev/null +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key @@ -0,0 +1,95 @@ + + +\rules(programRules:Java) { + variousReferencedObjectIsCreated { + \schemaVar \term Heap h; + \schemaVar \term Object o; + \schemaVar \term Field f; + + \assumes(wellFormed(h) ==> deltaObject::select(h, o, f) = null) + \find(boolean::select(h, + deltaObject::select(h, o, f), + java.lang.Object::) = TRUE) + + \inSequentState + + \replacewith(true) + + \heuristics(concrete) + }; + + variousSelectOfEmptyAnonEQ { + \schemaVar \term Heap h, h2, EQ; + \schemaVar \term Object o; + \schemaVar \term Field f; + + \assumes(anon(h, empty, h2) = EQ ==> o = null) + \find(alpha::select(EQ, o, f)) + + \inSequentState + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + + \heuristics(simplify) + }; + + variousSelectOfEmptyAnon { + \schemaVar \term Heap h, h2; + \schemaVar \term Object o; + \schemaVar \term Field f; + + \assumes(==> o = null) + \find(alpha::select(anon(h, empty, h2), o, f)) + + \inSequentState + + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) + \else(alpha::select(h2, o, f))) + + \heuristics(simplify) + }; + + variousDisjointUnion { + \schemaVar \term LocSet x, y, z; + + \find(disjoint(x, union(y, z))) + + \replacewith(disjoint(x, y) & disjoint(x, z)) + + \heuristics(simplify) + }; + + variousDisjointUnionInverse { + \schemaVar \term LocSet x, y, z; + + \find(disjoint(union(y, z), x)) + + \replacewith(disjoint(x, y) & disjoint(x, z)) + + \heuristics(simplify) + \displayname "variousDisjointUnion" + }; + + variousDisjointSingleton { + \schemaVar \term Object x; + \schemaVar \term Field f; + \schemaVar \term LocSet s; + + \find(disjoint(s, singleton(x, f))) + \replacewith(!elementOf(x, f, s)) + }; + + variousDisjointSingletonInverse { + \schemaVar \term Object x; + \schemaVar \term Field f; + \schemaVar \term LocSet s; + + \find(disjoint(singleton(x, f), s)) + \replacewith(!elementOf(x, f, s)) + + \displayname "variousDisjointSingleton" + }; +} diff --git a/key.ui/report.html b/key.ui/report.html new file mode 100644 index 00000000000..2f15451431e --- /dev/null +++ b/key.ui/report.html @@ -0,0 +1,2016 @@ + + + NodeProofs.zproof - Proof Management Report + + + + + + + + + + + +
+ + + + +
+ +
+
    +
  • Bundle: NodeProofs.zproof
  • +
  • Checks run: settings, dependency, missing_proofs, replay
  • +
  • Date: 2025-09-19 13:48:44
  • +
  • Overall Status: OPEN
  • +
  • Contracts: +
    +
    proven
    +
    dependencies left
    +
    unproven
    +
    +
    +
    5
    +
    7
    +
    67
    +
    +
  • +
  • Standard output: +
    +
    + + + + + + + + +
    +
    +
    +Running missing proofs checker ... +[ Debug ] Loading Java sources ... +[ Debug ] Java sources successfully loaded! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(UniverseNode__isSimple()).JML accessible clause.0.proof +[ Debug ] ... loading done! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(UniverseNode__UniverseNode(java.lang.Object)).JML normal_behavior operation contract.0.proof +[ Debug ] ... loading done! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(java.lang.Object___inv_()).JML accessible clause.0.proof +[ Debug ] ... loading done! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(UniverseNode__add(java.lang.Object)).JML normal_behavior operation contract.0.proof +[ Debug ] ... loading done! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(UniverseNode__get(int)).JML accessible clause.0.proof +[ Debug ] ... loading done! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(UniverseNode__contains(java.lang.Object)).JML normal_behavior operation contract.0.proof +[ Debug ] ... loading done! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(UniverseNode__lemma()).JML model_behavior operation contract.0.proof +[ Debug ] ... loading done! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(UniverseNode__get(int)).JML normal_behavior operation contract.0.proof +[ Debug ] ... loading done! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(UniverseNode__pop()).JML normal_behavior operation contract.0.proof +[ Debug ] ... loading done! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(UniverseNode__set(int,java.lang.Object)).JML normal_behavior operation contract.0.proof +[ Debug ] ... loading done! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(UniverseNode__contains(java.lang.Object)).JML accessible clause.0.proof +[ Debug ] ... loading done! +[ Debug ] Loading proof from /tmp/KeY_PM_unzip3138729814689723921/UniverseNode(UniverseNode__isSimple()).JML normal_behavior operation contract.0.proof +[ Debug ] ... loading done! +[ Information ] Proof exists for contract UniverseNode[UniverseNode::isSimple()].JML accessible clause.0 +[ Information ] Proof exists for contract UniverseNode[UniverseNode::UniverseNode(java.lang.Object)].JML normal_behavior operation contract.0 +[ Information ] Proof exists for contract UniverseNode[java.lang.Object::<inv>()].JML accessible clause.0 +[ Information ] Proof exists for contract UniverseNode[UniverseNode::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Information ] Proof exists for contract UniverseNode[UniverseNode::get(int)].JML accessible clause.0 +[ Information ] Proof exists for contract UniverseNode[UniverseNode::contains(java.lang.Object)].JML normal_behavior operation contract.0 +[ Information ] Proof exists for contract UniverseNode[UniverseNode::lemma()].JML model_behavior operation contract.0 +[ Information ] Proof exists for contract UniverseNode[UniverseNode::get(int)].JML normal_behavior operation contract.0 +[ Information ] Proof exists for contract UniverseNode[UniverseNode::pop()].JML normal_behavior operation contract.0 +[ Information ] Proof exists for contract UniverseNode[UniverseNode::set(int,java.lang.Object)].JML normal_behavior operation contract.0 +[ Information ] Proof exists for contract UniverseNode[UniverseNode::contains(java.lang.Object)].JML accessible clause.0 +[ Information ] Proof exists for contract UniverseNode[UniverseNode::isSimple()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.InterruptedException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.InterruptedException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Iterable[java.lang.Iterable::iterator()].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[List::pop()].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::toUpperCase()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.LinkageError[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::hashCode()].JML behavior operation contract.0 +[ Warning ] No proof found for contract List[List::set(int,java.lang.Object)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayStoreException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayIndexOutOfBoundsException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOf([D,int)].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[List::set(int,java.lang.Object)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.Retention[java.lang.annotation.Retention::value()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::add(int,java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ExceptionInInitializerError[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::println(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IllegalArgumentException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ExceptionInInitializerError[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NumberFormatException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.ListIterator::hasNext()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::codePointCount(int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::indexOf(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::intern()].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[RecursiveList::RecursiveList()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NullPointerException[java.lang.NullPointerException::NullPointerException()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NoClassDefFoundError[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Object[java.lang.Object::Object()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::clear()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Exception[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::iterator()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.lang.Iterable::iterator()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::size()].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[UniverseList::UniverseList()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.OutOfMemoryError[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.ElementType[java.lang.annotation.ElementType::valueOf(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::valueOf(java.lang.String,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::set(int,java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::addAll(java.util.Collection)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.System[java.lang.System::arraycopy(java.lang.Object,int,java.lang.Object,int,int)].JML exceptional_behavior operation contract.1 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::lastIndexOf(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ClassCastException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.math.BigInteger[java.math.BigInteger::mod(java.math.BigInteger)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::equals(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.math.BigInteger[java.lang.Number::intValue()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.CloneNotSupportedException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::retainAll(java.util.Collection)].JML behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[KeYList::KeYList()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::valueOf(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArithmeticException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::sort([J,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::toArray([Ljava.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::reverseBytes(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOf([I,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Character[java.lang.Character::digit(char,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::charAt(int)].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::get(int)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.VirtualMachineError[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.VirtualMachineError[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::isEmpty()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf([C)].JML exceptional_behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::pop()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::toArray([Ljava.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.ArrayList::ArrayList()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOf([Z,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::min(long,long)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Throwable[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.math.BigInteger[java.math.BigInteger::compareTo(java.math.BigInteger)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.Comparable[java.lang.Comparable::compareTo(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NoClassDefFoundError[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::isEmpty()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ExceptionInInitializerError[java.lang.ExceptionInInitializerError::getException()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::subList(int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ExceptionInInitializerError[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[List::pop()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::bitCount(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::startsWith(java.lang.String,int)].JML exceptional_behavior operation contract.0 +[ Warning ] No proof found for contract List[List::get(int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::String(java.lang.String)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::println(long)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::indexOf(java.lang.Object)].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveNode[RecursiveNode::get(int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.ElementType[java.lang.Enum::name()].JML behavior operation contract.0 +[ Warning ] No proof found for contract List[List::size()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::getChars(int,int,[C,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.AssertionError[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::codePointAt(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::toLowerCase()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::toDegrees(double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.StringBuffer[java.lang.StringBuffer::charAt(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Error[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Iterator[java.util.Iterator::next()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::remove(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::print(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::sort([S,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::charAt(int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::println(boolean)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::copyValueOf([C)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::compareTo(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.ListIterator::previous()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.RuntimeException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.LinkedHashMap::LinkedHashMap()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.IOException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::clear()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.ListIterator::next()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.io.IOException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::addAll(java.util.Collection)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::contains(java.lang.String)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.Number[java.lang.Number::longValue()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayIndexOutOfBoundsException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::remove(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.ListIterator::hasNext()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::subList(int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Float[java.lang.Float::_isNaN(float)].JML model_behavior operation contract.0 +[ Warning ] No proof found for contract List[List::get(int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::get(int)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.StringBuffer[java.lang.StringBuffer::append(char)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NullPointerException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::toArray()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::put(java.lang.Object,java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::toHexString(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::matches(java.lang.String)].JML behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::pop()].JML exceptional_behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[List::get(int)].JML exceptional_behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[List::contains(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::print(char)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::equals([C,[C)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf(java.lang.Object)].JML normal_behavior operation contract.3 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOfRange([F,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NumberFormatException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Exception[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::size()].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.CloneNotSupportedException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.VirtualMachineError[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::replaceFirst(java.lang.String,java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::addAll(java.util.Collection)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf(char)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOfRange([S,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::removeAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::toArray([Ljava.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::listIterator(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::sort([J)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::sort([B,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::removeAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::println()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::containsKey(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayIndexOutOfBoundsException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArithmeticException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ClassCastException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Warning ] No proof found for contract List[List::contains(java.lang.Object)].JML accessible clause.0 +[ Warning ] No proof found for contract List[List::pop()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::startsWith(java.lang.String)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.RetentionPolicy[java.lang.Enum::name()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Double[java.lang.Double::_isNaN(double)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([Z,int,int,boolean)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::sqrt(double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IndexOutOfBoundsException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.Iterator::hasNext()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ExceptionInInitializerError[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::min(int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::equals([S,[S)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::lastIndexOf(java.lang.String,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.OutOfMemoryError[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.Iterator::next()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOfRange([D,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.OutOfMemoryError[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.math.BigInteger[java.math.BigInteger::valueOf(long)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.AssertionError[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::atan(double)].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[List::set(int,java.lang.Object)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Exception[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.InterruptedException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::size()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.StringBuffer[java.lang.StringBuffer::append(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::split(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::addAll(java.util.Collection)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::listIterator(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::lastIndexOf(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::max(int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NumberFormatException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[java.lang.Object::<inv>()].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::toCharArray()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.Character[java.lang.Comparable::compareTo(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::retainAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::set(int,java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::size()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::toUpperCase()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.NegativeArraySizeException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::String([C,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::containsValue(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::substring(int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::rotateRight(int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([B,int,int,byte)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::retainAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::containsAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.RetentionPolicy[java.lang.Enum::getDeclaringClass()].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveNode[RecursiveNode::contains(java.lang.Object)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.annotation.ElementType[java.lang.Enum::getDeclaringClass()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::println(char)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.ListIterator::hasPrevious()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::toArray([Ljava.lang.Object)].JML behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::get(int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.Iterator::remove()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::print(boolean)].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[List::get(int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::print(long)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayIndexOutOfBoundsException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Throwable[java.lang.Throwable::Throwable(java.lang.String,java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Number[java.lang.Number::intValue()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::hashCode()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ClassCastException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::replaceAll(java.lang.String,java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::equals(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ClassCastException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NoClassDefFoundError[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::lastIndexOf(int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.ListIterator::previousIndex()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.IOException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::equals([B,[B)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.LinkageError[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::isEmpty()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayStoreException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[List::get(int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::size()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::containsValue(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Exception[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::contains(java.lang.Object)].JML behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[List::contains(java.lang.Object)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::indexOf(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::listIterator()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Runnable[java.lang.Runnable::run()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::getBytes(int,int,[B,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.ListIterator::add(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([I,int,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.ListIterator::remove()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.lang.Iterable::iterator()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::atan2(double,double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.IOException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::toArray()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::asList([I)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::values()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.lang.Iterable::iterator()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::trim()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NumberFormatException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::longValue()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::containsAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::clear()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::toRadians(double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::copyValueOf([C,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::abs(float)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::substring(int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::print(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::isEmpty()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.ElementType[java.lang.Enum::ordinal()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Double[java.lang.Double::isNaN(double)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.lang.Iterable::iterator()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::split(java.lang.String,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::println(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IndexOutOfBoundsException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NegativeArraySizeException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::remove(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Enum[java.lang.Enum::name()].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveNode[RecursiveNode::contains(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Float[java.lang.Float::_isSame(float,float)].JML model_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Long[java.lang.Comparable::compareTo(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::String([C)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::asList([Ljava.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.ArrayList::ArrayList(java.util.Collection)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::size()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Throwable[java.lang.Throwable::Throwable(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::toArray([Ljava.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.RuntimeException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::lastIndexOf(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IllegalArgumentException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::add(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArithmeticException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::isEmpty()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::contains(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::addAll(java.util.Collection)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::print([C)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::removeAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf([C)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ExceptionInInitializerError[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::indexOf(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.math.BigInteger[java.lang.Comparable::compareTo(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.ListIterator::hasNext()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::iterator()].JML behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::set(int,java.lang.Object)].JML exceptional_behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveNode[RecursiveNode::set(int,java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::add(java.lang.Object)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.Iterator::remove()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::listIterator()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.Float[java.lang.Float::_isNaN(float)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::signum(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::pow(double,double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Error[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::max(float,float)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([J,int,int,long)].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[List::size()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.math.BigInteger[java.lang.Number::byteValue()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.RetentionPolicy[java.lang.Enum::ordinal()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::getInteger(java.lang.String,java.lang.Integer)].JML behavior operation contract.0 +[ Warning ] No proof found for contract List[List::pop()].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::abs(double)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.Annotation[java.lang.annotation.Annotation::hashCode()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::concat(java.lang.String)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOf([S,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::toString()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.RuntimeException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IllegalArgumentException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IllegalArgumentException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::get(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::println(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([J,long)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([F,int,int,float)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::listIterator()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.CloneNotSupportedException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ExceptionInInitializerError[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::getChars(int,int,[C,int)].JML exceptional_behavior operation contract.1 +[ Debug ] Ignoring internal contract java.lang.ClassCastException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOf([C,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::sort([I,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::print(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::isEmpty()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::remove(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.StringBuffer[java.lang.StringBuffer::append(boolean)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IndexOutOfBoundsException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::getBytes()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.Exception[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::toArray()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.ListIterator::add(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::highestOneBit(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf(java.lang.Object)].JML normal_behavior operation contract.2 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::contains(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::entrySet()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.math.BigInteger[java.lang.Number::longValue()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.math.BigInteger[java.lang.Number::shortValue()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::copyValueOf([C,int,int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::max(double,double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.ListIterator::remove()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::contains(java.lang.String)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.NullPointerException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.ListIterator::hasNext()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.Iterator[java.util.Iterator::remove()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::add(int,java.lang.Object)].Non-interference contract.0 +[ Warning ] No proof found for contract RecursiveList[List::size()].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.Float[java.lang.Float::_isSame(float,float)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.Throwable[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.ArrayList::ArrayList()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::contains(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::remove(java.lang.Object)].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[List::contains(java.lang.Object)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::hashCode()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::get(int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.System[java.lang.System::arraycopy(java.lang.Object,int,java.lang.Object,int,int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::clear()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::size()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::add(int,java.lang.Object)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::set(int,java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([B,byte)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::String([C)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NullPointerException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOfRange([Z,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::listIterator()].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[List::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::reverse(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayStoreException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::addAll(int,java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Date[java.util.Date::Date()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.ListIterator::next()].Non-interference contract.0 +[ Warning ] No proof found for contract RecursiveNode[RecursiveNode::pop()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.InterruptedException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.OutOfMemoryError[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::containsKey(java.lang.Object)].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[List::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Double[java.lang.Double::isNaN(double)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.NumberFormatException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::getInteger(java.lang.String,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::substring(int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NoClassDefFoundError[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::length()].JML normal_behavior operation contract.1 +[ Debug ] Ignoring internal contract java.lang.ArrayStoreException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::toString(int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::size()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayIndexOutOfBoundsException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::endsWith(java.lang.String)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::replace(char,char)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IndexOutOfBoundsException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::decode(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::add(int,java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::get(int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::listIterator(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::toLowerCase()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.RetentionPolicy[java.lang.Comparable::compareTo(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::add(java.lang.Object)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.NegativeArraySizeException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::iterator()].JML behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[List::get(int)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.ArrayIndexOutOfBoundsException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::abs(long)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::equals(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayIndexOutOfBoundsException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::set(int,java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NegativeArraySizeException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOf([F,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::retainAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::clear()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IllegalArgumentException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.ElementType[java.lang.Comparable::compareTo(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IndexOutOfBoundsException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.Iterator::hasNext()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Enum[java.lang.Enum::valueOf(java.lang.Class,java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf([C,int,int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::substring(int,int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::remove(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::isEmpty()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOf([B,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::compareToIgnoreCase(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NullPointerException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::indexOf(int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([D,double)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::removeAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::asin(double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Double[java.lang.Double::_isNaN(double)].JML model_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NegativeArraySizeException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Throwable[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::get(int)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::length()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.ElementType[java.lang.annotation.ElementType::name()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.ArrayList::ArrayList(java.util.Collection)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::startsWith(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::toString(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::exp(double)].JML behavior operation contract.0 +[ Warning ] No proof found for contract List[List::get(int)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::max(long,long)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::containsAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::sort([I)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::add(java.lang.Object)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.Comparable::compareTo(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.AssertionError[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOfRange([I,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.Annotation[java.lang.annotation.Annotation::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::clear()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.ListIterator::set(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::addAll(java.util.Collection)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::toOctalString(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::contains(java.lang.String)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::concat(java.lang.String)].JML normal_behavior operation contract.1 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::addAll(int,java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Iterator[java.util.Iterator::hasNext()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::indexOf(java.lang.String,int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.LinkedList::LinkedList(java.util.Collection)].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveNode[RecursiveNode::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::remove(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::lastIndexOf(java.lang.String)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.IOException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.ListIterator::hasPrevious()].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[List::set(int,java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::listIterator()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.ListIterator::nextIndex()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::keySet()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.StringBuffer[java.lang.StringBuffer::length()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::size()].Non-interference contract.0 +[ Warning ] No proof found for contract RecursiveNode[RecursiveNode::RecursiveNode(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.StringBuffer[java.lang.StringBuffer::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.InterruptedException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.RuntimeException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Double[java.lang.Double::_isSame(double,double)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::parseInt(java.lang.String,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.LinkedList::toString()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NoClassDefFoundError[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::remove(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::values()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::lastIndexOf(java.lang.String,int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IllegalArgumentException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.RetentionPolicy[java.lang.annotation.RetentionPolicy::valueOf(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::asList(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.System[java.lang.System::exit(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::parseInt(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::contains(java.lang.String)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.Throwable[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Enum[java.lang.Enum::ordinal()].JML behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[KeYList::newNode(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOfRange([J,int,int)].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[List::get(int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ClassCastException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::iterator()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Number[java.lang.Number::shortValue()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::keySet()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.AssertionError[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::isEmpty()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::add(java.lang.Object)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.LinkageError[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Exception[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ExceptionInInitializerError[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.RuntimeException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::contains(java.lang.Object)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::equals(java.lang.Object)].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[List::size()].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::size()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::codePointBefore(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Throwable[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.LinkageError[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.AssertionError[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.CloneNotSupportedException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.OutOfMemoryError[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::addAll(java.util.Collection)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::println([C)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::removeAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::getBytes()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Throwable[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::clear()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.ElementType[java.lang.annotation.ElementType::values()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.AssertionError[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Error[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::floorMod(int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.CloneNotSupportedException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract List[List::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IllegalArgumentException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::trim()].JML normal_behavior operation contract.1 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::get(int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Error[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::sin(double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::lastIndexOf(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.LinkageError[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::addAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::clear()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::isEmpty()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.InterruptedException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.AssertionError[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[List::get(int)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.Error[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::abs(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::toArray()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::intValue()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.ListIterator::nextIndex()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::min(double,double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ClassCastException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NoClassDefFoundError[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[List::contains(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::toArray()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Throwable[java.lang.Throwable::Throwable(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::String([C,int,int)].JML exceptional_behavior operation contract.1 +[ Warning ] No proof found for contract RecursiveNode[RecursiveNode::get(int)].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::size()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.StringBuffer[java.lang.StringBuffer::append(long)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::size()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::add(int,java.lang.Object)].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract List[List::set(int,java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NullPointerException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::add(java.lang.Object)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::equals([J,[J)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::containsAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::toArray()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::contains(java.lang.String)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.Annotation[java.lang.annotation.Annotation::annotationType()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.CloneNotSupportedException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Set::retainAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.Target[java.lang.annotation.Target::value()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.Iterator::next()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.ListIterator::next()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.math.BigInteger[java.math.BigInteger::mod(java.math.BigInteger)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.StringBuffer[java.lang.StringBuffer::append(java.lang.StringBuffer)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Error[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.ListIterator::next()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::size()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::regionMatches(int,java.lang.String,int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::removeAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::String()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArithmeticException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.System[java.lang.System::arraycopy(java.lang.Object,int,java.lang.Object,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::offsetByCodePoints(int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::indexOf(int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::isEmpty()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::iterator()].JML behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[java.lang.Object::<inv>()].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::sort([C)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NegativeArraySizeException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Throwable[java.lang.Throwable::Throwable()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::contains(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Number[java.lang.Number::byteValue()].JML behavior operation contract.0 +[ Warning ] No proof found for contract List[List::contains(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.IOException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::compareTo(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::sort([B)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Throwable[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::compareTo(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::endsWith(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::String(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ExceptionInInitializerError[java.lang.ExceptionInInitializerError::getCause()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::addAll(int,java.util.Collection)].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveNode[RecursiveNode::isSimple()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Comparable::compareTo(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.StringBuffer[java.lang.StringBuffer::append(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([I,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Enum[java.lang.Enum::getDeclaringClass()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::listIterator()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.CloneNotSupportedException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::retainAll(java.util.Collection)].JML behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[List::set(int,java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NullPointerException[java.lang.NullPointerException::NullPointerException(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf(java.lang.Object)].JML normal_behavior operation contract.4 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::byteValue()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::concat(java.lang.String)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::isEmpty()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::lastIndexOf(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NullPointerException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::equalsIgnoreCase(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::indexOf(java.lang.String,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::putAll(java.util.Map)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.RetentionPolicy[java.lang.annotation.RetentionPolicy::name()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.ListIterator::previousIndex()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::toBinaryString(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.math.BigInteger[java.math.BigInteger::compareTo(java.math.BigInteger)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::tan(double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArithmeticException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf([C,int,int)].JML exceptional_behavior operation contract.1 +[ Debug ] Ignoring internal contract java.io.PrintStream[java.io.PrintStream::printf(java.lang.String,[Ljava.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.List::add(int,java.lang.Object)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.Enum[java.lang.Comparable::compareTo(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([F,float)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::isEmpty()].Non-interference contract.0 +[ Warning ] No proof found for contract RecursiveNode[java.lang.Object::<inv>()].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf([C,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.List::get(int)].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::compareTo(java.lang.Integer)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::put(java.lang.Object,java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Exception[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IndexOutOfBoundsException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Warning ] No proof found for contract List[java.lang.Object::<inv>()].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.NoClassDefFoundError[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayStoreException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::getChars(int,int,[C,int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::toCharArray()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArithmeticException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([D,int,int,double)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::isEmpty()].Non-interference contract.0 +[ Debug ] Ignoring internal contract java.util.ListIterator[java.util.ListIterator::set(java.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::hashCode()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::lowestOneBit(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::containsAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.VirtualMachineError[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOfRange([C,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::equals([I,[I)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf(boolean)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::size()].Non-interference contract.0 +[ Warning ] No proof found for contract KeYList[List::pop()].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ListIteratorImpl[java.util.ListIterator::previous()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::getInteger(java.lang.String)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::acos(double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.List::subList(int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Map[java.util.Map::get(java.lang.Object)].JML behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::size()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf(java.lang.Object)].JML normal_behavior operation contract.1 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.util.Collection::addAll(java.util.Collection)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.OutOfMemoryError[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.VirtualMachineError[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::min(float,float)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.ArrayList[java.lang.Iterable::iterator()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NumberFormatException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::entrySet()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::sort([S)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::contains(java.lang.String)].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract List[List::size()].JML accessible clause.0 +[ Warning ] No proof found for contract KeYList[java.lang.Object::<inv>()].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::shortValue()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::copyValueOf([C)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.IndexOutOfBoundsException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::regionMatches(boolean,int,java.lang.String,int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::copyValueOf([C,int,int)].JML exceptional_behavior operation contract.1 +[ Debug ] Ignoring internal contract java.lang.Error[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::numberOfTrailingZeros(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::copyOf([J,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.OutOfMemoryError[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::format(java.lang.String,[Ljava.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.VirtualMachineError[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.RuntimeException[java.lang.Throwable::getLocalizedMessage()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.LinkageError[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NumberFormatException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::addAll(java.util.Collection)].JML normal_behavior operation contract.0 +[ Warning ] No proof found for contract KeYList[List::size()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NegativeArraySizeException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::contains(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::valueOf(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::isEmpty()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedHashMap[java.util.Map::putAll(java.util.Map)].JML behavior operation contract.0 +[ Warning ] No proof found for contract UniverseList[List::get(int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Double[java.lang.Double::_isSame(double,double)].JML model_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Math[java.lang.Math::cos(double)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayStoreException[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.io.IOException[java.lang.Throwable::getCause()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::numberOfLeadingZeros(int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Set[java.util.Collection::containsAll(java.util.Collection)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::fill([Z,boolean)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::startsWith(java.lang.String,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.NullPointerException[java.lang.Throwable::getMessage()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArrayStoreException[java.lang.Throwable::printStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::sort([C,int,int)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Integer[java.lang.Integer::rotateLeft(int,int)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.ArithmeticException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Arrays[java.util.Arrays::asList([C)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.Float[java.lang.Float::isNaN(float)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.InterruptedException[java.lang.Throwable::toString()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.LinkedList[java.util.Collection::toArray([Ljava.lang.Object)].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.RuntimeException[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.VirtualMachineError[java.lang.Throwable::initCause(java.lang.Throwable)].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.Collection[java.util.Collection::addAll(java.util.Collection)].Non-interference contract.0 +[ Warning ] No proof found for contract RecursiveNode[RecursiveNode::isSimple()].JML accessible clause.0 +[ Debug ] Ignoring internal contract java.lang.LinkageError[java.lang.Throwable::fillInStackTrace()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::String([C,int,int)].JML exceptional_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.util.List[java.util.Collection::iterator()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::valueOf(long)].JML behavior operation contract.0 +[ Warning ] No proof found for contract RecursiveList[List::pop()].JML normal_behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.annotation.RetentionPolicy[java.lang.annotation.RetentionPolicy::values()].JML behavior operation contract.0 +[ Debug ] Ignoring internal contract java.lang.String[java.lang.String::compareTo(java.lang.String)].JML exceptional_behavior operation contract.0 +Running settings checker ... +[ Debug ] Reference settings (id 0) are: {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Debug ] These settings already exist (with id 0): {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Debug ] These settings already exist (with id 0): {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Debug ] These settings already exist (with id 0): {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Debug ] These settings already exist (with id 0): {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Debug ] These settings already exist (with id 0): {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Debug ] These settings already exist (with id 0): {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Debug ] These settings already exist (with id 0): {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Debug ] These settings already exist (with id 0): {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Debug ] These settings already exist (with id 0): {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Debug ] These settings already exist (with id 0): {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Debug ] These settings already exist (with id 0): {initialisation=initialisation:disableStaticInitialisation, wdChecks=wdChecks:off, reach=reach:on, moreSeqRules=moreSeqRules:off, finalFields=finalFields:immutable, sequences=sequences:on, Strings=Strings:on, methodExpansion=methodExpansion:modularOnly, mergeGenerateIsWeakeningGoal=mergeGenerateIsWeakeningGoal:off, runtimeExceptions=runtimeExceptions:ban, wdOperator=wdOperator:L, JavaCard=JavaCard:off, integerSimplificationRules=integerSimplificationRules:full, floatRules=floatRules:strictfpOnly, permissions=permissions:off, modelFields=modelFields:showSatisfiability, javaLoopTreatment=javaLoopTreatment:efficient, assertions=assertions:on, bigint=bigint:on, intRules=intRules:arithmeticSemanticsIgnoringOF, programRules=programRules:Java, soundDefaultContracts=soundDefaultContracts:on} +[ Information ] All settings are consistent! +[ Information ] Settings check completed! +Running replay checker ... +[ Information ] Starting replay of proof UniverseNode[UniverseNode::isSimple()].JML accessible clause.0 +[ Information ] ... successful (proof is closed)! +[ Information ] Starting replay of proof UniverseNode[UniverseNode::UniverseNode(java.lang.Object)].JML normal_behavior operation contract.0 +[ Information ] ... successful (proof is closed)! +[ Information ] Starting replay of proof UniverseNode[java.lang.Object::<inv>()].JML accessible clause.0 +[ Information ] ... successful (proof is closed)! +[ Information ] Starting replay of proof UniverseNode[UniverseNode::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Information ] ... successful (proof is closed)! +[ Information ] Starting replay of proof UniverseNode[UniverseNode::get(int)].JML accessible clause.0 +[ Information ] ... successful (proof is closed)! +[ Information ] Starting replay of proof UniverseNode[UniverseNode::contains(java.lang.Object)].JML normal_behavior operation contract.0 +[ Information ] ... successful (proof is closed)! +[ Information ] Starting replay of proof UniverseNode[UniverseNode::lemma()].JML model_behavior operation contract.0 +[ Information ] ... successful (proof is closed)! +[ Information ] Starting replay of proof UniverseNode[UniverseNode::get(int)].JML normal_behavior operation contract.0 +[ Information ] ... successful (proof is closed)! +[ Information ] Starting replay of proof UniverseNode[UniverseNode::pop()].JML normal_behavior operation contract.0 +[ Information ] ... successful (proof is closed)! +[ Information ] Starting replay of proof UniverseNode[UniverseNode::set(int,java.lang.Object)].JML normal_behavior operation contract.0 +[ Information ] ... successful (proof is closed)! +[ Information ] Starting replay of proof UniverseNode[UniverseNode::contains(java.lang.Object)].JML accessible clause.0 +[ Information ] ... successful (proof is closed)! +[ Information ] Starting replay of proof UniverseNode[UniverseNode::isSimple()].JML normal_behavior operation contract.0 +[ Information ] ... successful (proof is closed)! +Running dependency checker ... +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Warning ] No saved modality information was found! Assuming "diamond" (incomplete for box contracts)! +[ Information ] No illegal dependencies found. +[ Debug ] Searching for unproven dependencies ... +[ Information ] Proof is closed and has no unproven dependencies: UniverseNode[UniverseNode::isSimple()].JML normal_behavior operation contract.0 +[ Information ] Proof is closed and has no unproven dependencies: UniverseNode[UniverseNode::UniverseNode(java.lang.Object)].JML normal_behavior operation contract.0 +[ Information ] Proof is closed and has no unproven dependencies: UniverseNode[UniverseNode::isSimple()].JML accessible clause.0 +[ Information ] Proof is closed and has no unproven dependencies: UniverseNode[java.lang.Object::<inv>()].JML accessible clause.0 +[ Information ] Proof is closed and has no unproven dependencies: UniverseNode[UniverseNode::lemma()].JML model_behavior operation contract.0 +[ Warning ] Unproven dependencies found for proof UniverseNode[UniverseNode::add(java.lang.Object)].JML normal_behavior operation contract.0 +[ Warning ] Unproven dependencies found for proof UniverseNode[UniverseNode::get(int)].JML accessible clause.0 +[ Warning ] Unproven dependencies found for proof UniverseNode[UniverseNode::contains(java.lang.Object)].JML normal_behavior operation contract.0 +[ Warning ] Unproven dependencies found for proof UniverseNode[UniverseNode::get(int)].JML normal_behavior operation contract.0 +[ Warning ] Unproven dependencies found for proof UniverseNode[UniverseNode::pop()].JML normal_behavior operation contract.0 +[ Warning ] Unproven dependencies found for proof UniverseNode[UniverseNode::set(int,java.lang.Object)].JML normal_behavior operation contract.0 +[ Warning ] Unproven dependencies found for proof UniverseNode[UniverseNode::contains(java.lang.Object)].JML accessible clause.0 +[ Information ] Unproven dependencies found in bundle! +[ Information ] Dependency checks completed! +All checks done! +Global result: OPEN +All checks completed! +Generating html report ... +
    +
  • +
+ +
+ +
+

Files found inside proof bundle:

+
    +
  • + KeY_PM_unzip3138729814689723921 +
      +
        +
      • + src +
          +
            +
          • + qual +
              +
                +
              • + Any.java +
              • +
                +
              • + Bottom.java +
              • +
                +
              • + Payload.java +
              • +
                +
              • + Peer.java +
              • +
                +
              • + Rep.java +
              • +
                +
              • + RepOnly.java +
              • +
                +
              • + Self.java +
              • +
              +
            +
          • +
            +
          • + KeYList.java +
          • +
            +
          • + KeYNode.java +
          • +
            +
          • + List.java +
          • +
            +
          • + RecursiveList.java +
          • +
            +
          • + RecursiveNode.java +
          • +
            +
          • + UniverseList.java +
          • +
            +
          • + UniverseNode.java +
          • +
          +
        +
      • +
        +
      • + UniverseNode(UniverseNode__UniverseNode(java.lang.Object)).JML normal_behavior operation contract.0.proof +
      • +
        +
      • + UniverseNode(UniverseNode__add(java.lang.Object)).JML normal_behavior operation contract.0.proof +
      • +
        +
      • + UniverseNode(UniverseNode__contains(java.lang.Object)).JML accessible clause.0.proof +
      • +
        +
      • + UniverseNode(UniverseNode__contains(java.lang.Object)).JML normal_behavior operation contract.0.proof +
      • +
        +
      • + UniverseNode(UniverseNode__get(int)).JML accessible clause.0.proof +
      • +
        +
      • + UniverseNode(UniverseNode__get(int)).JML normal_behavior operation contract.0.proof +
      • +
        +
      • + UniverseNode(UniverseNode__isSimple()).JML accessible clause.0.proof +
      • +
        +
      • + UniverseNode(UniverseNode__isSimple()).JML normal_behavior operation contract.0.proof +
      • +
        +
      • + UniverseNode(UniverseNode__lemma()).JML model_behavior operation contract.0.proof +
      • +
        +
      • + UniverseNode(UniverseNode__pop()).JML normal_behavior operation contract.0.proof +
      • +
        +
      • + UniverseNode(UniverseNode__set(int,java.lang.Object)).JML normal_behavior operation contract.0.proof +
      • +
        +
      • + UniverseNode(java.lang.Object___inv_()).JML accessible clause.0.proof +
      • +
      +
    +
  • +
+
+ +
+

Contracts with proof inside bundle:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ContractSource FileProof
FileSettings IDStatusStatistics
loadedreplayedstatedependencies
+ class: UniverseNode
+ target: UniverseNode::isSimple
+ type: JML accessible clause 0 + +
UniverseNode.java
UniverseNode(UniverseNode__isSimple()).JML accessible clause.0.proof
#00closed + Nodes: 105
+ Interactive Steps: 0
+ Automode Time: 70 ms +
+ class: UniverseNode
+ target: UniverseNode::UniverseNode
+ type: JML normal_behavior operation contract 0 + +
UniverseNode.java
UniverseNode(UniverseNode__UniverseNode(java.lang.Object)).JML normal_behavior operation contract.0.proof
#00closed + Nodes: 824
+ Interactive Steps: 0
+ Automode Time: 1079 ms +
+ class: UniverseNode
+ target: java.lang.Object::<inv>
+ type: JML accessible clause 0 for java.lang.Object + +
Object.java
UniverseNode(java.lang.Object___inv_()).JML accessible clause.0.proof
#00closed + Nodes: 337
+ Interactive Steps: 1
+ Automode Time: 509 ms +
+ class: UniverseNode
+ target: UniverseNode::add
+ type: JML normal_behavior operation contract 0 + +
UniverseNode.java
UniverseNode(UniverseNode__add(java.lang.Object)).JML normal_behavior operation contract.0.proof
#00closedopen dep. + Nodes: 7819
+ Interactive Steps: 13
+ Automode Time: 36362 ms +
+ class: UniverseNode
+ target: UniverseNode::get
+ type: JML accessible clause 0 + +
UniverseNode.java
UniverseNode(UniverseNode__get(int)).JML accessible clause.0.proof
#00closedopen dep. + Nodes: 9743
+ Interactive Steps: 2
+ Automode Time: 10327 ms +
+ class: UniverseNode
+ target: UniverseNode::contains
+ type: JML normal_behavior operation contract 0 + +
UniverseNode.java
UniverseNode(UniverseNode__contains(java.lang.Object)).JML normal_behavior operation contract.0.proof
#00closedopen dep. + Nodes: 3444
+ Interactive Steps: 15
+ Automode Time: 13691 ms +
+ class: UniverseNode
+ target: UniverseNode::lemma
+ type: JML model_behavior operation contract 0 + +
UniverseNode.java
UniverseNode(UniverseNode__lemma()).JML model_behavior operation contract.0.proof
#00closed + Nodes: 5
+ Interactive Steps: 0
+ Automode Time: 9 ms +
+ class: UniverseNode
+ target: UniverseNode::get
+ type: JML normal_behavior operation contract 0 + +
UniverseNode.java
UniverseNode(UniverseNode__get(int)).JML normal_behavior operation contract.0.proof
#00closedopen dep. + Nodes: 713
+ Interactive Steps: 0
+ Automode Time: 664 ms +
+ class: UniverseNode
+ target: UniverseNode::pop
+ type: JML normal_behavior operation contract 0 + +
UniverseNode.java
UniverseNode(UniverseNode__pop()).JML normal_behavior operation contract.0.proof
#00closedopen dep. + Nodes: 31918
+ Interactive Steps: 85
+ Automode Time: 93897 ms +
+ class: UniverseNode
+ target: UniverseNode::set
+ type: JML normal_behavior operation contract 0 + +
UniverseNode.java
UniverseNode(UniverseNode__set(int,java.lang.Object)).JML normal_behavior operation contract.0.proof
#00closedopen dep. + Nodes: 6636
+ Interactive Steps: 85
+ Automode Time: 62314 ms +
+ class: UniverseNode
+ target: UniverseNode::contains
+ type: JML accessible clause 0 + +
UniverseNode.java
UniverseNode(UniverseNode__contains(java.lang.Object)).JML accessible clause.0.proof
#00closedopen dep. + Nodes: 4221
+ Interactive Steps: 6
+ Automode Time: 3803 ms +
+ class: UniverseNode
+ target: UniverseNode::isSimple
+ type: JML normal_behavior operation contract 0 + +
UniverseNode.java
UniverseNode(UniverseNode__isSimple()).JML normal_behavior operation contract.0.proof
#00closed + Nodes: 61
+ Interactive Steps: 0
+ Automode Time: 53 ms +
+ +

Contracts declared inside bundle without proof:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Contract
class: List
+ target: java.lang.Object::<inv>
+ type: JML accessible clause 0 for java.lang.Object +
class: RecursiveList
+ target: RecursiveList::pop
+ type: JML exceptional_behavior operation contract 0 for List +
class: RecursiveList
+ target: RecursiveList::get
+ type: JML accessible clause 0 for List +
class: List
+ target: List::set
+ type: JML exceptional_behavior operation contract 0 +
class: KeYList
+ target: KeYList::set
+ type: JML exceptional_behavior operation contract 0 for List +
class: RecursiveList
+ target: RecursiveList::contains
+ type: JML normal_behavior operation contract 0 for List +
class: KeYList
+ target: KeYList::pop
+ type: JML exceptional_behavior operation contract 0 for List +
class: RecursiveNode
+ target: RecursiveNode::get
+ type: JML accessible clause 0 +
class: UniverseList
+ target: UniverseList::set
+ type: JML exceptional_behavior operation contract 0 for List +
class: RecursiveNode
+ target: RecursiveNode::set
+ type: JML normal_behavior operation contract 0 +
class: KeYList
+ target: KeYList::add
+ type: JML normal_behavior operation contract 0 for List +
class: RecursiveNode
+ target: RecursiveNode::contains
+ type: JML accessible clause 0 +
class: RecursiveList
+ target: RecursiveList::RecursiveList
+ type: JML normal_behavior operation contract 0 +
class: RecursiveNode
+ target: RecursiveNode::add
+ type: JML normal_behavior operation contract 0 +
class: RecursiveNode
+ target: RecursiveNode::pop
+ type: JML normal_behavior operation contract 0 +
class: List
+ target: List::set
+ type: JML normal_behavior operation contract 0 +
class: RecursiveList
+ target: RecursiveList::add
+ type: JML normal_behavior operation contract 0 for List +
class: UniverseList
+ target: UniverseList::get
+ type: JML exceptional_behavior operation contract 0 for List +
class: UniverseList
+ target: UniverseList::UniverseList
+ type: JML normal_behavior operation contract 0 +
class: UniverseList
+ target: UniverseList::add
+ type: JML normal_behavior operation contract 0 for List +
class: RecursiveList
+ target: RecursiveList::set
+ type: JML normal_behavior operation contract 0 for List +
class: UniverseList
+ target: UniverseList::size
+ type: JML normal_behavior operation contract 0 for List +
class: RecursiveList
+ target: RecursiveList::get
+ type: JML normal_behavior operation contract 0 for List +
class: RecursiveList
+ target: RecursiveList::size
+ type: JML normal_behavior operation contract 0 for List +
class: List
+ target: List::pop
+ type: JML exceptional_behavior operation contract 0 +
class: RecursiveNode
+ target: RecursiveNode::RecursiveNode
+ type: JML normal_behavior operation contract 0 +
class: List
+ target: List::get
+ type: JML exceptional_behavior operation contract 0 +
class: KeYList
+ target: KeYList::KeYList
+ type: JML normal_behavior operation contract 0 +
class: UniverseList
+ target: UniverseList::pop
+ type: JML exceptional_behavior operation contract 0 for List +
class: List
+ target: List::size
+ type: JML accessible clause 0 +
class: RecursiveList
+ target: RecursiveList::get
+ type: JML exceptional_behavior operation contract 0 for List +
class: KeYList
+ target: java.lang.Object::<inv>
+ type: JML accessible clause 0 for java.lang.Object +
class: KeYList
+ target: KeYList::contains
+ type: JML normal_behavior operation contract 0 for List +
class: KeYList
+ target: KeYList::get
+ type: JML exceptional_behavior operation contract 0 for List +
class: UniverseList
+ target: UniverseList::size
+ type: JML accessible clause 0 for List +
class: KeYList
+ target: KeYList::get
+ type: JML accessible clause 0 for List +
class: UniverseList
+ target: java.lang.Object::<inv>
+ type: JML accessible clause 0 for java.lang.Object +
class: KeYList
+ target: KeYList::contains
+ type: JML accessible clause 0 for List +
class: UniverseList
+ target: UniverseList::get
+ type: JML accessible clause 0 for List +
class: List
+ target: List::contains
+ type: JML normal_behavior operation contract 0 +
class: KeYList
+ target: KeYList::newNode
+ type: JML normal_behavior operation contract 0 +
class: KeYList
+ target: KeYList::size
+ type: JML normal_behavior operation contract 0 for List +
class: KeYList
+ target: KeYList::get
+ type: JML normal_behavior operation contract 0 for List +
class: UniverseList
+ target: UniverseList::set
+ type: JML normal_behavior operation contract 0 for List +
class: UniverseList
+ target: UniverseList::contains
+ type: JML normal_behavior operation contract 0 for List +
class: UniverseList
+ target: UniverseList::get
+ type: JML normal_behavior operation contract 0 for List +
class: RecursiveNode
+ target: RecursiveNode::isSimple
+ type: JML normal_behavior operation contract 0 +
class: List
+ target: List::contains
+ type: JML accessible clause 0 +
class: UniverseList
+ target: UniverseList::pop
+ type: JML normal_behavior operation contract 0 for List +
class: List
+ target: List::pop
+ type: JML normal_behavior operation contract 0 +
class: KeYList
+ target: KeYList::set
+ type: JML normal_behavior operation contract 0 for List +
class: UniverseList
+ target: UniverseList::contains
+ type: JML accessible clause 0 for List +
class: KeYList
+ target: KeYList::size
+ type: JML accessible clause 0 for List +
class: RecursiveList
+ target: RecursiveList::set
+ type: JML exceptional_behavior operation contract 0 for List +
class: KeYList
+ target: KeYList::pop
+ type: JML normal_behavior operation contract 0 for List +
class: RecursiveNode
+ target: RecursiveNode::isSimple
+ type: JML accessible clause 0 +
class: List
+ target: List::get
+ type: JML normal_behavior operation contract 0 +
class: RecursiveList
+ target: RecursiveList::size
+ type: JML accessible clause 0 for List +
class: List
+ target: List::add
+ type: JML normal_behavior operation contract 0 +
class: RecursiveNode
+ target: RecursiveNode::get
+ type: JML normal_behavior operation contract 0 +
class: RecursiveList
+ target: java.lang.Object::<inv>
+ type: JML accessible clause 0 for java.lang.Object +
class: List
+ target: List::get
+ type: JML accessible clause 0 +
class: RecursiveNode
+ target: java.lang.Object::<inv>
+ type: JML accessible clause 0 for java.lang.Object +
class: RecursiveList
+ target: RecursiveList::pop
+ type: JML normal_behavior operation contract 0 for List +
class: List
+ target: List::size
+ type: JML normal_behavior operation contract 0 +
class: RecursiveNode
+ target: RecursiveNode::contains
+ type: JML normal_behavior operation contract 0 +
class: RecursiveList
+ target: RecursiveList::contains
+ type: JML accessible clause 0 for List +
+

Settings comparison:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDJavaCardStringsassertionsbigintfinalFieldsfloatRulesinitialisationintRulesintegerSimplificationRulesjavaLoopTreatmentmergeGenerateIsWeakeningGoalmethodExpansionmodelFieldsmoreSeqRulespermissionsprogramRulesreachruntimeExceptionssequencessoundDefaultContractswdCheckswdOperator
#00offonononimmutablestrictfpOnlydisableStaticInitialisationarithmeticSemanticsIgnoringOFfullefficientoffmodularOnlyshowSatisfiabilityoffoffJavaonbanononoffL
+ +
+ +
+

Dependencies between contracts:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ProofSCCDependencies
UniverseNode[UniverseNode::contains(java.lang.Object)].JML accessible clause.0#02 (legal)UniverseNode[UniverseNode::contains(java.lang.Object)].JML normal_behavior operation contract.0
UniverseNode[java.lang.Object::<inv>()].JML accessible clause.0
UniverseNode[UniverseNode::get(int)].JML accessible clause.0#04 (legal)UniverseNode[UniverseNode::get(int)].JML normal_behavior operation contract.0
UniverseNode[java.lang.Object::<inv>()].JML accessible clause.0
UniverseNode[UniverseNode::contains(java.lang.Object)].JML normal_behavior operation contract.0#00 (legal)UniverseNode[UniverseNode::contains(java.lang.Object)].JML normal_behavior operation contract.0
UniverseNode[UniverseNode::isSimple()].JML normal_behavior operation contract.0#05 (legal)
UniverseNode[UniverseNode::pop()].JML normal_behavior operation contract.0#06 (legal)UniverseNode[UniverseNode::isSimple()].JML normal_behavior operation contract.0
UniverseNode[UniverseNode::pop()].JML normal_behavior operation contract.0
UniverseNode[java.lang.Object::<inv>()].JML accessible clause.0
UniverseNode[UniverseNode::set(int,java.lang.Object)].JML normal_behavior operation contract.0#07 (legal)UniverseNode[UniverseNode::set(int,java.lang.Object)].JML normal_behavior operation contract.0
UniverseNode[java.lang.Object::<inv>()].JML accessible clause.0
UniverseNode[UniverseNode::add(java.lang.Object)].JML normal_behavior operation contract.0#09 (legal)UniverseNode[UniverseNode::add(java.lang.Object)].JML normal_behavior operation contract.0
UniverseNode[UniverseNode::UniverseNode(java.lang.Object)].JML normal_behavior operation contract.0
UniverseNode[java.lang.Object::<inv>()].JML accessible clause.0
UniverseNode[UniverseNode::get(int)].JML normal_behavior operation contract.0#03 (legal)UniverseNode[UniverseNode::get(int)].JML normal_behavior operation contract.0
UniverseNode[UniverseNode::UniverseNode(java.lang.Object)].JML normal_behavior operation contract.0#08 (legal)
UniverseNode[UniverseNode::isSimple()].JML accessible clause.0#10 (legal)
UniverseNode[java.lang.Object::<inv>()].JML accessible clause.0#01 (legal)
UniverseNode[UniverseNode::lemma()].JML model_behavior operation contract.0#11 (legal)
+ + + + +
+ + + + From 2f35dcfbc74762b5d3ff28eb92b61a9276655a71 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Sat, 27 Sep 2025 15:58:12 +0200 Subject: [PATCH 12/27] add the proofs --- .../uka/ilkd/key/proof/rules/universeDefs.key | 85 ++- .../de/uka/ilkd/key/proof/rules/various.key | 7 + .../universe/Taclet_closePeerDominate.proof | 101 ++++ .../universe/Taclet_closePeerOwn.proof | 101 ++++ ...aclet_createdRepfpDisjointComplement.proof | 191 +++++++ ..._createdRepfpDisjointComplementRepfp.proof | 169 ++++++ .../universe/Taclet_createdRepfpElement.proof | 101 ++++ .../Taclet_dismissSelectOfDominatedAnon.proof | 108 ++++ ...aclet_dismissSelectOfDominatedAnonEQ.proof | 111 ++++ ..._dismissSelectOfDominatedCreatedAnon.proof | 108 ++++ ...ismissSelectOfDominatedCreatedAnonEQ.proof | 116 ++++ ...aclet_dismissSelectOfDominatedObject.proof | 107 ++++ ...let_dismissSelectOfDominatedObjectEQ.proof | 105 ++++ ...DominatingCreatedRepfpComplementAnon.proof | 113 ++++ ...minatingCreatedRepfpComplementAnonEQ.proof | 115 ++++ ...clet_dismissSelectOfDominatingObject.proof | 104 ++++ ...et_dismissSelectOfDominatingObjectEQ.proof | 110 ++++ ...electOfDominatingRepfpComplementAnon.proof | 112 ++++ ...ectOfDominatingRepfpComplementAnonEQ.proof | 112 ++++ ...lectOfSelfCreatedRepfpComplementAnon.proof | 106 ++++ ...ctOfSelfCreatedRepfpComplementAnonEQ.proof | 116 ++++ ...smissSelectOfSelfRepfpComplementAnon.proof | 106 ++++ ...issSelectOfSelfRepfpComplementAnonEQ.proof | 108 ++++ .../Taclet_domfpDepthEquivDominates.proof | 328 +++++++++++ .../universe/Taclet_domfpElement.proof | 109 ++++ .../Taclet_domfpEqdomfpDepthUnion.proof | 466 ++++++++++++++++ .../universe/Taclet_domfpEquivDominates.proof | 106 ++++ .../universe/Taclet_domfpFinalDepth.proof | 154 ++++++ .../universe/Taclet_dominatesAntisymm.proof | 106 ++++ .../Taclet_dominatesDepth2Dominates.proof | 123 +++++ .../Taclet_dominatesDepthTransitive.proof | 446 +++++++++++++++ .../universe/Taclet_dominatesInverse.proof | 96 ++++ .../Taclet_dominatesLargerDepth.proof | 517 ++++++++++++++++++ .../Taclet_dominatesNegNotEqual.proof | 98 ++++ .../Taclet_dominatesNegTransitive.proof | 97 ++++ .../universe/Taclet_dominatesNotEqual.proof | 98 ++++ .../Taclet_dominatesNotEqualLeft.proof | 98 ++++ .../universe/Taclet_dominatesSameDepth.proof | 263 +++++++++ .../Taclet_dominatesSameNotUndom.proof | 175 ++++++ .../universe/Taclet_dominatesSetAllLocs.proof | 101 ++++ .../Taclet_dominatesSetDisjoint.proof | 182 ++++++ .../universe/Taclet_dominatesSetElement.proof | 109 ++++ .../universe/Taclet_dominatesSetEmpty.proof | 98 ++++ .../Taclet_dominatesSetNotElement.proof | 101 ++++ .../universe/Taclet_dominatesSetSubset.proof | 114 ++++ .../Taclet_dominatesSetTransitive.proof | 111 ++++ .../universe/Taclet_dominatesSetUnion.proof | 164 ++++++ .../Taclet_dominatesSingleDepth.proof | 150 +++++ .../universe/Taclet_dominatesTransitive.proof | 108 ++++ .../universe/Taclet_owns2Dominates.proof | 105 ++++ .../universe/Taclet_owns2DominatesLeft.proof | 101 ++++ .../universe/Taclet_ownsSelf.proof | 99 ++++ .../Taclet_repfpDisjointComplement.proof | 153 ++++++ .../universe/Taclet_repfpElement.proof | 98 ++++ .../universe/Taclet_repfpSubset.proof | 121 ++++ .../universe/Taclet_sameLevelUndom.proof | 220 ++++++++ .../Taclet_selectOfDominatedAnon.proof | 115 ++++ .../Taclet_selectOfDominatedAnonEQ.proof | 102 ++++ .../Taclet_selectOfDominatedStore.proof | 115 ++++ .../Taclet_selectOfDominatedStoreEQ.proof | 101 ++++ ...Taclet_simplifySelectOfDominatedAnon.proof | 110 ++++ ...clet_simplifySelectOfDominatedAnonEQ.proof | 110 ++++ ...simplifySelectOfDominatedCreatedAnon.proof | 109 ++++ ...mplifySelectOfDominatedCreatedAnonEQ.proof | 112 ++++ ...DominatingCreatedRepfpComplementAnon.proof | 128 +++++ ...minatingCreatedRepfpComplementAnonEQ.proof | 130 +++++ ...electOfDominatingRepfpComplementAnon.proof | 115 ++++ ...ectOfDominatingRepfpComplementAnonEQ.proof | 116 ++++ ...lectOfSelfCreatedRepfpComplementAnon.proof | 135 +++++ ...ctOfSelfCreatedRepfpComplementAnonEQ.proof | 136 +++++ ...plifySelectOfSelfRepfpComplementAnon.proof | 107 ++++ ...ifySelectOfSelfRepfpComplementAnonEQ.proof | 112 ++++ .../universe/Taclet_undomRefl.proof | 101 ++++ .../universe/Taclet_undomTransitive.proof | 191 +++++++ .../Taclet_variousDisjointComplement.proof | 119 ++++ .../Taclet_variousDisjointSingleton.proof | 97 ++++ ...clet_variousDisjointSingletonInverse.proof | 97 ++++ .../Taclet_variousDisjointUnion.proof | 100 ++++ .../Taclet_variousDisjointUnionInverse.proof | 102 ++++ .../Taclet_variousSelectOfEmptyAnon.proof | 107 ++++ .../Taclet_variousSelectOfEmptyAnonEQ.proof | 102 ++++ .../Taclet_variousSeqConcatAssociative.proof | 226 ++++++++ .../dependency/NodeIntermediateWalker.java | 32 +- 83 files changed, 11024 insertions(+), 30 deletions(-) create mode 100644 key.core/tacletProofs/universe/Taclet_closePeerDominate.proof create mode 100644 key.core/tacletProofs/universe/Taclet_closePeerOwn.proof create mode 100644 key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplement.proof create mode 100644 key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplementRepfp.proof create mode 100644 key.core/tacletProofs/universe/Taclet_createdRepfpElement.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedCreatedAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedCreatedAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedObject.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedObjectEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingCreatedRepfpComplementAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingCreatedRepfpComplementAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingObject.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingObjectEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingRepfpComplementAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingRepfpComplementAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfCreatedRepfpComplementAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfCreatedRepfpComplementAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfRepfpComplementAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfRepfpComplementAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_domfpDepthEquivDominates.proof create mode 100644 key.core/tacletProofs/universe/Taclet_domfpElement.proof create mode 100644 key.core/tacletProofs/universe/Taclet_domfpEqdomfpDepthUnion.proof create mode 100644 key.core/tacletProofs/universe/Taclet_domfpEquivDominates.proof create mode 100644 key.core/tacletProofs/universe/Taclet_domfpFinalDepth.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesAntisymm.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesDepth2Dominates.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesDepthTransitive.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesInverse.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesLargerDepth.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesNegNotEqual.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesNegTransitive.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesNotEqual.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesNotEqualLeft.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSameDepth.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSameNotUndom.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetAllLocs.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetDisjoint.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetElement.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetEmpty.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetNotElement.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetSubset.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetTransitive.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetUnion.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSingleDepth.proof create mode 100644 key.core/tacletProofs/universe/Taclet_dominatesTransitive.proof create mode 100644 key.core/tacletProofs/universe/Taclet_owns2Dominates.proof create mode 100644 key.core/tacletProofs/universe/Taclet_owns2DominatesLeft.proof create mode 100644 key.core/tacletProofs/universe/Taclet_ownsSelf.proof create mode 100644 key.core/tacletProofs/universe/Taclet_repfpDisjointComplement.proof create mode 100644 key.core/tacletProofs/universe/Taclet_repfpElement.proof create mode 100644 key.core/tacletProofs/universe/Taclet_repfpSubset.proof create mode 100644 key.core/tacletProofs/universe/Taclet_sameLevelUndom.proof create mode 100644 key.core/tacletProofs/universe/Taclet_selectOfDominatedAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_selectOfDominatedAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_selectOfDominatedStore.proof create mode 100644 key.core/tacletProofs/universe/Taclet_selectOfDominatedStoreEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedCreatedAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedCreatedAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingCreatedRepfpComplementAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingCreatedRepfpComplementAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingRepfpComplementAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingRepfpComplementAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfCreatedRepfpComplementAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfCreatedRepfpComplementAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfRepfpComplementAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfRepfpComplementAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_undomRefl.proof create mode 100644 key.core/tacletProofs/universe/Taclet_undomTransitive.proof create mode 100644 key.core/tacletProofs/universe/Taclet_variousDisjointComplement.proof create mode 100644 key.core/tacletProofs/universe/Taclet_variousDisjointSingleton.proof create mode 100644 key.core/tacletProofs/universe/Taclet_variousDisjointSingletonInverse.proof create mode 100644 key.core/tacletProofs/universe/Taclet_variousDisjointUnion.proof create mode 100644 key.core/tacletProofs/universe/Taclet_variousDisjointUnionInverse.proof create mode 100644 key.core/tacletProofs/universe/Taclet_variousSelectOfEmptyAnon.proof create mode 100644 key.core/tacletProofs/universe/Taclet_variousSelectOfEmptyAnonEQ.proof create mode 100644 key.core/tacletProofs/universe/Taclet_variousSeqConcatAssociative.proof diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key index e576adef58e..e0842aeb951 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key @@ -35,19 +35,36 @@ variableDeclarationPeer { \schemaVar \formula post; - \schemaVar \program Variable #v, #v0; - \schemaVar \program Type #t, #t0; + \schemaVar \program Variable #v0; + \schemaVar \program Type #t0; \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - \schemaVar \program ProgramMethod #pm; - \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Peer #t0 #v0; ...}\endmodality (post)) + \find(\modality{#allmodal}{.. @universe.qual.Peer #t0 #v0; ...}\endmodality (post)) \sameUpdateLevel \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) \addprogvars(#v0) \heuristics(simplify_prog, simplify_prog_subset) - //\displayname "variableDeclaration" + \displayname "variableDeclaration" + }; + + variableDeclarationPeerAssignVariable { + \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + \schemaVar \formula post; + \schemaVar \program Variable #v0, #v; + \schemaVar \program Type #t1, #t; + \schemaVar \program ProgramMethod #pm; + \schemaVar \program VariableInitializer #vi; + + \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Peer #t1 #v0 = #vi; ...}\endmodality (post)) + \sameUpdateLevel + \varcond(\isLocalVariable(#vi)) + \replacewith(\modality{#allmodal}{.. @universe.qual.Peer #t1 #v0; #v0 = #vi; ...}\endmodality (post)) + \add(#vi != null -> owner(#vi) = owner(#v) ==>) + + \heuristics(simplify_prog, simplify_prog_subset) + \displayname "variableDeclaration" }; variableDeclarationPeerAssign { @@ -58,6 +75,7 @@ \schemaVar \program VariableInitializer #vi; \find(\modality{#allmodal}{.. @universe.qual.Peer #t #v0 = #vi; ...}\endmodality (post)) + \varcond(\not \isLocalVariable(#vi)) \replacewith(\modality{#allmodal}{.. @universe.qual.Peer #t #v0; #v0 = #vi; ...}\endmodality (post)) \heuristics(simplify_prog, simplify_prog_subset) @@ -66,29 +84,48 @@ variableDeclarationRep { \schemaVar \formula post; - \schemaVar \program Variable #v, #v0; - \schemaVar \program Type #t, #t0; + \schemaVar \program Variable #v0; + \schemaVar \program Type #t0; \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - \schemaVar \program ProgramMethod #pm; - - \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Rep #t0 #v0; ...}\endmodality (post)) - + + \find(\modality{#allmodal}{.. @universe.qual.Rep #t0 #v0; ...}\endmodality (post)) + \sameUpdateLevel \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) \addprogvars(#v0) + + \heuristics(simplify_prog, simplify_prog_subset) + \displayname "variableDeclaration" + }; + variableDeclarationRepAssignVariable { + \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + \schemaVar \formula post; + \schemaVar \program Variable #v0, #v; + \schemaVar \program Type #t1, #t; + \schemaVar \program ProgramMethod #pm; + \schemaVar \program VariableInitializer #vi; + + \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Rep #t1 #v0 = #vi; ...}\endmodality (post)) + \sameUpdateLevel + \varcond(\isLocalVariable(#vi)) + \replacewith(\modality{#allmodal}{.. @universe.qual.Rep #t1 #v0; #v0 = #vi; ...}\endmodality (post)) + \add(#vi != null -> owner(#vi) = #v ==>) + \heuristics(simplify_prog, simplify_prog_subset) - //\displayname "variableDeclaration" + \displayname "variableDeclaration" }; variableDeclarationRepAssign { \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; \schemaVar \formula post; - \schemaVar \program Variable #v0; + \schemaVar \program Variable #v0, #v; \schemaVar \program Type #t; + \schemaVar \program ProgramMethod #pm; \schemaVar \program VariableInitializer #vi; \find(\modality{#allmodal}{.. @universe.qual.Rep #t #v0 = #vi; ...}\endmodality (post)) + \varcond(\not \isLocalVariable(#vi)) \replacewith(\modality{#allmodal}{.. @universe.qual.Rep #t #v0; #v0 = #vi; ...}\endmodality (post)) \heuristics(simplify_prog, simplify_prog_subset) @@ -96,48 +133,46 @@ }; instanceCreationAssignmentPeer { - \schemaVar \modalOperator {diamond} #diamond; \schemaVar \modalOperator {diamond, box} #normal; \schemaVar \formula post; \schemaVar \program ProgramMethod #pm; \schemaVar \program Type #t; \schemaVar \program SimpleInstanceCreation #n; \schemaVar \program LeftHandSide #lhs; - \schemaVar \program Variable #v0, #v; + \schemaVar \program Variable #v0, #v, #v1; \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) \sameUpdateLevel - \varcond(\newTypeOf(#v0, #lhs), \hasAnnotation(#n, Peer)) - + \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Peer)) \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); #constructor-call(#v0, #n); #post-work(#v0); - #lhs = #v0; - ...}\endmodality (post | !(#v0 != null -> owner(#v0) = owner(#v)))) + @universe.qual.Peer #typeof(#v0) #v1 = #v0; + #lhs = #v1; + ...}\endmodality (post)) \heuristics(method_expand) }; instanceCreationAssignmentRep { - \schemaVar \modalOperator {diamond} #diamond; \schemaVar \modalOperator {diamond, box} #normal; \schemaVar \formula post; \schemaVar \program ProgramMethod #pm; \schemaVar \program Type #t; \schemaVar \program SimpleInstanceCreation #n; \schemaVar \program LeftHandSide #lhs; - \schemaVar \program Variable #v0, #v; + \schemaVar \program Variable #v0, #v, #v1; \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) \sameUpdateLevel - \varcond(\newTypeOf(#v0, #lhs), \hasAnnotation(#n, Rep)) - + \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Rep)) \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); #constructor-call(#v0, #n); #post-work(#v0); - #lhs = #v0; - ...}\endmodality (post | !(#v0 != null -> owner(#v0) = #v))) + @universe.qual.Rep #typeof(#v0) #v1 = #v0; + #lhs = #v1; + ...}\endmodality (post)) \heuristics(method_expand) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key index d31da5d55d0..f0e020a7fef 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key @@ -1,6 +1,7 @@ \rules(programRules:Java) { + \lemma variousReferencedObjectIsCreated { \schemaVar \term Heap h; \schemaVar \term Object o; @@ -18,6 +19,7 @@ \heuristics(concrete) }; + \lemma variousSelectOfEmptyAnonEQ { \schemaVar \term Heap h, h2, EQ; \schemaVar \term Object o; @@ -35,6 +37,7 @@ \heuristics(simplify) }; + \lemma variousSelectOfEmptyAnon { \schemaVar \term Heap h, h2; \schemaVar \term Object o; @@ -52,6 +55,7 @@ \heuristics(simplify) }; + \lemma variousDisjointUnion { \schemaVar \term LocSet x, y, z; @@ -62,6 +66,7 @@ \heuristics(simplify) }; + \lemma variousDisjointUnionInverse { \schemaVar \term LocSet x, y, z; @@ -73,6 +78,7 @@ \displayname "variousDisjointUnion" }; + \lemma variousDisjointSingleton { \schemaVar \term Object x; \schemaVar \term Field f; @@ -82,6 +88,7 @@ \replacewith(!elementOf(x, f, s)) }; + \lemma variousDisjointSingletonInverse { \schemaVar \term Object x; \schemaVar \term Field f; diff --git a/key.core/tacletProofs/universe/Taclet_closePeerDominate.proof b/key.core/tacletProofs/universe/Taclet_closePeerDominate.proof new file mode 100644 index 00000000000..833a8ef8f52 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_closePeerDominate.proof @@ -0,0 +1,101 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "closePeerDominate", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "3") + +(branch "dummy ID" +(rule "orRight" (formula "1") (newnames "f_x,f_y")) +(rule "notRight" (formula "1")) +(rule "notRight" (formula "2")) +(rule "dominatesTransitive" (formula "1") (ifseqformula "2") (userinteraction)) +(rule "dominatesSelf" (formula "1") (userinteraction)) +(rule "closeFalse" (formula "1") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_closePeerOwn.proof b/key.core/tacletProofs/universe/Taclet_closePeerOwn.proof new file mode 100644 index 00000000000..9ad1e6ae2ed --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_closePeerOwn.proof @@ -0,0 +1,101 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "closePeerOwn", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "4") + +(branch "dummy ID" +(rule "orRight" (formula "1") (newnames "f_x,f_y")) +(rule "notRight" (formula "1")) +(rule "notRight" (formula "2")) +(rule "owns2Dominates" (formula "1") (userinteraction)) +(rule "owns2Dominates" (formula "3") (userinteraction)) +(rule "closePeerDominate" (formula "3") (ifseqformula "1") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplement.proof b/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplement.proof new file mode 100644 index 00000000000..2ae6e0ebb23 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplement.proof @@ -0,0 +1,191 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 9000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "createdRepfpDisjointComplement" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "530") + +(branch "dummy ID" +(rule "impRight" (formula "1")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "disjointToElementOf" (formula "3") (term "0") (inst "ov=ov") (inst "fv=fv") (userinteraction)) +(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,0") (userinteraction)) +(rule "createdRepfpDef" (formula "3") (term "2,0,1,0,0,0,0,0") (inst "y=y") (userinteraction)) +(rule "createdRepfpDef" (formula "3") (term "2,0,1,0,0,0") (inst "y=y") (userinteraction)) +(rule "elementOfIntersect" (formula "3") (term "0,1,0,0,0") (userinteraction)) +(rule "elementOfInfiniteUnion" (formula "3") (term "0,0,1,0,0,0") (userinteraction)) +(rule "elementOfIntersect" (formula "3") (term "0,1,0,0,0,0,0") (userinteraction)) +(rule "elementOfInfiniteUnion" (formula "3") (term "0,0,1,0,0,0,0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) +(rule "repfpElement" (formula "3") (term "1,0,0,0,0") (userinteraction)) +(rule "repfpElement" (formula "3") (term "1,0,1,0,0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) +(rule "equiv_right" (formula "3") (userinteraction)) +(branch "Case '->'" + (rule "orRight" (formula "4")) + (rule "eqSymm" (formula "4")) + (rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=java_lang_Object_created__0")) + (rule "applyEq" (formula "3") (term "1") (ifseqformula "4")) + (rule "pullOutSelect" (formula "2") (term "0") (inst "selectSK=java_lang_Object_created__1")) + (rule "applyEq" (formula "2") (term "1") (ifseqformula "3")) + (rule "hideAuxiliaryEqConcrete" (formula "5")) + (rule "hideAuxiliaryEqConcrete" (formula "3")) + (rule "nnf_notAnd" (formula "1") (term "1,0")) + (rule "nnf_notOr" (formula "1") (term "1,1,0")) + (rule "cnf_rightDist" (formula "1") (term "1,0")) + (rule "commute_or" (formula "1") (term "0,1,0")) + (rule "cnf_rightDist" (formula "1") (term "0")) + (rule "distr_forallAnd" (formula "1")) + (rule "andLeft" (formula "1")) + (rule "commute_or" (formula "1") (term "0")) + (rule "commute_or" (formula "2") (term "0,0")) + (rule "cnf_rightDist" (formula "1") (term "0")) + (builtin "One Step Simplification" (formula "1")) + (rule "shift_paren_or" (formula "1") (term "0")) + (rule "commute_or_2" (formula "1") (term "0,0")) + (rule "cnf_rightDist" (formula "2") (term "0")) + (rule "distr_forallAnd" (formula "2")) + (rule "andLeft" (formula "2")) + (rule "commute_or_2" (formula "2") (term "0")) + (builtin "One Step Simplification" (formula "2")) + (rule "true_left" (formula "2")) + (rule "shift_paren_or" (formula "2") (term "0")) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "6")) (ifInst "" (formula "5")) (ifInst "" (formula "4"))) + (rule "closeFalse" (formula "2")) +) +(branch "Case '<-'" + (rule "allRight" (formula "4") (inst "sk=ov_0")) + (rule "orRight" (formula "4")) + (rule "notRight" (formula "5")) + (rule "andLeft" (formula "1")) + (rule "eqSymm" (formula "3") (term "0")) + (rule "replace_known_left" (formula "6") (term "0") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "6")) + (rule "orRight" (formula "6")) + (rule "pullOutSelect" (formula "4") (term "0") (inst "selectSK=java_lang_Object_created__0")) + (rule "applyEqRigid" (formula "4") (term "1") (ifseqformula "5")) + (rule "pullOutSelect" (formula "6") (term "0") (inst "selectSK=java_lang_Object_created__1")) + (rule "applyEqRigid" (formula "6") (term "1") (ifseqformula "7")) + (rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__2")) + (rule "applyEqRigid" (formula "1") (term "1") (ifseqformula "2")) + (rule "hideAuxiliaryEqConcrete" (formula "6")) + (rule "hideAuxiliaryEqConcrete" (formula "7")) + (rule "hideAuxiliaryEqConcrete" (formula "2")) + (rule "commute_or" (formula "3")) + (rule "cut_direct" (formula "2") (term "1")) + (branch "CUT: ov_0 = f_y TRUE" + (builtin "One Step Simplification" (formula "3")) + (rule "true_left" (formula "3")) + (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "2")) + (rule "applyEq" (formula "5") (term "1") (ifseqformula "1")) + (rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "2")) + (rule "applyEqRigid" (formula "6") (term "0") (ifseqformula "1")) + (rule "close" (formula "6") (ifseqformula "2")) + ) + (branch "CUT: ov_0 = f_y FALSE" + (builtin "One Step Simplification" (formula "2")) + (rule "dominatesNotEqualLeft" (formula "6") (ifseqformula "2")) + (rule "false_right" (formula "6")) + (rule "cut_direct" (formula "3") (term "1")) + (branch "CUT: f_y = f_x TRUE" + (builtin "One Step Simplification" (formula "4")) + (rule "true_left" (formula "4")) + (rule "applyEqRigid" (formula "5") (term "1,0") (ifseqformula "3")) + (rule "applyEq" (formula "2") (term "0") (ifseqformula "3")) + (rule "close" (formula "5") (ifseqformula "2")) + ) + (branch "CUT: f_y = f_x FALSE" + (builtin "One Step Simplification" (formula "3")) + (rule "dominatesNegTransitive" (formula "2") (ifseqformula "3") (ifseqformula "7")) + (rule "closeFalse" (formula "2")) + ) + ) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplementRepfp.proof b/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplementRepfp.proof new file mode 100644 index 00000000000..d0dc47abee5 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplementRepfp.proof @@ -0,0 +1,169 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 9000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "createdRepfpDisjointComplement" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "203") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_h,f_y")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "commuteDisjoint" (formula "2") (term "0") (userinteraction)) +(rule "disjointToElementOf" (formula "2") (term "0") (inst "ov=ov") (inst "fv=fv") (userinteraction)) +(rule "elementOfSetMinus" (formula "2") (term "0,1,0,0,0") (userinteraction)) +(rule "repfpElement" (formula "2") (term "0,1,0,1,0,0,0") (userinteraction)) +(rule "createdRepfpDef" (formula "2") (term "2,0,0,0,0,0") (inst "y=y") (userinteraction)) +(rule "elementOfIntersect" (formula "2") (term "0,0,0,0,0") (userinteraction)) +(rule "elementOfInfiniteUnion" (formula "2") (term "0,0,0,0,0,0") (userinteraction)) +(rule "repfpElement" (formula "2") (term "1,0,0,0,0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (userinteraction)) +(rule "equiv_right" (formula "2") (userinteraction)) +(branch "Case '->'" + (rule "orRight" (formula "3") (userinteraction)) + (rule "eqSymm" (formula "3")) + (rule "pullOutSelect" (formula "2") (term "0") (inst "selectSK=java_lang_Object_created__0")) + (rule "applyEqRigid" (formula "2") (term "1") (ifseqformula "3")) + (rule "hideAuxiliaryEqConcrete" (formula "3")) + (rule "nnf_notAnd" (formula "1") (term "0,0")) + (rule "nnf_notOr" (formula "1") (term "1,0,0")) + (rule "commute_or_2" (formula "1") (term "0")) + (rule "commute_or" (formula "1") (term "0,0")) + (rule "cnf_rightDist" (formula "1") (term "0")) + (rule "distr_forallAnd" (formula "1")) + (rule "andLeft" (formula "1")) + (rule "commute_or" (formula "2") (term "0")) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "5")) (ifInst "" (formula "4")) (ifInst "" (formula "3"))) + (rule "closeFalse" (formula "2")) +) +(branch "Case '<-'" + (rule "allRight" (formula "3") (inst "sk=ov_0")) + (rule "orRight" (formula "3")) + (rule "notRight" (formula "3")) + (rule "orRight" (formula "4")) + (rule "andLeft" (formula "1")) + (rule "eqSymm" (formula "3") (term "0")) + (rule "pullOutSelect" (formula "4") (term "0") (inst "selectSK=java_lang_Object_created__0")) + (rule "applyEq" (formula "4") (term "1") (ifseqformula "5")) + (rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__1")) + (rule "applyEqRigid" (formula "1") (term "1") (ifseqformula "2")) + (rule "hideAuxiliaryEqConcrete" (formula "6")) + (rule "hideAuxiliaryEqConcrete" (formula "2")) + (rule "commute_or" (formula "3")) + (rule "cut_direct" (formula "2") (term "1")) + (branch "CUT: ov_0 = f_y TRUE" + (builtin "One Step Simplification" (formula "3")) + (rule "true_left" (formula "3")) + (rule "applyEq" (formula "6") (term "0") (ifseqformula "2")) + (rule "replace_known_right" (formula "3") (term "1") (ifseqformula "6")) + (builtin "One Step Simplification" (formula "3")) + (rule "dominatesNotEqualLeft" (formula "6") (ifseqformula "3")) + (rule "false_right" (formula "6")) + (rule "applyEqRigid" (formula "5") (term "1") (ifseqformula "2")) + (rule "close" (formula "5") (ifseqformula "3")) + ) + (branch "CUT: ov_0 = f_y FALSE" + (builtin "One Step Simplification" (formula "2")) + (rule "dominatesNotEqualLeft" (formula "5") (ifseqformula "2")) + (rule "false_right" (formula "5")) + (rule "cut_direct" (formula "3") (term "1")) + (branch "CUT: f_y = f_x TRUE" + (builtin "One Step Simplification" (formula "4")) + (rule "true_left" (formula "4")) + (rule "applyEq" (formula "2") (term "0") (ifseqformula "3")) + (rule "close" (formula "5") (ifseqformula "2")) + ) + (branch "CUT: f_y = f_x FALSE" + (builtin "One Step Simplification" (formula "3")) + (rule "dominatesNotEqualLeft" (formula "5") (ifseqformula "3")) + (rule "false_right" (formula "5")) + (rule "dominatesTransitive" (formula "2") (ifseqformula "3")) + (rule "close" (formula "6") (ifseqformula "2")) + ) + ) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_createdRepfpElement.proof b/key.core/tacletProofs/universe/Taclet_createdRepfpElement.proof new file mode 100644 index 00000000000..8abd6e06690 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_createdRepfpElement.proof @@ -0,0 +1,101 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "createdRepfpElement" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "0") + +(branch "dummy ID" +(rule "createdRepfpDef" (formula "1") (term "2,0") (newnames "f_x,f_f,f_h,f_y") (inst "y=y") (userinteraction)) +(rule "elementOfIntersect" (formula "1") (term "0") (userinteraction)) +(rule "elementOfInfiniteUnion" (formula "1") (term "0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "repfpElement" (formula "1") (term "1,0") (userinteraction)) +(rule "commute_and" (formula "1") (term "0") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "closeTrue" (formula "1") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedAnon.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedAnon.proof new file mode 100644 index 00000000000..62603640d60 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedAnon.proof @@ -0,0 +1,108 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatedAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "49") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_u,f_h2,f_o,f_f")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnon" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) +(rule "eqSymm" (formula "4")) +(rule "repfpElement" (formula "1") (term "0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0")) +(rule "dominatesNotEqualLeft" (formula "1") (term "1,0,0,0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "1")) +(rule "dominatesInverse" (formula "1") (term "0,0,0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "4"))) +(rule "closeFalse" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedAnonEQ.proof new file mode 100644 index 00000000000..c88b5d2db34 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedAnonEQ.proof @@ -0,0 +1,111 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatedAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "35") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o,f_f,f_h,f_u,f_h2")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "eqSymm" (formula "4")) +(rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__0")) +(rule "applyEq" (formula "1") (term "1") (ifseqformula "2")) +(rule "pullOutSelect" (formula "5") (term "1") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) +(rule "repfpElement" (formula "1") (term "0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0")) +(rule "dominatesInverse" (formula "1") (term "0,0,0,0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "1")) +(rule "dominatesNotEqualLeft" (formula "1") (term "0,0,0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) +(rule "closeFalse" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedCreatedAnon.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedCreatedAnon.proof new file mode 100644 index 00000000000..f2f14588147 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedCreatedAnon.proof @@ -0,0 +1,108 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatedCreatedAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "92") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_h3,f_u,f_h2,f_o,f_f")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnon" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) +(rule "eqSymm" (formula "4")) +(rule "createdRepfpElement" (formula "1") (term "0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0")) +(rule "dominatesNotEqualLeft" (formula "1") (term "1,0,0,0,0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "1")) +(rule "dominatesInverse" (formula "1") (term "0,0,0,0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "4"))) +(rule "closeFalse" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedCreatedAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedCreatedAnonEQ.proof new file mode 100644 index 00000000000..9e82a95a862 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedCreatedAnonEQ.proof @@ -0,0 +1,116 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatedCreatedAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "46") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o,f_f,f_h,f_h3,f_u,f_h2")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "eqSymm" (formula "4")) +(rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__0")) +(rule "applyEq" (formula "1") (term "1") (ifseqformula "2")) +(rule "pullOutSelect" (formula "5") (term "0") (inst "selectSK=f_f_0")) +(rule "eqSymm" (formula "6")) +(rule "pullOutSelect" (formula "6") (term "0") (inst "selectSK=f_f_1")) +(rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3"))) +(rule "applyEq" (formula "1") (term "2,0") (ifseqformula "2")) +(rule "createdRepfpElement" (formula "1") (term "0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0")) +(rule "dominatesNotEqualLeft" (formula "1") (term "1,0,0,0,0") (ifseqformula "6")) + (builtin "One Step Simplification" (formula "1")) +(rule "dominatesInverse" (formula "1") (term "0,0,0,0") (ifseqformula "6")) + (builtin "One Step Simplification" (formula "1")) +(rule "applyEqReverse" (formula "7") (term "0") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "7")) +(rule "closeTrue" (formula "7")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedObject.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedObject.proof new file mode 100644 index 00000000000..cb1f0087067 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedObject.proof @@ -0,0 +1,107 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatedObject" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "12") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_o,f_f1,f_x,f_u,f_f2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "pullOutSelect" (formula "2") (term "1") (inst "selectSK=f_f2_0")) +(rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=f_f2_1")) +(rule "simplifySelectOfStore" (formula "1")) +(rule "applyEq" (formula "1") (term "2,0") (ifseqformula "2")) +(rule "eqSymm" (formula "1") (term "1,0,0,0")) +(rule "eqSymm" (formula "1") (term "0,0,0,0")) +(rule "dominatesNotEqualLeft" (formula "1") (term "0,0,0,0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "1")) +(rule "applyEqReverse" (formula "4") (term "0") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "4")) +(rule "closeTrue" (formula "4")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedObjectEQ.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedObjectEQ.proof new file mode 100644 index 00000000000..61408e265d7 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatedObjectEQ.proof @@ -0,0 +1,105 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatedObjectEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "11") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_u,f_f2,f_h,f_o,f_f1,f_x")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "eqSymm" (formula "3")) +(rule "pullOutSelect" (formula "3") (term "1") (inst "selectSK=f_f2_0")) +(rule "simplifySelectOfStoreEQ" (formula "1") (ifseqformula "2")) +(rule "eqSymm" (formula "1") (term "0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0")) +(rule "dominatesNotEqualLeft" (formula "1") (term "0,0,0,0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "4"))) +(rule "closeFalse" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingCreatedRepfpComplementAnon.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingCreatedRepfpComplementAnon.proof new file mode 100644 index 00000000000..d7db4c55198 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingCreatedRepfpComplementAnon.proof @@ -0,0 +1,113 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatingCreatedRepfpComplementAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "45") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_h3,f_u,f_h2,f_o,f_f")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "dominatesSameNotUndom" (formula "3") (ifseqformula "3")) +(rule "pullOutSelect" (formula "5") (term "1") (inst "selectSK=f_f_0")) +(rule "pullOutSelect" (formula "6") (term "0") (inst "selectSK=f_f_1")) +(rule "simplifySelectOfAnon" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3"))) +(rule "applyEq" (formula "1") (term "2,0") (ifseqformula "2")) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "createdRepfpElement" (formula "1") (term "0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0,0")) +(rule "replace_known_left" (formula "1") (term "1,0,0,0,0") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) +(rule "applyEqReverse" (formula "7") (term "0") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "7")) +(rule "closeTrue" (formula "7")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingCreatedRepfpComplementAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingCreatedRepfpComplementAnonEQ.proof new file mode 100644 index 00000000000..628c7f3453f --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingCreatedRepfpComplementAnonEQ.proof @@ -0,0 +1,115 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatingCreatedRepfpComplementAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "99") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o,f_f,f_h,f_h3,f_u,f_h2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "eqSymm" (formula "5")) +(rule "dominatesSameNotUndom" (formula "3") (ifseqformula "3")) +(rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__0")) +(rule "applyEqRigid" (formula "1") (term "1") (ifseqformula "2")) +(rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=java_lang_Object_created__1")) +(rule "applyEq" (formula "3") (term "1") (ifseqformula "4")) +(rule "pullOutSelect" (formula "8") (term "1") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "7")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "createdRepfpElement" (formula "1") (term "0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0,0")) +(rule "replace_known_left" (formula "1") (term "1,0,0,0,0") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6")) (ifInst "" (formula "9"))) +(rule "closeFalse" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingObject.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingObject.proof new file mode 100644 index 00000000000..b145eaaaf84 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingObject.proof @@ -0,0 +1,104 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatingObject" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "11") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_o,f_f1,f_x,f_u,f_f2")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "pullOutSelect" (formula "2") (term "0") (inst "selectSK=f_f2_0")) +(rule "simplifySelectOfStore" (formula "1")) +(rule "eqSymm" (formula "3")) +(rule "eqSymm" (formula "1") (term "0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0")) +(rule "dominatesNotEqual" (formula "1") (term "0,0,0,0") (ifseqformula "2")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3"))) +(rule "closeFalse" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingObjectEQ.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingObjectEQ.proof new file mode 100644 index 00000000000..75d7f05bcb8 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingObjectEQ.proof @@ -0,0 +1,110 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatingObjectEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "13") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_u,f_f2,f_h,f_o,f_f1,f_x")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "eqSymm" (formula "3")) +(rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=f_f2_0")) +(rule "eqSymm" (formula "4")) +(rule "pullOutSelect" (formula "4") (term "0") (inst "selectSK=f_f2_1")) +(rule "simplifySelectOfStoreEQ" (formula "1") (ifseqformula "3")) +(rule "applyEq" (formula "1") (term "2,0") (ifseqformula "2")) +(rule "eqSymm" (formula "1") (term "1,0,0,0")) +(rule "eqSymm" (formula "1") (term "0,0,0,0")) +(rule "dominatesNotEqual" (formula "1") (term "0,0,0,0") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "1")) +(rule "applyEqReverse" (formula "5") (term "0") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "5")) +(rule "closeTrue" (formula "5")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingRepfpComplementAnon.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingRepfpComplementAnon.proof new file mode 100644 index 00000000000..243001ac856 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingRepfpComplementAnon.proof @@ -0,0 +1,112 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatingRepfpComplementAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "36") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_u,f_h2,f_o,f_f")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "dominatesSameNotUndom" (formula "2") (ifseqformula "2")) +(rule "pullOutSelect" (formula "4") (term "1") (inst "selectSK=f_f_0")) +(rule "pullOutSelect" (formula "5") (term "0") (inst "selectSK=f_f_1")) +(rule "simplifySelectOfAnon" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3"))) +(rule "applyEq" (formula "1") (term "2,0") (ifseqformula "2")) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "repfpElement" (formula "1") (term "0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0")) +(rule "replace_known_left" (formula "1") (term "0,0,0,0,0") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "1")) +(rule "applyEqReverse" (formula "6") (term "0") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "6")) +(rule "closeTrue" (formula "6")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingRepfpComplementAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingRepfpComplementAnonEQ.proof new file mode 100644 index 00000000000..ead572f5e3c --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfDominatingRepfpComplementAnonEQ.proof @@ -0,0 +1,112 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfDominatingRepfpComplementAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "48") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o,f_f,f_h,f_u,f_h2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "eqSymm" (formula "4")) +(rule "dominatesSameNotUndom" (formula "2") (ifseqformula "2")) +(rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__0")) +(rule "applyEqRigid" (formula "1") (term "1") (ifseqformula "2")) +(rule "pullOutSelect" (formula "6") (term "1") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "repfpElement" (formula "1") (term "0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0")) +(rule "replace_known_left" (formula "1") (term "0,0,0,0,0") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) +(rule "closeFalse" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfCreatedRepfpComplementAnon.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfCreatedRepfpComplementAnon.proof new file mode 100644 index 00000000000..bb1b59a4eb6 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfCreatedRepfpComplementAnon.proof @@ -0,0 +1,106 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfSelfCreatedRepfpComplementAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "27") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_h3,f_o,f_h2,f_f")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnon" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) +(rule "eqSymm" (formula "4")) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "createdRepfpElement" (formula "1") (term "0,0,0,0")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3")) (ifInst "" (formula "4"))) +(rule "closeFalse" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfCreatedRepfpComplementAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfCreatedRepfpComplementAnonEQ.proof new file mode 100644 index 00000000000..1b6f2b95192 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfCreatedRepfpComplementAnonEQ.proof @@ -0,0 +1,116 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfSelfCreatedRepfpComplementAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "60") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o,f_f,f_h,f_h3,f_h2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "eqSymm" (formula "4")) +(rule "pullOutSelect" (formula "2") (term "0") (inst "selectSK=java_lang_Object_created__0")) +(rule "applyEq" (formula "2") (term "1") (ifseqformula "3")) +(rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__1")) +(rule "applyEqRigid" (formula "1") (term "1") (ifseqformula "2")) +(rule "pullOutSelect" (formula "6") (term "0") (inst "selectSK=f_f_0")) +(rule "eqSymm" (formula "7")) +(rule "pullOutSelect" (formula "7") (term "0") (inst "selectSK=f_f_1")) +(rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "7")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3"))) +(rule "applyEq" (formula "1") (term "2,0") (ifseqformula "2")) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "createdRepfpElement" (formula "1") (term "0,0,0,0")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) +(rule "applyEqReverse" (formula "8") (term "0") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "8")) +(rule "closeTrue" (formula "8")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfRepfpComplementAnon.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfRepfpComplementAnon.proof new file mode 100644 index 00000000000..4617a3cd056 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfRepfpComplementAnon.proof @@ -0,0 +1,106 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfSelfRepfpComplementAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) +(keyLog "1" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "26") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_o,f_h2,f_f")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "pullOutSelect" (formula "2") (term "0") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnon" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) +(rule "eqSymm" (formula "3")) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "repfpElement" (formula "1") (term "0,0,0,0")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3"))) +(rule "closeFalse" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfRepfpComplementAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfRepfpComplementAnonEQ.proof new file mode 100644 index 00000000000..3bb902ccabd --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dismissSelectOfSelfRepfpComplementAnonEQ.proof @@ -0,0 +1,108 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dismissSelectOfSelfRepfpComplementAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "37") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o,f_f,f_h,f_h2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "eqSymm" (formula "3")) +(rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__0")) +(rule "applyEq" (formula "1") (term "1") (ifseqformula "2")) +(rule "pullOutSelect" (formula "4") (term "1") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "2"))) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "repfpElement" (formula "1") (term "0,0,0,0")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) +(rule "closeFalse" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_domfpDepthEquivDominates.proof b/key.core/tacletProofs/universe/Taclet_domfpDepthEquivDominates.proof new file mode 100644 index 00000000000..f0fe15abef7 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_domfpDepthEquivDominates.proof @@ -0,0 +1,328 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "domfpDepthEquivDominates" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "4736") + +(branch "dummy ID" +(rule "int_induction" (newnames "f_x,f_n,v_y") (inst "b=(\\forall java.lang.Object o; + ( domfpDepth(o, f_n) + = infiniteUnion{java.lang.Object v_y;}(\\if (dominatesDepth(o, + v_y, + f_n)) + \\then (allFields(v_y)) + \\else (empty)))<>)<>") (inst "nv=f_n") (userinteraction)) +(branch "Base Case" + (rule "hide_right" (formula "2") (userinteraction)) + (rule "allRight" (formula "1") (inst "sk=o_0") (userinteraction)) + (rule "equalityToElementOfRight" (formula "1") (inst "ov=ov") (inst "fv=fv") (userinteraction)) + (rule "swapQuantifiersAll" (formula "1") (userinteraction)) + (rule "allRight" (formula "1") (inst "sk=fv_0") (userinteraction)) + (rule "allRight" (formula "1") (inst "sk=ov_0") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "1") (term "1") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "dominatesDepthDef" (formula "1") (term "1") (inst "ov=ov") (userinteraction)) + (rule "domfpDepthDef" (formula "1") (term "2,0") (inst "y=y") (userinteraction)) + (rule "leq_literals" (formula "1") (term "0,2,0")) + (builtin "One Step Simplification" (formula "1")) + (rule "sub_literals" (formula "1") (term "2,1,0,2,2,0")) + (rule "leq_literals" (formula "1") (term "0,0")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeTrue" (formula "1")) +) +(branch "Step Case" + (rule "allRight" (formula "1") (inst "sk=f_n_0") (userinteraction)) + (rule "impRight" (formula "1")) + (rule "andLeft" (formula "1")) + (rule "allRight" (formula "3") (inst "sk=o_0") (userinteraction)) + (rule "hide_right" (formula "4") (userinteraction)) + (rule "equalityToElementOfRight" (formula "3") (inst "ov=ov") (inst "fv=fv") (userinteraction)) + (rule "allRight" (formula "3") (inst "sk=ov_0") (userinteraction)) + (rule "allRight" (formula "3") (inst "sk=fv_0") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "3") (term "1") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) + (rule "dominatesDepthDef" (formula "3") (term "1") (inst "ov=ov") (userinteraction)) + (rule "domfpDepthDef" (formula "3") (term "2,0") (inst "y=y") (userinteraction)) + (rule "ifthenelse_split_for" (formula "3") (term "1") (userinteraction)) + (branch "f_n_0 + 1 ≤ 0 TRUE" + (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) + (rule "closeTrue" (formula "4")) + ) + (branch "f_n_0 + 1 ≤ 0 FALSE" + (rule "replace_known_right" (formula "4") (term "0,2,0") (ifseqformula "3") (userinteraction)) + (rule "polySimp_homoEq" (formula "4") (term "0,1")) + (rule "polySimp_mulComm0" (formula "4") (term "1,0,0,1")) + (rule "polySimp_addComm0" (formula "4") (term "1,1,0,0,1")) + (rule "polySimp_rightDist" (formula "4") (term "1,0,0,1")) + (rule "mul_literals" (formula "4") (term "0,1,0,0,1")) + (rule "polySimp_addAssoc" (formula "4") (term "0,0,1")) + (rule "add_literals" (formula "4") (term "0,0,0,1")) + (rule "add_zero_left" (formula "4") (term "0,0,1")) + (rule "polySimp_invertEq" (formula "4") (term "0,1")) + (rule "mul_literals" (formula "4") (term "1,0,1")) + (rule "polySimp_mulLiterals" (formula "4") (term "0,0,1")) + (rule "polySimp_elimOne" (formula "4") (term "0,0,1")) + (builtin "One Step Simplification" (formula "4")) + (rule "elementOfInfiniteUnion" (formula "4") (term "0") (userinteraction)) + (builtin "One Step Simplification" (formula "4") (userinteraction)) + (rule "ifthenelse_split_for" (formula "4") (term "1") (userinteraction)) + (branch "f_n_0 = 0 TRUE" + (rule "applyEqRigid" (formula "4") (term "0,0") (ifseqformula "1") (userinteraction)) + (rule "applyEqRigid" (formula "2") (term "0") (ifseqformula "1") (userinteraction)) + (rule "add_literals" (formula "4") (term "0")) + (rule "leq_literals" (formula "4")) + (rule "false_right" (formula "4")) + (rule "qeq_literals" (formula "2")) + (rule "true_left" (formula "2")) + (rule "polySimp_elimSub" (formula "3") (term "1,2,2,1,0,0")) + (rule "mul_literals" (formula "3") (term "1,1,2,2,1,0,0")) + (rule "polySimp_addLiterals" (formula "3") (term "1,2,2,1,0,0")) + (rule "add_zero_right" (formula "3") (term "1,2,2,1,0,0")) + (rule "applyEq" (formula "3") (term "1,2,2,1,0,0") (ifseqformula "1")) + (rule "equiv_right" (formula "3") (userinteraction)) + (branch "Case '->'" + (rule "exLeft" (formula "1") (inst "sk=y_0") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "applyEq" (formula "2") (term "0,0,0,2") (ifseqformula "3")) + (rule "add_zero_left" (formula "2") (term "0,0,2")) + (rule "equal_literals" (formula "2") (term "0,2")) + (builtin "One Step Simplification" (formula "2")) + (rule "applyEqRigid" (formula "5") (term "0,1") (ifseqformula "2") (userinteraction)) + (rule "close" (formula "5") (ifseqformula "1") (userinteraction)) + ) + (branch "Case '<-'" + (rule "exRight" (formula "4") (inst "t=ov_0") (userinteraction)) + (rule "replace_known_left" (formula "4") (term "0") (ifseqformula "1") (userinteraction)) + (builtin "One Step Simplification" (formula "4") (userinteraction)) + (rule "applyEq" (formula "4") (term "0,0,0,2") (ifseqformula "2")) + (rule "add_zero_left" (formula "4") (term "0,0,2")) + (rule "equal_literals" (formula "4") (term "0,2")) + (builtin "One Step Simplification" (formula "4")) + (rule "closeTrue" (formula "4") (userinteraction)) + ) + ) + (branch "f_n_0 = 0 FALSE" + (rule "polySimp_elimSub" (formula "5") (term "2,1,0,1")) + (rule "mul_literals" (formula "5") (term "1,2,1,0,1")) + (rule "polySimp_addLiterals" (formula "5") (term "2,1,0,1")) + (rule "add_zero_right" (formula "5") (term "2,1,0,1")) + (rule "switch_params" (formula "5") (term "0,1,2,2,1,0,0") (userinteraction)) + (rule "sub" (formula "5") (term "1,2,2,1,0,0") (userinteraction)) + (rule "polySimp_addComm0" (formula "5") (term "1,2,2,1,0,0") (userinteraction)) + (rule "polySimp_addAssoc" (formula "5") (term "1,2,2,1,0,0") (userinteraction)) + (rule "neg_literal" (formula "5") (term "0,0,1,2,2,1,0,0")) + (rule "add_literals" (formula "5") (term "0,1,2,2,1,0,0")) + (rule "add_zero_left" (formula "5") (term "1,2,2,1,0,0")) + (rule "equiv_right" (formula "5") (userinteraction)) + (branch "Case '->'" + (rule "exLeft" (formula "1") (inst "sk=y_0") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "add_eq" (formula "2") (term "0,2") (inst "i=Z(neglit(1(#)))") (userinteraction)) + (rule "add_literals" (formula "2") (term "1,0,2") (userinteraction)) + (rule "polySimp_addAssoc" (formula "2") (term "0,0,2") (userinteraction)) + (rule "switch_params" (formula "2") (term "0,0,0,2") (userinteraction)) + (rule "polySimp_addLiterals" (formula "2") (term "0,0,2") (userinteraction)) + (rule "add_zero_right" (formula "2") (term "0,0,2") (userinteraction)) + (rule "ifthenelse_split" (formula "2") (term "2") (userinteraction)) + (branch "f_n_0 = 0 TRUE" + (rule "close" (formula "7") (ifseqformula "2") (userinteraction)) + ) + (branch "f_n_0 = 0 FALSE" + (rule "exRight" (formula "7") (inst "t=y_0") (userinteraction)) + (rule "replace_known_left" (formula "7") (term "0") (ifseqformula "1") (userinteraction)) + (builtin "One Step Simplification" (formula "7") (userinteraction)) + (rule "allLeft" (formula "4") (inst "t=y_0") (userinteraction)) + (rule "applyEqRigid" (formula "2") (term "2") (ifseqformula "4") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "8")) (userinteraction)) + (rule "closeFalse" (formula "2") (userinteraction)) + ) + ) + (branch "Case '<-'" + (rule "cut_direct" (formula "6") (term "0,2,1,0")) + (branch "CUT: f_n_0 + 1 = 1 TRUE" + (rule "polySimp_homoEq" (formula "1")) + (rule "polySimp_mulComm0" (formula "1") (term "1,0")) + (rule "polySimp_addComm0" (formula "1") (term "1,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 "add_zero_left" (formula "1") (term "0")) + (rule "polySimp_invertEq" (formula "1")) + (rule "mul_literals" (formula "1") (term "1")) + (rule "polySimp_mulLiterals" (formula "1") (term "0")) + (rule "polySimp_elimOne" (formula "1") (term "0")) + (rule "replace_known_right" (formula "1") (ifseqformula "6")) + (rule "closeFalse" (formula "1")) + ) + (branch "CUT: f_n_0 + 1 = 1 FALSE" + (rule "polySimp_homoEq" (formula "6")) + (rule "polySimp_mulComm0" (formula "6") (term "1,0")) + (rule "polySimp_addComm0" (formula "6") (term "1,1,0")) + (rule "polySimp_rightDist" (formula "6") (term "1,0")) + (rule "mul_literals" (formula "6") (term "0,1,0")) + (rule "polySimp_addAssoc" (formula "6") (term "0")) + (rule "add_literals" (formula "6") (term "0,0")) + (rule "add_zero_left" (formula "6") (term "0")) + (rule "polySimp_invertEq" (formula "6")) + (rule "mul_literals" (formula "6") (term "1")) + (rule "polySimp_mulLiterals" (formula "6") (term "0")) + (rule "polySimp_elimOne" (formula "6") (term "0")) + (builtin "One Step Simplification" (formula "6")) + (rule "exLeft" (formula "1") (inst "sk=ov_1") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "exRight" (formula "7") (inst "t=ov_1") (userinteraction)) + (rule "replace_known_left" (formula "7") (term "0") (ifseqformula "1") (userinteraction)) + (builtin "One Step Simplification" (formula "7") (userinteraction)) + (rule "allLeft" (formula "4") (inst "t=ov_1") (userinteraction)) + (rule "equalityToElementOf" (formula "4") (inst "ov=ov") (inst "fv=fv") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "4") (term "1,0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "4") (userinteraction)) + (rule "allLeft" (formula "4") (inst "t=ov_0") (userinteraction)) + (rule "replace_known_left" (formula "4") (term "1,0") (ifseqformula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "4") (userinteraction)) + (rule "allLeft" (formula "4") (inst "t=fv_0") (userinteraction)) + (rule "close" (formula "10") (ifseqformula "4") (userinteraction)) + ) + ) + ) + ) +) +(branch "Use Case" + (rule "allLeft" (formula "1") (inst "t=f_n") (userinteraction)) + (rule "impLeft" (formula "1") (userinteraction)) + (branch "Case 1" + (rule "domfpDepthDef" (formula "3") (term "0") (inst "y=y") (userinteraction)) + (rule "ifthenelse_split" (formula "3") (term "0") (userinteraction)) + (branch "f_n ≤ 0 TRUE" + (rule "equalityToElementOfRight" (formula "4") (inst "ov=ov") (inst "fv=fv") (userinteraction)) + (builtin "One Step Simplification" (formula "4") (userinteraction)) + (rule "allRight" (formula "4") (inst "sk=ov_0") (userinteraction)) + (rule "allRight" (formula "4") (inst "sk=fv_0") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "4") (term "0") (userinteraction)) + (builtin "One Step Simplification" (formula "4") (userinteraction)) + (rule "notRight" (formula "4") (userinteraction)) + (rule "dominatesDepthDef" (formula "1") (inst "ov=ov") (userinteraction)) + (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "closeFalse" (formula "1") (userinteraction)) + ) + (branch "f_n ≤ 0 FALSE" + (rule "eqSymm" (formula "1") (term "0,1,0")) + (rule "eqSymm" (formula "4") (term "0,0,0")) + (rule "polySimp_elimSub" (formula "4") (term "1,2,1,0,0")) + (rule "mul_literals" (formula "4") (term "1,1,2,1,0,0")) + (rule "polySimp_addComm0" (formula "4") (term "1,2,1,0,0")) + (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_leqRight" (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 "2")) + (rule "mul_literals" (formula "2") (term "1")) + (rule "inEqSimp_sepPosMonomial1" (formula "1")) + (rule "mul_literals" (formula "1") (term "1")) + (rule "inEqSimp_contradEq3" (formula "4") (term "0,1,0,0") (ifseqformula "2")) + (rule "mul_literals" (formula "4") (term "1,0,0,0,1,0,0")) + (rule "add_literals" (formula "4") (term "0,0,0,1,0,0")) + (rule "qeq_literals" (formula "4") (term "0,0,1,0,0")) + (builtin "One Step Simplification" (formula "4")) + (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 "Case 2" + (rule "allLeft" (formula "1") (inst "t=f_x") (userinteraction)) + (rule "close" (formula "4") (ifseqformula "1") (userinteraction)) + ) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_domfpElement.proof b/key.core/tacletProofs/universe/Taclet_domfpElement.proof new file mode 100644 index 00000000000..bde595d5f38 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_domfpElement.proof @@ -0,0 +1,109 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "domfpElement" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "0") + +(branch "dummy ID" +(rule "equiv_right" (formula "1") (newnames "f_x,f_f,f_y") (userinteraction)) +(branch "Case '->'" + (rule "domfpEquivDominates" (formula "1") (term "2") (inst "y=y") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "1") (userinteraction)) + (rule "exLeft" (formula "1") (inst "sk=y_0") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "applyEqReverse" (formula "1") (term "1") (ifseqformula "2") (userinteraction)) + (rule "closeAntec" (formula "1") (ifseqformula "3") (userinteraction)) +) +(branch "Case '<-'" + (rule "domfpEquivDominates" (formula "2") (term "2") (inst "y=y") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "1")) (userinteraction)) + (rule "closeTrue" (formula "2") (userinteraction)) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_domfpEqdomfpDepthUnion.proof b/key.core/tacletProofs/universe/Taclet_domfpEqdomfpDepthUnion.proof new file mode 100644 index 00000000000..f11fa28d946 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_domfpEqdomfpDepthUnion.proof @@ -0,0 +1,466 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "domfpEqdomfpDepthUnion" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "1323") + +(branch "dummy ID" +(rule "equalityToElementOfRight" (formula "1") (newnames "f_x,v_n") (inst "ov=ov") (inst "fv=fv") (userinteraction)) +(rule "allRight" (formula "1") (inst "sk=ov_0") (userinteraction)) +(rule "allRight" (formula "1") (inst "sk=fv_0") (userinteraction)) +(rule "elementOfInfiniteUnion" (formula "1") (term "1") (userinteraction)) +(rule "equiv_right" (formula "1") (userinteraction)) +(branch "Case '->'" + (rule "domfpFinalDepth" (formula "2") (term "0,2,0") (inst "n=n") (inst "m=m") (userinteraction)) + (rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "int_induction" (inst "b=(\\forall java.lang.Object o; + (( ( (\\forall int m; + (( geq(m, n_0)<> + -> (domfpDepth(o, m) = empty)<>)<>))<> + & elementOf(ov_0, fv_0, domfp(o))<>)<> + -> (\\exists int v_n; + elementOf(ov_0, fv_0, domfpDepth(o, v_n))<>)<>)<>))<>") (inst "nv=n_0") (userinteraction)) + (branch "Base Case" + (rule "hide_right" (formula "5") (userinteraction)) + (rule "hide_left" (formula "3") (userinteraction)) + (rule "hide_left" (formula "2") (userinteraction)) + (rule "hide_left" (formula "1") (userinteraction)) + (rule "allRight" (formula "1") (inst "sk=o_0") (userinteraction)) + (rule "impRight" (formula "1")) + (rule "andLeft" (formula "1")) + (rule "domfpDef" (formula "2") (term "2") (inst "y=y") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (userinteraction)) + (rule "exLeft" (formula "2") (inst "sk=y_0") (userinteraction)) + (rule "andLeft" (formula "2") (userinteraction)) + (rule "allLeft" (formula "1") (inst "t=Z(1(#))") (userinteraction)) + (rule "qeq_literals" (formula "1") (term "0") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "equalityToElementOf" (formula "1") (inst "ov=ov") (inst "fv=fv") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "allLeft" (formula "1") (inst "t=y_0") (userinteraction)) + (rule "domfpDepthEquivDominates" (formula "1") (term "2,0,0") (inst "y=y") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "1") (term "0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "notLeft" (formula "1") (userinteraction)) + (rule "owns2Dominates" (formula "3") (userinteraction)) + (rule "dominatesDef" (formula "3") (inst "n=n") (userinteraction)) + (rule "exLeft" (formula "3") (inst "sk=n_1") (userinteraction)) + (rule "dominatesDepthDef" (formula "6") (inst "ov=ov") (userinteraction)) + (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "4")) (userinteraction)) + (rule "notRight" (formula "6") (userinteraction)) + (rule "leq_literals" (formula "1") (userinteraction)) + (rule "closeFalse" (formula "1") (userinteraction)) + ) + (branch "Step Case" + (rule "hide_right" (formula "5") (userinteraction)) + (rule "hide_left" (formula "2") (userinteraction)) + (rule "hide_left" (formula "2") (userinteraction)) + (rule "hide_left" (formula "1") (userinteraction)) + (rule "allRight" (formula "1") (inst "sk=n_0_0") (userinteraction)) + (rule "impRight" (formula "1")) + (rule "andLeft" (formula "1")) + (rule "allRight" (formula "3") (inst "sk=o_0") (userinteraction)) + (rule "impRight" (formula "3")) + (rule "andLeft" (formula "1")) + (rule "domfpDef" (formula "2") (term "2") (inst "y=y") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "2") (userinteraction)) + (rule "exLeft" (formula "2") (inst "sk=y_0") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (userinteraction)) + (rule "andLeft" (formula "2") (userinteraction)) + (rule "repfpDef" (formula "3") (term "2") (userinteraction)) + (rule "elementOfUnion" (formula "3") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) + (rule "orLeft" (formula "3") (userinteraction)) + (branch "(ov_0, fv_0) ∊ domfp(y_0)" + (rule "allLeft" (formula "5") (inst "t=y_0") (userinteraction)) + (rule "replace_known_left" (formula "5") (term "1,0") (ifseqformula "3") (userinteraction)) + (builtin "One Step Simplification" (formula "5") (userinteraction)) + (rule "impLeft" (formula "5") (userinteraction)) + (branch "Case 1" + (rule "allRight" (formula "6") (inst "sk=m_0") (userinteraction)) + (rule "equalityToElementOf" (formula "6") (term "1") (inst "ov=ov") (inst "fv=fv") (userinteraction)) + (builtin "One Step Simplification" (formula "6") (userinteraction)) + (rule "impRight" (formula "6") (userinteraction)) + (rule "swapQuantifiersAll" (formula "7") (userinteraction)) + (rule "allRight" (formula "7") (inst "sk=fv_1") (userinteraction)) + (rule "allRight" (formula "7") (inst "sk=ov_1") (userinteraction)) + (rule "notRight" (formula "7") (userinteraction)) + (rule "equalityToElementOf" (formula "3") (term "1,0") (inst "ov=ov") (inst "fv=fv") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) + (rule "allLeft" (formula "3") (inst "t=add(m_0, Z(1(#)))") (userinteraction)) + (rule "add_greatereq" (formula "3") (term "0") (inst "i1=Z(neglit(1(#)))") (userinteraction)) + (rule "polySimp_addComm0" (formula "3") (term "0,0") (userinteraction)) + (rule "polySimp_addLiterals" (formula "3") (term "0,0") (userinteraction)) + (rule "polySimp_addComm0" (formula "3") (term "1,0") (userinteraction)) + (rule "polySimp_addLiterals" (formula "3") (term "1,0") (userinteraction)) + (rule "add_zero_right" (formula "3") (term "1,0") (userinteraction)) + (rule "add_zero_right" (formula "3") (term "0,0") (userinteraction)) + (rule "replace_known_left" (formula "3") (term "0") (ifseqformula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) + (rule "allLeft" (formula "3") (inst "t=ov_1") (userinteraction)) + (rule "allLeft" (formula "3") (inst "t=fv_1") (userinteraction)) + (rule "notLeft" (formula "3") (userinteraction)) + (rule "domfpDepthDef" (formula "10") (term "2") (inst "y=y") (userinteraction)) + (rule "ifthenelse_split" (formula "10") (term "2") (userinteraction)) + (branch "m_0 + 1 ≤ 0 TRUE" + (builtin "One Step Simplification" (formula "11")) + (rule "false_right" (formula "11")) + (rule "eqSymm" (formula "7")) + (rule "polySimp_addComm0" (formula "4") (term "1,2,0,0")) + (rule "polySimp_addComm0" (formula "5") (term "1,2,0,0,0")) + (rule "polySimp_addComm0" (formula "1") (term "0")) + (rule "polySimp_addComm0" (formula "6") (term "1,0,0")) + (rule "inEqSimp_commuteGeq" (formula "3")) + (rule "inEqSimp_sepPosMonomial0" (formula "1")) + (rule "mul_literals" (formula "1") (term "1")) + (rule "inEqSimp_exactShadow3" (formula "9") (ifseqformula "3")) + (rule "times_zero_1" (formula "9") (term "0,0")) + (rule "add_zero_left" (formula "9") (term "0")) + (rule "inEqSimp_contradInEq0" (formula "9") (ifseqformula "1")) + (rule "qeq_literals" (formula "9") (term "0")) + (builtin "One Step Simplification" (formula "9")) + (rule "closeFalse" (formula "9")) + ) + (branch "m_0 + 1 ≤ 0 FALSE" + (rule "elementOfInfiniteUnion" (formula "11") (userinteraction)) + (builtin "One Step Simplification" (formula "11") (userinteraction)) + (rule "exRight" (formula "11") (inst "t=y_0") (userinteraction)) + (rule "replace_known_left" (formula "11") (term "0") (ifseqformula "6") (userinteraction)) + (builtin "One Step Simplification" (formula "11") (userinteraction)) + (rule "polySimp_homoEq" (formula "11") (term "0,2")) + (rule "polySimp_mulComm0" (formula "11") (term "1,0,0,2")) + (rule "polySimp_addComm0" (formula "11") (term "1,1,0,0,2")) + (rule "polySimp_rightDist" (formula "11") (term "1,0,0,2")) + (rule "mul_literals" (formula "11") (term "0,1,0,0,2")) + (rule "polySimp_addAssoc" (formula "11") (term "0,0,2")) + (rule "add_literals" (formula "11") (term "0,0,0,2")) + (rule "add_zero_left" (formula "11") (term "0,0,2")) + (rule "polySimp_invertEq" (formula "11") (term "0,2")) + (rule "mul_literals" (formula "11") (term "1,0,2")) + (rule "polySimp_mulLiterals" (formula "11") (term "0,0,2")) + (rule "polySimp_elimOne" (formula "11") (term "0,0,2")) + (rule "polySimp_elimSub" (formula "11") (term "1,2,2")) + (rule "mul_literals" (formula "11") (term "1,1,2,2")) + (rule "polySimp_addLiterals" (formula "11") (term "1,2,2") (userinteraction)) + (rule "add_zero_right" (formula "11") (term "1,2,2") (userinteraction)) + (rule "ifthenelse_split" (formula "11") (term "2") (userinteraction)) + (branch "m_0 = 0 TRUE" + (builtin "One Step Simplification" (formula "12") (userinteraction)) + (rule "applyEqRigid" (formula "2") (term "1,2") (ifseqformula "1") (userinteraction)) + (rule "domfpDepthDef" (formula "2") (term "2") (inst "y=y") (userinteraction)) + (rule "leq_literals" (formula "2") (term "0,2")) + (builtin "One Step Simplification" (formula "2")) + (rule "closeFalse" (formula "2")) + ) + (branch "m_0 = 0 FALSE" + (rule "close" (formula "12") (ifseqformula "1") (userinteraction)) + ) + ) + ) + (branch "Case 2" + (rule "exLeft" (formula "5") (inst "sk=v_n_0") (userinteraction)) + (rule "exRight" (formula "7") (inst "t=add(v_n_0, Z(1(#)))") (userinteraction)) + (rule "domfpDepthDef" (formula "7") (term "2") (inst "y=y") (userinteraction)) + (rule "polySimp_elimSub" (formula "7") (term "1,2,1,0,2,2")) + (rule "mul_literals" (formula "7") (term "1,1,2,1,0,2,2")) + (rule "polySimp_addLiterals" (formula "7") (term "1,2,1,0,2,2")) + (rule "add_zero_right" (formula "7") (term "1,2,1,0,2,2")) + (rule "polySimp_homoEq" (formula "7") (term "0,1,0,2,2")) + (rule "polySimp_mulComm0" (formula "7") (term "1,0,0,1,0,2,2")) + (rule "polySimp_addComm0" (formula "7") (term "1,1,0,0,1,0,2,2")) + (rule "polySimp_rightDist" (formula "7") (term "1,0,0,1,0,2,2")) + (rule "mul_literals" (formula "7") (term "0,1,0,0,1,0,2,2")) + (rule "polySimp_addAssoc" (formula "7") (term "0,0,1,0,2,2")) + (rule "add_literals" (formula "7") (term "0,0,0,1,0,2,2")) + (rule "add_zero_left" (formula "7") (term "0,0,1,0,2,2")) + (rule "polySimp_invertEq" (formula "7") (term "0,1,0,2,2")) + (rule "mul_literals" (formula "7") (term "1,0,1,0,2,2")) + (rule "polySimp_mulLiterals" (formula "7") (term "0,0,1,0,2,2")) + (rule "polySimp_elimOne" (formula "7") (term "0,0,1,0,2,2")) + (rule "ifthenelse_split" (formula "7") (term "2") (userinteraction)) + (branch "v_n_0 + 1 ≤ 0 TRUE" + (builtin "One Step Simplification" (formula "8") (userinteraction)) + (rule "false_right" (formula "8") (userinteraction)) + (rule "domfpDepthDef" (formula "6") (term "2") (inst "y=y") (userinteraction)) + (rule "eqSymm" (formula "3")) + (rule "eqSymm" (formula "6") (term "0,0,2,2")) + (rule "polySimp_elimSub" (formula "6") (term "1,2,1,0,2,2")) + (rule "mul_literals" (formula "6") (term "1,1,2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "1") (term "0")) + (rule "polySimp_addComm0" (formula "2") (term "1,0,0")) + (rule "polySimp_addComm0" (formula "6") (term "1,2,1,0,2,2")) + (rule "inEqSimp_sepPosMonomial0" (formula "1")) + (rule "mul_literals" (formula "1") (term "1")) + (rule "inEqSimp_contradEq3" (formula "6") (term "0,1,0,2,2") (ifseqformula "1")) + (rule "mul_literals" (formula "6") (term "1,0,0,0,1,0,2,2")) + (rule "add_literals" (formula "6") (term "0,0,0,1,0,2,2")) + (rule "qeq_literals" (formula "6") (term "0,0,1,0,2,2")) + (builtin "One Step Simplification" (formula "6")) + (rule "inEqSimp_subsumption0" (formula "6") (term "0,2") (ifseqformula "1")) + (rule "leq_literals" (formula "6") (term "0,0,2")) + (builtin "One Step Simplification" (formula "6")) + (rule "closeFalse" (formula "6")) + ) + (branch "v_n_0 + 1 ≤ 0 FALSE" + (rule "elementOfInfiniteUnion" (formula "8") (userinteraction)) + (builtin "One Step Simplification" (formula "8") (userinteraction)) + (rule "exRight" (formula "8") (inst "t=y_0") (userinteraction)) + (rule "replace_known_left" (formula "8") (term "0") (ifseqformula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "8") (userinteraction)) + (rule "ifthenelse_split" (formula "8") (term "2") (userinteraction)) + (branch "v_n_0 = 0 TRUE" + (builtin "One Step Simplification" (formula "9") (userinteraction)) + (rule "applyEqRigid" (formula "8") (term "0,0") (ifseqformula "1") (userinteraction)) + (rule "add_literals" (formula "8") (term "0")) + (rule "leq_literals" (formula "8")) + (rule "false_right" (formula "8")) + (rule "domfpDepthDef" (formula "6") (term "2") (inst "y=y") (userinteraction)) + (rule "eqSymm" (formula "3")) + (rule "eqSymm" (formula "9") (term "0,0")) + (rule "eqSymm" (formula "8")) + (rule "eqSymm" (formula "6") (term "0,0,2,2")) + (rule "replace_known_left" (formula "9") (term "0,2,1,0") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "9")) + (rule "polySimp_elimSub" (formula "6") (term "1,2,1,0,2,2")) + (rule "mul_literals" (formula "6") (term "1,1,2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "2") (term "1,0,0")) + (rule "polySimp_addComm0" (formula "6") (term "1,2,1,0,2,2")) + (rule "applyEq" (formula "6") (term "1,1,2,1,0,2,2") (ifseqformula "1")) + (rule "add_literals" (formula "6") (term "1,2,1,0,2,2")) + (rule "applyEqRigid" (formula "6") (term "0,0,2") (ifseqformula "1")) + (rule "leq_literals" (formula "6") (term "0,2")) + (builtin "One Step Simplification" (formula "6")) + (rule "closeFalse" (formula "6")) + ) + (branch "v_n_0 = 0 FALSE" + (rule "close" (formula "9") (ifseqformula "5") (userinteraction)) + ) + ) + ) + ) + (branch "ov_0 = y_0" + (rule "applyEqReverse" (formula "2") (term "0,1") (ifseqformula "3") (userinteraction)) + (rule "exRight" (formula "6") (inst "t=Z(1(#))") (userinteraction)) + (rule "applyEqRigid" (formula "6") (term "0,2") (ifseqformula "2") (userinteraction)) + (rule "domfpDepthDef" (formula "6") (term "2") (inst "y=y") (userinteraction)) + (builtin "One Step Simplification" (formula "6")) + (rule "leq_literals" (formula "6") (term "0,2")) + (builtin "One Step Simplification" (formula "6")) + (rule "eqSymm" (formula "6") (term "0,0,2")) + (rule "elementOfInfiniteUnion" (formula "6")) + (builtin "One Step Simplification" (formula "6")) + (rule "closeTrue" (formula "6")) + ) + ) + (branch "Use Case" + (rule "allLeft" (formula "1") (inst "t=n_0") (userinteraction)) + (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "3") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "allLeft" (formula "1") (inst "t=f_x") (userinteraction)) + (rule "replace_known_left" (formula "1") (term "0,0") (ifseqformula "5") (userinteraction)) + (rule "replace_known_left" (formula "1") (term "1,0") (ifseqformula "6") (userinteraction)) + (rule "replace_known_right" (formula "1") (term "1") (ifseqformula "7") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "closeFalse" (formula "1") (userinteraction)) + ) +) +(branch "Case '<-'" + (rule "int_induction" (inst "b=(\\forall java.lang.Object o; + (( elementOf(ov_0, fv_0, domfpDepth(o, v_n))<> + -> elementOf(ov_0, fv_0, domfp(o))<>)<>))<>") (inst "nv=v_n") (userinteraction)) + (branch "Base Case" + (rule "allRight" (formula "2") (inst "sk=o_0") (userinteraction)) + (rule "impRight" (formula "2")) + (rule "domfpDepthDef" (formula "1") (term "2") (inst "y=y") (userinteraction)) + (rule "leq_literals" (formula "1") (term "0,2")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + (branch "Step Case" + (rule "exLeft" (formula "1") (inst "sk=v_n_0") (userinteraction)) + (rule "allRight" (formula "2") (inst "sk=v_n_1") (userinteraction)) + (rule "impRight" (formula "2")) + (rule "andLeft" (formula "1")) + (rule "allRight" (formula "4") (inst "sk=o_0") (userinteraction)) + (rule "impRight" (formula "4") (userinteraction)) + (rule "domfpDepthDef" (formula "1") (term "2") (inst "y=y") (userinteraction)) + (rule "ifthenelse_split" (formula "1") (term "2") (userinteraction)) + (branch "v_n_1 + 1 ≤ 0 TRUE" + (builtin "One Step Simplification" (formula "2") (userinteraction)) + (rule "closeFalse" (formula "2") (userinteraction)) + ) + (branch "v_n_1 + 1 ≤ 0 FALSE" + (rule "elementOfInfiniteUnion" (formula "1") (userinteraction)) + (rule "exLeft" (formula "1") (inst "sk=y_0") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "polySimp_homoEq" (formula "2") (term "0,2")) + (rule "polySimp_mulComm0" (formula "2") (term "1,0,0,2")) + (rule "polySimp_addComm0" (formula "2") (term "1,1,0,0,2")) + (rule "polySimp_rightDist" (formula "2") (term "1,0,0,2")) + (rule "mul_literals" (formula "2") (term "0,1,0,0,2")) + (rule "polySimp_addAssoc" (formula "2") (term "0,0,2")) + (rule "add_literals" (formula "2") (term "0,0,0,2")) + (rule "add_zero_left" (formula "2") (term "0,0,2")) + (rule "polySimp_invertEq" (formula "2") (term "0,2")) + (rule "polySimp_mulLiterals" (formula "2") (term "0,0,2")) + (rule "mul_literals" (formula "2") (term "1,0,2")) + (rule "polySimp_elimOne" (formula "2") (term "0,0,2")) + (rule "polySimp_elimSub" (formula "2") (term "1,2,2")) + (rule "mul_literals" (formula "2") (term "1,1,2,2")) + (rule "polySimp_addLiterals" (formula "2") (term "1,2,2")) + (rule "add_zero_right" (formula "2") (term "1,2,2")) + (rule "ifthenelse_split" (formula "2") (term "2") (userinteraction)) + (branch "v_n_1 = 0 TRUE" + (builtin "One Step Simplification" (formula "3") (userinteraction)) + (rule "applyEqReverse" (formula "1") (term "0,1") (ifseqformula "3") (userinteraction)) + (rule "applyEqRigid" (formula "8") (term "0,2") (ifseqformula "1") (userinteraction)) + (rule "domfpDef" (formula "8") (term "2") (inst "y=y") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "8") (userinteraction)) + (builtin "One Step Simplification" (formula "8") (userinteraction)) + (rule "repfpDef" (formula "8") (term "2,1,0") (userinteraction)) + (rule "elementOfUnion" (formula "8") (term "1,0") (userinteraction)) + (builtin "One Step Simplification" (formula "8") (userinteraction)) + (rule "exRight" (formula "8") (inst "t=ov_0") (userinteraction)) + (builtin "One Step Simplification" (formula "8") (userinteraction)) + (rule "closeTrue" (formula "8") (userinteraction)) + ) + (branch "v_n_1 = 0 FALSE" + (rule "allLeft" (formula "4") (inst "t=y_0") (userinteraction)) + (rule "replace_known_left" (formula "4") (term "0") (ifseqformula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "4") (userinteraction)) + (rule "applyEqRigid" (formula "9") (term "0,2") (ifseqformula "1") (userinteraction)) + (rule "domfpDef" (formula "9") (term "2") (inst "y=y") (userinteraction)) + (rule "elementOfInfiniteUnion" (formula "9") (userinteraction)) + (builtin "One Step Simplification" (formula "9") (userinteraction)) + (rule "exRight" (formula "9") (inst "t=y_0") (userinteraction)) + (builtin "One Step Simplification" (formula "9") (userinteraction)) + (rule "repfpDef" (formula "9") (term "2") (userinteraction)) + (rule "elementOfUnion" (formula "9") (userinteraction)) + (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "4")) (userinteraction)) + (rule "closeTrue" (formula "9") (userinteraction)) + ) + ) + ) + (branch "Use Case" + (rule "exLeft" (formula "2") (inst "sk=v_n_0") (userinteraction)) + (rule "allLeft" (formula "1") (inst "t=v_n_0") (userinteraction)) + (rule "impLeft" (formula "1") (userinteraction)) + (branch "Case 1" + (rule "domfpDepthDef" (formula "2") (term "2") (inst "y=y") (userinteraction)) + (rule "eqSymm" (formula "2") (term "0,0,2,2")) + (rule "polySimp_elimSub" (formula "2") (term "1,2,1,0,2,2")) + (rule "mul_literals" (formula "2") (term "1,1,2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "2") (term "1,2,1,0,2,2")) + (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 "inEqSimp_contradEq3" (formula "3") (term "0,1,0,2,2") (ifseqformula "1")) + (rule "mul_literals" (formula "3") (term "1,0,0,0,1,0,2,2")) + (rule "add_literals" (formula "3") (term "0,0,0,1,0,2,2")) + (rule "qeq_literals" (formula "3") (term "0,0,1,0,2,2")) + (builtin "One Step Simplification" (formula "3")) + (rule "inEqSimp_subsumption0" (formula "3") (term "0,2") (ifseqformula "1")) + (rule "leq_literals" (formula "3") (term "0,0,2")) + (builtin "One Step Simplification" (formula "3")) + (rule "closeFalse" (formula "3")) + ) + (branch "Case 2" + (rule "allLeft" (formula "1") (inst "t=f_x") (userinteraction)) + (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "4") (userinteraction)) + (rule "replace_known_right" (formula "1") (term "1") (ifseqformula "5") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "closeFalse" (formula "1") (userinteraction)) + ) + ) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_domfpEquivDominates.proof b/key.core/tacletProofs/universe/Taclet_domfpEquivDominates.proof new file mode 100644 index 00000000000..66261013e95 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_domfpEquivDominates.proof @@ -0,0 +1,106 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "domfpEquivDominates" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "0") + +(branch "dummy ID" +(rule "domfpEqdomfpDepthUnion" (formula "1") (term "0") (newnames "f_x,v_y") (inst "n=n") (userinteraction)) +(rule "equalityToElementOfRight" (formula "1") (inst "ov=ov") (inst "fv=fv") (userinteraction)) +(rule "allRight" (formula "1") (inst "sk=ov_0") (userinteraction)) +(rule "allRight" (formula "1") (inst "sk=fv_0") (userinteraction)) +(rule "elementOfInfiniteUnion" (formula "1") (term "0") (userinteraction)) +(rule "elementOfInfiniteUnion" (formula "1") (term "1") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "domfpDepthEquivDominates" (formula "1") (term "2,0,0") (inst "y=y") (userinteraction)) +(rule "elementOfInfiniteUnion" (formula "1") (term "0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "dominatesDef" (formula "1") (term "1") (inst "n=n") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "closeTrue" (formula "1") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_domfpFinalDepth.proof b/key.core/tacletProofs/universe/Taclet_domfpFinalDepth.proof new file mode 100644 index 00000000000..1245e07a495 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_domfpFinalDepth.proof @@ -0,0 +1,154 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "domfpFinalDepth" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "224") + +(branch "dummy ID" + (builtin "One Step Simplification" (formula "1") (newnames "f_x,v_n,v_m") (userinteraction)) +(rule "dominatesMaxDepth" (formula "1") (term "0,0,1,0,1,0") (inst "n=n") (inst "y=y") (inst "m=m") (userinteraction)) +(rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) +(rule "andLeft" (formula "1") (userinteraction)) +(rule "exRight" (formula "3") (inst "t=n_0") (userinteraction)) +(rule "replace_known_left" (formula "3") (term "0") (ifseqformula "1") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) +(rule "allRight" (formula "3") (inst "sk=v_m_0") (userinteraction)) +(rule "impRight" (formula "3")) +(rule "equalityToElementOfRight" (formula "4") (inst "ov=ov") (inst "fv=fv") (userinteraction)) + (builtin "One Step Simplification" (formula "4") (userinteraction)) +(rule "allRight" (formula "4") (inst "sk=ov_0") (userinteraction)) +(rule "allRight" (formula "4") (inst "sk=fv_0") (userinteraction)) +(rule "notRight" (formula "4") (userinteraction)) +(rule "hide_right" (formula "5") (userinteraction)) +(rule "domfpDepthEquivDominates" (formula "1") (term "2") (inst "y=y") (userinteraction)) +(rule "elementOfInfiniteUnion" (formula "1") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "allLeft" (formula "4") (inst "t=ov_0") (userinteraction)) +(rule "dominatesDepth2Dominates" (formula "1") (userinteraction)) +(rule "andLeft" (formula "1") (userinteraction)) +(rule "replace_known_left" (formula "6") (term "0") (ifseqformula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "6") (userinteraction)) +(rule "exLeft" (formula "6") (inst "sk=m_0") (userinteraction)) +(rule "andLeft" (formula "6") (userinteraction)) +(rule "dominatesSingleDepth" (formula "6") (inst "m=m") (userinteraction)) +(rule "allLeft" (formula "6") (inst "t=v_m_0") (userinteraction)) +(rule "replace_known_left" (formula "6") (term "0") (ifseqformula "3") (userinteraction)) + (builtin "One Step Simplification" (formula "6") (userinteraction)) +(rule "inEqSimp_ltToLeq" (formula "10") (term "1,0,1,0")) +(rule "polySimp_mulComm0" (formula "10") (term "1,0,0,1,0,1,0")) +(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_ltToLeq" (formula "9")) +(rule "polySimp_mulComm0" (formula "9") (term "1,0,0")) +(rule "polySimp_addComm1" (formula "9") (term "0")) +(rule "applyEq" (formula "1") (term "1,0") (ifseqformula "6")) +(rule "applyEqRigid" (formula "3") (term "2") (ifseqformula "6")) +(rule "applyEq" (formula "3") (term "0") (ifseqformula "5")) +(rule "inEqSimp_commuteGeq" (formula "3")) +(rule "inEqSimp_sepPosMonomial0" (formula "9") (term "1,0,1,0")) +(rule "polySimp_mulComm0" (formula "9") (term "1,1,0,1,0")) +(rule "polySimp_rightDist" (formula "9") (term "1,1,0,1,0")) +(rule "polySimp_mulLiterals" (formula "9") (term "1,1,1,0,1,0")) +(rule "mul_literals" (formula "9") (term "0,1,1,0,1,0")) +(rule "polySimp_elimOne" (formula "9") (term "1,1,1,0,1,0")) +(rule "inEqSimp_sepNegMonomial0" (formula "8")) +(rule "polySimp_mulLiterals" (formula "8") (term "0")) +(rule "polySimp_elimOne" (formula "8") (term "0")) +(rule "inEqSimp_sepPosMonomial1" (formula "1")) +(rule "mul_literals" (formula "1") (term "1")) +(rule "inEqSimp_contradInEq1" (formula "3") (ifseqformula "8")) +(rule "andLeft" (formula "3")) +(rule "inEqSimp_homoInEq1" (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 "leq_literals" (formula "3")) +(rule "closeFalse" (formula "3")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesAntisymm.proof b/key.core/tacletProofs/universe/Taclet_dominatesAntisymm.proof new file mode 100644 index 00000000000..bd5e4de8a07 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesAntisymm.proof @@ -0,0 +1,106 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesAntisymm", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "3") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_y")) +(rule "notRight" (formula "2")) +(rule "orLeft" (formula "2") (userinteraction)) +(branch "f_x = f_y" + (rule "applyEqRigid" (formula "1") (term "0") (ifseqformula "2") (userinteraction)) + (rule "dominatesSelf" (formula "1") (userinteraction)) + (rule "closeFalse" (formula "1") (userinteraction)) +) +(branch "dominates(f_y, f_x)" + (rule "closePeerDominate" (formula "2") (ifseqformula "1") (userinteraction)) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesDepth2Dominates.proof b/key.core/tacletProofs/universe/Taclet_dominatesDepth2Dominates.proof new file mode 100644 index 00000000000..a4f6454f04e --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesDepth2Dominates.proof @@ -0,0 +1,123 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesDepth2Dominates", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "19") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_n,f_x,f_y")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "dominatesDef" (formula "2") (term "1") (inst "n=n") (userinteraction)) +(rule "commute_and" (formula "2") (userinteraction)) +(rule "andRight" (formula "2") (userinteraction)) +(branch "Case 1" + (rule "exRight" (formula "2") (inst "t=f_n") (userinteraction)) + (rule "close" (formula "2") (ifseqformula "1") (userinteraction)) +) +(branch "Case 2" + (rule "dominatesDepthDef" (formula "1") (inst "ov=ov") (userinteraction)) + (rule "ifthenelse_split_for" (formula "1") (userinteraction)) + (branch "f_n ≤ 0 TRUE" + (rule "closeFalse" (formula "2") (userinteraction)) + ) + (branch "f_n ≤ 0 FALSE" + (rule "eqSymm" (formula "1") (term "1")) + (rule "eqSymm" (formula "1") (term "0,0,2")) + (rule "polySimp_elimSub" (formula "1") (term "2,1,0,2")) + (rule "mul_literals" (formula "1") (term "1,2,1,0,2")) + (rule "polySimp_addComm0" (formula "1") (term "2,1,0,2")) + (rule "inEqSimp_gtRight" (formula "3")) + (rule "times_zero_1" (formula "1") (term "0,0")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "close" (formula "3") (ifseqformula "1")) + ) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesDepthTransitive.proof b/key.core/tacletProofs/universe/Taclet_dominatesDepthTransitive.proof new file mode 100644 index 00000000000..56486708f6b --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesDepthTransitive.proof @@ -0,0 +1,446 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesDepthTransitive", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "1" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "1215") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_z,f_n1,f_n2,f_y")) +(rule "orRight" (formula "2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "notRight" (formula "3")) +(rule "int_induction" (inst "b=(\\forall java.lang.Object o; + (( ( dominatesDepth(o, f_y, f_n1)<> + & dominatesDepth(f_y, f_z, f_n2)<>)<> + -> dominatesDepth(o, f_z, add(f_n1, f_n2))<>)<>))<>") (inst "nv=f_n1") (userinteraction)) +(branch "Base Case" + (rule "allRight" (formula "3") (inst "sk=o_0") (userinteraction)) + (rule "dominatesDepthDef" (formula "3") (term "0,0") (inst "ov=ov") (userinteraction)) + (rule "dominatesDepthDef" (formula "3") (term "1") (inst "ov=ov") (userinteraction)) + (rule "impRight" (formula "3")) + (rule "add_zero_left" (formula "4") (term "0,0")) + (rule "add_zero_left" (formula "4") (term "0,0,2")) + (rule "add_zero_left" (formula "4") (term "0,2,1,0,2,2")) + (rule "leq_literals" (formula "1") (term "0,0")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3"))) + (rule "closeFalse" (formula "1")) +) +(branch "Step Case" + (rule "allRight" (formula "3") (inst "sk=f_n1_0") (userinteraction)) + (rule "impRight" (formula "3")) + (rule "andLeft" (formula "1")) + (rule "allRight" (formula "5") (inst "sk=o_0") (userinteraction)) + (rule "impRight" (formula "5")) + (rule "andLeft" (formula "1")) + (rule "dominatesDepthDef" (formula "1") (inst "ov=ov") (userinteraction)) + (rule "dominatesDepthDef" (formula "6") (inst "ov=ov") (userinteraction)) + (rule "ifthenelse_split_for" (formula "1") (userinteraction)) + (branch "f_n1_0 + 1 ≤ 0 TRUE" + (rule "closeFalse" (formula "2") (userinteraction)) + ) + (branch "f_n1_0 + 1 ≤ 0 FALSE" + (rule "dominatesDepthDef" (formula "5") (inst "ov=ov") (userinteraction)) + (rule "ifthenelse_split_for" (formula "7") (userinteraction)) + (branch "f_n1_0 + 1 + f_n2 ≤ 0 TRUE" + (rule "false_right" (formula "8")) + (rule "eqSymm" (formula "2") (term "1")) + (rule "eqSymm" (formula "2") (term "0,0,2")) + (rule "eqSymm" (formula "6") (term "1,2")) + (rule "eqSymm" (formula "6") (term "0,0,2,2")) + (rule "polySimp_elimSub" (formula "2") (term "2,1,0,2")) + (rule "mul_literals" (formula "2") (term "1,2,1,0,2")) + (rule "polySimp_addLiterals" (formula "2") (term "2,1,0,2")) + (rule "add_zero_right" (formula "2") (term "2,1,0,2")) + (rule "polySimp_elimSub" (formula "6") (term "2,1,0,2,2")) + (rule "mul_literals" (formula "6") (term "1,2,1,0,2,2")) + (rule "polySimp_homoEq" (formula "2") (term "0")) + (rule "polySimp_mulComm0" (formula "2") (term "1,0,0")) + (rule "polySimp_addComm0" (formula "7") (term "0")) + (rule "polySimp_addComm0" (formula "1") (term "0,0")) + (rule "polySimp_addComm0" (formula "6") (term "2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "2") (term "1,1,0,0")) + (rule "polySimp_rightDist" (formula "2") (term "1,0,0")) + (rule "mul_literals" (formula "2") (term "0,1,0,0")) + (rule "polySimp_addAssoc" (formula "2") (term "0,0")) + (rule "add_literals" (formula "2") (term "0,0,0")) + (rule "add_zero_left" (formula "2") (term "0,0")) + (rule "inEqSimp_leqRight" (formula "7")) + (rule "times_zero_1" (formula "1") (term "1,0,0")) + (rule "add_zero_right" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "polySimp_invertEq" (formula "2") (term "0")) + (rule "polySimp_mulLiterals" (formula "2") (term "0,0")) + (rule "times_zero_2" (formula "2") (term "1,0")) + (rule "polySimp_elimOne" (formula "2") (term "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 "nnf_imp2or" (formula "4") (term "0")) + (rule "nnf_notAnd" (formula "4") (term "0,0")) + (rule "commute_or_2" (formula "4") (term "0")) + (rule "cut_direct" (formula "4") (term "0,1,0")) + (branch "CUT: dominatesDepth(f_y, f_z, f_n2) TRUE" + (builtin "One Step Simplification" (formula "5")) + (rule "ifthenelse_split_for" (formula "7")) + (branch "f_n2 ≤ 0 TRUE" + (rule "closeFalse" (formula "8")) + ) + (branch "f_n2 ≤ 0 FALSE" + (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 "inEqSimp_sepPosMonomial1" (formula "1")) + (rule "mul_literals" (formula "1") (term "1")) + (rule "inEqSimp_exactShadow3" (formula "1") (ifseqformula "2")) + (rule "mul_literals" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "inEqSimp_sepNegMonomial1" (formula "1")) + (rule "polySimp_mulLiterals" (formula "1") (term "0")) + (rule "polySimp_elimOne" (formula "1") (term "0")) + (rule "inEqSimp_contradEq3" (formula "4") (term "0") (ifseqformula "1")) + (rule "times_zero_1" (formula "4") (term "1,0,0,0")) + (rule "add_zero_right" (formula "4") (term "0,0,0")) + (rule "qeq_literals" (formula "4") (term "0,0")) + (builtin "One Step Simplification" (formula "4")) + (rule "exLeft" (formula "4") (inst "sk=ov_0")) + (rule "andLeft" (formula "4")) + (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "6")) + (rule "qeq_literals" (formula "1") (term "0")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + ) + (branch "CUT: dominatesDepth(f_y, f_z, f_n2) FALSE" + (builtin "One Step Simplification" (formula "4")) + (rule "true_left" (formula "4")) + (rule "ifthenelse_split_for" (formula "5")) + (branch "f_n2 ≤ 0 TRUE" + (rule "closeFalse" (formula "6")) + ) + (branch "f_n2 ≤ 0 FALSE" + (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 "inEqSimp_sepPosMonomial1" (formula "1")) + (rule "mul_literals" (formula "1") (term "1")) + (rule "inEqSimp_exactShadow3" (formula "1") (ifseqformula "2")) + (rule "mul_literals" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "inEqSimp_sepNegMonomial1" (formula "1")) + (rule "polySimp_mulLiterals" (formula "1") (term "0")) + (rule "polySimp_elimOne" (formula "1") (term "0")) + (rule "inEqSimp_contradEq3" (formula "4") (term "0") (ifseqformula "1")) + (rule "times_zero_1" (formula "4") (term "1,0,0,0")) + (rule "add_zero_right" (formula "4") (term "0,0,0")) + (rule "qeq_literals" (formula "4") (term "0,0")) + (builtin "One Step Simplification" (formula "4")) + (rule "exLeft" (formula "4") (inst "sk=ov_0")) + (rule "andLeft" (formula "4")) + (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "6")) + (rule "qeq_literals" (formula "1") (term "0")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + ) + ) + (branch "f_n1_0 + 1 + f_n2 ≤ 0 FALSE" + (rule "polySimp_homoEq" (formula "1") (term "0")) + (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) + (rule "polySimp_addComm0" (formula "1") (term "1,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 "add_literals" (formula "1") (term "0,0,0")) + (rule "add_zero_left" (formula "1") (term "0,0")) + (rule "polySimp_invertEq" (formula "1") (term "0")) + (rule "polySimp_mulLiterals" (formula "1") (term "0,0")) + (rule "mul_literals" (formula "1") (term "1,0")) + (rule "polySimp_elimOne" (formula "1") (term "0,0")) + (rule "polySimp_homoEq" (formula "8") (term "0")) + (rule "polySimp_mulComm0" (formula "8") (term "1,0,0")) + (rule "polySimp_rightDist" (formula "8") (term "1,0,0")) + (rule "polySimp_rightDist" (formula "8") (term "0,1,0,0")) + (rule "mul_literals" (formula "8") (term "1,0,1,0,0")) + (rule "polySimp_mulComm0" (formula "8") (term "0,0,1,0,0")) + (rule "polySimp_addComm0" (formula "8") (term "0,1,0,0")) + (rule "polySimp_addAssoc" (formula "8") (term "0,0")) + (rule "polySimp_elimSub" (formula "8") (term "2,1,0,2")) + (rule "polySimp_elimOneLeft0" (formula "8") (term "1,2,1,0,2")) + (rule "polySimp_addComm1" (formula "8") (term "2,1,0,2")) + (rule "polySimp_addLiterals" (formula "8") (term "0,2,1,0,2")) + (rule "add_zero_right" (formula "8") (term "0,2,1,0,2")) + (rule "ifthenelse_split_for" (formula "1") (userinteraction)) + (branch "f_n1_0 = 0 TRUE" + (rule "ifthenelse_split_for" (formula "9") (userinteraction)) + (branch "1 + (-1 + f_n1_0 * -1) + f_n2 * -1 = 0 TRUE" + (rule "eqSymm" (formula "7") (term "1,2")) + (rule "eqSymm" (formula "10")) + (rule "eqSymm" (formula "7") (term "0,0,2,2")) + (rule "eqSymm" (formula "3")) + (rule "polySimp_elimSub" (formula "7") (term "2,1,0,2,2")) + (rule "mul_literals" (formula "7") (term "1,2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "9") (term "0,0")) + (rule "polySimp_addComm0" (formula "8") (term "0")) + (rule "polySimp_addComm0" (formula "7") (term "2,1,0,2,2")) + (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_leqRight" (formula "9")) + (rule "mul_literals" (formula "1") (term "1,0,0")) + (rule "add_zero_right" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "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_leqRight" (formula "9")) + (rule "times_zero_1" (formula "1") (term "1,0,0")) + (rule "add_zero_right" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "applyEqRigid" (formula "6") (term "2,0,0,0") (ifseqformula "3")) + (rule "applyEqRigid" (formula "5") (term "0") (ifseqformula "3")) + (rule "qeq_literals" (formula "5")) + (rule "true_left" (formula "5")) + (rule "applyEqRigid" (formula "1") (term "0,0") (ifseqformula "3")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "applyEq" (formula "5") (term "0,2,1,0") (ifseqformula "3")) + (rule "add_zero_left" (formula "5") (term "2,1,0")) + (rule "applyEq" (formula "2") (term "0,0,0") (ifseqformula "3")) + (rule "times_zero_2" (formula "2") (term "0,0")) + (rule "add_zero_left" (formula "2") (term "0")) + (rule "polySimp_invertEq" (formula "2")) + (rule "times_zero_2" (formula "2") (term "1")) + (rule "polySimp_mulLiterals" (formula "2") (term "0")) + (rule "polySimp_elimOne" (formula "2") (term "0")) + (rule "applyEq" (formula "5") (term "2,1,0") (ifseqformula "2")) + (rule "applyEqRigid" (formula "7") (term "0,0") (ifseqformula "2")) + (rule "leq_literals" (formula "7") (term "0")) + (builtin "One Step Simplification" (formula "7")) + (rule "closeFalse" (formula "7")) + ) + (branch "1 + (-1 + f_n1_0 * -1) + f_n2 * -1 = 0 FALSE" + (rule "exRight" (formula "10") (inst "t=f_y") (userinteraction)) + (rule "replace_known_left" (formula "10") (term "0") (ifseqformula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "10") (userinteraction)) + (rule "applyEqRigid" (formula "10") (term "0,2") (ifseqformula "1") (userinteraction)) + (rule "add_zero_left" (formula "10") (term "2") (userinteraction)) + (rule "dominatesDepthDef" (formula "10") (inst "ov=ov") (userinteraction)) + (rule "close" (formula "10") (ifseqformula "6") (userinteraction)) + ) + ) + (branch "f_n1_0 = 0 FALSE" + (rule "exLeft" (formula "1") (inst "sk=ov_0") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "polySimp_elimSub" (formula "2") (term "2")) + (rule "polySimp_pullOutFactor1b" (formula "2") (term "2")) + (rule "polySimp_elimOneLeft0" (formula "2") (term "1,2")) + (rule "polySimp_addComm0" (formula "2") (term "2")) + (rule "add_literals" (formula "2") (term "0,2") (userinteraction)) + (rule "add_zero_left" (formula "2") (term "2") (userinteraction)) + (rule "ifthenelse_split_for" (formula "10") (userinteraction)) + (branch "1 + (-1 + f_n1_0 * -1) + f_n2 * -1 = 0 TRUE" + (rule "eqSymm" (formula "11")) + (rule "eqSymm" (formula "7") (term "1,2")) + (rule "eqSymm" (formula "7") (term "0,0,2,2")) + (rule "eqSymm" (formula "2")) + (rule "polySimp_elimSub" (formula "7") (term "2,1,0,2,2")) + (rule "mul_literals" (formula "7") (term "1,2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "9") (term "0")) + (rule "polySimp_addComm0" (formula "10") (term "0,0")) + (rule "polySimp_addComm0" (formula "7") (term "2,1,0,2,2")) + (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_leqRight" (formula "9")) + (rule "times_zero_1" (formula "1") (term "1,0,0")) + (rule "add_zero_right" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "inEqSimp_leqRight" (formula "9")) + (rule "times_zero_1" (formula "1") (term "1,0,0")) + (rule "add_zero_right" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "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 "polySimp_sepNegMonomial" (formula "2")) + (rule "polySimp_mulLiterals" (formula "2") (term "0")) + (rule "polySimp_elimOne" (formula "2") (term "0")) + (rule "applyEq" (formula "8") (term "0,0") (ifseqformula "2")) + (rule "applyEq" (formula "6") (term "2,1,0,0") (ifseqformula "2")) + (rule "applyEq" (formula "11") (term "1,2") (ifseqformula "2")) + (rule "applyEq" (formula "6") (term "1,2,1,0") (ifseqformula "2")) + (rule "polySimp_pullOutFactor1" (formula "6") (term "2,1,0")) + (rule "add_literals" (formula "6") (term "1,2,1,0")) + (rule "times_zero_1" (formula "6") (term "2,1,0")) + (rule "applyEqRigid" (formula "1") (term "1,0") (ifseqformula "2")) + (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 "1,2,1,0,2,2") (ifseqformula "1")) + (rule "applyEq" (formula "7") (term "0,0,2") (ifseqformula "1")) + (rule "polySimp_homoEq" (formula "7") (term "0,2")) + (rule "polySimp_mulLiterals" (formula "7") (term "1,0,0,2")) + (rule "polySimp_elimOne" (formula "7") (term "1,0,0,2")) + (rule "polySimp_sepPosMonomial" (formula "7") (term "0,2")) + (rule "mul_literals" (formula "7") (term "1,0,2")) + (rule "inEqSimp_invertInEq0" (formula "7") (term "0")) + (rule "times_zero_2" (formula "7") (term "1,0")) + (rule "polySimp_mulLiterals" (formula "7") (term "0,0")) + (rule "polySimp_elimOne" (formula "7") (term "0,0")) + (rule "replace_known_left" (formula "7") (term "0") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "7")) + (rule "closeFalse" (formula "7")) + ) + (branch "1 + (-1 + f_n1_0 * -1) + f_n2 * -1 = 0 FALSE" + (rule "exRight" (formula "11") (inst "t=ov_0") (userinteraction)) + (rule "replace_known_left" (formula "11") (term "0") (ifseqformula "1") (userinteraction)) + (builtin "One Step Simplification" (formula "11") (userinteraction)) + (rule "allLeft" (formula "4") (inst "t=ov_0") (userinteraction)) + (rule "replace_known_left" (formula "4") (term "0,0") (ifseqformula "2") (userinteraction)) + (rule "replace_known_right" (formula "4") (term "1") (ifseqformula "12") (userinteraction)) + (builtin "One Step Simplification" (formula "4") (userinteraction)) + (rule "notLeft" (formula "4") (userinteraction)) + (rule "dominatesDepthDef" (formula "7") (inst "ov=ov") (userinteraction)) + (rule "close" (formula "7") (ifseqformula "6") (userinteraction)) + ) + ) + ) + ) +) +(branch "Use Case" + (rule "allLeft" (formula "1") (inst "t=f_n1") (userinteraction)) + (rule "impLeft" (formula "1") (userinteraction)) + (branch "Case 1" + (rule "dominatesDepthDef" (formula "2") (inst "ov=ov") (userinteraction)) + (rule "eqSymm" (formula "2") (term "1,2")) + (rule "eqSymm" (formula "2") (term "0,0,2,2")) + (rule "replace_known_left" (formula "1") (term "1,0,0,1,0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "1")) + (rule "polySimp_elimSub" (formula "2") (term "2,1,0,2,2")) + (rule "mul_literals" (formula "2") (term "1,2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "1") (term "2,1,0,1,0")) + (rule "polySimp_addComm0" (formula "2") (term "2,1,0,2,2")) + (rule "inEqSimp_geqRight" (formula "4")) + (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_contradEq3" (formula "3") (term "0,2") (ifseqformula "1")) + (rule "mul_literals" (formula "3") (term "1,0,0,0,2")) + (rule "add_literals" (formula "3") (term "0,0,0,2")) + (rule "qeq_literals" (formula "3") (term "0,0,2")) + (builtin "One Step Simplification" (formula "3")) + (rule "inEqSimp_subsumption0" (formula "3") (term "0") (ifseqformula "1")) + (rule "leq_literals" (formula "3") (term "0,0")) + (builtin "One Step Simplification" (formula "3")) + (rule "closeFalse" (formula "3")) + ) + (branch "Case 2" + (rule "allLeft" (formula "1") (inst "t=f_x") (userinteraction)) + (rule "replace_known_left" (formula "1") (term "0,0") (ifseqformula "4") (userinteraction)) + (rule "replace_known_left" (formula "1") (term "1,0") (ifseqformula "5") (userinteraction)) + (rule "replace_known_right" (formula "1") (term "1") (ifseqformula "6") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "closeFalse" (formula "1") (userinteraction)) + ) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesInverse.proof b/key.core/tacletProofs/universe/Taclet_dominatesInverse.proof new file mode 100644 index 00000000000..3b1edb43111 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesInverse.proof @@ -0,0 +1,96 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dominatesInverse" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "0") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_y,f_x") (userinteraction)) +(rule "notRight" (formula "2") (userinteraction)) +(rule "closePeerDominate" (formula "2") (ifseqformula "1") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesLargerDepth.proof b/key.core/tacletProofs/universe/Taclet_dominatesLargerDepth.proof new file mode 100644 index 00000000000..228c46b32b2 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesLargerDepth.proof @@ -0,0 +1,517 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesLargerDepth", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "1454") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_y,f_x,f_m,f_n,f_z")) +(rule "orRight" (formula "2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "notRight" (formula "3")) +(rule "andLeft" (formula "1")) +(rule "int_induction" (inst "b=(\\forall java.lang.Object o; + (( ( (gt(n, Z(0(#)))<> + & dominatesDepth(o, f_z, add(f_n, n))<>)<> + & dominatesDepth(f_x, f_z, f_n)<>)<> + -> dominatesDepth(o, f_x, n)<>)<>))<>") (inst "nv=n") (userinteraction)) +(branch "Base Case" + (rule "allRight" (formula "4") (inst "sk=o_0") (userinteraction)) + (rule "greater_literals" (formula "4") (term "0,0,0")) + (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "2"))) + (rule "closeTrue" (formula "4") (userinteraction)) +) +(branch "Step Case" + (rule "allRight" (formula "4") (inst "sk=n_0") (userinteraction)) + (rule "impRight" (formula "4")) + (rule "andLeft" (formula "1")) + (rule "allRight" (formula "6") (inst "sk=o_0") (userinteraction)) + (rule "impRight" (formula "6")) + (rule "andLeft" (formula "1")) + (rule "andLeft" (formula "1")) + (rule "polySimp_addComm0" (formula "1") (term "0")) + (rule "inEqSimp_gtToGeq" (formula "1")) + (rule "mul_literals" (formula "1") (term "1,0,0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "replace_known_left" (formula "3") (term "1,0,0") (ifseqformula "5") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) + (rule "geq_to_lt_alt" (formula "2") (userinteraction)) + (rule "orLeft" (formula "2") (userinteraction)) + (branch "n_0 > 0" + (rule "dominatesDepthDef" (formula "1") (inst "ov=ov") (userinteraction)) + (rule "ifthenelse_split_for" (formula "1") (userinteraction)) + (branch "f_n + (n_0 + 1) ≤ 0 TRUE" + (rule "closeFalse" (formula "2") (userinteraction)) + ) + (branch "f_n + (n_0 + 1) ≤ 0 FALSE" + (rule "polySimp_homoEq" (formula "1") (term "0")) + (rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) + (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) + (rule "polySimp_mulComm0" (formula "1") (term "1,1,0,0")) + (rule "polySimp_mulComm0" (formula "1") (term "0,1,0,0")) + (rule "polySimp_rightDist" (formula "1") (term "1,1,0,0")) + (rule "mul_literals" (formula "1") (term "1,1,1,0,0")) + (rule "polySimp_mulComm0" (formula "1") (term "0,1,1,0,0")) + (rule "polySimp_addComm0" (formula "1") (term "1,1,0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "1,0,0")) + (rule "polySimp_addComm0" (formula "1") (term "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 "add_zero_left" (formula "1") (term "0,0,0")) + (rule "polySimp_sepNegMonomial" (formula "1") (term "0")) + (rule "polySimp_mulLiterals" (formula "1") (term "0,0")) + (rule "polySimp_elimOne" (formula "1") (term "0,0")) + (rule "ifthenelse_split_for" (formula "1") (userinteraction)) + (branch "n_0 = f_n * -1 TRUE" + (rule "dominatesDepthDef" (formula "6") (inst "ov=ov") (userinteraction)) + (rule "eqSymm" (formula "2")) + (rule "eqSymm" (formula "6") (term "1,2")) + (rule "eqSymm" (formula "6") (term "0,0,2,2")) + (rule "replace_known_left" (formula "4") (term "0,0,0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "4")) + (rule "polySimp_elimSub" (formula "10") (term "2")) + (rule "polySimp_elimSub" (formula "6") (term "2,1,0,2,2")) + (rule "mul_literals" (formula "6") (term "1,2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "9") (term "2")) + (rule "polySimp_addComm0" (formula "8") (term "1,0")) + (rule "polySimp_addComm0" (formula "6") (term "2,1,0,2,2")) + (rule "polySimp_addAssoc" (formula "8") (term "0")) + (rule "polySimp_addComm0" (formula "8") (term "0,0")) + (rule "inEqSimp_gtToGeq" (formula "3")) + (rule "times_zero_1" (formula "3") (term "1,0,0")) + (rule "add_zero_right" (formula "3") (term "0,0")) + (rule "inEqSimp_gtToGeq" (formula "5")) + (rule "polySimp_mulComm0" (formula "5") (term "1,0,0")) + (rule "polySimp_addComm1" (formula "5") (term "0")) + (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 "polySimp_addAssoc" (formula "1") (term "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 "applyEqRigid" (formula "9") (term "1,2") (ifseqformula "2")) + (rule "applyEq" (formula "5") (term "2,1,0") (ifseqformula "2")) + (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "2")) + (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 "6") (term "0,1,2") (ifseqformula "2")) + (rule "applyEq" (formula "3") (term "1,0") (ifseqformula "1")) + (rule "applyEqRigid" (formula "4") (term "1,2,0,0") (ifseqformula "1")) + (rule "polySimp_pullOutFactor1" (formula "4") (term "2,0,0")) + (rule "add_literals" (formula "4") (term "1,2,0,0")) + (rule "times_zero_1" (formula "4") (term "2,0,0")) + (rule "inEqSimp_sepNegMonomial1" (formula "5")) + (rule "polySimp_mulLiterals" (formula "5") (term "0")) + (rule "polySimp_elimOne" (formula "5") (term "0")) + (rule "inEqSimp_sepNegMonomial1" (formula "3")) + (rule "polySimp_mulLiterals" (formula "3") (term "0")) + (rule "polySimp_elimOne" (formula "3") (term "0")) + (rule "inEqSimp_contradEq3" (formula "6") (term "0,2") (ifseqformula "3")) + (rule "mul_literals" (formula "6") (term "1,0,0,0,2")) + (rule "add_literals" (formula "6") (term "0,0,0,2")) + (rule "qeq_literals" (formula "6") (term "0,0,2")) + (builtin "One Step Simplification" (formula "6")) + (rule "inEqSimp_subsumption0" (formula "6") (term "0") (ifseqformula "3")) + (rule "leq_literals" (formula "6") (term "0,0")) + (builtin "One Step Simplification" (formula "6")) + (rule "closeFalse" (formula "6")) + ) + (branch "n_0 = f_n * -1 FALSE" + (rule "exLeft" (formula "1") (inst "sk=ov_0") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "polySimp_elimSub" (formula "2") (term "2")) + (rule "polySimp_elimOneLeft0" (formula "2") (term "1,2")) + (rule "polySimp_addAssoc" (formula "2") (term "0,2")) + (rule "polySimp_addLiterals" (formula "2") (term "2")) + (rule "add_zero_right" (formula "2") (term "2")) + (rule "replace_known_left" (formula "4") (term "0,0,0") (ifseqformula "3") (userinteraction)) + (builtin "One Step Simplification" (formula "4") (userinteraction)) + (rule "allLeft" (formula "4") (inst "t=ov_0") (userinteraction)) + (rule "replace_known_left" (formula "4") (term "0") (ifseqformula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "4") (userinteraction)) + (rule "dominatesDepthDef" (formula "11") (inst "ov=ov") (userinteraction)) + (rule "ifthenelse_split_for" (formula "11") (userinteraction)) + (branch "n_0 + 1 ≤ 0 TRUE" + (rule "false_right" (formula "12")) + (rule "eqSymm" (formula "2")) + (rule "polySimp_elimSub" (formula "12") (term "2")) + (rule "polySimp_addComm0" (formula "11") (term "1,0")) + (rule "polySimp_addComm0" (formula "1") (term "0")) + (rule "polySimp_addAssoc" (formula "11") (term "0")) + (rule "polySimp_addComm0" (formula "11") (term "0,0")) + (rule "inEqSimp_leqRight" (formula "11")) + (rule "times_zero_1" (formula "1") (term "1,0,0")) + (rule "add_zero_right" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "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_gtToGeq" (formula "8")) + (rule "polySimp_mulComm0" (formula "8") (term "1,0,0")) + (rule "polySimp_addComm1" (formula "8") (term "0")) + (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 "inEqSimp_sepPosMonomial0" (formula "2")) + (rule "mul_literals" (formula "2") (term "1")) + (rule "inEqSimp_sepPosMonomial1" (formula "1")) + (rule "inEqSimp_sepNegMonomial1" (formula "8")) + (rule "polySimp_mulLiterals" (formula "8") (term "0")) + (rule "polySimp_elimOne" (formula "8") (term "0")) + (rule "inEqSimp_sepPosMonomial1" (formula "5")) + (rule "mul_literals" (formula "5") (term "1")) + (rule "inEqSimp_strengthen1" (formula "1") (ifseqformula "11")) + (rule "inEqSimp_contradEq7" (formula "11") (ifseqformula "1")) + (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 "leq_literals" (formula "11") (term "0")) + (builtin "One Step Simplification" (formula "11")) + (rule "false_right" (formula "11")) + (rule "inEqSimp_contradInEq0" (formula "5") (ifseqformula "2")) + (rule "qeq_literals" (formula "5") (term "0")) + (builtin "One Step Simplification" (formula "5")) + (rule "closeFalse" (formula "5")) + ) + (branch "n_0 + 1 ≤ 0 FALSE" + (rule "ifthenelse_split_for" (formula "12") (userinteraction)) + (branch "n_0 + 1 = 1 TRUE" + (rule "eqSymm" (formula "2")) + (rule "eqSymm" (formula "13")) + (rule "polySimp_homoEq" (formula "1")) + (rule "polySimp_elimSub" (formula "14") (term "2")) + (rule "polySimp_mulComm0" (formula "1") (term "1,0")) + (rule "polySimp_addComm0" (formula "12") (term "0")) + (rule "polySimp_addComm0" (formula "11") (term "1,0")) + (rule "polySimp_addComm0" (formula "1") (term "1,1,0")) + (rule "polySimp_rightDist" (formula "1") (term "1,0")) + (rule "mul_literals" (formula "1") (term "0,1,0")) + (rule "polySimp_addAssoc" (formula "11") (term "0")) + (rule "polySimp_addComm0" (formula "11") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "inEqSimp_leqRight" (formula "12")) + (rule "times_zero_1" (formula "1") (term "1,0,0")) + (rule "add_zero_right" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "inEqSimp_gtToGeq" (formula "8")) + (rule "polySimp_mulComm0" (formula "8") (term "1,0,0")) + (rule "polySimp_addComm1" (formula "8") (term "0")) + (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 "inEqSimp_leqRight" (formula "12")) + (rule "times_zero_1" (formula "1") (term "1,0,0")) + (rule "add_zero_right" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "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 "polySimp_invertEq" (formula "3")) + (rule "polySimp_mulLiterals" (formula "3") (term "0")) + (rule "times_zero_2" (formula "3") (term "1")) + (rule "polySimp_elimOne" (formula "3") (term "0")) + (rule "applyEq" (formula "8") (term "2,1,0") (ifseqformula "3")) + (rule "applyEq" (formula "5") (term "1,2") (ifseqformula "3")) + (rule "add_zero_right" (formula "5") (term "2")) + (rule "applyEqRigid" (formula "7") (term "2") (ifseqformula "3")) + (rule "applyEq" (formula "6") (term "1,0") (ifseqformula "3")) + (rule "add_zero_right" (formula "6") (term "0")) + (rule "qeq_literals" (formula "6")) + (rule "closeFalse" (formula "6")) + ) + (branch "n_0 + 1 = 1 FALSE" + (rule "exRight" (formula "13") (inst "t=ov_0") (userinteraction)) + (rule "replace_known_left" (formula "13") (term "0") (ifseqformula "1") (userinteraction)) + (rule "polySimp_elimSub" (formula "13") (term "2,1")) + (rule "polySimp_pullOutFactor1b" (formula "13") (term "2,1")) + (rule "polySimp_elimOneLeft0" (formula "13") (term "1,2,1")) + (rule "polySimp_addComm0" (formula "13") (term "2,1")) + (rule "cut_direct" (formula "13") (term "1")) + (branch "CUT: dominatesDepth(ov_0, f_x, 1 + -1 + n_0) TRUE" + (rule "add_literals" (formula "1") (term "0,2")) + (rule "add_zero_left" (formula "1") (term "2")) + (builtin "One Step Simplification" (formula "13")) + (rule "closeTrue" (formula "13") (userinteraction)) + ) + (branch "CUT: dominatesDepth(ov_0, f_x, 1 + -1 + n_0) FALSE" + (rule "add_literals" (formula "13") (term "0,2")) + (rule "add_zero_left" (formula "13") (term "2")) + (rule "close" (formula "13") (ifseqformula "4")) + ) + ) + ) + ) + ) + ) + (branch "n_0 = 0" + (rule "applyEqRigid" (formula "7") (term "0,2") (ifseqformula "2") (userinteraction)) + (rule "applyEqRigid" (formula "1") (term "0,1,2") (ifseqformula "2") (userinteraction)) + (rule "add_literals" (formula "1") (term "1,2")) + (rule "polySimp_addComm0" (formula "1") (term "2")) + (rule "add_zero_left" (formula "7") (term "2")) + (rule "applyEqRigid" (formula "3") (term "1,2,1,0,0") (ifseqformula "2") (userinteraction)) + (rule "applyEqRigid" (formula "3") (term "2,1,0") (ifseqformula "2") (userinteraction)) + (rule "inEqSimp_gtToGeq" (formula "3") (term "0,0,0")) + (rule "times_zero_1" (formula "3") (term "1,0,0,0,0,0")) + (rule "add_zero_right" (formula "3") (term "0,0,0,0,0")) + (rule "applyEq" (formula "3") (term "1,0,0,0,0") (ifseqformula "2")) + (rule "dominatesDepthDef" (formula "7") (inst "ov=ov") (userinteraction)) + (builtin "One Step Simplification" (formula "7") (userinteraction)) + (rule "leq_literals" (formula "7") (term "0")) + (builtin "One Step Simplification" (formula "7")) + (rule "add_zero_right" (formula "3") (term "2,1,0,0")) + (rule "nnf_imp2or" (formula "3") (term "0")) + (rule "nnf_notAnd" (formula "3") (term "0,0")) + (rule "inEqSimp_notGeq" (formula "3") (term "0,0,0")) + (rule "commute_or_2" (formula "3") (term "0")) + (rule "commute_or" (formula "3") (term "0,0")) + (rule "commute_or_2" (formula "3") (term "0")) + (rule "cut_direct" (formula "3") (term "1,0")) + (branch "CUT: 1 + -1 * 0 + (-1 + 0) ≤ 0 TRUE" + (builtin "One Step Simplification" (formula "4")) + (rule "true_left" (formula "4")) + (rule "mul_literals" (formula "3") (term "1,0,0")) + (rule "add_literals" (formula "3") (term "1,0")) + (rule "add_literals" (formula "3") (term "0,0")) + (rule "add_literals" (formula "3") (term "0")) + (rule "leq_literals" (formula "3")) + (rule "true_left" (formula "3")) + (rule "dominatesDepthDef" (formula "1") (inst "ov=ov") (userinteraction)) + (rule "ifthenelse_split_for" (formula "1") (userinteraction)) + (branch "1 + f_n ≤ 0 TRUE" + (rule "closeFalse" (formula "2") (userinteraction)) + ) + (branch "1 + f_n ≤ 0 FALSE" + (rule "ifthenelse_split_for" (formula "1") (userinteraction)) + (branch "1 + f_n = 1 TRUE" + (rule "polySimp_homoEq" (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_sepNegMonomial" (formula "1")) + (rule "polySimp_mulLiterals" (formula "1") (term "0")) + (rule "polySimp_elimOne" (formula "1") (term "0")) + (rule "add_literals" (formula "1") (term "1") (userinteraction)) + (rule "applyEqRigid" (formula "5") (term "2") (ifseqformula "1") (userinteraction)) + (rule "dominatesDepthDef" (formula "5") (inst "ov=ov") (userinteraction)) + (rule "leq_literals" (formula "5") (term "0")) + (builtin "One Step Simplification" (formula "5")) + (rule "closeFalse" (formula "5")) + ) + (branch "1 + f_n = 1 FALSE" + (rule "exLeft" (formula "1") (inst "sk=ov_0") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "polySimp_elimSub" (formula "2") (term "2")) + (rule "mul_literals" (formula "2") (term "1,2")) + (rule "polySimp_addComm1" (formula "2") (term "2")) + (rule "add_literals" (formula "2") (term "0,2") (userinteraction)) + (rule "add_zero_left" (formula "2") (term "2") (userinteraction)) + (rule "dominatesSameDepth" (formula "5") (ifseqformula "2") (userinteraction)) + (rule "applyEqReverse" (formula "10") (term "0,1") (ifseqformula "5") (userinteraction)) + (rule "close" (formula "10") (ifseqformula "1") (userinteraction)) + ) + ) + ) + (branch "CUT: 1 + -1 * 0 + (-1 + 0) ≤ 0 FALSE" + (builtin "One Step Simplification" (formula "3")) + (rule "add_literals" (formula "7") (term "1,0")) + (rule "mul_literals" (formula "7") (term "1,0,0")) + (rule "polySimp_addLiterals" (formula "7") (term "0")) + (rule "add_literals" (formula "7") (term "0")) + (rule "leq_literals" (formula "7")) + (rule "closeTrue" (formula "7")) + ) + ) +) +(branch "Use Case" + (rule "allLeft" (formula "1") (inst "t=sub(f_m, f_n)") (userinteraction)) + (rule "impLeft" (formula "1") (userinteraction)) + (branch "Case 1" + (rule "sub" (formula "5") (term "0") (userinteraction)) + (rule "polySimp_elimNeg" (formula "5") (term "1,0")) + (rule "inEqSimp_geqRight" (formula "5")) + (rule "mul_literals" (formula "1") (term "1,0,0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "0")) + (rule "inEqSimp_sepNegMonomial0" (formula "1")) + (rule "polySimp_mulLiterals" (formula "1") (term "0")) + (rule "polySimp_elimOne" (formula "1") (term "0")) + (rule "geq_to_leq" (formula "1") (userinteraction)) + (rule "inEqSimp_gtToGeq" (formula "3") (userinteraction)) + (rule "polySimp_mulComm0" (formula "3") (term "1,0,0")) + (rule "polySimp_addComm1" (formula "3") (term "0")) + (rule "dominatesDepthDef" (formula "4") (inst "ov=ov") (userinteraction)) + (rule "dominatesDepthDef" (formula "5") (inst "ov=ov") (userinteraction)) + (rule "eqSymm" (formula "4") (term "1,2")) + (rule "eqSymm" (formula "4") (term "0,0,2,2")) + (rule "eqSymm" (formula "5") (term "1,2")) + (rule "eqSymm" (formula "5") (term "0,0,2,2")) + (rule "polySimp_elimSub" (formula "6") (term "2")) + (rule "polySimp_elimSub" (formula "5") (term "2,1,0,2,2")) + (rule "mul_literals" (formula "5") (term "1,2,1,0,2,2")) + (rule "polySimp_elimSub" (formula "4") (term "2,1,0,2,2")) + (rule "mul_literals" (formula "4") (term "1,2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "5") (term "2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "4") (term "2,1,0,2,2")) + (rule "inEqSimp_gtToGeq" (formula "2") (term "0,0,0,0,1,0")) + (rule "times_zero_1" (formula "2") (term "1,0,0,0,0,0,0,1,0")) + (rule "add_zero_right" (formula "2") (term "0,0,0,0,0,0,1,0")) + (rule "inEqSimp_commuteLeq" (formula "1")) + (rule "inEqSimp_sepNegMonomial1" (formula "3")) + (rule "polySimp_mulLiterals" (formula "3") (term "0")) + (rule "polySimp_elimOne" (formula "3") (term "0")) + (rule "inEqSimp_sepPosMonomial1" (formula "2") (term "0,0,0,0,1,0")) + (rule "mul_literals" (formula "2") (term "1,0,0,0,0,1,0")) + (rule "inEqSimp_contradInEq1" (formula "3") (ifseqformula "1")) + (rule "andLeft" (formula "3")) + (rule "inEqSimp_homoInEq1" (formula "3")) + (rule "polySimp_mulComm0" (formula "3") (term "1,0")) + (rule "polySimp_rightDist" (formula "3") (term "1,0")) + (rule "mul_literals" (formula "3") (term "0,1,0")) + (rule "polySimp_addAssoc" (formula "3") (term "0")) + (rule "polySimp_addComm1" (formula "3") (term "0,0")) + (rule "add_literals" (formula "3") (term "0,0,0")) + (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 "leq_literals" (formula "3")) + (rule "closeFalse" (formula "3")) + ) + (branch "Case 2" + (rule "add_greater" (formula "1") (term "0,0,0,0") (inst "i1=f_n") (userinteraction)) + (rule "polySimp_elimSub" (formula "1") (term "1,0,0,0,0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "0,0,0,0,0")) + (rule "polySimp_addComm0" (formula "1") (term "0,0,0,0,0,0")) + (rule "polySimp_pullOutFactor1b" (formula "1") (term "0,0,0,0,0")) + (rule "add_literals" (formula "1") (term "1,1,0,0,0,0,0")) + (rule "times_zero_1" (formula "1") (term "1,0,0,0,0,0")) + (rule "add_zero_right" (formula "1") (term "0,0,0,0,0")) + (rule "add_zero_right" (formula "1") (term "1,0,0,0,0") (userinteraction)) + (rule "replace_known_left" (formula "1") (term "0,0,0,0") (ifseqformula "3") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "4")) (userinteraction)) + (rule "polySimp_elimSub" (formula "1") (term "1,2,0,0") (userinteraction)) + (rule "polySimp_addAssoc" (formula "1") (term "2,0,0") (userinteraction)) + (rule "switch_params" (formula "1") (term "0,2,0,0") (userinteraction)) + (rule "polySimp_addComm1" (formula "1") (term "2,0,0") (userinteraction)) + (rule "switch_params" (formula "1") (term "2,0,0") (userinteraction)) + (rule "polySimp_addAssoc" (formula "1") (term "2,0,0") (userinteraction)) + (rule "switch_params" (formula "1") (term "2,0,0") (userinteraction)) + (rule "polySimp_addAssoc" (formula "1") (term "2,0,0") (userinteraction)) + (rule "polySimp_pullOutFactor2" (formula "1") (term "0,2,0,0")) + (rule "add_literals" (formula "1") (term "1,0,2,0,0")) + (rule "times_zero_1" (formula "1") (term "0,2,0,0") (userinteraction)) + (rule "add_zero_left" (formula "1") (term "2,0,0") (userinteraction)) + (rule "allLeft" (formula "1") (inst "t=f_y") (userinteraction)) + (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "6") (userinteraction)) + (rule "replace_known_right" (formula "1") (term "1") (ifseqformula "7") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "closeFalse" (formula "1") (userinteraction)) + ) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesNegNotEqual.proof b/key.core/tacletProofs/universe/Taclet_dominatesNegNotEqual.proof new file mode 100644 index 00000000000..a41e96097ba --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesNegNotEqual.proof @@ -0,0 +1,98 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 9000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dominatesNegNotEqual" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "10") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_y,f_z,f_x")) +(rule "impRight" (formula "2")) +(rule "eqSymm" (formula "2")) +(rule "applyEqRigid" (formula "1") (term "1") (ifseqformula "2")) +(rule "close" (formula "3") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesNegTransitive.proof b/key.core/tacletProofs/universe/Taclet_dominatesNegTransitive.proof new file mode 100644 index 00000000000..c9cd0dfac8c --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesNegTransitive.proof @@ -0,0 +1,97 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 9000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dominatesNegTransitive" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "11") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_z,f_y,f_x")) +(rule "impRight" (formula "2")) +(rule "dominatesTransitive" (formula "2") (ifseqformula "1")) +(rule "close" (formula "4") (ifseqformula "2")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesNotEqual.proof b/key.core/tacletProofs/universe/Taclet_dominatesNotEqual.proof new file mode 100644 index 00000000000..fe01bc7861a --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesNotEqual.proof @@ -0,0 +1,98 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dominatesNotEqual" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "3") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_y")) +(rule "notRight" (formula "2")) +(rule "applyEqRigid" (formula "1") (term "0") (ifseqformula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "closeFalse" (formula "1") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesNotEqualLeft.proof b/key.core/tacletProofs/universe/Taclet_dominatesNotEqualLeft.proof new file mode 100644 index 00000000000..85aa9c9b2ad --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesNotEqualLeft.proof @@ -0,0 +1,98 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dominatesNotEqualLeft" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "41") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_y,f_x")) +(rule "notRight" (formula "2")) +(rule "applyEqReverse" (formula "1") (term "0") (ifseqformula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "closeFalse" (formula "1") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSameDepth.proof b/key.core/tacletProofs/universe/Taclet_dominatesSameDepth.proof new file mode 100644 index 00000000000..4347fba0d61 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesSameDepth.proof @@ -0,0 +1,263 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesSameDepth", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "268") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_y,f_z,f_n")) +(rule "orRight" (formula "2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "notRight" (formula "3")) +(rule "int_induction" (inst "b=(\\forall java.lang.Object o1; + (\\forall java.lang.Object o2; + (( ( dominatesDepth(o1, f_z, f_n)<> + & dominatesDepth(o2, f_z, f_n)<>)<> + -> (o1 = o2)<>)<>))<>)<>") (inst "nv=f_n") (userinteraction)) +(branch "Base Case" + (rule "allRight" (formula "3") (inst "sk=o1_0") (userinteraction)) + (rule "allRight" (formula "3") (inst "sk=o2_0") (userinteraction)) + (rule "impRight" (formula "3")) + (rule "andLeft" (formula "1")) + (rule "dominatesDepthDef" (formula "1") (inst "ov=ov") (userinteraction)) + (rule "leq_literals" (formula "1") (term "0")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) +) +(branch "Step Case" + (rule "allRight" (formula "3") (inst "sk=f_n_0") (userinteraction)) + (rule "impRight" (formula "3")) + (rule "andLeft" (formula "1")) + (rule "swapQuantifiersAll" (formula "5") (userinteraction)) + (rule "allRight" (formula "5") (inst "sk=o2_0") (userinteraction)) + (rule "allRight" (formula "5") (inst "sk=o1_0") (userinteraction)) + (rule "impRight" (formula "5")) + (rule "andLeft" (formula "1")) + (rule "dominatesDepthDef" (formula "1") (inst "ov=ov") (userinteraction)) + (rule "dominatesDepthDef" (formula "2") (inst "ov=ov") (userinteraction)) + (rule "ifthenelse_split_for" (formula "1") (userinteraction)) + (branch "f_n_0 + 1 ≤ 0 TRUE" + (rule "closeFalse" (formula "2") (userinteraction)) + ) + (branch "f_n_0 + 1 ≤ 0 FALSE" + (rule "replace_known_right" (formula "2") (term "0") (ifseqformula "7") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (userinteraction)) + (rule "polySimp_homoEq" (formula "2") (term "0")) + (rule "polySimp_mulComm0" (formula "2") (term "1,0,0")) + (rule "polySimp_addComm0" (formula "2") (term "1,1,0,0")) + (rule "polySimp_rightDist" (formula "2") (term "1,0,0")) + (rule "mul_literals" (formula "2") (term "0,1,0,0")) + (rule "polySimp_addAssoc" (formula "2") (term "0,0")) + (rule "add_literals" (formula "2") (term "0,0,0")) + (rule "add_zero_left" (formula "2") (term "0,0")) + (rule "polySimp_invertEq" (formula "2") (term "0")) + (rule "mul_literals" (formula "2") (term "1,0")) + (rule "polySimp_mulLiterals" (formula "2") (term "0,0")) + (rule "polySimp_elimOne" (formula "2") (term "0,0")) + (rule "polySimp_elimSub" (formula "1") (term "2,1,0,2")) + (rule "mul_literals" (formula "1") (term "1,2,1,0,2")) + (rule "polySimp_addLiterals" (formula "1") (term "2,1,0,2")) + (rule "add_zero_right" (formula "1") (term "2,1,0,2")) + (rule "ifthenelse_split_for" (formula "2") (userinteraction)) + (branch "f_n_0 = 0 TRUE" + (rule "applyEqRigid" (formula "1") (term "0,0,0") (ifseqformula "2") (userinteraction)) + (rule "add_literals" (formula "1") (term "0,0")) + (builtin "One Step Simplification" (formula "1")) + (rule "eqSymm" (formula "1")) + (rule "applyEqRigid" (formula "9") (term "1") (ifseqformula "3") (userinteraction)) + (rule "applyEqReverse" (formula "9") (term "0") (ifseqformula "1") (userinteraction)) + (builtin "One Step Simplification" (formula "9") (userinteraction)) + (rule "closeTrue" (formula "9") (userinteraction)) + ) + (branch "f_n_0 = 0 FALSE" + (rule "ifthenelse_split_for" (formula "1") (userinteraction)) + (branch "f_n_0 + 1 = 1 TRUE" + (rule "exLeft" (formula "3") (inst "sk=ov_0")) + (rule "andLeft" (formula "3")) + (rule "eqSymm" (formula "12")) + (rule "eqSymm" (formula "6") (term "1,0,0")) + (rule "eqSymm" (formula "11")) + (rule "eqSymm" (formula "2")) + (rule "eqSymm" (formula "3")) + (rule "polySimp_homoEq" (formula "1")) + (rule "polySimp_elimSub" (formula "4") (term "2")) + (rule "mul_literals" (formula "4") (term "1,2")) + (rule "polySimp_addLiterals" (formula "4") (term "2")) + (rule "add_zero_right" (formula "4") (term "2")) + (rule "polySimp_mulComm0" (formula "1") (term "1,0")) + (rule "polySimp_addComm0" (formula "10") (term "0")) + (rule "polySimp_addComm0" (formula "1") (term "1,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 "add_zero_left" (formula "1") (term "0")) + (rule "inEqSimp_leqRight" (formula "10")) + (rule "times_zero_1" (formula "1") (term "1,0,0")) + (rule "add_zero_right" (formula "1") (term "0,0")) + (rule "polySimp_addAssoc" (formula "1") (term "0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "polySimp_invertEq" (formula "1")) + (rule "times_zero_2" (formula "1") (term "1")) + (rule "polySimp_mulLiterals" (formula "1") (term "0")) + (rule "polySimp_elimOne" (formula "1") (term "0")) + (rule "close" (formula "9") (ifseqformula "1")) + ) + (branch "f_n_0 + 1 = 1 FALSE" + (rule "exLeft" (formula "1") (inst "sk=ov_0") (userinteraction)) + (rule "exLeft" (formula "2") (inst "sk=ov_1") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "andLeft" (formula "3") (userinteraction)) + (rule "polySimp_elimSub" (formula "4") (term "2") (userinteraction)) + (rule "polySimp_addComm0" (formula "4") (term "2") (userinteraction)) + (rule "mul_literals" (formula "4") (term "0,2") (userinteraction)) + (rule "polySimp_addAssoc" (formula "4") (term "2") (userinteraction)) + (rule "polySimp_addComm0" (formula "4") (term "2") (userinteraction)) + (rule "polySimp_addComm0" (formula "4") (term "2") (userinteraction)) + (rule "polySimp_addComm0" (formula "4") (term "0,2") (userinteraction)) + (rule "polySimp_addComm1" (formula "4") (term "2") (userinteraction)) + (rule "polySimp_addComm0" (formula "4") (term "2") (userinteraction)) + (rule "rotate_params" (formula "4") (term "2") (userinteraction)) + (rule "add_literals" (formula "4") (term "1,2") (userinteraction)) + (rule "add_zero_right" (formula "4") (term "2") (userinteraction)) + (rule "instAll" (formula "4") (term "0") (ifseqformula "6") (userinteraction)) + (rule "instAll" (formula "2") (term "0") (ifseqformula "4") (userinteraction)) + (rule "replace_known_left" (formula "2") (term "0,0") (ifseqformula "6") (userinteraction)) + (rule "replace_known_left" (formula "2") (term "1,0") (ifseqformula "3") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (userinteraction)) + (rule "applyEqReverse" (formula "1") (term "0,1") (ifseqformula "2") (userinteraction)) + (rule "applyEqRigid" (formula "14") (term "0") (ifseqformula "1") (userinteraction)) + (rule "applyEqRigid" (formula "14") (term "1") (ifseqformula "4") (userinteraction)) + (builtin "One Step Simplification" (formula "14") (userinteraction)) + (rule "closeTrue" (formula "14") (userinteraction)) + ) + ) + ) +) +(branch "Use Case" + (rule "allLeft" (formula "1") (inst "t=f_n") (userinteraction)) + (rule "impLeft" (formula "1") (userinteraction)) + (branch "Case 1" + (rule "dominatesDepthDef" (formula "3") (inst "ov=ov") (userinteraction)) + (rule "eqSymm" (formula "5")) + (rule "eqSymm" (formula "1") (term "1,0,0,1,0")) + (rule "eqSymm" (formula "3") (term "1,2")) + (rule "eqSymm" (formula "3") (term "0,0,2,2")) + (rule "polySimp_elimSub" (formula "3") (term "2,1,0,2,2")) + (rule "mul_literals" (formula "3") (term "1,2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "3") (term "2,1,0,2,2")) + (rule "inEqSimp_geqRight" (formula "4")) + (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_contradEq3" (formula "4") (term "0,2") (ifseqformula "1")) + (rule "mul_literals" (formula "4") (term "1,0,0,0,2")) + (rule "add_literals" (formula "4") (term "0,0,0,2")) + (rule "qeq_literals" (formula "4") (term "0,0,2")) + (builtin "One Step Simplification" (formula "4")) + (rule "inEqSimp_subsumption0" (formula "4") (term "0") (ifseqformula "1")) + (rule "leq_literals" (formula "4") (term "0,0")) + (builtin "One Step Simplification" (formula "4")) + (rule "closeFalse" (formula "4")) + ) + (branch "Case 2" + (rule "instAll" (formula "3") (term "0") (ifseqformula "1") (userinteraction)) + (rule "allLeft" (formula "3") (inst "t=f_y") (userinteraction)) + (rule "replace_known_left" (formula "3") (term "0,0") (ifseqformula "5") (userinteraction)) + (rule "replace_known_left" (formula "3") (term "1,0") (ifseqformula "6") (userinteraction)) + (rule "replace_known_right" (formula "3") (term "1") (ifseqformula "7") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) + (rule "closeFalse" (formula "3") (userinteraction)) + ) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSameNotUndom.proof b/key.core/tacletProofs/universe/Taclet_dominatesSameNotUndom.proof new file mode 100644 index 00000000000..f90ba3e553c --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesSameNotUndom.proof @@ -0,0 +1,175 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dominatesSameNotUndom" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "250") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_y,f_z")) +(rule "orRight" (formula "2")) +(rule "notRight" (formula "2")) +(rule "notRight" (formula "3")) +(rule "undomDef" (formula "3") (userinteraction)) +(rule "andLeft" (formula "3")) +(rule "andLeft" (formula "3")) +(rule "notLeft" (formula "5")) +(rule "notLeft" (formula "3")) +(rule "notLeft" (formula "3")) +(rule "dominatesDef" (formula "1") (inst "n=n") (userinteraction)) +(rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) +(rule "dominatesDef" (formula "3") (inst "n=n") (userinteraction)) +(rule "dominatesDef" (formula "4") (inst "n=n") (userinteraction)) +(rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) +(rule "exLeft" (formula "2") (inst "sk=n_1") (userinteraction)) +(rule "cut" (inst "cutFormula=(n_0 = n_1)<>") (userinteraction)) +(branch "CUT: n_0 = n_1 TRUE" + (rule "applyEqRigid" (formula "2") (term "2") (ifseqformula "1") (userinteraction)) + (rule "dominatesSameDepth" (formula "2") (ifseqformula "2") (userinteraction)) + (rule "dominatesSameDepth" (formula "3") (ifseqformula "4") (userinteraction)) + (builtin "One Step Simplification" (formula "2")) + (rule "true_left" (formula "2")) + (rule "eqSymm" (formula "1")) + (rule "eqSymm" (formula "7")) + (rule "close" (formula "7") (ifseqformula "2")) +) +(branch "CUT: n_0 = n_1 FALSE" + (rule "cut" (inst "cutFormula=gt(n_0, n_1)<>") (userinteraction)) + (branch "CUT: n_0 > n_1 TRUE" + (rule "exRight" (formula "6") (inst "t=sub(n_0, n_1)") (userinteraction)) + (rule "dominatesLargerDepth" (formula "2") (ifseqformula "1") (ifseqformula "3") (userinteraction)) + (rule "close" (formula "7") (ifseqformula "2") (userinteraction)) + ) + (branch "CUT: n_0 > n_1 FALSE" + (rule "cut" (inst "cutFormula=gt(n_1, n_0)<>") (userinteraction)) + (branch "CUT: n_1 > n_0 TRUE" + (rule "dominatesLargerDepth" (formula "3") (ifseqformula "1") (ifseqformula "2") (userinteraction)) + (rule "exRight" (formula "7") (inst "t=sub(n_1, n_0)") (userinteraction)) + (rule "close" (formula "7") (ifseqformula "3")) + ) + (branch "CUT: n_1 > n_0 FALSE" + (rule "eqSymm" (formula "8")) + (rule "eqSymm" (formula "5")) + (rule "inEqSimp_gtRight" (formula "4")) + (rule "polySimp_mulComm0" (formula "1") (term "0,0")) + (rule "polySimp_addComm0" (formula "1") (term "0")) + (rule "inEqSimp_gtRight" (formula "4")) + (rule "polySimp_mulComm0" (formula "1") (term "0,0")) + (rule "inEqSimp_sepNegMonomial0" (formula "2")) + (rule "polySimp_mulLiterals" (formula "2") (term "0")) + (rule "polySimp_elimOne" (formula "2") (term "0")) + (rule "inEqSimp_sepPosMonomial0" (formula "1")) + (rule "polySimp_mulLiterals" (formula "1") (term "1")) + (rule "polySimp_elimOne" (formula "1") (term "1")) + (rule "inEqSimp_strengthen0" (formula "1") (ifseqformula "5")) + (rule "inEqSimp_contradEq3" (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 "qeq_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_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")) + ) + ) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetAllLocs.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetAllLocs.proof new file mode 100644 index 00000000000..04ec2bec40d --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesSetAllLocs.proof @@ -0,0 +1,101 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesSetAllLocs", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "0") + +(branch "dummy ID" +(rule "notRight" (formula "1") (newnames "f_o") (userinteraction)) +(rule "dominatesSetDef" (formula "1") (inst "o=o") (inst "f=f") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "allLeft" (formula "1") (inst "t=f_o") (userinteraction)) +(rule "dominatesSelf" (formula "1") (userinteraction)) +(rule "closeFalse" (formula "1") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetDisjoint.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetDisjoint.proof new file mode 100644 index 00000000000..53c605302aa --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesSetDisjoint.proof @@ -0,0 +1,182 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesSetDisjoint", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "174") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_s1,f_s2,f_o1,f_o2")) +(rule "orRight" (formula "2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "notRight" (formula "3")) +(rule "andLeft" (formula "1")) +(rule "disjointToElementOf" (formula "4") (inst "ov=ov") (inst "fv=fv") (userinteraction)) +(rule "allRight" (formula "4") (inst "sk=ov_0") (userinteraction)) +(rule "allRight" (formula "4") (inst "sk=fv_0") (userinteraction)) +(rule "orRight" (formula "4")) +(rule "notRight" (formula "4")) +(rule "notRight" (formula "5")) +(rule "dominatesSetElement" (formula "1") (ifseqformula "4") (userinteraction)) +(rule "dominatesSetElement" (formula "3") (ifseqformula "4") (userinteraction)) +(rule "hide_left" (formula "4") (userinteraction)) +(rule "hide_left" (formula "2") (userinteraction)) +(rule "hide_left" (formula "3") (userinteraction)) +(rule "hide_left" (formula "3") (userinteraction)) +(rule "undomDef" (formula "3") (userinteraction)) +(rule "andLeft" (formula "3")) +(rule "andLeft" (formula "3")) +(rule "notLeft" (formula "5")) +(rule "notLeft" (formula "3")) +(rule "notLeft" (formula "3")) +(rule "dominatesDef" (formula "1") (inst "n=n") (userinteraction)) +(rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) +(rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) +(rule "exLeft" (formula "2") (inst "sk=n_1") (userinteraction)) +(rule "dominatesDef" (formula "3") (inst "n=n") (userinteraction)) +(rule "dominatesDef" (formula "4") (inst "n=n") (userinteraction)) +(rule "cut" (inst "cutFormula=gt(n_0, n_1)<>") (userinteraction)) +(branch "CUT: n_0 > n_1 TRUE" + (rule "dominatesLargerDepth" (formula "2") (ifseqformula "1") (ifseqformula "3") (userinteraction)) + (rule "exRight" (formula "5") (inst "t=sub(n_0, n_1)") (userinteraction)) + (rule "close" (formula "5") (ifseqformula "2") (userinteraction)) +) +(branch "CUT: n_0 > n_1 FALSE" + (rule "cut" (inst "cutFormula=gt(n_1, n_0)<>") (userinteraction)) + (branch "CUT: n_1 > n_0 TRUE" + (rule "dominatesLargerDepth" (formula "3") (ifseqformula "1") (ifseqformula "2") (userinteraction)) + (rule "exRight" (formula "7") (inst "t=sub(n_1, n_0)") (userinteraction)) + (rule "closeAntec" (formula "3") (ifseqformula "7") (userinteraction)) + ) + (branch "CUT: n_1 > n_0 FALSE" + (rule "cut" (inst "cutFormula=(n_0 = n_1)<>") (userinteraction)) + (branch "CUT: n_0 = n_1 TRUE" + (rule "applyEqReverse" (formula "3") (term "2") (ifseqformula "1") (userinteraction)) + (rule "dominatesSameDepth" (formula "3") (ifseqformula "2") (userinteraction)) + (rule "eqSymm" (formula "3") (userinteraction)) + (rule "closeAntec" (formula "3") (ifseqformula "9") (userinteraction)) + ) + (branch "CUT: n_0 = n_1 FALSE" + (rule "eqSymm" (formula "8")) + (rule "eqSymm" (formula "3")) + (rule "inEqSimp_gtRight" (formula "4")) + (rule "polySimp_mulComm0" (formula "1") (term "0,0")) + (rule "inEqSimp_gtRight" (formula "5")) + (rule "polySimp_mulComm0" (formula "1") (term "0,0")) + (rule "polySimp_addComm0" (formula "1") (term "0")) + (rule "inEqSimp_sepPosMonomial0" (formula "2")) + (rule "polySimp_mulLiterals" (formula "2") (term "1")) + (rule "polySimp_elimOne" (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_strengthen1" (formula "1") (ifseqformula "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/tacletProofs/universe/Taclet_dominatesSetElement.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetElement.proof new file mode 100644 index 00000000000..bbdeec6bb6d --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesSetElement.proof @@ -0,0 +1,109 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesSetElement", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "159") + +(branch "dummy ID" +(rule "dominatesSetDef" (formula "1") (term "0,1,1") (newnames "f_x,f_o,f_f,f_s") (inst "o=o") (inst "f=f") (userinteraction)) +(rule "impRight" (formula "1")) +(rule "orRight" (formula "2")) +(rule "notRight" (formula "3")) +(rule "notLeft" (formula "2")) +(rule "notRight" (formula "3")) +(rule "nnf_imp2or" (formula "2") (term "0,0")) +(rule "commute_or" (formula "2") (term "0,0")) +(rule "allLeft" (formula "2") (inst "t=f_o")) +(rule "replace_known_right" (formula "2") (term "0,0") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "2")) +(rule "allLeft" (formula "2") (inst "t=f_f")) +(rule "notLeft" (formula "2")) +(rule "close" (formula "4") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetEmpty.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetEmpty.proof new file mode 100644 index 00000000000..b82240baf17 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesSetEmpty.proof @@ -0,0 +1,98 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesSetEmpty", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "1") + +(branch "dummy ID" +(rule "dominatesSetDef" (formula "1") (newnames "f_o") (inst "o=o") (inst "f=f") (userinteraction)) + (builtin "One Step Simplification" (formula "1")) +(rule "closeTrue" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetNotElement.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetNotElement.proof new file mode 100644 index 00000000000..4c49372aeef --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesSetNotElement.proof @@ -0,0 +1,101 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "dominatesSetNotElement" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "3") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_f,f_s")) +(rule "notRight" (formula "2")) +(rule "dominatesSetDef" (formula "1") (inst "o=o") (inst "f=f") (userinteraction)) +(rule "allLeft" (formula "1") (inst "t=f_x") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "allLeft" (formula "1") (inst "t=f_f") (userinteraction)) +(rule "notLeft" (formula "1") (userinteraction)) +(rule "closeAntec" (formula "3") (ifseqformula "4") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetSubset.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetSubset.proof new file mode 100644 index 00000000000..06831379988 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesSetSubset.proof @@ -0,0 +1,114 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesSetSubset", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "7") + +(branch "dummy ID" +(rule "dominatesSetDef" (formula "1") (term "0,0,1") (newnames "f_o,f_s2,f_s1") (inst "o=o") (inst "f=f") (userinteraction)) +(rule "dominatesSetDef" (formula "1") (term "0,0") (inst "o=o") (inst "f=f") (userinteraction)) +(rule "impRight" (formula "1")) +(rule "orRight" (formula "2")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "notRight" (formula "3")) +(rule "allRight" (formula "3") (inst "sk=o_0")) +(rule "allRight" (formula "3") (inst "sk=f_0")) +(rule "impRight" (formula "3")) +(rule "elementOfSubsetImpliesElementOfSuperset" (formula "1") (ifseqformula "2")) +(rule "nnf_imp2or" (formula "4") (term "0,0")) +(rule "commute_or" (formula "4") (term "0,0")) +(rule "allLeft" (formula "4") (inst "t=o_0")) +(rule "replace_known_right" (formula "4") (term "0,0") (ifseqformula "6")) + (builtin "One Step Simplification" (formula "4")) +(rule "allLeft" (formula "4") (inst "t=f_0")) +(rule "notLeft" (formula "4")) +(rule "close" (formula "6") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetTransitive.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetTransitive.proof new file mode 100644 index 00000000000..9a16d9e07c8 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesSetTransitive.proof @@ -0,0 +1,111 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesSetTransitive", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "5") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_s,f_y")) +(rule "orRight" (formula "2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "notRight" (formula "3")) +(rule "dominatesSetDef" (formula "2") (inst "o=o") (inst "f=f") (userinteraction)) +(rule "dominatesSetDef" (formula "3") (inst "o=o") (inst "f=f") (userinteraction)) +(rule "allRight" (formula "3") (inst "sk=o_0") (userinteraction)) +(rule "allRight" (formula "3") (inst "sk=f_0") (userinteraction)) +(rule "impRight" (formula "3") (userinteraction)) +(rule "instAll" (formula "1") (term "0") (ifseqformula "3") (userinteraction)) +(rule "instAll" (formula "2") (term "1") (ifseqformula "1") (userinteraction)) +(rule "replace_known_left" (formula "2") (term "0") (ifseqformula "3") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (userinteraction)) +(rule "dominatesTransitive" (formula "2") (ifseqformula "4") (userinteraction)) +(rule "closeAntec" (formula "2") (ifseqformula "7") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetUnion.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetUnion.proof new file mode 100644 index 00000000000..4b1874f0da3 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesSetUnion.proof @@ -0,0 +1,164 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesSetUnion", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "226") + +(branch "dummy ID" +(rule "dominatesSetDef" (formula "1") (term "0,1") (newnames "f_o,f_s1,f_s2") (inst "o=o") (inst "f=f") (userinteraction)) +(rule "dominatesSetDef" (formula "1") (term "1,1") (inst "o=o") (inst "f=f") (userinteraction)) +(rule "dominatesSetDef" (formula "1") (term "0") (inst "o=o") (inst "f=f") (userinteraction)) +(rule "elementOfUnion" (formula "1") (term "0,0,0,0")) +(rule "nnf_imp2or" (formula "1") (term "0,0,0")) +(rule "nnf_imp2or" (formula "1") (term "0,0,0,1")) +(rule "nnf_imp2or" (formula "1") (term "0,0,1,1")) +(rule "nnf_notOr" (formula "1") (term "0,0,0,0")) +(rule "equiv_right" (formula "1")) +(branch "Case '->'" + (rule "commute_or" (formula "1") (term "0,0")) + (rule "andRight" (formula "2")) + (branch "Case 1" + (rule "allRight" (formula "2") (inst "sk=o_0")) + (rule "allRight" (formula "2") (inst "sk=f_0")) + (rule "orRight" (formula "2")) + (rule "notRight" (formula "2")) + (rule "cnf_rightDist" (formula "2") (term "0,0")) + (rule "distr_forallAnd" (formula "2") (term "0")) + (rule "distr_forallAnd" (formula "2")) + (rule "andLeft" (formula "2")) + (rule "commute_or" (formula "3") (term "0,0")) + (rule "allLeft" (formula "2") (inst "t=o_0")) + (rule "replace_known_right" (formula "2") (term "0,0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "2")) + (rule "allLeft" (formula "2") (inst "t=f_0")) + (rule "notLeft" (formula "2")) + (rule "close" (formula "5") (ifseqformula "1")) + ) + (branch "Case 2" + (rule "allRight" (formula "2") (inst "sk=o_0")) + (rule "allRight" (formula "2") (inst "sk=f_0")) + (rule "orRight" (formula "2")) + (rule "notRight" (formula "2")) + (rule "cnf_rightDist" (formula "2") (term "0,0")) + (rule "distr_forallAnd" (formula "2") (term "0")) + (rule "distr_forallAnd" (formula "2")) + (rule "andLeft" (formula "2")) + (rule "commute_or" (formula "3") (term "0,0")) + (rule "allLeft" (formula "3") (inst "t=o_0")) + (rule "replace_known_right" (formula "3") (term "0,0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "3")) + (rule "allLeft" (formula "3") (inst "t=f_0")) + (rule "notLeft" (formula "3")) + (rule "close" (formula "5") (ifseqformula "1")) + ) +) +(branch "Case '<-'" + (rule "andLeft" (formula "1")) + (rule "allRight" (formula "3") (inst "sk=o_0")) + (rule "allRight" (formula "3") (inst "sk=f_0")) + (rule "orRight" (formula "3")) + (rule "commute_or" (formula "1") (term "0,0")) + (rule "commute_or" (formula "2") (term "0,0")) + (rule "allLeft" (formula "1") (inst "t=o_0")) + (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "1")) + (rule "allLeft" (formula "3") (inst "t=o_0")) + (rule "replace_known_right" (formula "3") (term "0,0") (ifseqformula "6")) + (builtin "One Step Simplification" (formula "3")) + (rule "allLeft" (formula "1") (inst "t=f_0")) + (rule "notLeft" (formula "1")) + (rule "replace_known_right" (formula "6") (term "0,0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "6")) + (rule "notRight" (formula "6")) + (rule "allLeft" (formula "4") (inst "t=f_0")) + (rule "notLeft" (formula "4")) + (rule "close" (formula "6") (ifseqformula "1")) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSingleDepth.proof b/key.core/tacletProofs/universe/Taclet_dominatesSingleDepth.proof new file mode 100644 index 00000000000..3129dcf121a --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesSingleDepth.proof @@ -0,0 +1,150 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesSingleDepth", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "158") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "v_m,f_x,f_y,f_n")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "allRight" (formula "2") (inst "sk=v_m_0") (userinteraction)) +(rule "impRight" (formula "2")) +(rule "cut" (inst "cutFormula=gt(v_m_0, f_n)<>") (userinteraction)) +(branch "CUT: v_m_0 > f_n TRUE" + (rule "dominatesLargerDepth" (formula "2") (ifseqformula "1") (ifseqformula "3") (userinteraction)) + (rule "dominatesDepth2Dominates" (formula "2") (userinteraction)) + (rule "dominatesSelf" (formula "2") (term "1") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (userinteraction)) + (rule "closeFalse" (formula "2") (userinteraction)) +) +(branch "CUT: v_m_0 > f_n FALSE" + (rule "cut" (inst "cutFormula=lt(v_m_0, f_n)<>") (userinteraction)) + (branch "CUT: v_m_0 < f_n TRUE" + (rule "lt_to_gt" (formula "1") (userinteraction)) + (rule "dominatesLargerDepth" (formula "3") (ifseqformula "1") (ifseqformula "2") (userinteraction)) + (rule "dominatesDepth2Dominates" (formula "3") (userinteraction)) + (rule "dominatesSelf" (formula "3") (term "1") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) + (rule "closeFalse" (formula "3") (userinteraction)) + ) + (branch "CUT: v_m_0 < f_n FALSE" + (rule "inEqSimp_gtRight" (formula "4")) + (rule "polySimp_mulComm0" (formula "1") (term "0,0")) + (rule "inEqSimp_ltRight" (formula "4")) + (rule "polySimp_mulComm0" (formula "1") (term "0,0")) + (rule "inEqSimp_sepPosMonomial0" (formula "2")) + (rule "polySimp_mulLiterals" (formula "2") (term "1")) + (rule "polySimp_elimOne" (formula "2") (term "1")) + (rule "inEqSimp_sepPosMonomial1" (formula "1")) + (rule "polySimp_mulLiterals" (formula "1") (term "1")) + (rule "polySimp_elimOne" (formula "1") (term "1")) + (rule "inEqSimp_strengthen1" (formula "1") (ifseqformula "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/tacletProofs/universe/Taclet_dominatesTransitive.proof b/key.core/tacletProofs/universe/Taclet_dominatesTransitive.proof new file mode 100644 index 00000000000..5a62a97e9ed --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_dominatesTransitive.proof @@ -0,0 +1,108 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "dominatesTransitive", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "4") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_z,f_y")) +(rule "orRight" (formula "2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "notRight" (formula "3")) +(rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) +(rule "dominatesDef" (formula "1") (inst "n=n") (userinteraction)) +(rule "dominatesDef" (formula "3") (inst "n=n") (userinteraction)) +(rule "exLeft" (formula "2") (inst "sk=n_0") (userinteraction)) +(rule "exLeft" (formula "1") (inst "sk=n_1") (userinteraction)) +(rule "exRight" (formula "3") (inst "t=add(n_1, n_0)") (userinteraction)) +(rule "dominatesDepthTransitive" (formula "2") (ifseqformula "1") (userinteraction)) +(rule "close" (formula "4") (ifseqformula "2") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_owns2Dominates.proof b/key.core/tacletProofs/universe/Taclet_owns2Dominates.proof new file mode 100644 index 00000000000..3f90162903b --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_owns2Dominates.proof @@ -0,0 +1,105 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "owns2Dominates", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "17") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_y")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) +(rule "exRight" (formula "2") (inst "t=Z(1(#))") (userinteraction)) +(rule "dominatesDepthDef" (formula "2") (inst "ov=ov") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "1"))) +(rule "leq_literals" (formula "2") (term "0")) + (builtin "One Step Simplification" (formula "2")) +(rule "closeTrue" (formula "2")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_owns2DominatesLeft.proof b/key.core/tacletProofs/universe/Taclet_owns2DominatesLeft.proof new file mode 100644 index 00000000000..817aea168b1 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_owns2DominatesLeft.proof @@ -0,0 +1,101 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "owns2DominatesLeft", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "51") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_y")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "eqSymm" (formula "1") (userinteraction)) +(rule "owns2Dominates" (formula "1") (userinteraction)) +(rule "closeAntec" (formula "1") (ifseqformula "3") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_ownsSelf.proof b/key.core/tacletProofs/universe/Taclet_ownsSelf.proof new file mode 100644 index 00000000000..e77b9f6b3f3 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_ownsSelf.proof @@ -0,0 +1,99 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "ownsSelf", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "0") + +(branch "dummy ID" +(rule "notRight" (formula "1") (newnames "f_o") (userinteraction)) +(rule "owns2Dominates" (formula "1") (userinteraction)) +(rule "dominatesSelf" (formula "1") (userinteraction)) +(rule "closeFalse" (formula "1") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_repfpDisjointComplement.proof b/key.core/tacletProofs/universe/Taclet_repfpDisjointComplement.proof new file mode 100644 index 00000000000..e2def9b17a4 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_repfpDisjointComplement.proof @@ -0,0 +1,153 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 9000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "repfpDisjointComplement" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "1" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "91") + +(branch "dummy ID" +(rule "disjointDefinition" (formula "1") (term "0") (newnames "f_x,f_y") (userinteraction)) +(rule "equalityToElementOf" (formula "1") (term "0") (inst "ov=ov") (inst "fv=fv") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "elementOfIntersect" (formula "1") (term "0,0,0,0") (userinteraction)) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0,0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "repfpElement" (formula "1") (term "0,0,0,0,0,0") (userinteraction)) +(rule "repfpElement" (formula "1") (term "1,0,0,0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "equiv_right" (formula "1") (userinteraction)) +(branch "Case '->'" + (rule "orRight" (formula "2")) + (rule "eqSymm" (formula "2")) + (rule "nnf_notAnd" (formula "1") (term "0")) + (builtin "One Step Simplification" (formula "1")) + (rule "nnf_notOr" (formula "1") (term "1,0")) + (rule "cnf_rightDist" (formula "1") (term "0")) + (rule "distr_forallAnd" (formula "1")) + (rule "andLeft" (formula "1")) + (rule "commute_or" (formula "2") (term "0")) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "4")) (ifInst "" (formula "3"))) + (rule "closeFalse" (formula "2")) +) +(branch "Case '<-'" + (rule "allRight" (formula "2") (inst "sk=ov_0") (userinteraction)) + (rule "notRight" (formula "2") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "notLeft" (formula "1") (userinteraction)) + (rule "orRight" (formula "3") (userinteraction)) + (rule "orLeft" (formula "2") (userinteraction)) + (branch "f_x = f_y" + (rule "applyEqReverse" (formula "1") (term "0,0") (ifseqformula "2") (userinteraction)) + (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "3") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) + (rule "eqSymm" (formula "2")) + (rule "applyEqRigid" (formula "3") (term "1") (ifseqformula "1")) + (rule "applyEq" (formula "1") (term "1") (ifseqformula "2")) + (rule "close" (formula "4") (ifseqformula "1")) + ) + (branch "dominates(f_x, f_y)" + (rule "cut_direct" (formula "1") (term "1")) + (branch "CUT: ov_0 = f_y TRUE" + (builtin "One Step Simplification" (formula "2")) + (rule "true_left" (formula "2")) + (rule "applyEqRigid" (formula "4") (term "0") (ifseqformula "1")) + (rule "dominatesNotEqualLeft" (formula "4") (ifseqformula "2")) + (rule "false_right" (formula "4")) + (rule "applyEq" (formula "3") (term "1") (ifseqformula "1")) + (rule "close" (formula "3") (ifseqformula "2")) + ) + (branch "CUT: ov_0 = f_y FALSE" + (builtin "One Step Simplification" (formula "1")) + (rule "dominatesNotEqualLeft" (formula "3") (ifseqformula "1")) + (rule "false_right" (formula "3")) + (rule "dominatesTransitive" (formula "1") (ifseqformula "2")) + (rule "close" (formula "4") (ifseqformula "1")) + ) + ) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_repfpElement.proof b/key.core/tacletProofs/universe/Taclet_repfpElement.proof new file mode 100644 index 00000000000..76ea7b04d83 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_repfpElement.proof @@ -0,0 +1,98 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "repfpElement" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "0") + +(branch "dummy ID" +(rule "repfpDef" (formula "1") (term "2,0") (newnames "f_x,f_f,f_y") (userinteraction)) +(rule "elementOfUnion" (formula "1") (term "0") (userinteraction)) +(rule "domfpElement" (formula "1") (term "0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (userinteraction)) +(rule "closeTrue" (formula "1") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_repfpSubset.proof b/key.core/tacletProofs/universe/Taclet_repfpSubset.proof new file mode 100644 index 00000000000..cfef7b24667 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_repfpSubset.proof @@ -0,0 +1,121 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "repfpSubset" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "113") + +(branch "dummy ID" + (builtin "One Step Simplification" (formula "1") (newnames "f_y,f_x")) +(rule "impRight" (formula "1")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "subsetToElementOfRight" (formula "2") (inst "ov=ov") (inst "fv=fv")) +(rule "allRight" (formula "2") (inst "sk=ov_0")) +(rule "allRight" (formula "2") (inst "sk=fv_0")) +(rule "impRight" (formula "2")) +(rule "repfpElement" (formula "1")) +(rule "repfpElement" (formula "3")) +(rule "orRight" (formula "3")) +(rule "cut_direct" (formula "1") (term "1")) +(branch "CUT: ov_0 = f_y TRUE" + (builtin "One Step Simplification" (formula "2")) + (rule "true_left" (formula "2")) + (rule "applyEqRigid" (formula "4") (term "0") (ifseqformula "1")) + (rule "dominatesNotEqualLeft" (formula "4") (ifseqformula "2")) + (rule "false_right" (formula "4")) + (rule "applyEqRigid" (formula "3") (term "1") (ifseqformula "1")) + (rule "close" (formula "3") (ifseqformula "2")) +) +(branch "CUT: ov_0 = f_y FALSE" + (builtin "One Step Simplification" (formula "1")) + (rule "dominatesNotEqualLeft" (formula "3") (ifseqformula "1")) + (rule "false_right" (formula "3")) + (rule "dominatesTransitive" (formula "1") (ifseqformula "2")) + (rule "close" (formula "4") (ifseqformula "1")) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_sameLevelUndom.proof b/key.core/tacletProofs/universe/Taclet_sameLevelUndom.proof new file mode 100644 index 00000000000..3e83b17db9e --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_sameLevelUndom.proof @@ -0,0 +1,220 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "sameLevelUndom", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "1357") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_x,f_y,f_o")) +(rule "orRight" (formula "2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "3")) +(rule "andLeft" (formula "1")) +(rule "undomRefl" (formula "3") (userinteraction)) +(rule "undomRefl" (formula "3") (userinteraction)) +(rule "undomDef" (formula "3") (userinteraction)) +(rule "replace_known_right" (formula "3") (term "0,1") (ifseqformula "4") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) +(rule "andRight" (formula "3") (userinteraction)) +(branch "Case 1" + (rule "notRight" (formula "3") (userinteraction)) + (rule "owns2Dominates" (formula "2") (userinteraction)) + (rule "owns2Dominates" (formula "4") (userinteraction)) + (rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) + (rule "dominatesDef" (formula "1") (inst "n=n") (userinteraction)) + (rule "dominatesDef" (formula "4") (inst "n=n") (userinteraction)) + (rule "exLeft" (formula "2") (inst "sk=n_0") (userinteraction)) + (rule "exLeft" (formula "1") (inst "sk=n_1") (userinteraction)) + (rule "exLeft" (formula "4") (inst "sk=n_2") (userinteraction)) + (rule "dominatesDepthTransitive" (formula "1") (ifseqformula "2") (userinteraction)) + (rule "dominatesSingleDepth" (formula "1") (inst "m=m") (userinteraction)) + (rule "allLeft" (formula "1") (inst "t=Z(1(#))") (userinteraction)) + (rule "dominatesDepthDef" (formula "1") (term "0") (inst "ov=ov") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8")) (userinteraction)) + (rule "leq_literals" (formula "1") (term "0,0")) + (builtin "One Step Simplification" (formula "1")) + (rule "polySimp_homoEq" (formula "1")) + (rule "mul_literals" (formula "1") (term "1,0")) + (rule "polySimp_addComm1" (formula "1") (term "0")) + (rule "polySimp_addComm0" (formula "1") (term "0,0")) + (rule "polySimp_sepPosMonomial" (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 "dominatesSingleDepth" (formula "5") (inst "m=m") (userinteraction)) + (rule "allLeft" (formula "5") (inst "t=Z(1(#))") (userinteraction)) + (rule "dominatesDepthDef" (formula "5") (term "0") (inst "ov=ov") (userinteraction)) + (rule "equal_literals" (formula "5") (term "0,2,0")) + (rule "sub_literals" (formula "5") (term "2,1,0,2,2,0")) + (rule "eqSymm" (formula "5") (term "0,0,2,2,0")) + (rule "eqSymm" (formula "5") (term "1,2,0")) + (rule "ifthenelse_split_for" (formula "5") (term "2,0")) + (branch "true TRUE" + (rule "true_left" (formula "5")) + (rule "eqSymm" (formula "5") (term "2,0") (userinteraction)) + (rule "replace_known_left" (formula "5") (term "2,0") (ifseqformula "8") (userinteraction)) + (builtin "One Step Simplification" (formula "5") (userinteraction)) + (rule "eqSymm" (formula "5") (term "1")) + (rule "inEqSimp_notLeq" (formula "5") (term "0")) + (rule "mul_literals" (formula "5") (term "1,0,0,0")) + (rule "polySimp_addLiterals" (formula "5") (term "0,0")) + (rule "add_literals" (formula "5") (term "0,0")) + (rule "qeq_literals" (formula "5") (term "0")) + (builtin "One Step Simplification" (formula "5")) + (rule "applyEqRigid" (formula "1") (term "0,1,1") (ifseqformula "5") (userinteraction)) + (rule "polySimp_pullOutFactor1" (formula "1") (term "1") (userinteraction)) + (rule "polySimp_rightDist" (formula "1") (term "1") (userinteraction)) + (rule "mul_literals" (formula "1") (term "0,1") (userinteraction)) + (rule "mul_literals" (formula "1") (term "1,1") (userinteraction)) + (rule "add_literals" (formula "1") (term "1") (userinteraction)) + (rule "applyEqRigid" (formula "4") (term "2") (ifseqformula "1") (userinteraction)) + (rule "dominatesDepthDef" (formula "4") (inst "ov=ov") (userinteraction)) + (rule "leq_literals" (formula "4") (term "0")) + (builtin "One Step Simplification" (formula "4")) + (rule "closeFalse" (formula "4")) + ) + (branch "true FALSE" + (rule "closeTrue" (formula "11")) + ) +) +(branch "Case 2" + (rule "notRight" (formula "3") (userinteraction)) + (rule "dominatesDef" (formula "1") (inst "n=n") (userinteraction)) + (rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) + (rule "owns2Dominates" (formula "2") (userinteraction)) + (rule "owns2Dominates" (formula "4") (userinteraction)) + (rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) + (rule "exLeft" (formula "2") (inst "sk=n_1") (userinteraction)) + (rule "dominatesDef" (formula "4") (inst "n=n") (userinteraction)) + (rule "exLeft" (formula "4") (inst "sk=n_2") (userinteraction)) + (rule "dominatesDepthTransitive" (formula "1") (ifseqformula "4") (userinteraction)) + (rule "dominatesSingleDepth" (formula "1") (inst "m=m") (userinteraction)) + (rule "allLeft" (formula "1") (inst "t=Z(1(#))") (userinteraction)) + (rule "dominatesDepthDef" (formula "1") (term "0") (inst "ov=ov") (userinteraction)) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6")) (userinteraction)) + (rule "leq_literals" (formula "1") (term "0,0")) + (builtin "One Step Simplification" (formula "1")) + (rule "polySimp_homoEq" (formula "1")) + (rule "mul_literals" (formula "1") (term "1,0")) + (rule "polySimp_addComm0" (formula "1") (term "0,0")) + (rule "polySimp_addComm1" (formula "1") (term "0")) + (rule "polySimp_addComm0" (formula "1") (term "0,0")) + (rule "polySimp_sepPosMonomial" (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 "dominatesSingleDepth" (formula "7") (inst "m=m") (userinteraction)) + (rule "allLeft" (formula "7") (inst "t=Z(1(#))") (userinteraction)) + (rule "dominatesDepthDef" (formula "7") (term "0") (inst "ov=ov") (userinteraction)) + (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "10")) (userinteraction)) + (rule "eqSymm" (formula "7") (term "1")) + (rule "applyEq" (formula "7") (term "0,1") (ifseqformula "1")) + (rule "polySimp_homoEq" (formula "7") (term "1")) + (rule "polySimp_mulComm0" (formula "7") (term "1,0,1")) + (rule "polySimp_rightDist" (formula "7") (term "1,0,1")) + (rule "polySimp_mulLiterals" (formula "7") (term "1,1,0,1")) + (rule "mul_literals" (formula "7") (term "0,1,0,1")) + (rule "polySimp_elimOne" (formula "7") (term "1,1,0,1")) + (rule "polySimp_addAssoc" (formula "7") (term "0,1")) + (rule "add_literals" (formula "7") (term "0,0,1")) + (rule "add_zero_left" (formula "7") (term "0,1")) + (rule "inEqSimp_notLeq" (formula "7") (term "0")) + (rule "mul_literals" (formula "7") (term "1,0,0,0")) + (rule "polySimp_addLiterals" (formula "7") (term "0,0")) + (rule "add_literals" (formula "7") (term "0,0")) + (rule "qeq_literals" (formula "7") (term "0")) + (builtin "One Step Simplification" (formula "7")) + (rule "applyEqRigid" (formula "4") (term "2") (ifseqformula "7") (userinteraction)) + (rule "dominatesDepthDef" (formula "4") (inst "ov=ov") (userinteraction)) + (rule "leq_literals" (formula "4") (term "0")) + (builtin "One Step Simplification" (formula "4")) + (rule "closeFalse" (formula "4")) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_selectOfDominatedAnon.proof b/key.core/tacletProofs/universe/Taclet_selectOfDominatedAnon.proof new file mode 100644 index 00000000000..23fa3a5c63d --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_selectOfDominatedAnon.proof @@ -0,0 +1,115 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "selectOfDominatedAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "0") + +(branch "dummy ID" + (builtin "One Step Simplification" (formula "1") (newnames "f_h,f_s,f_h2,f_o,f_f") (userinteraction)) +(rule "ifthenelse_split" (formula "1") (term "0,1") (userinteraction)) +(branch " dominatesSet(f_o, f_s) ∧ ¬(¬f_o = null ∧ ¬f_o.@f_h = TRUE) TRUE" + (rule "selectOfAnon" (formula "2") (term "0") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "notLeft" (formula "2") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "2")) (userinteraction)) + (rule "orRight" (formula "3") (userinteraction)) + (rule "notRight" (formula "3") (userinteraction)) + (rule "andLeft" (formula "1") (userinteraction)) + (rule "notLeft" (formula "2") (userinteraction)) + (rule "dominatesSetDef" (formula "2") (inst "o=o") (inst "f=f") (userinteraction)) + (rule "allLeft" (formula "2") (inst "t=f_o") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (userinteraction)) + (rule "allLeft" (formula "2") (inst "t=f_f") (userinteraction)) + (rule "notLeft" (formula "2") (userinteraction)) + (rule "close" (formula "4") (ifseqformula "1") (userinteraction)) +) +(branch " dominatesSet(f_o, f_s) ∧ ¬(¬f_o = null ∧ ¬f_o.@f_h = TRUE) FALSE" + (builtin "One Step Simplification" (formula "2") (userinteraction)) + (rule "closeTrue" (formula "2") (userinteraction)) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_selectOfDominatedAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_selectOfDominatedAnonEQ.proof new file mode 100644 index 00000000000..37ae14bb16c --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_selectOfDominatedAnonEQ.proof @@ -0,0 +1,102 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "selectOfDominatedAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "4") + +(branch "dummy ID" + (builtin "One Step Simplification" (formula "1") (newnames "f_EQ,f_o,f_f,f_s,f_h,f_h2") (userinteraction)) +(rule "impRight" (formula "1")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "applyEqReverse" (formula "2") (term "0,0") (ifseqformula "1") (userinteraction)) +(rule "applyEqReverse" (formula "2") (term "2,0,1") (ifseqformula "1") (userinteraction)) +(rule "selectOfDominatedAnon" (formula "2") (term "0") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (userinteraction)) +(rule "closeTrue" (formula "2") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_selectOfDominatedStore.proof b/key.core/tacletProofs/universe/Taclet_selectOfDominatedStore.proof new file mode 100644 index 00000000000..82cae179e12 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_selectOfDominatedStore.proof @@ -0,0 +1,115 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "selectOfDominatedStore" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "30") + +(branch "dummy ID" +(rule "ifthenelse_split" (formula "1") (term "0,1") (newnames "f_h,f_o,f_f,f_x,f_o2,f_f2") (userinteraction)) +(branch "dominates(f_o2, f_o) ∨ dominates(f_o, f_o2) TRUE" + (rule "selectOfStore" (formula "2") (term "0") (userinteraction)) + (rule "ifthenelse_split" (formula "2") (term "0") (userinteraction)) + (branch " f_o = f_o2 ∧ f_f = f_f2 ∧ ¬f_f = java.lang.Object:: TRUE" + (rule "andLeft" (formula "1")) + (rule "andLeft" (formula "1")) + (rule "notLeft" (formula "3")) + (rule "applyEqRigid" (formula "3") (term "1,0") (ifseqformula "1") (userinteraction)) + (rule "applyEqRigid" (formula "3") (term "0,1") (ifseqformula "1") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (userinteraction)) + (rule "closeFalse" (formula "3") (userinteraction)) + ) + (branch " f_o = f_o2 ∧ f_f = f_f2 ∧ ¬f_f = java.lang.Object:: FALSE" + (builtin "One Step Simplification" (formula "3") (userinteraction)) + (rule "closeTrue" (formula "3") (userinteraction)) + ) +) +(branch "dominates(f_o2, f_o) ∨ dominates(f_o, f_o2) FALSE" + (builtin "One Step Simplification" (formula "2") (userinteraction)) + (rule "closeTrue" (formula "2") (userinteraction)) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_selectOfDominatedStoreEQ.proof b/key.core/tacletProofs/universe/Taclet_selectOfDominatedStoreEQ.proof new file mode 100644 index 00000000000..c77878b1bf3 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_selectOfDominatedStoreEQ.proof @@ -0,0 +1,101 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "selectOfDominatedStoreEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "3") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o2,f_f2,f_o,f_h,f_f,f_x")) +(rule "notRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "applyEqReverse" (formula "2") (term "0,0") (ifseqformula "1") (userinteraction)) +(rule "applyEqReverse" (formula "2") (term "2,0,1") (ifseqformula "1") (userinteraction)) +(rule "selectOfDominatedStore" (formula "2") (term "0") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (userinteraction)) +(rule "closeTrue" (formula "2") (userinteraction)) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedAnon.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedAnon.proof new file mode 100644 index 00000000000..f5ffd6ff44f --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedAnon.proof @@ -0,0 +1,110 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfDominatedAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) +(keyLog "1" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "18") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_u,f_h2,f_o,f_f")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "eqSymm" (formula "2")) +(rule "dominatesSameNotUndom" (formula "1") (ifseqformula "1")) +(rule "pullOutSelect" (formula "3") (term "1") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnon" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) +(rule "repfpElement" (formula "1") (term "0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0")) +(rule "dominatesInverse" (formula "1") (term "0,0,0,0,0") (ifseqformula "2")) + (builtin "One Step Simplification" (formula "1")) +(rule "dominatesNotEqualLeft" (formula "1") (term "0,0,0,0") (ifseqformula "2")) + (builtin "One Step Simplification" (formula "1")) +(rule "ifthenelse_negated" (formula "1") (term "0")) +(rule "close" (formula "4") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedAnonEQ.proof new file mode 100644 index 00000000000..adaaa3ad53b --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedAnonEQ.proof @@ -0,0 +1,110 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfDominatedAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "20") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o,f_f,f_h,f_h2,f_u")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "eqSymm" (formula "3")) +(rule "dominatesSameNotUndom" (formula "2") (ifseqformula "2")) +(rule "pullOutSelect" (formula "4") (term "1") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "2")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) +(rule "repfpElement" (formula "1") (term "0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0")) +(rule "dominatesNotEqualLeft" (formula "1") (term "1,0,0,0,0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "1")) +(rule "dominatesInverse" (formula "1") (term "0,0,0,0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "1")) +(rule "ifthenelse_negated" (formula "1") (term "0")) +(rule "close" (formula "5") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedCreatedAnon.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedCreatedAnon.proof new file mode 100644 index 00000000000..34440d97bf5 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedCreatedAnon.proof @@ -0,0 +1,109 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfDominatedCreatedAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "19") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_h3,f_u,f_h2,f_o,f_f")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "eqSymm" (formula "2")) +(rule "dominatesSameNotUndom" (formula "1") (ifseqformula "1")) +(rule "pullOutSelect" (formula "3") (term "1") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnon" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "5"))) +(rule "createdRepfpElement" (formula "1") (term "0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0,0")) +(rule "dominatesInverse" (formula "1") (term "0,0,0,0,0,0") (ifseqformula "2")) + (builtin "One Step Simplification" (formula "1")) +(rule "dominatesNotEqualLeft" (formula "1") (term "0,0,0,0,0") (ifseqformula "2")) + (builtin "One Step Simplification" (formula "1")) +(rule "ifthenelse_negated" (formula "1") (term "0")) +(rule "close" (formula "4") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedCreatedAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedCreatedAnonEQ.proof new file mode 100644 index 00000000000..851c23c9de2 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatedCreatedAnonEQ.proof @@ -0,0 +1,112 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfDominatedCreatedAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "18") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o,f_f,f_h,f_h2,f_h3,f_u")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "eqSymm" (formula "3")) +(rule "dominatesSameNotUndom" (formula "2") (ifseqformula "2")) +(rule "pullOutSelect" (formula "4") (term "2,0") (inst "selectSK=f_f_0")) +(rule "pullOutSelect" (formula "5") (term "1") (inst "selectSK=f_f_1")) +(rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) +(rule "applyEq" (formula "1") (term "1,0") (ifseqformula "2")) +(rule "createdRepfpElement" (formula "1") (term "0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0,0")) +(rule "dominatesNotEqualLeft" (formula "1") (term "1,0,0,0,0,0") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "1")) +(rule "dominatesInverse" (formula "1") (term "0,0,0,0,0") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "1")) +(rule "ifthenelse_negated" (formula "1") (term "0")) +(rule "close" (formula "6") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingCreatedRepfpComplementAnon.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingCreatedRepfpComplementAnon.proof new file mode 100644 index 00000000000..e2c15fcbf56 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingCreatedRepfpComplementAnon.proof @@ -0,0 +1,128 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfDominatingCreatedRepfpComplementAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "106") + +(branch "dummy ID" +(rule "impRight" (formula "1")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "selectOfAnon" (formula "2") (term "0") (userinteraction)) +(rule "elementOfSetMinus" (formula "2") (term "0,0,0,0") (userinteraction)) +(rule "createdRepfpElement" (formula "2") (term "0,1,0,0,0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "1")) (ifInst "" (formula "3")) (userinteraction)) +(rule "ifthenelse_split" (formula "2") (term "0") (userinteraction)) +(branch " ¬f_o.@f_h3 = TRUE ∧ ¬f_f = java.lang.Object:: ∨ ¬f_o.@f_h = TRUE TRUE" + (rule "eqSymm" (formula "3")) + (builtin "One Step Simplification" (formula "3")) + (rule "orRight" (formula "3")) + (rule "notRight" (formula "3")) + (rule "andLeft" (formula "1")) + (rule "eqSymm" (formula "5")) + (rule "replace_known_left" (formula "3") (term "0,1") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "3")) + (rule "andLeft" (formula "3")) + (rule "notLeft" (formula "3")) + (rule "notLeft" (formula "3")) + (rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "4"))) + (rule "closeFalse" (formula "2")) +) +(branch " ¬f_o.@f_h3 = TRUE ∧ ¬f_f = java.lang.Object:: ∨ ¬f_o.@f_h = TRUE FALSE" + (rule "orRight" (formula "2")) + (rule "notRight" (formula "3")) + (rule "eqSymm" (formula "4")) + (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) + (rule "orRight" (formula "4")) + (rule "orRight" (formula "4")) + (rule "replace_known_right" (formula "3") (term "0,1") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "4"))) + (rule "closeTrue" (formula "3")) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingCreatedRepfpComplementAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingCreatedRepfpComplementAnonEQ.proof new file mode 100644 index 00000000000..aac04fa9b44 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingCreatedRepfpComplementAnonEQ.proof @@ -0,0 +1,130 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfDominatingCreatedRepfpComplementAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "227") + +(branch "dummy ID" +(rule "impRight" (formula "1")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "selectOfAnonEQ" (formula "3") (term "0") (ifseqformula "2") (userinteraction)) +(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0") (userinteraction)) +(rule "createdRepfpElement" (formula "3") (term "0,1,0,0,0,0") (userinteraction)) + (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "1")) (ifInst "" (formula "4")) (userinteraction)) +(rule "ifthenelse_split" (formula "3") (term "0") (userinteraction)) +(branch " ¬f_o.@f_h3 = TRUE ∧ ¬f_f = java.lang.Object:: ∨ ¬f_o.@f_h = TRUE TRUE" + (rule "orLeft" (formula "1") (userinteraction)) + (branch " ¬f_o.@f_h3 = TRUE ∧ ¬f_f = java.lang.Object::" + (rule "andLeft" (formula "1")) + (rule "notLeft" (formula "1")) + (rule "notLeft" (formula "1")) + (rule "eqSymm" (formula "5")) + (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "4")) (ifInst "" (formula "3"))) + (rule "closeTrue" (formula "5")) + ) + (branch "¬f_o.@f_h = TRUE" + (rule "notLeft" (formula "1")) + (rule "eqSymm" (formula "4")) + (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "3"))) + (rule "closeTrue" (formula "4")) + ) +) +(branch " ¬f_o.@f_h3 = TRUE ∧ ¬f_f = java.lang.Object:: ∨ ¬f_o.@f_h = TRUE FALSE" + (rule "orRight" (formula "3")) + (rule "notRight" (formula "4")) + (rule "eqSymm" (formula "5")) + (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "1"))) + (rule "orRight" (formula "5")) + (rule "orRight" (formula "5")) + (rule "replace_known_right" (formula "4") (term "0,0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "6"))) + (rule "closeTrue" (formula "4")) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingRepfpComplementAnon.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingRepfpComplementAnon.proof new file mode 100644 index 00000000000..b307adc64db --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingRepfpComplementAnon.proof @@ -0,0 +1,115 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfDominatingRepfpComplementAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "29") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_u,f_h2,f_o,f_f")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "eqSymm" (formula "2")) +(rule "dominatesSameNotUndom" (formula "1") (ifseqformula "1")) +(rule "pullOutSelect" (formula "3") (term "0,0,0") (inst "selectSK=java_lang_Object_created__0")) +(rule "pullOutSelect" (formula "4") (term "1,0") (inst "selectSK=f_f_0")) +(rule "pullOutSelect" (formula "5") (term "2,0") (inst "selectSK=f_f_1")) +(rule "pullOutSelect" (formula "6") (term "1") (inst "selectSK=f_f_2")) +(rule "simplifySelectOfAnon" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8"))) +(rule "applyEq" (formula "1") (term "1,0") (ifseqformula "2")) +(rule "applyEq" (formula "1") (term "0,0,1,0,0") (ifseqformula "4")) +(rule "applyEq" (formula "1") (term "2,0") (ifseqformula "3")) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "repfpElement" (formula "1") (term "0,0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0,0")) +(rule "replace_known_left" (formula "1") (term "0,0,0,0,0,0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "1")) +(rule "ifthenelse_negated" (formula "1") (term "0")) +(rule "close" (formula "7") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingRepfpComplementAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingRepfpComplementAnonEQ.proof new file mode 100644 index 00000000000..6197caee21d --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfDominatingRepfpComplementAnonEQ.proof @@ -0,0 +1,116 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfDominatingRepfpComplementAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "45") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o,f_f,f_h,f_h2,f_u")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "eqSymm" (formula "3")) +(rule "dominatesSameNotUndom" (formula "1") (ifseqformula "1")) +(rule "pullOutSelect" (formula "4") (term "1,0") (inst "selectSK=f_f_0")) +(rule "pullOutSelect" (formula "5") (term "0,0,0") (inst "selectSK=java_lang_Object_created__0")) +(rule "pullOutSelect" (formula "6") (term "2,0") (inst "selectSK=f_f_1")) +(rule "pullOutSelect" (formula "7") (term "1") (inst "selectSK=f_f_2")) +(rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "6")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "9"))) +(rule "applyEq" (formula "1") (term "1,0") (ifseqformula "2")) +(rule "applyEq" (formula "1") (term "0,0,1,0,0") (ifseqformula "3")) +(rule "applyEq" (formula "1") (term "2,0") (ifseqformula "4")) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "repfpElement" (formula "1") (term "0,0,0,0,0")) +(rule "eqSymm" (formula "1") (term "1,0,0,0,0,0")) +(rule "replace_known_left" (formula "1") (term "0,0,0,0,0,0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "1")) +(rule "ifthenelse_negated" (formula "1") (term "0")) +(rule "close" (formula "8") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfCreatedRepfpComplementAnon.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfCreatedRepfpComplementAnon.proof new file mode 100644 index 00000000000..5976f94e364 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfCreatedRepfpComplementAnon.proof @@ -0,0 +1,135 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfSelfCreatedRepfpComplementAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "33") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_h3,f_o,f_h2,f_f")) +(rule "notLeft" (formula "1")) +(rule "selectOfAnon" (formula "1") (term "0") (userinteraction)) +(rule "ifthenelse_split" (formula "1") (term "0") (userinteraction)) +(branch " (f_o, f_f) ∊ allLocs ∖ createdRepfp(f_h3, f_o) ∧ ¬f_f = java.lang.Object:: ∨ (f_o, f_f) ∊ freshLocs(f_h) TRUE" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3"))) + (rule "eqSymm" (formula "2")) + (builtin "One Step Simplification" (formula "2")) + (rule "orRight" (formula "2")) + (rule "notRight" (formula "2")) + (rule "andLeft" (formula "1")) + (rule "eqSymm" (formula "4")) + (rule "replace_known_left" (formula "3") (term "0,1") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "3")) + (rule "andLeft" (formula "3")) + (rule "notLeft" (formula "4")) + (rule "replace_known_right" (formula "2") (term "1") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "2")) + (rule "elementOfSetMinus" (formula "3")) + (builtin "One Step Simplification" (formula "3")) + (rule "notLeft" (formula "3")) + (rule "createdRepfpElement" (formula "3")) + (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "2"))) + (rule "closeTrue" (formula "3")) +) +(branch " (f_o, f_f) ∊ allLocs ∖ createdRepfp(f_h3, f_o) ∧ ¬f_f = java.lang.Object:: ∨ (f_o, f_f) ∊ freshLocs(f_h) FALSE" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3"))) + (rule "orRight" (formula "1")) + (rule "notRight" (formula "2")) + (rule "eqSymm" (formula "3")) + (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "1"))) + (rule "orRight" (formula "3")) + (rule "orRight" (formula "3")) + (rule "replace_known_right" (formula "2") (term "0,1") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "2")) + (rule "elementOfSetMinus" (formula "2")) + (builtin "One Step Simplification" (formula "2")) + (rule "notRight" (formula "2")) + (rule "createdRepfpElement" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "3"))) + (rule "closeFalse" (formula "1")) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfCreatedRepfpComplementAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfCreatedRepfpComplementAnonEQ.proof new file mode 100644 index 00000000000..2c0c9996f36 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfCreatedRepfpComplementAnonEQ.proof @@ -0,0 +1,136 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfSelfCreatedRepfpComplementAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "87") + +(branch "dummy ID" +(rule "impRight" (formula "1")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "selectOfAnonEQ" (formula "2") (term "0") (ifseqformula "1") (userinteraction)) +(rule "ifthenelse_split" (formula "2") (term "0") (userinteraction)) +(branch " (f_o, f_f) ∊ allLocs ∖ createdRepfp(f_h3, f_o) ∧ ¬f_f = java.lang.Object:: ∨ (f_o, f_f) ∊ freshLocs(f_h) TRUE" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "4"))) + (rule "eqSymm" (formula "3")) + (builtin "One Step Simplification" (formula "3")) + (rule "orRight" (formula "3")) + (rule "notRight" (formula "3")) + (rule "andLeft" (formula "1")) + (rule "eqSymm" (formula "5")) + (rule "replace_known_left" (formula "3") (term "0,1") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "3")) + (rule "andLeft" (formula "3")) + (rule "notLeft" (formula "4")) + (rule "replace_known_right" (formula "2") (term "1") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "2")) + (rule "elementOfSetMinus" (formula "3")) + (builtin "One Step Simplification" (formula "3")) + (rule "notLeft" (formula "3")) + (rule "createdRepfpElement" (formula "4")) + (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "2"))) + (rule "closeTrue" (formula "4")) +) +(branch " (f_o, f_f) ∊ allLocs ∖ createdRepfp(f_h3, f_o) ∧ ¬f_f = java.lang.Object:: ∨ (f_o, f_f) ∊ freshLocs(f_h) FALSE" + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "4"))) + (rule "orRight" (formula "2")) + (rule "notRight" (formula "3")) + (rule "eqSymm" (formula "4")) + (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) + (rule "orRight" (formula "4")) + (rule "orRight" (formula "4")) + (rule "replace_known_right" (formula "3") (term "0,1") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "3")) + (rule "elementOfSetMinus" (formula "3")) + (builtin "One Step Simplification" (formula "3")) + (rule "notRight" (formula "3")) + (rule "createdRepfpElement" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "4"))) + (rule "closeFalse" (formula "1")) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfRepfpComplementAnon.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfRepfpComplementAnon.proof new file mode 100644 index 00000000000..bcd21f44d03 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfRepfpComplementAnon.proof @@ -0,0 +1,107 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfSelfRepfpComplementAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "27") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_o,f_h2,f_f")) +(rule "notLeft" (formula "1")) +(rule "eqSymm" (formula "1")) +(rule "pullOutSelect" (formula "1") (term "0,0,0") (inst "selectSK=java_lang_Object_created__0")) +(rule "pullOutSelect" (formula "2") (term "1") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnon" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "4"))) +(rule "applyEq" (formula "1") (term "0,0,1,0,0") (ifseqformula "2")) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "repfpElement" (formula "1") (term "0,0,0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "ifthenelse_negated" (formula "1") (term "0")) +(rule "close" (formula "3") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfRepfpComplementAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfRepfpComplementAnonEQ.proof new file mode 100644 index 00000000000..69a49c33fc3 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_simplifySelectOfSelfRepfpComplementAnonEQ.proof @@ -0,0 +1,112 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "simplifySelectOfSelfRepfpComplementAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "34") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o,f_f,f_h,f_h2")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "eqSymm" (formula "2")) +(rule "pullOutSelect" (formula "2") (term "2,0") (inst "selectSK=f_f_0")) +(rule "pullOutSelect" (formula "3") (term "0,0,0") (inst "selectSK=java_lang_Object_created__0")) +(rule "pullOutSelect" (formula "4") (term "1,0") (inst "selectSK=f_f_1")) +(rule "pullOutSelect" (formula "5") (term "1") (inst "selectSK=f_f_2")) +(rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "7"))) +(rule "applyEq" (formula "1") (term "2,0") (ifseqformula "2")) +(rule "applyEq" (formula "1") (term "1,0") (ifseqformula "4")) +(rule "applyEq" (formula "1") (term "0,0,1,0,0") (ifseqformula "3")) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "repfpElement" (formula "1") (term "0,0,0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "ifthenelse_negated" (formula "1") (term "0")) +(rule "close" (formula "6") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_undomRefl.proof b/key.core/tacletProofs/universe/Taclet_undomRefl.proof new file mode 100644 index 00000000000..6d8597abf1a --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_undomRefl.proof @@ -0,0 +1,101 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 7000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "definitionFile" : "unknown", + "name" : "undomRefl", + "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) + +(autoModeTime "22") + +(branch "dummy ID" +(rule "undomDef" (formula "1") (term "0") (newnames "f_x,f_y") (userinteraction)) +(rule "undomDef" (formula "1") (term "1") (userinteraction)) +(rule "eqSymm" (formula "1") (term "0,1,0")) +(rule "commute_and" (formula "1") (term "0,1")) + (builtin "One Step Simplification" (formula "1")) +(rule "closeTrue" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_undomTransitive.proof b/key.core/tacletProofs/universe/Taclet_undomTransitive.proof new file mode 100644 index 00000000000..3598c2d9d97 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_undomTransitive.proof @@ -0,0 +1,191 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "undomTransitive" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "260") + +(branch "dummy ID" +(rule "undomRefl" (formula "1") (term "0,0,1") (userinteraction)) +(rule "undomDef" (formula "1") (term "0,0,1") (userinteraction)) +(rule "undomDef" (formula "1") (term "0,0") (userinteraction)) +(rule "impRight" (formula "1")) +(rule "orRight" (formula "2")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "notRight" (formula "3")) +(rule "andLeft" (formula "2")) +(rule "andLeft" (formula "2")) +(rule "notLeft" (formula "4")) +(rule "notLeft" (formula "3")) +(rule "notLeft" (formula "2")) +(rule "andRight" (formula "5") (userinteraction)) +(branch "Case 1" + (rule "andRight" (formula "5") (userinteraction)) + (branch "Case 1" + (rule "notRight" (formula "5") (userinteraction)) + (rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) + (rule "dominatesDef" (formula "1") (inst "n=n") (userinteraction)) + (rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) + (rule "exLeft" (formula "2") (inst "sk=n_1") (userinteraction)) + (rule "cut" (inst "cutFormula=gt(n_0, n_1)<>") (userinteraction)) + (branch "CUT: n_0 > n_1 TRUE" + (rule "dominatesLargerDepth" (formula "2") (ifseqformula "1") (ifseqformula "3") (userinteraction)) + (rule "dominatesDepth2Dominates" (formula "2") (userinteraction)) + (rule "andLeft" (formula "2")) + (rule "close" (formula "8") (ifseqformula "3")) + ) + (branch "CUT: n_0 > n_1 FALSE" + (rule "cut" (inst "cutFormula=gt(n_1, n_0)<>") (userinteraction)) + (branch "CUT: n_1 > n_0 TRUE" + (rule "dominatesLargerDepth" (formula "3") (ifseqformula "1") (ifseqformula "2") (userinteraction)) + (rule "dominatesDepth2Dominates" (formula "3") (userinteraction)) + (rule "andLeft" (formula "3")) + (rule "close" (formula "8") (ifseqformula "4")) + ) + (branch "CUT: n_1 > n_0 FALSE" + (rule "cut" (inst "cutFormula=(n_0 = n_1)<>") (userinteraction)) + (branch "CUT: n_0 = n_1 TRUE" + (rule "applyEqReverse" (formula "3") (term "2") (ifseqformula "1") (userinteraction)) + (rule "dominatesSameDepth" (formula "3") (ifseqformula "2") (userinteraction)) + (rule "dominatesSameDepth" (formula "4") (ifseqformula "4") (userinteraction)) + (builtin "One Step Simplification" (formula "4")) + (rule "true_left" (formula "4")) + (rule "eqSymm" (formula "1")) + (rule "eqSymm" (formula "3")) + (rule "close" (formula "9") (ifseqformula "3")) + ) + (branch "CUT: n_0 = n_1 FALSE" + (rule "eqSymm" (formula "3")) + (rule "inEqSimp_gtRight" (formula "4")) + (rule "polySimp_mulComm0" (formula "1") (term "0,0")) + (rule "inEqSimp_gtRight" (formula "5")) + (rule "polySimp_mulComm0" (formula "1") (term "0,0")) + (rule "polySimp_addComm0" (formula "1") (term "0")) + (rule "inEqSimp_sepPosMonomial0" (formula "2")) + (rule "polySimp_mulLiterals" (formula "2") (term "1")) + (rule "polySimp_elimOne" (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_strengthen1" (formula "1") (ifseqformula "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")) + ) + ) + ) + ) + (branch "Case 2" + (rule "notRight" (formula "5") (userinteraction)) + (rule "dominatesTransitive" (formula "1") (ifseqformula "2") (userinteraction)) + (rule "close" (formula "4") (ifseqformula "1")) + ) +) +(branch "Case 2" + (rule "notRight" (formula "5")) + (rule "eqSymm" (formula "1")) + (rule "dominatesSameNotUndom" (formula "2") (ifseqformula "2")) + (rule "applyEq" (formula "2") (term "1") (ifseqformula "1")) + (rule "close" (formula "4") (ifseqformula "2")) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_variousDisjointComplement.proof b/key.core/tacletProofs/universe/Taclet_variousDisjointComplement.proof new file mode 100644 index 00000000000..5d4c4ab4014 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_variousDisjointComplement.proof @@ -0,0 +1,119 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "variousDisjointComplement" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "127") + +(branch "dummy ID" +(rule "disjointDefinition" (formula "1") (term "0") (newnames "f_x,f_y")) +(rule "equiv_right" (formula "1")) +(branch "Case '->'" + (rule "subsetToElementOfRight" (formula "2") (inst "ov=ov") (inst "fv=fv")) + (rule "allRight" (formula "2") (inst "sk=ov_0")) + (rule "allRight" (formula "2") (inst "sk=fv_0")) + (rule "impRight" (formula "2")) + (rule "disjointNotInOtherLocset2" (formula "1") (ifseqformula "2")) + (rule "elementOfSetMinus" (formula "3")) + (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "4"))) + (rule "closeTrue" (formula "3")) +) +(branch "Case '<-'" + (rule "equalityToElementOfRight" (formula "2") (inst "ov=ov") (inst "fv=fv")) + (builtin "One Step Simplification" (formula "2")) + (rule "allRight" (formula "2") (inst "sk=ov_0")) + (rule "allRight" (formula "2") (inst "sk=fv_0")) + (rule "notRight" (formula "2")) + (rule "elementOfIntersect" (formula "1")) + (rule "andLeft" (formula "1")) + (rule "elementOfSetMinus" (formula "1")) + (builtin "One Step Simplification" (formula "1")) + (rule "notLeft" (formula "1")) + (rule "elementOfSubsetImpliesElementOfSuperset" (formula "1") (ifseqformula "2")) + (rule "close" (formula "4") (ifseqformula "1")) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_variousDisjointSingleton.proof b/key.core/tacletProofs/universe/Taclet_variousDisjointSingleton.proof new file mode 100644 index 00000000000..37a1ca865e8 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_variousDisjointSingleton.proof @@ -0,0 +1,97 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "variousDisjointSingleton" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "14") + +(branch "dummy ID" +(rule "disjointDefinition" (formula "1") (term "0") (newnames "f_s,f_x,f_f")) +(rule "disjointWithSingleton1" (formula "1") (term "0")) + (builtin "One Step Simplification" (formula "1")) +(rule "closeTrue" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_variousDisjointSingletonInverse.proof b/key.core/tacletProofs/universe/Taclet_variousDisjointSingletonInverse.proof new file mode 100644 index 00000000000..6285b166079 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_variousDisjointSingletonInverse.proof @@ -0,0 +1,97 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "variousDisjointSingletonInverse" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "46") + +(branch "dummy ID" +(rule "disjointDefinition" (formula "1") (term "0") (newnames "f_x,f_f,f_s")) +(rule "disjointWithSingleton2" (formula "1") (term "0")) + (builtin "One Step Simplification" (formula "1")) +(rule "closeTrue" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_variousDisjointUnion.proof b/key.core/tacletProofs/universe/Taclet_variousDisjointUnion.proof new file mode 100644 index 00000000000..c1ce6478799 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_variousDisjointUnion.proof @@ -0,0 +1,100 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "variousDisjointUnion" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "15") + +(branch "dummy ID" +(rule "disjointDefinition" (formula "1") (term "0") (newnames "f_x,f_y,f_z")) +(rule "disjointDefinition" (formula "1") (term "1,1")) +(rule "disjointDefinition" (formula "1") (term "0,1")) +(rule "distributeIntersection" (formula "1") (term "0,0")) +(rule "unionEqualsEmpty" (formula "1") (term "0")) + (builtin "One Step Simplification" (formula "1")) +(rule "closeTrue" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_variousDisjointUnionInverse.proof b/key.core/tacletProofs/universe/Taclet_variousDisjointUnionInverse.proof new file mode 100644 index 00000000000..741abc81726 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_variousDisjointUnionInverse.proof @@ -0,0 +1,102 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "variousDisjointUnionInverse" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "40") + +(branch "dummy ID" +(rule "disjointDefinition" (formula "1") (term "0,1") (newnames "f_y,f_z,f_x")) +(rule "disjointDefinition" (formula "1") (term "1,1")) +(rule "disjointDefinition" (formula "1") (term "0")) +(rule "distributeIntersection_2" (formula "1") (term "0,0")) +(rule "unionEqualsEmpty" (formula "1") (term "0")) +(rule "commuteIntersection" (formula "1") (term "0,0,0")) +(rule "commuteIntersection" (formula "1") (term "0,1,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "closeTrue" (formula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_variousSelectOfEmptyAnon.proof b/key.core/tacletProofs/universe/Taclet_variousSelectOfEmptyAnon.proof new file mode 100644 index 00000000000..577f2805f05 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_variousSelectOfEmptyAnon.proof @@ -0,0 +1,107 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "variousSelectOfEmptyAnon" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "103") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h,f_h2,f_o,f_f")) +(rule "notLeft" (formula "1")) +(rule "eqSymm" (formula "1")) +(rule "pullOutSelect" (formula "1") (term "2,0") (inst "selectSK=f_f_0")) +(rule "pullOutSelect" (formula "2") (term "1,0") (inst "selectSK=f_f_1")) +(rule "pullOutSelect" (formula "3") (term "0,0,0") (inst "selectSK=java_lang_Object_created__0")) +(rule "pullOutSelect" (formula "4") (term "1") (inst "selectSK=f_f_2")) +(rule "simplifySelectOfAnon" (formula "1")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) +(rule "applyEq" (formula "1") (term "1,0") (ifseqformula "4")) +(rule "applyEq" (formula "1") (term "0,0,0,0") (ifseqformula "2")) +(rule "applyEq" (formula "1") (term "2,0") (ifseqformula "3")) +(rule "ifthenelse_negated" (formula "1") (term "0")) +(rule "close" (formula "5") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_variousSelectOfEmptyAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_variousSelectOfEmptyAnonEQ.proof new file mode 100644 index 00000000000..dac1a9c1e07 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_variousSelectOfEmptyAnonEQ.proof @@ -0,0 +1,102 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "variousSelectOfEmptyAnonEQ" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "37") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_EQ,f_o,f_f,f_h,f_h2")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "eqSymm" (formula "2")) +(rule "pullOutSelect" (formula "2") (term "1") (inst "selectSK=f_f_0")) +(rule "simplifySelectOfAnonEQ" (formula "1") (ifseqformula "2")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "4"))) +(rule "ifthenelse_negated" (formula "1") (term "0")) +(rule "close" (formula "3") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_variousSeqConcatAssociative.proof b/key.core/tacletProofs/universe/Taclet_variousSeqConcatAssociative.proof new file mode 100644 index 00000000000..26996011817 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_variousSeqConcatAssociative.proof @@ -0,0 +1,226 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:on", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:showSatisfiability", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 20000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", + "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "variousSeqConcatAssociative" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "264") + +(branch "dummy ID" +(rule "equalityToSeqGetAndSeqLenRight" (formula "1") (newnames "f_a,f_b,f_c") (inst "iv=iv")) +(rule "lenOfSeqConcat" (formula "1") (term "0,0")) +(rule "eqSymm" (formula "1") (term "0")) +(rule "lenOfSeqConcat" (formula "1") (term "1,1,0,0,1")) +(rule "lenOfSeqConcat" (formula "1") (term "0,1,0")) +(rule "lenOfSeqConcat" (formula "1") (term "0,0")) +(rule "polySimp_homoEq" (formula "1") (term "0")) +(rule "polySimp_mulComm0" (formula "1") (term "1,0,0")) +(rule "polySimp_rightDist" (formula "1") (term "1,0,0")) +(rule "polySimp_mulComm0" (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 "polySimp_addComm1" (formula "1") (term "0,0,0,0")) +(rule "polySimp_pullOutFactor1" (formula "1") (term "0,0,0,0,0")) +(rule "add_literals" (formula "1") (term "1,0,0,0,0,0")) +(rule "times_zero_1" (formula "1") (term "0,0,0,0,0")) +(rule "add_zero_left" (formula "1") (term "0,0,0,0")) +(rule "lenOfSeqConcat" (formula "1") (term "0,1,1,0,0,1")) +(rule "lenOfSeqConcat" (formula "1") (term "0,1,0,0")) +(rule "polySimp_pullOutFactor1" (formula "1") (term "0,0")) +(rule "add_literals" (formula "1") (term "1,0,0")) +(rule "times_zero_1" (formula "1") (term "0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "allRight" (formula "1") (inst "sk=iv_0")) +(rule "impRight" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "inEqSimp_ltToLeq" (formula "2")) +(rule "polySimp_rightDist" (formula "2") (term "1,0,0")) +(rule "polySimp_rightDist" (formula "2") (term "0,1,0,0")) +(rule "polySimp_mulComm0" (formula "2") (term "0,0,1,0,0")) +(rule "polySimp_addAssoc" (formula "2") (term "0,0")) +(rule "polySimp_addComm1" (formula "2") (term "0")) +(rule "polySimp_addAssoc" (formula "2") (term "0,0,0")) +(rule "polySimp_addComm1" (formula "2") (term "0,0")) +(rule "polySimp_addComm1" (formula "2") (term "0,0,0")) +(rule "inEqSimp_commuteLeq" (formula "1")) +(rule "inEqSimp_sepNegMonomial0" (formula "2")) +(rule "polySimp_mulLiterals" (formula "2") (term "0")) +(rule "polySimp_elimOne" (formula "2") (term "0")) +(rule "getOfSeqConcat" (formula "3") (term "0")) +(rule "polySimp_elimSub" (formula "3") (term "1,2,0")) +(rule "lenOfSeqConcat" (formula "3") (term "1,0,0")) +(rule "lenOfSeqConcat" (formula "3") (term "0,1,1,2,0")) +(rule "polySimp_mulComm0" (formula "3") (term "1,1,2,0")) +(rule "polySimp_rightDist" (formula "3") (term "1,1,2,0")) +(rule "polySimp_mulComm0" (formula "3") (term "0,1,1,2,0")) +(rule "polySimp_addAssoc" (formula "3") (term "1,2,0")) +(rule "inEqSimp_ltToLeq" (formula "3") (term "0,0")) +(rule "polySimp_rightDist" (formula "3") (term "1,0,0,0,0")) +(rule "polySimp_mulComm0" (formula "3") (term "0,1,0,0,0,0")) +(rule "polySimp_addAssoc" (formula "3") (term "0,0,0,0")) +(rule "polySimp_addComm1" (formula "3") (term "0,0,0")) +(rule "polySimp_addComm1" (formula "3") (term "0,0,0,0")) +(rule "inEqSimp_sepNegMonomial0" (formula "3") (term "0,0")) +(rule "polySimp_mulLiterals" (formula "3") (term "0,0,0")) +(rule "polySimp_elimOne" (formula "3") (term "0,0,0")) +(rule "getOfSeqConcat" (formula "3") (term "1")) +(rule "eqSymm" (formula "3")) +(rule "polySimp_elimSub" (formula "3") (term "1,2,0")) +(rule "inEqSimp_ltToLeq" (formula "3") (term "0,0")) +(rule "polySimp_mulComm0" (formula "3") (term "1,0,0,0,0")) +(rule "polySimp_addComm1" (formula "3") (term "0,0,0")) +(rule "inEqSimp_sepNegMonomial0" (formula "3") (term "0,0")) +(rule "polySimp_mulLiterals" (formula "3") (term "0,0,0")) +(rule "eqSymm" (formula "3")) +(rule "polySimp_elimOne" (formula "3") (term "0,0,1")) +(rule "getOfSeqConcat" (formula "3") (term "2,1")) +(rule "eqSymm" (formula "3")) +(rule "polySimp_elimSub" (formula "3") (term "1,2,2,0")) +(rule "inEqSimp_ltToLeq" (formula "3") (term "0,2,0")) +(rule "polySimp_mulComm0" (formula "3") (term "1,0,0,0,2,0")) +(rule "polySimp_addComm1" (formula "3") (term "0,0,2,0")) +(rule "polySimp_addAssoc" (formula "3") (term "0,0,0,2,0")) +(rule "inEqSimp_sepNegMonomial0" (formula "3") (term "0,2,0")) +(rule "polySimp_mulLiterals" (formula "3") (term "0,0,2,0")) +(rule "polySimp_elimOne" (formula "3") (term "0,0,2,0")) +(rule "eqSymm" (formula "3")) +(rule "getOfSeqConcat" (formula "3") (term "1,0")) +(rule "polySimp_elimSub" (formula "3") (term "1,2,1,0")) +(rule "inEqSimp_ltToLeq" (formula "3") (term "0,1,0")) +(rule "polySimp_mulComm0" (formula "3") (term "1,0,0,0,1,0")) +(rule "polySimp_addComm1" (formula "3") (term "0,0,1,0")) +(rule "inEqSimp_sepNegMonomial0" (formula "3") (term "0,1,0")) +(rule "polySimp_mulLiterals" (formula "3") (term "0,0,1,0")) +(rule "polySimp_elimOne" (formula "3") (term "0,0,1,0")) +(rule "ifthenelse_split" (formula "3") (term "2,1")) +(branch "f_b.length ≥ 1 + iv_0 + f_a.length * -1 TRUE" + (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) + (rule "closeTrue" (formula "4")) +) +(branch "f_b.length ≥ 1 + iv_0 + f_a.length * -1 FALSE" + (rule "replace_known_right" (formula "4") (term "0,0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "4")) + (rule "eqSymm" (formula "4")) + (builtin "One Step Simplification" (formula "4")) + (rule "orRight" (formula "4")) + (rule "notRight" (formula "4")) + (rule "eqSymm" (formula "5")) + (rule "inEqSimp_geqRight" (formula "4")) + (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) + (rule "polySimp_mulLiterals" (formula "1") (term "1,1,0,0")) + (rule "polySimp_elimOne" (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_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 "add_zero_left" (formula "1") (term "0,0,0")) + (rule "inEqSimp_sepPosMonomial0" (formula "1")) + (rule "polySimp_mulComm0" (formula "1") (term "1")) + (rule "polySimp_rightDist" (formula "1") (term "1")) + (rule "polySimp_mulAssoc" (formula "1") (term "0,1")) + (rule "polySimp_mulComm0" (formula "1") (term "0,0,1")) + (rule "polySimp_mulLiterals" (formula "1") (term "0,1")) + (rule "polySimp_elimOne" (formula "1") (term "0,1")) + (rule "lenNonNegative" (formula "4") (term "0,1,1")) + (rule "inEqSimp_commuteLeq" (formula "4")) + (rule "inEqSimp_exactShadow3" (formula "4") (ifseqformula "1")) + (rule "mul_literals" (formula "4") (term "0,0")) + (rule "add_zero_left" (formula "4") (term "0")) + (rule "inEqSimp_sepNegMonomial1" (formula "4")) + (rule "polySimp_mulLiterals" (formula "4") (term "0")) + (rule "polySimp_elimOne" (formula "4") (term "0")) + (rule "inEqSimp_contradInEq0" (formula "2") (ifseqformula "4")) + (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")) +) +) +} diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/NodeIntermediateWalker.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/NodeIntermediateWalker.java index 9afa8bbd5c9..e34cfa62f0c 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/NodeIntermediateWalker.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/NodeIntermediateWalker.java @@ -5,6 +5,9 @@ import de.uka.ilkd.key.proof.io.intermediate.NodeIntermediate; +import java.util.Deque; +import java.util.LinkedList; + /** * Walks an intermediate proof representation tree as created when loading a *.proof file. * @@ -13,7 +16,7 @@ */ public abstract class NodeIntermediateWalker { /** the root where the walker starts */ - private NodeIntermediate root; + private final NodeIntermediate root; /** * create a walker starting from the given root @@ -26,19 +29,38 @@ protected NodeIntermediateWalker(NodeIntermediate root) { /** starts the walker */ public void start() { - walk(root); + walkIteratively(); } /** - * walks the tree while performing specified action + * Walks the tree while performing specified action. + * + * @deprecated Might run into stack overflow for medium to long proofs, use + * {@link #walkIteratively()} instead. * * @param node the current position of the walker in tree */ - protected void walk(NodeIntermediate node) { + @Deprecated() + protected void walkRecursively(NodeIntermediate node) { doAction(node); for (NodeIntermediate child : node.getChildren()) { - walk(child); + walkRecursively(child); + } + } + + /** + * Walks the tree while performing specified action. This iterative variant avoids stack + * overflows and is thus preferred. It performs a breadth-first search traversal. + */ + protected void walkIteratively () { + Deque queue = new LinkedList<>(); + queue.add(root); + + while (!queue.isEmpty()) { + NodeIntermediate node = queue.pollFirst(); + doAction(node); + queue.addAll(node.getChildren()); } } From 85a0e6d8799db4a3235da9fd5e0c47443ffa5c76 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Mon, 6 Oct 2025 15:34:25 +0200 Subject: [PATCH 13/27] update the rules --- .../de/uka/ilkd/key/proof/rules/universe.key | 1 + .../uka/ilkd/key/proof/rules/universeDefs.key | 40 ++- .../ilkd/key/proof/rules/universeLemmas.key | 295 +++++++++++++----- 3 files changed, 257 insertions(+), 79 deletions(-) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key index 13da6fd4f6f..f536a495c35 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key @@ -5,6 +5,7 @@ } \predicates { + dominatesDepth(Object, Object, int); dominates(Object, Object); undom(Object, Object); } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key index e0842aeb951..27f1ce86d6d 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key @@ -202,6 +202,29 @@ // Predicate and Function definitions // --------------------------------------------------- + dominatesDepthDef { + \schemaVar \term Object x, y; + \schemaVar \variables Object ov; + \schemaVar \term int n; + + \find(dominatesDepth(x, y, n)) + \varcond(\notFreeIn(ov, x, y, n)) + \replacewith(\if (n <= 0) + \then(false) + \else(\if (n = 1) \then(x = owner(y)) \else(\exists ov; (x = owner(ov) & dominatesDepth(ov, y, n - 1))))) + }; + + dominatesDef { + \schemaVar \term Object x, y; + \schemaVar \variables int n; + + \find(dominates(x, y)) + + \varcond(\notFreeIn(n, x, y)) + \replacewith(\exists n; (dominatesDepth(x, y, n))) + }; + + // would make sense to be used by the automatics, but is somewhat misused and therefore not accessible by automatics undomDef { \schemaVar \term Object x, y; @@ -210,6 +233,7 @@ \replacewith(!dominates(x, y) & !dominates(y, x) & !(x = y)) }; + // would make sense to be used by the automatics, but is somewhat misused and therefore not accessible by automatics createdRepfpDef { \schemaVar \term Object x; \schemaVar \term Heap h; @@ -220,11 +244,8 @@ \varcond(\notFreeIn(y, x, h)) \replacewith(intersect(infiniteUnion{y;}(\if(boolean::select(h, y, java.lang.Object::) = TRUE) \then(y.*) \else(empty)), repfp(x))) - - \heuristics(classAxiom) }; - \lemma repfpDef { \schemaVar \term Object x; \schemaVar \variables Object y; @@ -248,4 +269,17 @@ \heuristics(concrete) }; + + dominatesMaxDepth { + \schemaVar \term Object x; + \schemaVar \variables Object y; + \schemaVar \variables int m, n; + + \find(x) + + \varcond(\notFreeIn(y, x), \notFreeIn(m, x), \notFreeIn(n, x)) + + \add(\exists n; (n >= 0 & (\forall y; (dominates(x, y) -> + (\exists m; (dominatesDepth(x, y, m) & m < n))))) ==>) + }; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key index 82c9869ec07..d62974986e6 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key @@ -1,49 +1,100 @@ \rules(programRules:Java) { + // ------------------------- + // DominateDepth rules + // ------------------------- + \lemma - dominatesNotEqual { + dominatesDepthTransitive { + \schemaVar \term Object x, y, z; + \schemaVar \term int n1, n2; + + \assumes(dominatesDepth(x, y, n1) ==>) + \find(dominatesDepth(y, z, n2) ==>) + \add(dominatesDepth(x, z, n1 + n2) ==>) + }; + + \lemma + dominatesDepth2Dominates { + \schemaVar \term int n; \schemaVar \term Object x, y; - \assumes(dominates(x, y) ==>) - \find(x = y) + \find(dominatesDepth(x, y, n) ==>) - \sameUpdateLevel + \add(n > 0 & dominates(x, y) ==>) + }; - \replacewith(false) + \lemma + dominatesSameDepth { + \schemaVar \term Object x, y, z; + \schemaVar \term int n; + + \assumes(dominatesDepth(x, z, n) ==>) + \find(dominatesDepth(y, z, n) ==>) + \add(x = y ==>) + }; + + \lemma + dominatesLargerDepth { + \schemaVar \term Object x, y, z; + \schemaVar \term int n, m; + + \assumes(m > n, dominatesDepth(x, z, n) ==>) + \find(dominatesDepth(y, z, m) ==>) + \add(dominatesDepth(y, x, m - n) ==>) + }; + + \lemma + dominatesSingleDepth { + \schemaVar \term Object x, y, z; + \schemaVar \term int n; + \schemaVar \variables int m; + + \find(dominatesDepth(x, y, n) ==>) + + \varcond(\notFreeIn(m, n, x, y)) + \add(\forall m; (dominatesDepth(x, y, m) -> m = n) ==>) + }; + // ------------------------- + // Dominate rules + // ------------------------- + + \lemma + dominatesTransitive { + \schemaVar \term Object x, y, z; + \assumes(dominates(x, y) ==>) + \find(dominates(y, z) ==>) + \add(dominates(x, z) ==>) \heuristics(simplify) }; \lemma - dominatesNotEqualLeft { + dominatesNotEqual { \schemaVar \term Object x, y; \assumes(dominates(x, y) ==>) - \find(y = x) + \find(x = y) \sameUpdateLevel \replacewith(false) \heuristics(simplify) - \displayname "dominatesNotEqual" }; \lemma - undomRefl { + dominatesNotEqualLeft { \schemaVar \term Object x, y; - \find(undom(x, y)) + \assumes(dominates(x, y) ==>) + \find(y = x) - \replacewith(undom(y, x)) - }; + \sameUpdateLevel + + \replacewith(false) - \lemma - dominatesTransitive { - \schemaVar \term Object x, y, z; - \assumes(dominates(x, y) ==>) - \find(dominates(y, z) ==>) - \add(dominates(x, z) ==>) \heuristics(simplify) + \displayname "dominatesNotEqual" }; \lemma @@ -63,16 +114,46 @@ \add(==> x = y, dominates(y, x)) }; - \lemma - owns2Dominates { + \lemma + dominatesInverse { \schemaVar \term Object x, y; - \find(owner(y) = x ==>) + \assumes(dominates(x, y) ==>) - \add(dominates(x, y) ==>) + \find(dominates(y, x)) + + \sameUpdateLevel + + \replacewith(false) + \heuristics(simplify) + }; + + \lemma + dominatesNegTransitive { + \schemaVar \term Object x, y, z; + + \assumes(dominates(x, z) ==> dominates(x, y)) + \find(dominates(z, y)) + \sameUpdateLevel + \replacewith(false) \heuristics(simplify) }; + \lemma + dominatesNegNotEqual { + \schemaVar \term Object x, y, z; + + \assumes(dominates(x, z) ==> dominates(x, y)) + \find(y = z) + \sameUpdateLevel + \replacewith(false) + \heuristics(simplify) + }; + + // ------------------------- + // Own rules + // ------------------------- + \lemma ownsSelf { \schemaVar \term Object o; @@ -96,6 +177,29 @@ \heuristics(simplify) }; + \lemma + owns2Dominates { + \schemaVar \term Object x, y; + + \find(owner(y) = x ==>) + + \add(dominates(x, y) ==>) + \heuristics(simplify) + }; + + // ------------------------- + // Undom rules + // ------------------------- + + \lemma + undomRefl { + \schemaVar \term Object x, y; + + \find(undom(x, y)) + + \replacewith(undom(y, x)) + }; + \lemma sameLevelUndom { \schemaVar \term Object o, x, y; @@ -107,64 +211,123 @@ \heuristics(simplify) }; + \lemma + dominatesSameNotUndom { + \schemaVar \term Object x, y, z; - \lemma - repfpElement { - \schemaVar \term Object x, y; - \schemaVar \term Field f; + \assumes(dominates(x, z) ==>) + \find(dominates(y, z) ==>) - \find(elementOf(x, f, repfp(y))) - \replacewith(dominates(y, x) | x = y) + \add(==> undom(x, y)) \heuristics(simplify) }; - \lemma - dominatesInverse { - \schemaVar \term Object x, y; + \lemma + undomTransitive { + \schemaVar \term Object x, y, z; - \assumes(dominates(x, y) ==>) + \assumes(dominates(y, z) ==>) + \find(undom(x, y) ==>) - \find(dominates(y, x)) + \add(undom(x, z) ==>) + + // do it by hand currently since there may be nicer ways to do that + //\heuristics(simplify) + }; + \lemma + undomNotDominates { + \schemaVar \term Object x, y; + + \assumes(undom(x, y) ==>) + \find(dominates(x, y)) \sameUpdateLevel + \replacewith(false) + \heuristics(simplify) + }; + \lemma + undomNotDominatesInv { + \schemaVar \term Object x, y; + + \assumes(undom(x, y) ==>) + \find(dominates(y, x)) + \sameUpdateLevel \replacewith(false) \heuristics(simplify) + \displayname "undomDominates" }; - \lemma - repfpSubset { + \lemma + undomNotEqual { \schemaVar \term Object x, y; + \assumes(undom(x, y) ==>) + \find(x = y) + \sameUpdateLevel + \replacewith(false) + \heuristics(simplify) + }; - \assumes(dominates(x, y) ==>) + \lemma + undomDisjointRepfp { + \schemaVar \term Object x, y; + \assumes(undom(x, y) ==>) + \find(intersect(repfp(x), repfp(y))) + \sameUpdateLevel + \replacewith(empty) + \heuristics(simplify) + }; - \find(repfp(y)) + \lemma + undomDisjointCreatedRepfp { + \schemaVar \term Object x, y; + \schemaVar \term Heap h1, h2; + \assumes(undom(x, y) ==>) + \find(intersect(createdRepfp(h1, x), createdRepfp(h2, y))) \sameUpdateLevel + \replacewith(empty) + \heuristics(simplify) + }; - \add(subset(repfp(y), repfp(x)) ==>) + \lemma + undomDisjointCreatedRepfpInv { + \schemaVar \term Object x, y; + \schemaVar \term Heap h1, h2; + + \assumes(undom(y, x) ==>) + \find(intersect(createdRepfp(h1, x), createdRepfp(h2, y))) + \sameUpdateLevel + \replacewith(empty) \heuristics(simplify) + \displayname "undomDisjointCreatedRepfp" }; + // ------------------------- + // repfp rules + // ------------------------- + \lemma - dominatesNegTransitive { - \schemaVar \term Object x, y, z; + repfpElement { + \schemaVar \term Object x, y; + \schemaVar \term Field f; - \assumes(dominates(x, z) ==> dominates(x, y)) - \find(dominates(z, y)) - \sameUpdateLevel - \replacewith(false) + \find(elementOf(x, f, repfp(y))) + \replacewith(dominates(y, x) | x = y) \heuristics(simplify) }; \lemma - dominatesNegNotEqual { - \schemaVar \term Object x, y, z; + repfpSubset { + \schemaVar \term Object x, y; + + \assumes(dominates(x, y) ==>) + + \find(repfp(y)) - \assumes(dominates(x, z) ==> dominates(x, y)) - \find(y = z) \sameUpdateLevel - \replacewith(false) + + \add(subset(repfp(y), repfp(x)) ==>) \heuristics(simplify) }; @@ -172,12 +335,16 @@ repfpDisjointComplement { \schemaVar \term Object x, y; - \find(disjoint(setMinus(allLocs, repfp(x)), repfp(y))) + \find(intersect(setMinus(allLocs, repfp(x)), repfp(y)) = empty) \replacewith(x = y | dominates(x, y)) \heuristics(simplify) }; + // ------------------------- + // createRepfp rules + // ------------------------- + \lemma createdRepfpDisjointComplementRepfp { \schemaVar \term Object x, y; @@ -185,7 +352,7 @@ \assumes(boolean::select(h, y, java.lang.Object::) = TRUE ==>) - \find(disjoint(setMinus(allLocs, repfp(x)), createdRepfp(h, y))) + \find(intersect(setMinus(allLocs, repfp(x)), createdRepfp(h, y)) = empty) \sameUpdateLevel \replacewith(x = y | dominates(x, y)) @@ -198,7 +365,7 @@ \schemaVar \term Heap h; \assumes(boolean::select(h, x, java.lang.Object::) = TRUE, boolean::select(h, y, java.lang.Object::) = TRUE ==>) - \find(disjoint(setMinus(allLocs, createdRepfp(h, x)), createdRepfp(h, y))) + \find(intersect(setMinus(allLocs, createdRepfp(h, x)), createdRepfp(h, y)) = empty) \sameUpdateLevel \replacewith(x = y | dominates(x, y)) @@ -215,28 +382,4 @@ \replacewith((dominates(y, x) | x = y) & boolean::select(h, x, java.lang.Object::) = TRUE) \heuristics(simplify) }; - - \lemma - dominatesSameNotUndom { - \schemaVar \term Object x, y, z; - - \assumes(dominates(x, z) ==>) - \find(dominates(y, z) ==>) - - \add(==> undom(x, y)) - \heuristics(simplify) - }; - - \lemma - undomTransitive { - \schemaVar \term Object x, y, z; - - \assumes(dominates(y, z) ==>) - \find(undom(x, y) ==>) - - \add(undom(x, z) ==>) - - // do it by hand currently since there may be nicer ways to do that - //\heuristics(simplify) - }; } From 902c17c0c3c82f5df44664d4aa55e2b2acb044a9 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Mon, 6 Oct 2025 15:56:11 +0200 Subject: [PATCH 14/27] remove unneeded assertion --- .../src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java | 1 - 1 file changed, 1 deletion(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java index f0369eb9a2a..51211e412af 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java @@ -1760,7 +1760,6 @@ public New convert(recoder.java.expression.operator.New n) { ImmutableArray immutableAnnots = null; if (annots != null) { var annotArr = new AnnotationUseSpecification[annots.size()]; - assert annots.size() >= 1; for (int i = annots.size() - 1; i >= 0; i--) { annotArr[i] = convert(annots.get(i)); } From 3f0dea8c86d26f6b4684f6bb8d056ee89148d33d Mon Sep 17 00:00:00 2001 From: PiisRational Date: Mon, 6 Oct 2025 16:37:29 +0200 Subject: [PATCH 15/27] remove logs in the default lemma generator --- .../ilkd/key/taclettranslation/lemma/DefaultLemmaGenerator.java | 1 - 1 file changed, 1 deletion(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/DefaultLemmaGenerator.java b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/DefaultLemmaGenerator.java index 0bbaa22675c..26c75ac2c9f 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/DefaultLemmaGenerator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/DefaultLemmaGenerator.java @@ -104,7 +104,6 @@ public String visit(Taclet taclet, boolean visitAddrules) { } public static String checkForIllegalConditions(Taclet taclet) { - LOGGER.info("{} {}", taclet, taclet.getVariableConditions()); if (!taclet.getVariableConditions().isEmpty()) { return "The given taclet " + taclet.name() + " contains variable conditions that are not supported."; From 29dabd996d7640f092de4105aa9c342d3d54789f Mon Sep 17 00:00:00 2001 From: PiisRational Date: Tue, 7 Oct 2025 19:58:02 +0200 Subject: [PATCH 16/27] all the universe lemmas have a corresponding runnable proof --- build.gradle | 18 +- .../ilkd/key/proof/rules/universeLemmas.key | 171 ++++--- .../de/uka/ilkd/key/proof/rules/various.key | 24 +- .../universe/Taclet_closePeerDominate.proof | 2 - .../universe/Taclet_closePeerOwn.proof | 2 - ...aclet_createdRepfpDisjointComplement.proof | 129 +++-- ..._createdRepfpDisjointComplementRepfp.proof | 125 +++-- .../Taclet_domfpDepthEquivDominates.proof | 328 ------------ .../universe/Taclet_domfpElement.proof | 109 ---- .../Taclet_domfpEqdomfpDepthUnion.proof | 466 ------------------ .../universe/Taclet_domfpEquivDominates.proof | 106 ---- .../universe/Taclet_domfpFinalDepth.proof | 154 ------ .../universe/Taclet_dominatesAntisymm.proof | 2 - .../Taclet_dominatesDepth2Dominates.proof | 2 - .../Taclet_dominatesDepthTransitive.proof | 2 - .../Taclet_dominatesLargerDepth.proof | 2 - .../universe/Taclet_dominatesSameDepth.proof | 2 - .../universe/Taclet_dominatesSetAllLocs.proof | 101 ---- .../Taclet_dominatesSetDisjoint.proof | 182 ------- .../universe/Taclet_dominatesSetElement.proof | 109 ---- .../Taclet_dominatesSetTransitive.proof | 111 ----- .../universe/Taclet_dominatesSetUnion.proof | 164 ------ .../Taclet_dominatesSingleDepth.proof | 2 - .../universe/Taclet_dominatesTransitive.proof | 2 - .../universe/Taclet_owns2Dominates.proof | 33 +- .../universe/Taclet_ownsSelf.proof | 2 - .../Taclet_repfpDisjointComplement.proof | 103 ++-- .../universe/Taclet_repfpElement.proof | 35 +- .../universe/Taclet_sameLevelUndom.proof | 395 ++++++++++----- .../Taclet_selectOfDominatedAnon.proof | 115 ----- .../Taclet_selectOfDominatedStore.proof | 115 ----- .../Taclet_selectOfDominatedStoreEQ.proof | 101 ---- ...=> Taclet_undomDisjointCreatedRepfp.proof} | 37 +- .../Taclet_undomDisjointCreatedRepfpInv.proof | 150 ++++++ ....proof => Taclet_undomDisjointRepfp.proof} | 82 +-- ...t.proof => Taclet_undomNotDominates.proof} | 36 +- ...roof => Taclet_undomNotDominatesInv.proof} | 37 +- .../universe/Taclet_undomNotEqual.proof | 104 ++++ ...undomRefl.proof => Taclet_undomSymm.proof} | 4 +- .../universe/Taclet_undomTransitive.proof | 2 +- ...et_variousReferencedObjectIsCreated.proof} | 32 +- 41 files changed, 969 insertions(+), 2729 deletions(-) delete mode 100644 key.core/tacletProofs/universe/Taclet_domfpDepthEquivDominates.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_domfpElement.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_domfpEqdomfpDepthUnion.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_domfpEquivDominates.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_domfpFinalDepth.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetAllLocs.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetDisjoint.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetElement.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetTransitive.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_dominatesSetUnion.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_selectOfDominatedAnon.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_selectOfDominatedStore.proof delete mode 100644 key.core/tacletProofs/universe/Taclet_selectOfDominatedStoreEQ.proof rename key.core/tacletProofs/universe/{Taclet_selectOfDominatedAnonEQ.proof => Taclet_undomDisjointCreatedRepfp.proof} (72%) create mode 100644 key.core/tacletProofs/universe/Taclet_undomDisjointCreatedRepfpInv.proof rename key.core/tacletProofs/universe/{Taclet_dominatesSetSubset.proof => Taclet_undomDisjointRepfp.proof} (53%) rename key.core/tacletProofs/universe/{Taclet_owns2DominatesLeft.proof => Taclet_undomNotDominates.proof} (76%) rename key.core/tacletProofs/universe/{Taclet_dominatesSetNotElement.proof => Taclet_undomNotDominatesInv.proof} (74%) create mode 100644 key.core/tacletProofs/universe/Taclet_undomNotEqual.proof rename key.core/tacletProofs/universe/{Taclet_undomRefl.proof => Taclet_undomSymm.proof} (96%) rename key.core/tacletProofs/universe/{Taclet_dominatesSetEmpty.proof => Taclet_variousReferencedObjectIsCreated.proof} (77%) diff --git a/build.gradle b/build.gradle index ae1703c58aa..7673265cd32 100644 --- a/build.gradle +++ b/build.gradle @@ -80,7 +80,7 @@ subprojects { repositories { mavenCentral() maven { - url 'https://git.key-project.org/api/v4/projects/35/packages/maven' + url = 'https://git.key-project.org/api/v4/projects/35/packages/maven' } } @@ -171,7 +171,7 @@ subprojects { } task testFast(type: Test) { - group "verification" + group = "verification" useJUnitPlatform { excludeTags "slow", "performance", "interactive" } @@ -179,12 +179,12 @@ subprojects { testLogging { // set options for log level LIFECYCLE events "failed" - exceptionFormat "short" + exceptionFormat = "short" // set options for log level DEBUG debug { events "started", "skipped", "failed" - exceptionFormat "full" + exceptionFormat = "full" } // remove standard output/error logging from --info builds @@ -197,15 +197,15 @@ subprojects { // The main class is set via "gradle -DmainClass=... execute --args ..." // see https://stackoverflow.com/questions/21358466/gradle-to-execute-java-class-without-modifying-build-gradle task execute(type: JavaExec) { - description 'Execute main method from the project. Set main class via "gradle -DmainClass=... execute --args ..."' - group "application" + description = 'Execute main method from the project. Set main class via "gradle -DmainClass=... execute --args ..."' + group = "application" mainClass.set(System.getProperty('mainClass')) classpath = sourceSets.main.runtimeClasspath } task executeInTests(type: JavaExec) { - description 'Execute main method from the project (tests loaded). Set main class via "gradle -DmainClass=... execute --args ..."' - group "application" + description = 'Execute main method from the project (tests loaded). Set main class via "gradle -DmainClass=... execute --args ..."' + group = "application" mainClass.set(System.getProperty('mainClass')) classpath = sourceSets.test.runtimeClasspath } @@ -241,7 +241,7 @@ subprojects { checkstyle { toolVersion = "10.6.0" ignoreFailures = true - configFile file("$rootDir/gradle/key_checks.xml") + configFile = file("$rootDir/gradle/key_checks.xml") showViolations = false // disable console output } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key index d62974986e6..ce7d335ab92 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key @@ -154,6 +154,16 @@ // Own rules // ------------------------- + \lemma + owns2Dominates { + \schemaVar \term Object x, y; + + \find(owner(y) = x ==>) + + \add(dominates(x, y) ==>) + \heuristics(simplify) + }; + \lemma ownsSelf { \schemaVar \term Object o; @@ -165,7 +175,6 @@ \heuristics(simplify) }; - \lemma closePeerOwn { \schemaVar \term Object x, y; @@ -177,13 +186,83 @@ \heuristics(simplify) }; - \lemma - owns2Dominates { + // ------------------------- + // repfp rules + // ------------------------- + + \lemma + repfpElement { \schemaVar \term Object x, y; + \schemaVar \term Field f; - \find(owner(y) = x ==>) + \find(elementOf(x, f, repfp(y))) + \replacewith(dominates(y, x) | x = y) + \heuristics(simplify) + }; - \add(dominates(x, y) ==>) + \lemma + repfpSubset { + \schemaVar \term Object x, y; + + \assumes(dominates(x, y) ==>) + + \find(repfp(y)) + + \sameUpdateLevel + + \add(subset(repfp(y), repfp(x)) ==>) + \heuristics(simplify) + }; + + \lemma + repfpDisjointComplement { + \schemaVar \term Object x, y; + + \find(intersect(setMinus(allLocs, repfp(x)), repfp(y)) = empty) + + \replacewith(x = y | dominates(x, y)) + \heuristics(simplify) + }; + + // ------------------------- + // createRepfp rules + // ------------------------- + + \lemma + createdRepfpDisjointComplementRepfp { + \schemaVar \term Object x, y; + \schemaVar \term Heap h; + + \assumes(boolean::select(h, y, java.lang.Object::) = TRUE ==>) + + \find(intersect(setMinus(allLocs, repfp(x)), createdRepfp(h, y)) = empty) + \sameUpdateLevel + + \replacewith(x = y | dominates(x, y)) + \heuristics(simplify) + }; + + \lemma + createdRepfpDisjointComplement { + \schemaVar \term Object x, y; + \schemaVar \term Heap h; + + \assumes(boolean::select(h, x, java.lang.Object::) = TRUE, boolean::select(h, y, java.lang.Object::) = TRUE ==>) + \find(intersect(setMinus(allLocs, createdRepfp(h, x)), createdRepfp(h, y)) = empty) + \sameUpdateLevel + + \replacewith(x = y | dominates(x, y)) + \heuristics(simplify) + }; + + \lemma + createdRepfpElement { + \schemaVar \term Object x, y; + \schemaVar \term Heap h; + \schemaVar \term Field f; + + \find(elementOf(x, f, createdRepfp(h, y))) + \replacewith((dominates(y, x) | x = y) & boolean::select(h, x, java.lang.Object::) = TRUE) \heuristics(simplify) }; @@ -192,7 +271,7 @@ // ------------------------- \lemma - undomRefl { + undomSymm { \schemaVar \term Object x, y; \find(undom(x, y)) @@ -302,84 +381,4 @@ \heuristics(simplify) \displayname "undomDisjointCreatedRepfp" }; - - // ------------------------- - // repfp rules - // ------------------------- - - \lemma - repfpElement { - \schemaVar \term Object x, y; - \schemaVar \term Field f; - - \find(elementOf(x, f, repfp(y))) - \replacewith(dominates(y, x) | x = y) - \heuristics(simplify) - }; - - \lemma - repfpSubset { - \schemaVar \term Object x, y; - - \assumes(dominates(x, y) ==>) - - \find(repfp(y)) - - \sameUpdateLevel - - \add(subset(repfp(y), repfp(x)) ==>) - \heuristics(simplify) - }; - - \lemma - repfpDisjointComplement { - \schemaVar \term Object x, y; - - \find(intersect(setMinus(allLocs, repfp(x)), repfp(y)) = empty) - - \replacewith(x = y | dominates(x, y)) - \heuristics(simplify) - }; - - // ------------------------- - // createRepfp rules - // ------------------------- - - \lemma - createdRepfpDisjointComplementRepfp { - \schemaVar \term Object x, y; - \schemaVar \term Heap h; - - \assumes(boolean::select(h, y, java.lang.Object::) = TRUE ==>) - - \find(intersect(setMinus(allLocs, repfp(x)), createdRepfp(h, y)) = empty) - \sameUpdateLevel - - \replacewith(x = y | dominates(x, y)) - \heuristics(simplify) - }; - - \lemma - createdRepfpDisjointComplement { - \schemaVar \term Object x, y; - \schemaVar \term Heap h; - - \assumes(boolean::select(h, x, java.lang.Object::) = TRUE, boolean::select(h, y, java.lang.Object::) = TRUE ==>) - \find(intersect(setMinus(allLocs, createdRepfp(h, x)), createdRepfp(h, y)) = empty) - \sameUpdateLevel - - \replacewith(x = y | dominates(x, y)) - \heuristics(simplify) - }; - - \lemma - createdRepfpElement { - \schemaVar \term Object x, y; - \schemaVar \term Heap h; - \schemaVar \term Field f; - - \find(elementOf(x, f, createdRepfp(h, y))) - \replacewith((dominates(y, x) | x = y) & boolean::select(h, x, java.lang.Object::) = TRUE) - \heuristics(simplify) - }; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key index f0e020a7fef..392d24e73ae 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key @@ -1,6 +1,26 @@ +\rules(programRules:Java) { + \lemma + variousSeqConcatAssociative { + \schemaVar \term Seq a, b, c; + \find(seqConcat(seqConcat(a, b), c)) + + \replacewith(seqConcat(a, seqConcat(b, c))) + + \heuristics(simplify) + }; + + \lemma + variousDisjointComplement { + \schemaVar \term LocSet x, y; + + \find(disjoint(setMinus(allLocs, x), y)) + + \replacewith(subset(y, x)) + + \heuristics(simplify) + }; -\rules(programRules:Java) { \lemma variousReferencedObjectIsCreated { \schemaVar \term Heap h; @@ -16,7 +36,7 @@ \replacewith(true) - \heuristics(concrete) + \heuristics(simplify) }; \lemma diff --git a/key.core/tacletProofs/universe/Taclet_closePeerDominate.proof b/key.core/tacletProofs/universe/Taclet_closePeerDominate.proof index 833a8ef8f52..0f29db6278e 100644 --- a/key.core/tacletProofs/universe/Taclet_closePeerDominate.proof +++ b/key.core/tacletProofs/universe/Taclet_closePeerDominate.proof @@ -80,9 +80,7 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", "name" : "closePeerDominate", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" } \proof { diff --git a/key.core/tacletProofs/universe/Taclet_closePeerOwn.proof b/key.core/tacletProofs/universe/Taclet_closePeerOwn.proof index 9ad1e6ae2ed..c7fe71ab833 100644 --- a/key.core/tacletProofs/universe/Taclet_closePeerOwn.proof +++ b/key.core/tacletProofs/universe/Taclet_closePeerOwn.proof @@ -80,9 +80,7 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", "name" : "closePeerOwn", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" } \proof { diff --git a/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplement.proof b/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplement.proof index 2ae6e0ebb23..e3385bc4973 100644 --- a/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplement.proof +++ b/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplement.proof @@ -5,7 +5,7 @@ "Choice" : { "JavaCard" : "JavaCard:off", "Strings" : "Strings:on", - "assertions" : "assertions:on", + "assertions" : "assertions:safe", "bigint" : "bigint:on", "finalFields" : "finalFields:immutable", "floatRules" : "floatRules:strictfpOnly", @@ -15,7 +15,7 @@ "javaLoopTreatment" : "javaLoopTreatment:efficient", "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", + "modelFields" : "modelFields:treatAsAxiom", "moreSeqRules" : "moreSeqRules:off", "permissions" : "permissions:off", "programRules" : "programRules:Java", @@ -48,22 +48,22 @@ }, "Strategy" : { "ActiveStrategy" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 9000, + "MaximumNumberOfAutomaticApplications" : 10000, "Timeout" : -1, "options" : { "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", "DEP_OPTIONS_KEY" : "DEP_ON", "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", "OSS_OPTIONS_KEY" : "OSS_ON", "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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", @@ -84,39 +84,45 @@ } \proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) -(autoModeTime "530") +(autoModeTime "232") (branch "dummy ID" +(rule "createdRepfpDef" (formula "1") (term "1,0,0,0,0,0") (inst "y=y") (userinteraction)) +(rule "createdRepfpDef" (formula "1") (term "1,0,0,0,0") (inst "y=y") (userinteraction)) +(rule "equalityToElementOf" (formula "1") (term "0,0,0") (inst "ov=ov") (inst "fv=fv") (userinteraction)) + (builtin "One Step Simplification" (formula "1")) (rule "impRight" (formula "1")) +(rule "notLeft" (formula "1")) (rule "notRight" (formula "2")) -(rule "notLeft" (formula "2")) (rule "andLeft" (formula "1")) -(rule "disjointToElementOf" (formula "3") (term "0") (inst "ov=ov") (inst "fv=fv") (userinteraction)) -(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,0") (userinteraction)) -(rule "createdRepfpDef" (formula "3") (term "2,0,1,0,0,0,0,0") (inst "y=y") (userinteraction)) -(rule "createdRepfpDef" (formula "3") (term "2,0,1,0,0,0") (inst "y=y") (userinteraction)) -(rule "elementOfIntersect" (formula "3") (term "0,1,0,0,0") (userinteraction)) -(rule "elementOfInfiniteUnion" (formula "3") (term "0,0,1,0,0,0") (userinteraction)) -(rule "elementOfIntersect" (formula "3") (term "0,1,0,0,0,0,0") (userinteraction)) -(rule "elementOfInfiniteUnion" (formula "3") (term "0,0,1,0,0,0,0,0") (userinteraction)) - (builtin "One Step Simplification" (formula "3") (userinteraction)) -(rule "repfpElement" (formula "3") (term "1,0,0,0,0") (userinteraction)) -(rule "repfpElement" (formula "3") (term "1,0,1,0,0,0") (userinteraction)) - (builtin "One Step Simplification" (formula "3") (userinteraction)) -(rule "equiv_right" (formula "3") (userinteraction)) +(rule "eqSymm" (formula "3") (term "0,1")) +(rule "elementOfIntersect" (formula "3") (term "0,0,0,0")) +(rule "elementOfSetMinus" (formula "3") (term "0,0,0,0,0")) + (builtin "One Step Simplification" (formula "3")) +(rule "elementOfIntersect" (formula "3") (term "0,0,0,0,0,0")) +(rule "repfpElement" (formula "3") (term "1,0,0,0,0,0,0")) +(rule "elementOfInfiniteUnion" (formula "3") (term "0,0,0,0,0,0,0")) + (builtin "One Step Simplification" (formula "3")) +(rule "elementOfIntersect" (formula "3") (term "1,0,0,0,0")) +(rule "repfpElement" (formula "3") (term "1,1,0,0,0,0")) +(rule "elementOfInfiniteUnion" (formula "3") (term "0,1,0,0,0,0")) + (builtin "One Step Simplification" (formula "3")) +(rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__0")) +(rule "applyEqRigid" (formula "1") (term "1") (ifseqformula "2")) +(rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=java_lang_Object_created__1")) +(rule "applyEq" (formula "3") (term "1") (ifseqformula "4")) +(rule "hideAuxiliaryEqConcrete" (formula "2")) +(rule "hideAuxiliaryEqConcrete" (formula "3")) +(rule "nnf_notAnd" (formula "3") (term "0,0")) + (builtin "One Step Simplification" (formula "3")) +(rule "nnf_notAnd" (formula "3") (term "1,0,0")) +(rule "nnf_notOr" (formula "3") (term "1,1,0,0")) +(rule "commute_or" (formula "3") (term "1")) +(rule "equiv_right" (formula "3")) (branch "Case '->'" (rule "orRight" (formula "4")) - (rule "eqSymm" (formula "4")) - (rule "pullOutSelect" (formula "3") (term "0") (inst "selectSK=java_lang_Object_created__0")) - (rule "applyEq" (formula "3") (term "1") (ifseqformula "4")) - (rule "pullOutSelect" (formula "2") (term "0") (inst "selectSK=java_lang_Object_created__1")) - (rule "applyEq" (formula "2") (term "1") (ifseqformula "3")) - (rule "hideAuxiliaryEqConcrete" (formula "5")) - (rule "hideAuxiliaryEqConcrete" (formula "3")) - (rule "nnf_notAnd" (formula "1") (term "1,0")) - (rule "nnf_notOr" (formula "1") (term "1,1,0")) (rule "cnf_rightDist" (formula "1") (term "1,0")) (rule "commute_or" (formula "1") (term "0,1,0")) (rule "cnf_rightDist" (formula "1") (term "0")) @@ -135,56 +141,41 @@ (builtin "One Step Simplification" (formula "2")) (rule "true_left" (formula "2")) (rule "shift_paren_or" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "6")) (ifInst "" (formula "5")) (ifInst "" (formula "4"))) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "5")) (ifInst "" (formula "6")) (ifInst "" (formula "4"))) (rule "closeFalse" (formula "2")) ) (branch "Case '<-'" (rule "allRight" (formula "4") (inst "sk=ov_0")) (rule "orRight" (formula "4")) + (rule "orRight" (formula "5")) (rule "notRight" (formula "5")) - (rule "andLeft" (formula "1")) - (rule "eqSymm" (formula "3") (term "0")) - (rule "replace_known_left" (formula "6") (term "0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "6")) - (rule "orRight" (formula "6")) - (rule "pullOutSelect" (formula "4") (term "0") (inst "selectSK=java_lang_Object_created__0")) - (rule "applyEqRigid" (formula "4") (term "1") (ifseqformula "5")) - (rule "pullOutSelect" (formula "6") (term "0") (inst "selectSK=java_lang_Object_created__1")) - (rule "applyEqRigid" (formula "6") (term "1") (ifseqformula "7")) + (rule "replace_known_left" (formula "5") (term "0") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "5")) + (rule "orRight" (formula "5")) (rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__2")) - (rule "applyEqRigid" (formula "1") (term "1") (ifseqformula "2")) - (rule "hideAuxiliaryEqConcrete" (formula "6")) - (rule "hideAuxiliaryEqConcrete" (formula "7")) + (rule "applyEq" (formula "1") (term "1") (ifseqformula "2")) (rule "hideAuxiliaryEqConcrete" (formula "2")) - (rule "commute_or" (formula "3")) (rule "cut_direct" (formula "2") (term "1")) - (branch "CUT: ov_0 = f_y TRUE" + (branch "CUT: f_y = f_x TRUE" (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) - (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "2")) - (rule "applyEq" (formula "5") (term "1") (ifseqformula "1")) - (rule "replace_known_right" (formula "2") (term "0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "2")) - (rule "applyEqRigid" (formula "6") (term "0") (ifseqformula "1")) - (rule "close" (formula "6") (ifseqformula "2")) + (rule "applyEqRigid" (formula "7") (term "1,0,1") (ifseqformula "2")) + (rule "replace_known_right" (formula "7") (term "0,1") (ifseqformula "6")) + (builtin "One Step Simplification" (formula "7")) + (rule "notRight" (formula "7")) + (rule "applyEq" (formula "5") (term "1,0") (ifseqformula "3")) + (rule "applyEqRigid" (formula "1") (term "0") (ifseqformula "3")) + (rule "close" (formula "5") (ifseqformula "1")) ) - (branch "CUT: ov_0 = f_y FALSE" + (branch "CUT: f_y = f_x FALSE" (builtin "One Step Simplification" (formula "2")) - (rule "dominatesNotEqualLeft" (formula "6") (ifseqformula "2")) + (rule "dominatesNegTransitive" (formula "8") (term "0,0") (ifseqformula "2") (ifseqformula "6")) + (builtin "One Step Simplification" (formula "8")) + (rule "notRight" (formula "8")) + (rule "dominatesNotEqualLeft" (formula "6") (ifseqformula "3")) (rule "false_right" (formula "6")) - (rule "cut_direct" (formula "3") (term "1")) - (branch "CUT: f_y = f_x TRUE" - (builtin "One Step Simplification" (formula "4")) - (rule "true_left" (formula "4")) - (rule "applyEqRigid" (formula "5") (term "1,0") (ifseqformula "3")) - (rule "applyEq" (formula "2") (term "0") (ifseqformula "3")) - (rule "close" (formula "5") (ifseqformula "2")) - ) - (branch "CUT: f_y = f_x FALSE" - (builtin "One Step Simplification" (formula "3")) - (rule "dominatesNegTransitive" (formula "2") (ifseqformula "3") (ifseqformula "7")) - (rule "closeFalse" (formula "2")) - ) + (rule "dominatesNegNotEqual" (formula "1") (ifseqformula "3") (ifseqformula "6")) + (rule "closeFalse" (formula "1")) ) ) ) diff --git a/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplementRepfp.proof b/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplementRepfp.proof index d0dc47abee5..00dda7fdea2 100644 --- a/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplementRepfp.proof +++ b/key.core/tacletProofs/universe/Taclet_createdRepfpDisjointComplementRepfp.proof @@ -5,7 +5,7 @@ "Choice" : { "JavaCard" : "JavaCard:off", "Strings" : "Strings:on", - "assertions" : "assertions:on", + "assertions" : "assertions:safe", "bigint" : "bigint:on", "finalFields" : "finalFields:immutable", "floatRules" : "floatRules:strictfpOnly", @@ -15,7 +15,7 @@ "javaLoopTreatment" : "javaLoopTreatment:efficient", "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", + "modelFields" : "modelFields:treatAsAxiom", "moreSeqRules" : "moreSeqRules:off", "permissions" : "permissions:off", "programRules" : "programRules:Java", @@ -48,22 +48,22 @@ }, "Strategy" : { "ActiveStrategy" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 9000, + "MaximumNumberOfAutomaticApplications" : 10000, "Timeout" : -1, "options" : { "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", "DEP_OPTIONS_KEY" : "DEP_ON", "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", "OSS_OPTIONS_KEY" : "OSS_ON", "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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", @@ -80,89 +80,84 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "name" : "createdRepfpDisjointComplement" + "name" : "createdRepfpDisjointComplementRepfp" } \proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) -(autoModeTime "203") +(autoModeTime "463") (branch "dummy ID" -(rule "impRight" (formula "1") (newnames "f_x,f_h,f_y")) +(rule "equalityToElementOf" (formula "1") (term "0,0,0") (inst "ov=ov") (inst "fv=fv") (userinteraction)) +(rule "createdRepfpDef" (formula "1") (term "1,2,0,0,0,0,0,0") (inst "y=y") (userinteraction)) + (builtin "One Step Simplification" (formula "1")) +(rule "impRight" (formula "1")) +(rule "notLeft" (formula "1")) (rule "notRight" (formula "2")) -(rule "notLeft" (formula "2")) -(rule "commuteDisjoint" (formula "2") (term "0") (userinteraction)) -(rule "disjointToElementOf" (formula "2") (term "0") (inst "ov=ov") (inst "fv=fv") (userinteraction)) -(rule "elementOfSetMinus" (formula "2") (term "0,1,0,0,0") (userinteraction)) -(rule "repfpElement" (formula "2") (term "0,1,0,1,0,0,0") (userinteraction)) -(rule "createdRepfpDef" (formula "2") (term "2,0,0,0,0,0") (inst "y=y") (userinteraction)) -(rule "elementOfIntersect" (formula "2") (term "0,0,0,0,0") (userinteraction)) -(rule "elementOfInfiniteUnion" (formula "2") (term "0,0,0,0,0,0") (userinteraction)) -(rule "repfpElement" (formula "2") (term "1,0,0,0,0,0") (userinteraction)) - (builtin "One Step Simplification" (formula "2") (userinteraction)) -(rule "equiv_right" (formula "2") (userinteraction)) +(rule "eqSymm" (formula "2") (term "0,1")) +(rule "elementOfIntersect" (formula "2") (term "0,0,0,0")) +(rule "elementOfSetMinus" (formula "2") (term "0,0,0,0,0")) + (builtin "One Step Simplification" (formula "2")) +(rule "repfpElement" (formula "2") (term "0,0,0,0,0,0")) +(rule "elementOfIntersect" (formula "2") (term "1,0,0,0,0")) +(rule "elementOfInfiniteUnion" (formula "2") (term "0,1,0,0,0,0")) + (builtin "One Step Simplification" (formula "2")) +(rule "repfpElement" (formula "2") (term "1,1,0,0,0,0")) + (builtin "One Step Simplification" (formula "2")) +(rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__0")) +(rule "applyEqRigid" (formula "1") (term "1") (ifseqformula "2")) +(rule "hideAuxiliaryEqConcrete" (formula "2")) +(rule "nnf_notAnd" (formula "2") (term "0,0")) + (builtin "One Step Simplification" (formula "2")) +(rule "nnf_notAnd" (formula "2") (term "1,0,0")) +(rule "nnf_notOr" (formula "2") (term "1,1,0,0")) +(rule "commute_or" (formula "2") (term "1")) +(rule "equiv_right" (formula "2")) (branch "Case '->'" - (rule "orRight" (formula "3") (userinteraction)) - (rule "eqSymm" (formula "3")) - (rule "pullOutSelect" (formula "2") (term "0") (inst "selectSK=java_lang_Object_created__0")) - (rule "applyEqRigid" (formula "2") (term "1") (ifseqformula "3")) - (rule "hideAuxiliaryEqConcrete" (formula "3")) - (rule "nnf_notAnd" (formula "1") (term "0,0")) - (rule "nnf_notOr" (formula "1") (term "1,0,0")) - (rule "commute_or_2" (formula "1") (term "0")) - (rule "commute_or" (formula "1") (term "0,0")) + (rule "orRight" (formula "3")) + (rule "cnf_rightDist" (formula "1") (term "1,0")) + (rule "commute_or" (formula "1") (term "0,1,0")) (rule "cnf_rightDist" (formula "1") (term "0")) (rule "distr_forallAnd" (formula "1")) (rule "andLeft" (formula "1")) - (rule "commute_or" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "5")) (ifInst "" (formula "4")) (ifInst "" (formula "3"))) + (rule "commute_or_2" (formula "2") (term "0")) + (rule "shift_paren_or" (formula "1") (term "0")) + (rule "commute_or" (formula "2") (term "0,0")) + (rule "commute_or_2" (formula "2") (term "0")) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "4")) (ifInst "" (formula "5")) (ifInst "" (formula "3"))) (rule "closeFalse" (formula "2")) ) (branch "Case '<-'" (rule "allRight" (formula "3") (inst "sk=ov_0")) (rule "orRight" (formula "3")) - (rule "notRight" (formula "3")) (rule "orRight" (formula "4")) - (rule "andLeft" (formula "1")) - (rule "eqSymm" (formula "3") (term "0")) - (rule "pullOutSelect" (formula "4") (term "0") (inst "selectSK=java_lang_Object_created__0")) - (rule "applyEq" (formula "4") (term "1") (ifseqformula "5")) + (rule "orRight" (formula "3")) + (rule "notRight" (formula "5")) (rule "pullOutSelect" (formula "1") (term "0") (inst "selectSK=java_lang_Object_created__1")) (rule "applyEqRigid" (formula "1") (term "1") (ifseqformula "2")) - (rule "hideAuxiliaryEqConcrete" (formula "6")) (rule "hideAuxiliaryEqConcrete" (formula "2")) - (rule "commute_or" (formula "3")) (rule "cut_direct" (formula "2") (term "1")) - (branch "CUT: ov_0 = f_y TRUE" + (branch "CUT: f_y = f_x TRUE" (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) - (rule "applyEq" (formula "6") (term "0") (ifseqformula "2")) - (rule "replace_known_right" (formula "3") (term "1") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "3")) - (rule "dominatesNotEqualLeft" (formula "6") (ifseqformula "3")) - (rule "false_right" (formula "6")) - (rule "applyEqRigid" (formula "5") (term "1") (ifseqformula "2")) - (rule "close" (formula "5") (ifseqformula "3")) + (rule "applyEq" (formula "6") (term "1,0,1") (ifseqformula "2")) + (rule "replace_known_right" (formula "6") (term "0,1") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "6")) + (rule "notRight" (formula "6")) + (rule "applyEqRigid" (formula "4") (term "1,0") (ifseqformula "3")) + (rule "applyEqRigid" (formula "1") (term "0") (ifseqformula "3")) + (rule "close" (formula "5") (ifseqformula "1")) ) - (branch "CUT: ov_0 = f_y FALSE" + (branch "CUT: f_y = f_x FALSE" (builtin "One Step Simplification" (formula "2")) - (rule "dominatesNotEqualLeft" (formula "5") (ifseqformula "2")) + (rule "dominatesNegTransitive" (formula "7") (term "0,0") (ifseqformula "2") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "7")) + (rule "notRight" (formula "7")) + (rule "dominatesNotEqualLeft" (formula "5") (ifseqformula "3")) (rule "false_right" (formula "5")) - (rule "cut_direct" (formula "3") (term "1")) - (branch "CUT: f_y = f_x TRUE" - (builtin "One Step Simplification" (formula "4")) - (rule "true_left" (formula "4")) - (rule "applyEq" (formula "2") (term "0") (ifseqformula "3")) - (rule "close" (formula "5") (ifseqformula "2")) - ) - (branch "CUT: f_y = f_x FALSE" - (builtin "One Step Simplification" (formula "3")) - (rule "dominatesNotEqualLeft" (formula "5") (ifseqformula "3")) - (rule "false_right" (formula "5")) - (rule "dominatesTransitive" (formula "2") (ifseqformula "3")) - (rule "close" (formula "6") (ifseqformula "2")) - ) + (rule "dominatesNegNotEqual" (formula "1") (ifseqformula "3") (ifseqformula "5")) + (rule "closeFalse" (formula "1")) ) ) ) diff --git a/key.core/tacletProofs/universe/Taclet_domfpDepthEquivDominates.proof b/key.core/tacletProofs/universe/Taclet_domfpDepthEquivDominates.proof deleted file mode 100644 index f0fe15abef7..00000000000 --- a/key.core/tacletProofs/universe/Taclet_domfpDepthEquivDominates.proof +++ /dev/null @@ -1,328 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "name" : "domfpDepthEquivDominates" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "4736") - -(branch "dummy ID" -(rule "int_induction" (newnames "f_x,f_n,v_y") (inst "b=(\\forall java.lang.Object o; - ( domfpDepth(o, f_n) - = infiniteUnion{java.lang.Object v_y;}(\\if (dominatesDepth(o, - v_y, - f_n)) - \\then (allFields(v_y)) - \\else (empty)))<>)<>") (inst "nv=f_n") (userinteraction)) -(branch "Base Case" - (rule "hide_right" (formula "2") (userinteraction)) - (rule "allRight" (formula "1") (inst "sk=o_0") (userinteraction)) - (rule "equalityToElementOfRight" (formula "1") (inst "ov=ov") (inst "fv=fv") (userinteraction)) - (rule "swapQuantifiersAll" (formula "1") (userinteraction)) - (rule "allRight" (formula "1") (inst "sk=fv_0") (userinteraction)) - (rule "allRight" (formula "1") (inst "sk=ov_0") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "1") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) - (rule "dominatesDepthDef" (formula "1") (term "1") (inst "ov=ov") (userinteraction)) - (rule "domfpDepthDef" (formula "1") (term "2,0") (inst "y=y") (userinteraction)) - (rule "leq_literals" (formula "1") (term "0,2,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "sub_literals" (formula "1") (term "2,1,0,2,2,0")) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeTrue" (formula "1")) -) -(branch "Step Case" - (rule "allRight" (formula "1") (inst "sk=f_n_0") (userinteraction)) - (rule "impRight" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "allRight" (formula "3") (inst "sk=o_0") (userinteraction)) - (rule "hide_right" (formula "4") (userinteraction)) - (rule "equalityToElementOfRight" (formula "3") (inst "ov=ov") (inst "fv=fv") (userinteraction)) - (rule "allRight" (formula "3") (inst "sk=ov_0") (userinteraction)) - (rule "allRight" (formula "3") (inst "sk=fv_0") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "3") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "3") (userinteraction)) - (rule "dominatesDepthDef" (formula "3") (term "1") (inst "ov=ov") (userinteraction)) - (rule "domfpDepthDef" (formula "3") (term "2,0") (inst "y=y") (userinteraction)) - (rule "ifthenelse_split_for" (formula "3") (term "1") (userinteraction)) - (branch "f_n_0 + 1 ≤ 0 TRUE" - (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "1"))) - (rule "closeTrue" (formula "4")) - ) - (branch "f_n_0 + 1 ≤ 0 FALSE" - (rule "replace_known_right" (formula "4") (term "0,2,0") (ifseqformula "3") (userinteraction)) - (rule "polySimp_homoEq" (formula "4") (term "0,1")) - (rule "polySimp_mulComm0" (formula "4") (term "1,0,0,1")) - (rule "polySimp_addComm0" (formula "4") (term "1,1,0,0,1")) - (rule "polySimp_rightDist" (formula "4") (term "1,0,0,1")) - (rule "mul_literals" (formula "4") (term "0,1,0,0,1")) - (rule "polySimp_addAssoc" (formula "4") (term "0,0,1")) - (rule "add_literals" (formula "4") (term "0,0,0,1")) - (rule "add_zero_left" (formula "4") (term "0,0,1")) - (rule "polySimp_invertEq" (formula "4") (term "0,1")) - (rule "mul_literals" (formula "4") (term "1,0,1")) - (rule "polySimp_mulLiterals" (formula "4") (term "0,0,1")) - (rule "polySimp_elimOne" (formula "4") (term "0,0,1")) - (builtin "One Step Simplification" (formula "4")) - (rule "elementOfInfiniteUnion" (formula "4") (term "0") (userinteraction)) - (builtin "One Step Simplification" (formula "4") (userinteraction)) - (rule "ifthenelse_split_for" (formula "4") (term "1") (userinteraction)) - (branch "f_n_0 = 0 TRUE" - (rule "applyEqRigid" (formula "4") (term "0,0") (ifseqformula "1") (userinteraction)) - (rule "applyEqRigid" (formula "2") (term "0") (ifseqformula "1") (userinteraction)) - (rule "add_literals" (formula "4") (term "0")) - (rule "leq_literals" (formula "4")) - (rule "false_right" (formula "4")) - (rule "qeq_literals" (formula "2")) - (rule "true_left" (formula "2")) - (rule "polySimp_elimSub" (formula "3") (term "1,2,2,1,0,0")) - (rule "mul_literals" (formula "3") (term "1,1,2,2,1,0,0")) - (rule "polySimp_addLiterals" (formula "3") (term "1,2,2,1,0,0")) - (rule "add_zero_right" (formula "3") (term "1,2,2,1,0,0")) - (rule "applyEq" (formula "3") (term "1,2,2,1,0,0") (ifseqformula "1")) - (rule "equiv_right" (formula "3") (userinteraction)) - (branch "Case '->'" - (rule "exLeft" (formula "1") (inst "sk=y_0") (userinteraction)) - (rule "andLeft" (formula "1") (userinteraction)) - (rule "applyEq" (formula "2") (term "0,0,0,2") (ifseqformula "3")) - (rule "add_zero_left" (formula "2") (term "0,0,2")) - (rule "equal_literals" (formula "2") (term "0,2")) - (builtin "One Step Simplification" (formula "2")) - (rule "applyEqRigid" (formula "5") (term "0,1") (ifseqformula "2") (userinteraction)) - (rule "close" (formula "5") (ifseqformula "1") (userinteraction)) - ) - (branch "Case '<-'" - (rule "exRight" (formula "4") (inst "t=ov_0") (userinteraction)) - (rule "replace_known_left" (formula "4") (term "0") (ifseqformula "1") (userinteraction)) - (builtin "One Step Simplification" (formula "4") (userinteraction)) - (rule "applyEq" (formula "4") (term "0,0,0,2") (ifseqformula "2")) - (rule "add_zero_left" (formula "4") (term "0,0,2")) - (rule "equal_literals" (formula "4") (term "0,2")) - (builtin "One Step Simplification" (formula "4")) - (rule "closeTrue" (formula "4") (userinteraction)) - ) - ) - (branch "f_n_0 = 0 FALSE" - (rule "polySimp_elimSub" (formula "5") (term "2,1,0,1")) - (rule "mul_literals" (formula "5") (term "1,2,1,0,1")) - (rule "polySimp_addLiterals" (formula "5") (term "2,1,0,1")) - (rule "add_zero_right" (formula "5") (term "2,1,0,1")) - (rule "switch_params" (formula "5") (term "0,1,2,2,1,0,0") (userinteraction)) - (rule "sub" (formula "5") (term "1,2,2,1,0,0") (userinteraction)) - (rule "polySimp_addComm0" (formula "5") (term "1,2,2,1,0,0") (userinteraction)) - (rule "polySimp_addAssoc" (formula "5") (term "1,2,2,1,0,0") (userinteraction)) - (rule "neg_literal" (formula "5") (term "0,0,1,2,2,1,0,0")) - (rule "add_literals" (formula "5") (term "0,1,2,2,1,0,0")) - (rule "add_zero_left" (formula "5") (term "1,2,2,1,0,0")) - (rule "equiv_right" (formula "5") (userinteraction)) - (branch "Case '->'" - (rule "exLeft" (formula "1") (inst "sk=y_0") (userinteraction)) - (rule "andLeft" (formula "1") (userinteraction)) - (rule "add_eq" (formula "2") (term "0,2") (inst "i=Z(neglit(1(#)))") (userinteraction)) - (rule "add_literals" (formula "2") (term "1,0,2") (userinteraction)) - (rule "polySimp_addAssoc" (formula "2") (term "0,0,2") (userinteraction)) - (rule "switch_params" (formula "2") (term "0,0,0,2") (userinteraction)) - (rule "polySimp_addLiterals" (formula "2") (term "0,0,2") (userinteraction)) - (rule "add_zero_right" (formula "2") (term "0,0,2") (userinteraction)) - (rule "ifthenelse_split" (formula "2") (term "2") (userinteraction)) - (branch "f_n_0 = 0 TRUE" - (rule "close" (formula "7") (ifseqformula "2") (userinteraction)) - ) - (branch "f_n_0 = 0 FALSE" - (rule "exRight" (formula "7") (inst "t=y_0") (userinteraction)) - (rule "replace_known_left" (formula "7") (term "0") (ifseqformula "1") (userinteraction)) - (builtin "One Step Simplification" (formula "7") (userinteraction)) - (rule "allLeft" (formula "4") (inst "t=y_0") (userinteraction)) - (rule "applyEqRigid" (formula "2") (term "2") (ifseqformula "4") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "8")) (userinteraction)) - (rule "closeFalse" (formula "2") (userinteraction)) - ) - ) - (branch "Case '<-'" - (rule "cut_direct" (formula "6") (term "0,2,1,0")) - (branch "CUT: f_n_0 + 1 = 1 TRUE" - (rule "polySimp_homoEq" (formula "1")) - (rule "polySimp_mulComm0" (formula "1") (term "1,0")) - (rule "polySimp_addComm0" (formula "1") (term "1,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 "add_zero_left" (formula "1") (term "0")) - (rule "polySimp_invertEq" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "polySimp_mulLiterals" (formula "1") (term "0")) - (rule "polySimp_elimOne" (formula "1") (term "0")) - (rule "replace_known_right" (formula "1") (ifseqformula "6")) - (rule "closeFalse" (formula "1")) - ) - (branch "CUT: f_n_0 + 1 = 1 FALSE" - (rule "polySimp_homoEq" (formula "6")) - (rule "polySimp_mulComm0" (formula "6") (term "1,0")) - (rule "polySimp_addComm0" (formula "6") (term "1,1,0")) - (rule "polySimp_rightDist" (formula "6") (term "1,0")) - (rule "mul_literals" (formula "6") (term "0,1,0")) - (rule "polySimp_addAssoc" (formula "6") (term "0")) - (rule "add_literals" (formula "6") (term "0,0")) - (rule "add_zero_left" (formula "6") (term "0")) - (rule "polySimp_invertEq" (formula "6")) - (rule "mul_literals" (formula "6") (term "1")) - (rule "polySimp_mulLiterals" (formula "6") (term "0")) - (rule "polySimp_elimOne" (formula "6") (term "0")) - (builtin "One Step Simplification" (formula "6")) - (rule "exLeft" (formula "1") (inst "sk=ov_1") (userinteraction)) - (rule "andLeft" (formula "1") (userinteraction)) - (rule "exRight" (formula "7") (inst "t=ov_1") (userinteraction)) - (rule "replace_known_left" (formula "7") (term "0") (ifseqformula "1") (userinteraction)) - (builtin "One Step Simplification" (formula "7") (userinteraction)) - (rule "allLeft" (formula "4") (inst "t=ov_1") (userinteraction)) - (rule "equalityToElementOf" (formula "4") (inst "ov=ov") (inst "fv=fv") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "4") (term "1,0,0") (userinteraction)) - (builtin "One Step Simplification" (formula "4") (userinteraction)) - (rule "allLeft" (formula "4") (inst "t=ov_0") (userinteraction)) - (rule "replace_known_left" (formula "4") (term "1,0") (ifseqformula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "4") (userinteraction)) - (rule "allLeft" (formula "4") (inst "t=fv_0") (userinteraction)) - (rule "close" (formula "10") (ifseqformula "4") (userinteraction)) - ) - ) - ) - ) -) -(branch "Use Case" - (rule "allLeft" (formula "1") (inst "t=f_n") (userinteraction)) - (rule "impLeft" (formula "1") (userinteraction)) - (branch "Case 1" - (rule "domfpDepthDef" (formula "3") (term "0") (inst "y=y") (userinteraction)) - (rule "ifthenelse_split" (formula "3") (term "0") (userinteraction)) - (branch "f_n ≤ 0 TRUE" - (rule "equalityToElementOfRight" (formula "4") (inst "ov=ov") (inst "fv=fv") (userinteraction)) - (builtin "One Step Simplification" (formula "4") (userinteraction)) - (rule "allRight" (formula "4") (inst "sk=ov_0") (userinteraction)) - (rule "allRight" (formula "4") (inst "sk=fv_0") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "4") (term "0") (userinteraction)) - (builtin "One Step Simplification" (formula "4") (userinteraction)) - (rule "notRight" (formula "4") (userinteraction)) - (rule "dominatesDepthDef" (formula "1") (inst "ov=ov") (userinteraction)) - (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) - (rule "closeFalse" (formula "1") (userinteraction)) - ) - (branch "f_n ≤ 0 FALSE" - (rule "eqSymm" (formula "1") (term "0,1,0")) - (rule "eqSymm" (formula "4") (term "0,0,0")) - (rule "polySimp_elimSub" (formula "4") (term "1,2,1,0,0")) - (rule "mul_literals" (formula "4") (term "1,1,2,1,0,0")) - (rule "polySimp_addComm0" (formula "4") (term "1,2,1,0,0")) - (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_leqRight" (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 "2")) - (rule "mul_literals" (formula "2") (term "1")) - (rule "inEqSimp_sepPosMonomial1" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "inEqSimp_contradEq3" (formula "4") (term "0,1,0,0") (ifseqformula "2")) - (rule "mul_literals" (formula "4") (term "1,0,0,0,1,0,0")) - (rule "add_literals" (formula "4") (term "0,0,0,1,0,0")) - (rule "qeq_literals" (formula "4") (term "0,0,1,0,0")) - (builtin "One Step Simplification" (formula "4")) - (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 "Case 2" - (rule "allLeft" (formula "1") (inst "t=f_x") (userinteraction)) - (rule "close" (formula "4") (ifseqformula "1") (userinteraction)) - ) -) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_domfpElement.proof b/key.core/tacletProofs/universe/Taclet_domfpElement.proof deleted file mode 100644 index bde595d5f38..00000000000 --- a/key.core/tacletProofs/universe/Taclet_domfpElement.proof +++ /dev/null @@ -1,109 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "name" : "domfpElement" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "0") - -(branch "dummy ID" -(rule "equiv_right" (formula "1") (newnames "f_x,f_f,f_y") (userinteraction)) -(branch "Case '->'" - (rule "domfpEquivDominates" (formula "1") (term "2") (inst "y=y") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "1") (userinteraction)) - (rule "exLeft" (formula "1") (inst "sk=y_0") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) - (rule "andLeft" (formula "1") (userinteraction)) - (rule "applyEqReverse" (formula "1") (term "1") (ifseqformula "2") (userinteraction)) - (rule "closeAntec" (formula "1") (ifseqformula "3") (userinteraction)) -) -(branch "Case '<-'" - (rule "domfpEquivDominates" (formula "2") (term "2") (inst "y=y") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "1")) (userinteraction)) - (rule "closeTrue" (formula "2") (userinteraction)) -) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_domfpEqdomfpDepthUnion.proof b/key.core/tacletProofs/universe/Taclet_domfpEqdomfpDepthUnion.proof deleted file mode 100644 index f11fa28d946..00000000000 --- a/key.core/tacletProofs/universe/Taclet_domfpEqdomfpDepthUnion.proof +++ /dev/null @@ -1,466 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "name" : "domfpEqdomfpDepthUnion" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "1323") - -(branch "dummy ID" -(rule "equalityToElementOfRight" (formula "1") (newnames "f_x,v_n") (inst "ov=ov") (inst "fv=fv") (userinteraction)) -(rule "allRight" (formula "1") (inst "sk=ov_0") (userinteraction)) -(rule "allRight" (formula "1") (inst "sk=fv_0") (userinteraction)) -(rule "elementOfInfiniteUnion" (formula "1") (term "1") (userinteraction)) -(rule "equiv_right" (formula "1") (userinteraction)) -(branch "Case '->'" - (rule "domfpFinalDepth" (formula "2") (term "0,2,0") (inst "n=n") (inst "m=m") (userinteraction)) - (rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) - (rule "andLeft" (formula "1") (userinteraction)) - (rule "int_induction" (inst "b=(\\forall java.lang.Object o; - (( ( (\\forall int m; - (( geq(m, n_0)<> - -> (domfpDepth(o, m) = empty)<>)<>))<> - & elementOf(ov_0, fv_0, domfp(o))<>)<> - -> (\\exists int v_n; - elementOf(ov_0, fv_0, domfpDepth(o, v_n))<>)<>)<>))<>") (inst "nv=n_0") (userinteraction)) - (branch "Base Case" - (rule "hide_right" (formula "5") (userinteraction)) - (rule "hide_left" (formula "3") (userinteraction)) - (rule "hide_left" (formula "2") (userinteraction)) - (rule "hide_left" (formula "1") (userinteraction)) - (rule "allRight" (formula "1") (inst "sk=o_0") (userinteraction)) - (rule "impRight" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "domfpDef" (formula "2") (term "2") (inst "y=y") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "2") (userinteraction)) - (rule "exLeft" (formula "2") (inst "sk=y_0") (userinteraction)) - (rule "andLeft" (formula "2") (userinteraction)) - (rule "allLeft" (formula "1") (inst "t=Z(1(#))") (userinteraction)) - (rule "qeq_literals" (formula "1") (term "0") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) - (rule "equalityToElementOf" (formula "1") (inst "ov=ov") (inst "fv=fv") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) - (rule "allLeft" (formula "1") (inst "t=y_0") (userinteraction)) - (rule "domfpDepthEquivDominates" (formula "1") (term "2,0,0") (inst "y=y") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "1") (term "0,0") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) - (rule "notLeft" (formula "1") (userinteraction)) - (rule "owns2Dominates" (formula "3") (userinteraction)) - (rule "dominatesDef" (formula "3") (inst "n=n") (userinteraction)) - (rule "exLeft" (formula "3") (inst "sk=n_1") (userinteraction)) - (rule "dominatesDepthDef" (formula "6") (inst "ov=ov") (userinteraction)) - (builtin "One Step Simplification" (formula "6") (ifInst "" (formula "4")) (userinteraction)) - (rule "notRight" (formula "6") (userinteraction)) - (rule "leq_literals" (formula "1") (userinteraction)) - (rule "closeFalse" (formula "1") (userinteraction)) - ) - (branch "Step Case" - (rule "hide_right" (formula "5") (userinteraction)) - (rule "hide_left" (formula "2") (userinteraction)) - (rule "hide_left" (formula "2") (userinteraction)) - (rule "hide_left" (formula "1") (userinteraction)) - (rule "allRight" (formula "1") (inst "sk=n_0_0") (userinteraction)) - (rule "impRight" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "allRight" (formula "3") (inst "sk=o_0") (userinteraction)) - (rule "impRight" (formula "3")) - (rule "andLeft" (formula "1")) - (rule "domfpDef" (formula "2") (term "2") (inst "y=y") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "2") (userinteraction)) - (rule "exLeft" (formula "2") (inst "sk=y_0") (userinteraction)) - (builtin "One Step Simplification" (formula "2") (userinteraction)) - (rule "andLeft" (formula "2") (userinteraction)) - (rule "repfpDef" (formula "3") (term "2") (userinteraction)) - (rule "elementOfUnion" (formula "3") (userinteraction)) - (builtin "One Step Simplification" (formula "3") (userinteraction)) - (rule "orLeft" (formula "3") (userinteraction)) - (branch "(ov_0, fv_0) ∊ domfp(y_0)" - (rule "allLeft" (formula "5") (inst "t=y_0") (userinteraction)) - (rule "replace_known_left" (formula "5") (term "1,0") (ifseqformula "3") (userinteraction)) - (builtin "One Step Simplification" (formula "5") (userinteraction)) - (rule "impLeft" (formula "5") (userinteraction)) - (branch "Case 1" - (rule "allRight" (formula "6") (inst "sk=m_0") (userinteraction)) - (rule "equalityToElementOf" (formula "6") (term "1") (inst "ov=ov") (inst "fv=fv") (userinteraction)) - (builtin "One Step Simplification" (formula "6") (userinteraction)) - (rule "impRight" (formula "6") (userinteraction)) - (rule "swapQuantifiersAll" (formula "7") (userinteraction)) - (rule "allRight" (formula "7") (inst "sk=fv_1") (userinteraction)) - (rule "allRight" (formula "7") (inst "sk=ov_1") (userinteraction)) - (rule "notRight" (formula "7") (userinteraction)) - (rule "equalityToElementOf" (formula "3") (term "1,0") (inst "ov=ov") (inst "fv=fv") (userinteraction)) - (builtin "One Step Simplification" (formula "3") (userinteraction)) - (rule "allLeft" (formula "3") (inst "t=add(m_0, Z(1(#)))") (userinteraction)) - (rule "add_greatereq" (formula "3") (term "0") (inst "i1=Z(neglit(1(#)))") (userinteraction)) - (rule "polySimp_addComm0" (formula "3") (term "0,0") (userinteraction)) - (rule "polySimp_addLiterals" (formula "3") (term "0,0") (userinteraction)) - (rule "polySimp_addComm0" (formula "3") (term "1,0") (userinteraction)) - (rule "polySimp_addLiterals" (formula "3") (term "1,0") (userinteraction)) - (rule "add_zero_right" (formula "3") (term "1,0") (userinteraction)) - (rule "add_zero_right" (formula "3") (term "0,0") (userinteraction)) - (rule "replace_known_left" (formula "3") (term "0") (ifseqformula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "3") (userinteraction)) - (rule "allLeft" (formula "3") (inst "t=ov_1") (userinteraction)) - (rule "allLeft" (formula "3") (inst "t=fv_1") (userinteraction)) - (rule "notLeft" (formula "3") (userinteraction)) - (rule "domfpDepthDef" (formula "10") (term "2") (inst "y=y") (userinteraction)) - (rule "ifthenelse_split" (formula "10") (term "2") (userinteraction)) - (branch "m_0 + 1 ≤ 0 TRUE" - (builtin "One Step Simplification" (formula "11")) - (rule "false_right" (formula "11")) - (rule "eqSymm" (formula "7")) - (rule "polySimp_addComm0" (formula "4") (term "1,2,0,0")) - (rule "polySimp_addComm0" (formula "5") (term "1,2,0,0,0")) - (rule "polySimp_addComm0" (formula "1") (term "0")) - (rule "polySimp_addComm0" (formula "6") (term "1,0,0")) - (rule "inEqSimp_commuteGeq" (formula "3")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "inEqSimp_exactShadow3" (formula "9") (ifseqformula "3")) - (rule "times_zero_1" (formula "9") (term "0,0")) - (rule "add_zero_left" (formula "9") (term "0")) - (rule "inEqSimp_contradInEq0" (formula "9") (ifseqformula "1")) - (rule "qeq_literals" (formula "9") (term "0")) - (builtin "One Step Simplification" (formula "9")) - (rule "closeFalse" (formula "9")) - ) - (branch "m_0 + 1 ≤ 0 FALSE" - (rule "elementOfInfiniteUnion" (formula "11") (userinteraction)) - (builtin "One Step Simplification" (formula "11") (userinteraction)) - (rule "exRight" (formula "11") (inst "t=y_0") (userinteraction)) - (rule "replace_known_left" (formula "11") (term "0") (ifseqformula "6") (userinteraction)) - (builtin "One Step Simplification" (formula "11") (userinteraction)) - (rule "polySimp_homoEq" (formula "11") (term "0,2")) - (rule "polySimp_mulComm0" (formula "11") (term "1,0,0,2")) - (rule "polySimp_addComm0" (formula "11") (term "1,1,0,0,2")) - (rule "polySimp_rightDist" (formula "11") (term "1,0,0,2")) - (rule "mul_literals" (formula "11") (term "0,1,0,0,2")) - (rule "polySimp_addAssoc" (formula "11") (term "0,0,2")) - (rule "add_literals" (formula "11") (term "0,0,0,2")) - (rule "add_zero_left" (formula "11") (term "0,0,2")) - (rule "polySimp_invertEq" (formula "11") (term "0,2")) - (rule "mul_literals" (formula "11") (term "1,0,2")) - (rule "polySimp_mulLiterals" (formula "11") (term "0,0,2")) - (rule "polySimp_elimOne" (formula "11") (term "0,0,2")) - (rule "polySimp_elimSub" (formula "11") (term "1,2,2")) - (rule "mul_literals" (formula "11") (term "1,1,2,2")) - (rule "polySimp_addLiterals" (formula "11") (term "1,2,2") (userinteraction)) - (rule "add_zero_right" (formula "11") (term "1,2,2") (userinteraction)) - (rule "ifthenelse_split" (formula "11") (term "2") (userinteraction)) - (branch "m_0 = 0 TRUE" - (builtin "One Step Simplification" (formula "12") (userinteraction)) - (rule "applyEqRigid" (formula "2") (term "1,2") (ifseqformula "1") (userinteraction)) - (rule "domfpDepthDef" (formula "2") (term "2") (inst "y=y") (userinteraction)) - (rule "leq_literals" (formula "2") (term "0,2")) - (builtin "One Step Simplification" (formula "2")) - (rule "closeFalse" (formula "2")) - ) - (branch "m_0 = 0 FALSE" - (rule "close" (formula "12") (ifseqformula "1") (userinteraction)) - ) - ) - ) - (branch "Case 2" - (rule "exLeft" (formula "5") (inst "sk=v_n_0") (userinteraction)) - (rule "exRight" (formula "7") (inst "t=add(v_n_0, Z(1(#)))") (userinteraction)) - (rule "domfpDepthDef" (formula "7") (term "2") (inst "y=y") (userinteraction)) - (rule "polySimp_elimSub" (formula "7") (term "1,2,1,0,2,2")) - (rule "mul_literals" (formula "7") (term "1,1,2,1,0,2,2")) - (rule "polySimp_addLiterals" (formula "7") (term "1,2,1,0,2,2")) - (rule "add_zero_right" (formula "7") (term "1,2,1,0,2,2")) - (rule "polySimp_homoEq" (formula "7") (term "0,1,0,2,2")) - (rule "polySimp_mulComm0" (formula "7") (term "1,0,0,1,0,2,2")) - (rule "polySimp_addComm0" (formula "7") (term "1,1,0,0,1,0,2,2")) - (rule "polySimp_rightDist" (formula "7") (term "1,0,0,1,0,2,2")) - (rule "mul_literals" (formula "7") (term "0,1,0,0,1,0,2,2")) - (rule "polySimp_addAssoc" (formula "7") (term "0,0,1,0,2,2")) - (rule "add_literals" (formula "7") (term "0,0,0,1,0,2,2")) - (rule "add_zero_left" (formula "7") (term "0,0,1,0,2,2")) - (rule "polySimp_invertEq" (formula "7") (term "0,1,0,2,2")) - (rule "mul_literals" (formula "7") (term "1,0,1,0,2,2")) - (rule "polySimp_mulLiterals" (formula "7") (term "0,0,1,0,2,2")) - (rule "polySimp_elimOne" (formula "7") (term "0,0,1,0,2,2")) - (rule "ifthenelse_split" (formula "7") (term "2") (userinteraction)) - (branch "v_n_0 + 1 ≤ 0 TRUE" - (builtin "One Step Simplification" (formula "8") (userinteraction)) - (rule "false_right" (formula "8") (userinteraction)) - (rule "domfpDepthDef" (formula "6") (term "2") (inst "y=y") (userinteraction)) - (rule "eqSymm" (formula "3")) - (rule "eqSymm" (formula "6") (term "0,0,2,2")) - (rule "polySimp_elimSub" (formula "6") (term "1,2,1,0,2,2")) - (rule "mul_literals" (formula "6") (term "1,1,2,1,0,2,2")) - (rule "polySimp_addComm0" (formula "1") (term "0")) - (rule "polySimp_addComm0" (formula "2") (term "1,0,0")) - (rule "polySimp_addComm0" (formula "6") (term "1,2,1,0,2,2")) - (rule "inEqSimp_sepPosMonomial0" (formula "1")) - (rule "mul_literals" (formula "1") (term "1")) - (rule "inEqSimp_contradEq3" (formula "6") (term "0,1,0,2,2") (ifseqformula "1")) - (rule "mul_literals" (formula "6") (term "1,0,0,0,1,0,2,2")) - (rule "add_literals" (formula "6") (term "0,0,0,1,0,2,2")) - (rule "qeq_literals" (formula "6") (term "0,0,1,0,2,2")) - (builtin "One Step Simplification" (formula "6")) - (rule "inEqSimp_subsumption0" (formula "6") (term "0,2") (ifseqformula "1")) - (rule "leq_literals" (formula "6") (term "0,0,2")) - (builtin "One Step Simplification" (formula "6")) - (rule "closeFalse" (formula "6")) - ) - (branch "v_n_0 + 1 ≤ 0 FALSE" - (rule "elementOfInfiniteUnion" (formula "8") (userinteraction)) - (builtin "One Step Simplification" (formula "8") (userinteraction)) - (rule "exRight" (formula "8") (inst "t=y_0") (userinteraction)) - (rule "replace_known_left" (formula "8") (term "0") (ifseqformula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "8") (userinteraction)) - (rule "ifthenelse_split" (formula "8") (term "2") (userinteraction)) - (branch "v_n_0 = 0 TRUE" - (builtin "One Step Simplification" (formula "9") (userinteraction)) - (rule "applyEqRigid" (formula "8") (term "0,0") (ifseqformula "1") (userinteraction)) - (rule "add_literals" (formula "8") (term "0")) - (rule "leq_literals" (formula "8")) - (rule "false_right" (formula "8")) - (rule "domfpDepthDef" (formula "6") (term "2") (inst "y=y") (userinteraction)) - (rule "eqSymm" (formula "3")) - (rule "eqSymm" (formula "9") (term "0,0")) - (rule "eqSymm" (formula "8")) - (rule "eqSymm" (formula "6") (term "0,0,2,2")) - (rule "replace_known_left" (formula "9") (term "0,2,1,0") (ifseqformula "1")) - (builtin "One Step Simplification" (formula "9")) - (rule "polySimp_elimSub" (formula "6") (term "1,2,1,0,2,2")) - (rule "mul_literals" (formula "6") (term "1,1,2,1,0,2,2")) - (rule "polySimp_addComm0" (formula "2") (term "1,0,0")) - (rule "polySimp_addComm0" (formula "6") (term "1,2,1,0,2,2")) - (rule "applyEq" (formula "6") (term "1,1,2,1,0,2,2") (ifseqformula "1")) - (rule "add_literals" (formula "6") (term "1,2,1,0,2,2")) - (rule "applyEqRigid" (formula "6") (term "0,0,2") (ifseqformula "1")) - (rule "leq_literals" (formula "6") (term "0,2")) - (builtin "One Step Simplification" (formula "6")) - (rule "closeFalse" (formula "6")) - ) - (branch "v_n_0 = 0 FALSE" - (rule "close" (formula "9") (ifseqformula "5") (userinteraction)) - ) - ) - ) - ) - (branch "ov_0 = y_0" - (rule "applyEqReverse" (formula "2") (term "0,1") (ifseqformula "3") (userinteraction)) - (rule "exRight" (formula "6") (inst "t=Z(1(#))") (userinteraction)) - (rule "applyEqRigid" (formula "6") (term "0,2") (ifseqformula "2") (userinteraction)) - (rule "domfpDepthDef" (formula "6") (term "2") (inst "y=y") (userinteraction)) - (builtin "One Step Simplification" (formula "6")) - (rule "leq_literals" (formula "6") (term "0,2")) - (builtin "One Step Simplification" (formula "6")) - (rule "eqSymm" (formula "6") (term "0,0,2")) - (rule "elementOfInfiniteUnion" (formula "6")) - (builtin "One Step Simplification" (formula "6")) - (rule "closeTrue" (formula "6")) - ) - ) - (branch "Use Case" - (rule "allLeft" (formula "1") (inst "t=n_0") (userinteraction)) - (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "3") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) - (rule "allLeft" (formula "1") (inst "t=f_x") (userinteraction)) - (rule "replace_known_left" (formula "1") (term "0,0") (ifseqformula "5") (userinteraction)) - (rule "replace_known_left" (formula "1") (term "1,0") (ifseqformula "6") (userinteraction)) - (rule "replace_known_right" (formula "1") (term "1") (ifseqformula "7") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) - (rule "closeFalse" (formula "1") (userinteraction)) - ) -) -(branch "Case '<-'" - (rule "int_induction" (inst "b=(\\forall java.lang.Object o; - (( elementOf(ov_0, fv_0, domfpDepth(o, v_n))<> - -> elementOf(ov_0, fv_0, domfp(o))<>)<>))<>") (inst "nv=v_n") (userinteraction)) - (branch "Base Case" - (rule "allRight" (formula "2") (inst "sk=o_0") (userinteraction)) - (rule "impRight" (formula "2")) - (rule "domfpDepthDef" (formula "1") (term "2") (inst "y=y") (userinteraction)) - (rule "leq_literals" (formula "1") (term "0,2")) - (builtin "One Step Simplification" (formula "1")) - (rule "closeFalse" (formula "1")) - ) - (branch "Step Case" - (rule "exLeft" (formula "1") (inst "sk=v_n_0") (userinteraction)) - (rule "allRight" (formula "2") (inst "sk=v_n_1") (userinteraction)) - (rule "impRight" (formula "2")) - (rule "andLeft" (formula "1")) - (rule "allRight" (formula "4") (inst "sk=o_0") (userinteraction)) - (rule "impRight" (formula "4") (userinteraction)) - (rule "domfpDepthDef" (formula "1") (term "2") (inst "y=y") (userinteraction)) - (rule "ifthenelse_split" (formula "1") (term "2") (userinteraction)) - (branch "v_n_1 + 1 ≤ 0 TRUE" - (builtin "One Step Simplification" (formula "2") (userinteraction)) - (rule "closeFalse" (formula "2") (userinteraction)) - ) - (branch "v_n_1 + 1 ≤ 0 FALSE" - (rule "elementOfInfiniteUnion" (formula "1") (userinteraction)) - (rule "exLeft" (formula "1") (inst "sk=y_0") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) - (rule "andLeft" (formula "1") (userinteraction)) - (rule "polySimp_homoEq" (formula "2") (term "0,2")) - (rule "polySimp_mulComm0" (formula "2") (term "1,0,0,2")) - (rule "polySimp_addComm0" (formula "2") (term "1,1,0,0,2")) - (rule "polySimp_rightDist" (formula "2") (term "1,0,0,2")) - (rule "mul_literals" (formula "2") (term "0,1,0,0,2")) - (rule "polySimp_addAssoc" (formula "2") (term "0,0,2")) - (rule "add_literals" (formula "2") (term "0,0,0,2")) - (rule "add_zero_left" (formula "2") (term "0,0,2")) - (rule "polySimp_invertEq" (formula "2") (term "0,2")) - (rule "polySimp_mulLiterals" (formula "2") (term "0,0,2")) - (rule "mul_literals" (formula "2") (term "1,0,2")) - (rule "polySimp_elimOne" (formula "2") (term "0,0,2")) - (rule "polySimp_elimSub" (formula "2") (term "1,2,2")) - (rule "mul_literals" (formula "2") (term "1,1,2,2")) - (rule "polySimp_addLiterals" (formula "2") (term "1,2,2")) - (rule "add_zero_right" (formula "2") (term "1,2,2")) - (rule "ifthenelse_split" (formula "2") (term "2") (userinteraction)) - (branch "v_n_1 = 0 TRUE" - (builtin "One Step Simplification" (formula "3") (userinteraction)) - (rule "applyEqReverse" (formula "1") (term "0,1") (ifseqformula "3") (userinteraction)) - (rule "applyEqRigid" (formula "8") (term "0,2") (ifseqformula "1") (userinteraction)) - (rule "domfpDef" (formula "8") (term "2") (inst "y=y") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "8") (userinteraction)) - (builtin "One Step Simplification" (formula "8") (userinteraction)) - (rule "repfpDef" (formula "8") (term "2,1,0") (userinteraction)) - (rule "elementOfUnion" (formula "8") (term "1,0") (userinteraction)) - (builtin "One Step Simplification" (formula "8") (userinteraction)) - (rule "exRight" (formula "8") (inst "t=ov_0") (userinteraction)) - (builtin "One Step Simplification" (formula "8") (userinteraction)) - (rule "closeTrue" (formula "8") (userinteraction)) - ) - (branch "v_n_1 = 0 FALSE" - (rule "allLeft" (formula "4") (inst "t=y_0") (userinteraction)) - (rule "replace_known_left" (formula "4") (term "0") (ifseqformula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "4") (userinteraction)) - (rule "applyEqRigid" (formula "9") (term "0,2") (ifseqformula "1") (userinteraction)) - (rule "domfpDef" (formula "9") (term "2") (inst "y=y") (userinteraction)) - (rule "elementOfInfiniteUnion" (formula "9") (userinteraction)) - (builtin "One Step Simplification" (formula "9") (userinteraction)) - (rule "exRight" (formula "9") (inst "t=y_0") (userinteraction)) - (builtin "One Step Simplification" (formula "9") (userinteraction)) - (rule "repfpDef" (formula "9") (term "2") (userinteraction)) - (rule "elementOfUnion" (formula "9") (userinteraction)) - (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "4")) (userinteraction)) - (rule "closeTrue" (formula "9") (userinteraction)) - ) - ) - ) - (branch "Use Case" - (rule "exLeft" (formula "2") (inst "sk=v_n_0") (userinteraction)) - (rule "allLeft" (formula "1") (inst "t=v_n_0") (userinteraction)) - (rule "impLeft" (formula "1") (userinteraction)) - (branch "Case 1" - (rule "domfpDepthDef" (formula "2") (term "2") (inst "y=y") (userinteraction)) - (rule "eqSymm" (formula "2") (term "0,0,2,2")) - (rule "polySimp_elimSub" (formula "2") (term "1,2,1,0,2,2")) - (rule "mul_literals" (formula "2") (term "1,1,2,1,0,2,2")) - (rule "polySimp_addComm0" (formula "2") (term "1,2,1,0,2,2")) - (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 "inEqSimp_contradEq3" (formula "3") (term "0,1,0,2,2") (ifseqformula "1")) - (rule "mul_literals" (formula "3") (term "1,0,0,0,1,0,2,2")) - (rule "add_literals" (formula "3") (term "0,0,0,1,0,2,2")) - (rule "qeq_literals" (formula "3") (term "0,0,1,0,2,2")) - (builtin "One Step Simplification" (formula "3")) - (rule "inEqSimp_subsumption0" (formula "3") (term "0,2") (ifseqformula "1")) - (rule "leq_literals" (formula "3") (term "0,0,2")) - (builtin "One Step Simplification" (formula "3")) - (rule "closeFalse" (formula "3")) - ) - (branch "Case 2" - (rule "allLeft" (formula "1") (inst "t=f_x") (userinteraction)) - (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "4") (userinteraction)) - (rule "replace_known_right" (formula "1") (term "1") (ifseqformula "5") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) - (rule "closeFalse" (formula "1") (userinteraction)) - ) - ) -) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_domfpEquivDominates.proof b/key.core/tacletProofs/universe/Taclet_domfpEquivDominates.proof deleted file mode 100644 index 66261013e95..00000000000 --- a/key.core/tacletProofs/universe/Taclet_domfpEquivDominates.proof +++ /dev/null @@ -1,106 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "name" : "domfpEquivDominates" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "0") - -(branch "dummy ID" -(rule "domfpEqdomfpDepthUnion" (formula "1") (term "0") (newnames "f_x,v_y") (inst "n=n") (userinteraction)) -(rule "equalityToElementOfRight" (formula "1") (inst "ov=ov") (inst "fv=fv") (userinteraction)) -(rule "allRight" (formula "1") (inst "sk=ov_0") (userinteraction)) -(rule "allRight" (formula "1") (inst "sk=fv_0") (userinteraction)) -(rule "elementOfInfiniteUnion" (formula "1") (term "0") (userinteraction)) -(rule "elementOfInfiniteUnion" (formula "1") (term "1") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) -(rule "domfpDepthEquivDominates" (formula "1") (term "2,0,0") (inst "y=y") (userinteraction)) -(rule "elementOfInfiniteUnion" (formula "1") (term "0,0") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) -(rule "dominatesDef" (formula "1") (term "1") (inst "n=n") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) -(rule "closeTrue" (formula "1") (userinteraction)) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_domfpFinalDepth.proof b/key.core/tacletProofs/universe/Taclet_domfpFinalDepth.proof deleted file mode 100644 index 1245e07a495..00000000000 --- a/key.core/tacletProofs/universe/Taclet_domfpFinalDepth.proof +++ /dev/null @@ -1,154 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "name" : "domfpFinalDepth" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "224") - -(branch "dummy ID" - (builtin "One Step Simplification" (formula "1") (newnames "f_x,v_n,v_m") (userinteraction)) -(rule "dominatesMaxDepth" (formula "1") (term "0,0,1,0,1,0") (inst "n=n") (inst "y=y") (inst "m=m") (userinteraction)) -(rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) -(rule "andLeft" (formula "1") (userinteraction)) -(rule "exRight" (formula "3") (inst "t=n_0") (userinteraction)) -(rule "replace_known_left" (formula "3") (term "0") (ifseqformula "1") (userinteraction)) - (builtin "One Step Simplification" (formula "3") (userinteraction)) -(rule "allRight" (formula "3") (inst "sk=v_m_0") (userinteraction)) -(rule "impRight" (formula "3")) -(rule "equalityToElementOfRight" (formula "4") (inst "ov=ov") (inst "fv=fv") (userinteraction)) - (builtin "One Step Simplification" (formula "4") (userinteraction)) -(rule "allRight" (formula "4") (inst "sk=ov_0") (userinteraction)) -(rule "allRight" (formula "4") (inst "sk=fv_0") (userinteraction)) -(rule "notRight" (formula "4") (userinteraction)) -(rule "hide_right" (formula "5") (userinteraction)) -(rule "domfpDepthEquivDominates" (formula "1") (term "2") (inst "y=y") (userinteraction)) -(rule "elementOfInfiniteUnion" (formula "1") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) -(rule "allLeft" (formula "4") (inst "t=ov_0") (userinteraction)) -(rule "dominatesDepth2Dominates" (formula "1") (userinteraction)) -(rule "andLeft" (formula "1") (userinteraction)) -(rule "replace_known_left" (formula "6") (term "0") (ifseqformula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "6") (userinteraction)) -(rule "exLeft" (formula "6") (inst "sk=m_0") (userinteraction)) -(rule "andLeft" (formula "6") (userinteraction)) -(rule "dominatesSingleDepth" (formula "6") (inst "m=m") (userinteraction)) -(rule "allLeft" (formula "6") (inst "t=v_m_0") (userinteraction)) -(rule "replace_known_left" (formula "6") (term "0") (ifseqformula "3") (userinteraction)) - (builtin "One Step Simplification" (formula "6") (userinteraction)) -(rule "inEqSimp_ltToLeq" (formula "10") (term "1,0,1,0")) -(rule "polySimp_mulComm0" (formula "10") (term "1,0,0,1,0,1,0")) -(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_ltToLeq" (formula "9")) -(rule "polySimp_mulComm0" (formula "9") (term "1,0,0")) -(rule "polySimp_addComm1" (formula "9") (term "0")) -(rule "applyEq" (formula "1") (term "1,0") (ifseqformula "6")) -(rule "applyEqRigid" (formula "3") (term "2") (ifseqformula "6")) -(rule "applyEq" (formula "3") (term "0") (ifseqformula "5")) -(rule "inEqSimp_commuteGeq" (formula "3")) -(rule "inEqSimp_sepPosMonomial0" (formula "9") (term "1,0,1,0")) -(rule "polySimp_mulComm0" (formula "9") (term "1,1,0,1,0")) -(rule "polySimp_rightDist" (formula "9") (term "1,1,0,1,0")) -(rule "polySimp_mulLiterals" (formula "9") (term "1,1,1,0,1,0")) -(rule "mul_literals" (formula "9") (term "0,1,1,0,1,0")) -(rule "polySimp_elimOne" (formula "9") (term "1,1,1,0,1,0")) -(rule "inEqSimp_sepNegMonomial0" (formula "8")) -(rule "polySimp_mulLiterals" (formula "8") (term "0")) -(rule "polySimp_elimOne" (formula "8") (term "0")) -(rule "inEqSimp_sepPosMonomial1" (formula "1")) -(rule "mul_literals" (formula "1") (term "1")) -(rule "inEqSimp_contradInEq1" (formula "3") (ifseqformula "8")) -(rule "andLeft" (formula "3")) -(rule "inEqSimp_homoInEq1" (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 "leq_literals" (formula "3")) -(rule "closeFalse" (formula "3")) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesAntisymm.proof b/key.core/tacletProofs/universe/Taclet_dominatesAntisymm.proof index bd5e4de8a07..68328ec9e6b 100644 --- a/key.core/tacletProofs/universe/Taclet_dominatesAntisymm.proof +++ b/key.core/tacletProofs/universe/Taclet_dominatesAntisymm.proof @@ -80,9 +80,7 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", "name" : "dominatesAntisymm", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" } \proof { diff --git a/key.core/tacletProofs/universe/Taclet_dominatesDepth2Dominates.proof b/key.core/tacletProofs/universe/Taclet_dominatesDepth2Dominates.proof index a4f6454f04e..2f8d8005811 100644 --- a/key.core/tacletProofs/universe/Taclet_dominatesDepth2Dominates.proof +++ b/key.core/tacletProofs/universe/Taclet_dominatesDepth2Dominates.proof @@ -80,9 +80,7 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", "name" : "dominatesDepth2Dominates", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" } \proof { diff --git a/key.core/tacletProofs/universe/Taclet_dominatesDepthTransitive.proof b/key.core/tacletProofs/universe/Taclet_dominatesDepthTransitive.proof index 56486708f6b..848f6fe2ee6 100644 --- a/key.core/tacletProofs/universe/Taclet_dominatesDepthTransitive.proof +++ b/key.core/tacletProofs/universe/Taclet_dominatesDepthTransitive.proof @@ -80,9 +80,7 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", "name" : "dominatesDepthTransitive", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" } \proof { diff --git a/key.core/tacletProofs/universe/Taclet_dominatesLargerDepth.proof b/key.core/tacletProofs/universe/Taclet_dominatesLargerDepth.proof index 228c46b32b2..f3fad371488 100644 --- a/key.core/tacletProofs/universe/Taclet_dominatesLargerDepth.proof +++ b/key.core/tacletProofs/universe/Taclet_dominatesLargerDepth.proof @@ -80,9 +80,7 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", "name" : "dominatesLargerDepth", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" } \proof { diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSameDepth.proof b/key.core/tacletProofs/universe/Taclet_dominatesSameDepth.proof index 4347fba0d61..68077327ce7 100644 --- a/key.core/tacletProofs/universe/Taclet_dominatesSameDepth.proof +++ b/key.core/tacletProofs/universe/Taclet_dominatesSameDepth.proof @@ -80,9 +80,7 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", "name" : "dominatesSameDepth", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" } \proof { diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetAllLocs.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetAllLocs.proof deleted file mode 100644 index 04ec2bec40d..00000000000 --- a/key.core/tacletProofs/universe/Taclet_dominatesSetAllLocs.proof +++ /dev/null @@ -1,101 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", - "name" : "dominatesSetAllLocs", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "0") - -(branch "dummy ID" -(rule "notRight" (formula "1") (newnames "f_o") (userinteraction)) -(rule "dominatesSetDef" (formula "1") (inst "o=o") (inst "f=f") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) -(rule "allLeft" (formula "1") (inst "t=f_o") (userinteraction)) -(rule "dominatesSelf" (formula "1") (userinteraction)) -(rule "closeFalse" (formula "1") (userinteraction)) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetDisjoint.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetDisjoint.proof deleted file mode 100644 index 53c605302aa..00000000000 --- a/key.core/tacletProofs/universe/Taclet_dominatesSetDisjoint.proof +++ /dev/null @@ -1,182 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", - "name" : "dominatesSetDisjoint", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "174") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "f_s1,f_s2,f_o1,f_o2")) -(rule "orRight" (formula "2")) -(rule "notLeft" (formula "1")) -(rule "notRight" (formula "2")) -(rule "notRight" (formula "3")) -(rule "andLeft" (formula "1")) -(rule "disjointToElementOf" (formula "4") (inst "ov=ov") (inst "fv=fv") (userinteraction)) -(rule "allRight" (formula "4") (inst "sk=ov_0") (userinteraction)) -(rule "allRight" (formula "4") (inst "sk=fv_0") (userinteraction)) -(rule "orRight" (formula "4")) -(rule "notRight" (formula "4")) -(rule "notRight" (formula "5")) -(rule "dominatesSetElement" (formula "1") (ifseqformula "4") (userinteraction)) -(rule "dominatesSetElement" (formula "3") (ifseqformula "4") (userinteraction)) -(rule "hide_left" (formula "4") (userinteraction)) -(rule "hide_left" (formula "2") (userinteraction)) -(rule "hide_left" (formula "3") (userinteraction)) -(rule "hide_left" (formula "3") (userinteraction)) -(rule "undomDef" (formula "3") (userinteraction)) -(rule "andLeft" (formula "3")) -(rule "andLeft" (formula "3")) -(rule "notLeft" (formula "5")) -(rule "notLeft" (formula "3")) -(rule "notLeft" (formula "3")) -(rule "dominatesDef" (formula "1") (inst "n=n") (userinteraction)) -(rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) -(rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) -(rule "exLeft" (formula "2") (inst "sk=n_1") (userinteraction)) -(rule "dominatesDef" (formula "3") (inst "n=n") (userinteraction)) -(rule "dominatesDef" (formula "4") (inst "n=n") (userinteraction)) -(rule "cut" (inst "cutFormula=gt(n_0, n_1)<>") (userinteraction)) -(branch "CUT: n_0 > n_1 TRUE" - (rule "dominatesLargerDepth" (formula "2") (ifseqformula "1") (ifseqformula "3") (userinteraction)) - (rule "exRight" (formula "5") (inst "t=sub(n_0, n_1)") (userinteraction)) - (rule "close" (formula "5") (ifseqformula "2") (userinteraction)) -) -(branch "CUT: n_0 > n_1 FALSE" - (rule "cut" (inst "cutFormula=gt(n_1, n_0)<>") (userinteraction)) - (branch "CUT: n_1 > n_0 TRUE" - (rule "dominatesLargerDepth" (formula "3") (ifseqformula "1") (ifseqformula "2") (userinteraction)) - (rule "exRight" (formula "7") (inst "t=sub(n_1, n_0)") (userinteraction)) - (rule "closeAntec" (formula "3") (ifseqformula "7") (userinteraction)) - ) - (branch "CUT: n_1 > n_0 FALSE" - (rule "cut" (inst "cutFormula=(n_0 = n_1)<>") (userinteraction)) - (branch "CUT: n_0 = n_1 TRUE" - (rule "applyEqReverse" (formula "3") (term "2") (ifseqformula "1") (userinteraction)) - (rule "dominatesSameDepth" (formula "3") (ifseqformula "2") (userinteraction)) - (rule "eqSymm" (formula "3") (userinteraction)) - (rule "closeAntec" (formula "3") (ifseqformula "9") (userinteraction)) - ) - (branch "CUT: n_0 = n_1 FALSE" - (rule "eqSymm" (formula "8")) - (rule "eqSymm" (formula "3")) - (rule "inEqSimp_gtRight" (formula "4")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0")) - (rule "inEqSimp_gtRight" (formula "5")) - (rule "polySimp_mulComm0" (formula "1") (term "0,0")) - (rule "polySimp_addComm0" (formula "1") (term "0")) - (rule "inEqSimp_sepPosMonomial0" (formula "2")) - (rule "polySimp_mulLiterals" (formula "2") (term "1")) - (rule "polySimp_elimOne" (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_strengthen1" (formula "1") (ifseqformula "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/tacletProofs/universe/Taclet_dominatesSetElement.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetElement.proof deleted file mode 100644 index bbdeec6bb6d..00000000000 --- a/key.core/tacletProofs/universe/Taclet_dominatesSetElement.proof +++ /dev/null @@ -1,109 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", - "name" : "dominatesSetElement", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "159") - -(branch "dummy ID" -(rule "dominatesSetDef" (formula "1") (term "0,1,1") (newnames "f_x,f_o,f_f,f_s") (inst "o=o") (inst "f=f") (userinteraction)) -(rule "impRight" (formula "1")) -(rule "orRight" (formula "2")) -(rule "notRight" (formula "3")) -(rule "notLeft" (formula "2")) -(rule "notRight" (formula "3")) -(rule "nnf_imp2or" (formula "2") (term "0,0")) -(rule "commute_or" (formula "2") (term "0,0")) -(rule "allLeft" (formula "2") (inst "t=f_o")) -(rule "replace_known_right" (formula "2") (term "0,0") (ifseqformula "4")) - (builtin "One Step Simplification" (formula "2")) -(rule "allLeft" (formula "2") (inst "t=f_f")) -(rule "notLeft" (formula "2")) -(rule "close" (formula "4") (ifseqformula "1")) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetTransitive.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetTransitive.proof deleted file mode 100644 index 9a16d9e07c8..00000000000 --- a/key.core/tacletProofs/universe/Taclet_dominatesSetTransitive.proof +++ /dev/null @@ -1,111 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", - "name" : "dominatesSetTransitive", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "5") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "f_x,f_s,f_y")) -(rule "orRight" (formula "2")) -(rule "notLeft" (formula "1")) -(rule "notRight" (formula "2")) -(rule "notRight" (formula "3")) -(rule "dominatesSetDef" (formula "2") (inst "o=o") (inst "f=f") (userinteraction)) -(rule "dominatesSetDef" (formula "3") (inst "o=o") (inst "f=f") (userinteraction)) -(rule "allRight" (formula "3") (inst "sk=o_0") (userinteraction)) -(rule "allRight" (formula "3") (inst "sk=f_0") (userinteraction)) -(rule "impRight" (formula "3") (userinteraction)) -(rule "instAll" (formula "1") (term "0") (ifseqformula "3") (userinteraction)) -(rule "instAll" (formula "2") (term "1") (ifseqformula "1") (userinteraction)) -(rule "replace_known_left" (formula "2") (term "0") (ifseqformula "3") (userinteraction)) - (builtin "One Step Simplification" (formula "2") (userinteraction)) -(rule "dominatesTransitive" (formula "2") (ifseqformula "4") (userinteraction)) -(rule "closeAntec" (formula "2") (ifseqformula "7") (userinteraction)) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetUnion.proof b/key.core/tacletProofs/universe/Taclet_dominatesSetUnion.proof deleted file mode 100644 index 4b1874f0da3..00000000000 --- a/key.core/tacletProofs/universe/Taclet_dominatesSetUnion.proof +++ /dev/null @@ -1,164 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", - "name" : "dominatesSetUnion", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "226") - -(branch "dummy ID" -(rule "dominatesSetDef" (formula "1") (term "0,1") (newnames "f_o,f_s1,f_s2") (inst "o=o") (inst "f=f") (userinteraction)) -(rule "dominatesSetDef" (formula "1") (term "1,1") (inst "o=o") (inst "f=f") (userinteraction)) -(rule "dominatesSetDef" (formula "1") (term "0") (inst "o=o") (inst "f=f") (userinteraction)) -(rule "elementOfUnion" (formula "1") (term "0,0,0,0")) -(rule "nnf_imp2or" (formula "1") (term "0,0,0")) -(rule "nnf_imp2or" (formula "1") (term "0,0,0,1")) -(rule "nnf_imp2or" (formula "1") (term "0,0,1,1")) -(rule "nnf_notOr" (formula "1") (term "0,0,0,0")) -(rule "equiv_right" (formula "1")) -(branch "Case '->'" - (rule "commute_or" (formula "1") (term "0,0")) - (rule "andRight" (formula "2")) - (branch "Case 1" - (rule "allRight" (formula "2") (inst "sk=o_0")) - (rule "allRight" (formula "2") (inst "sk=f_0")) - (rule "orRight" (formula "2")) - (rule "notRight" (formula "2")) - (rule "cnf_rightDist" (formula "2") (term "0,0")) - (rule "distr_forallAnd" (formula "2") (term "0")) - (rule "distr_forallAnd" (formula "2")) - (rule "andLeft" (formula "2")) - (rule "commute_or" (formula "3") (term "0,0")) - (rule "allLeft" (formula "2") (inst "t=o_0")) - (rule "replace_known_right" (formula "2") (term "0,0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "2")) - (rule "allLeft" (formula "2") (inst "t=f_0")) - (rule "notLeft" (formula "2")) - (rule "close" (formula "5") (ifseqformula "1")) - ) - (branch "Case 2" - (rule "allRight" (formula "2") (inst "sk=o_0")) - (rule "allRight" (formula "2") (inst "sk=f_0")) - (rule "orRight" (formula "2")) - (rule "notRight" (formula "2")) - (rule "cnf_rightDist" (formula "2") (term "0,0")) - (rule "distr_forallAnd" (formula "2") (term "0")) - (rule "distr_forallAnd" (formula "2")) - (rule "andLeft" (formula "2")) - (rule "commute_or" (formula "3") (term "0,0")) - (rule "allLeft" (formula "3") (inst "t=o_0")) - (rule "replace_known_right" (formula "3") (term "0,0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "3")) - (rule "allLeft" (formula "3") (inst "t=f_0")) - (rule "notLeft" (formula "3")) - (rule "close" (formula "5") (ifseqformula "1")) - ) -) -(branch "Case '<-'" - (rule "andLeft" (formula "1")) - (rule "allRight" (formula "3") (inst "sk=o_0")) - (rule "allRight" (formula "3") (inst "sk=f_0")) - (rule "orRight" (formula "3")) - (rule "commute_or" (formula "1") (term "0,0")) - (rule "commute_or" (formula "2") (term "0,0")) - (rule "allLeft" (formula "1") (inst "t=o_0")) - (rule "replace_known_right" (formula "1") (term "0,0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "1")) - (rule "allLeft" (formula "3") (inst "t=o_0")) - (rule "replace_known_right" (formula "3") (term "0,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "3")) - (rule "allLeft" (formula "1") (inst "t=f_0")) - (rule "notLeft" (formula "1")) - (rule "replace_known_right" (formula "6") (term "0,0") (ifseqformula "5")) - (builtin "One Step Simplification" (formula "6")) - (rule "notRight" (formula "6")) - (rule "allLeft" (formula "4") (inst "t=f_0")) - (rule "notLeft" (formula "4")) - (rule "close" (formula "6") (ifseqformula "1")) -) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSingleDepth.proof b/key.core/tacletProofs/universe/Taclet_dominatesSingleDepth.proof index 3129dcf121a..3e0cdd6072b 100644 --- a/key.core/tacletProofs/universe/Taclet_dominatesSingleDepth.proof +++ b/key.core/tacletProofs/universe/Taclet_dominatesSingleDepth.proof @@ -80,9 +80,7 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", "name" : "dominatesSingleDepth", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" } \proof { diff --git a/key.core/tacletProofs/universe/Taclet_dominatesTransitive.proof b/key.core/tacletProofs/universe/Taclet_dominatesTransitive.proof index 5a62a97e9ed..c76f2603afe 100644 --- a/key.core/tacletProofs/universe/Taclet_dominatesTransitive.proof +++ b/key.core/tacletProofs/universe/Taclet_dominatesTransitive.proof @@ -80,9 +80,7 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", "name" : "dominatesTransitive", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" } \proof { diff --git a/key.core/tacletProofs/universe/Taclet_owns2Dominates.proof b/key.core/tacletProofs/universe/Taclet_owns2Dominates.proof index 3f90162903b..dbcbf98abe8 100644 --- a/key.core/tacletProofs/universe/Taclet_owns2Dominates.proof +++ b/key.core/tacletProofs/universe/Taclet_owns2Dominates.proof @@ -5,7 +5,7 @@ "Choice" : { "JavaCard" : "JavaCard:off", "Strings" : "Strings:on", - "assertions" : "assertions:on", + "assertions" : "assertions:safe", "bigint" : "bigint:on", "finalFields" : "finalFields:immutable", "floatRules" : "floatRules:strictfpOnly", @@ -15,7 +15,7 @@ "javaLoopTreatment" : "javaLoopTreatment:efficient", "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", + "modelFields" : "modelFields:treatAsAxiom", "moreSeqRules" : "moreSeqRules:off", "permissions" : "permissions:off", "programRules" : "programRules:Java", @@ -48,22 +48,22 @@ }, "Strategy" : { "ActiveStrategy" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, + "MaximumNumberOfAutomaticApplications" : 10000, "Timeout" : -1, "options" : { "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", "DEP_OPTIONS_KEY" : "DEP_ON", "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", "OSS_OPTIONS_KEY" : "OSS_ON", "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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", @@ -80,26 +80,25 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", - "name" : "owns2Dominates", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + "name" : "owns2Dominates" } \proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) -(autoModeTime "17") +(autoModeTime "19") (branch "dummy ID" -(rule "impRight" (formula "1") (newnames "f_x,f_y")) +(rule "dominatesDef" (formula "1") (term "0,0") (inst "n=n") (userinteraction)) +(rule "impRight" (formula "1")) (rule "notRight" (formula "2")) (rule "notLeft" (formula "2")) -(rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) (rule "exRight" (formula "2") (inst "t=Z(1(#))") (userinteraction)) (rule "dominatesDepthDef" (formula "2") (inst "ov=ov") (userinteraction)) - (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "1"))) + (builtin "One Step Simplification" (formula "2")) (rule "leq_literals" (formula "2") (term "0")) (builtin "One Step Simplification" (formula "2")) -(rule "closeTrue" (formula "2")) +(rule "eqSymm" (formula "2")) +(rule "close" (formula "2") (ifseqformula "1")) ) } diff --git a/key.core/tacletProofs/universe/Taclet_ownsSelf.proof b/key.core/tacletProofs/universe/Taclet_ownsSelf.proof index e77b9f6b3f3..f589ae66366 100644 --- a/key.core/tacletProofs/universe/Taclet_ownsSelf.proof +++ b/key.core/tacletProofs/universe/Taclet_ownsSelf.proof @@ -80,9 +80,7 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", "name" : "ownsSelf", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" } \proof { diff --git a/key.core/tacletProofs/universe/Taclet_repfpDisjointComplement.proof b/key.core/tacletProofs/universe/Taclet_repfpDisjointComplement.proof index e2def9b17a4..c8d5e0697f7 100644 --- a/key.core/tacletProofs/universe/Taclet_repfpDisjointComplement.proof +++ b/key.core/tacletProofs/universe/Taclet_repfpDisjointComplement.proof @@ -5,7 +5,7 @@ "Choice" : { "JavaCard" : "JavaCard:off", "Strings" : "Strings:on", - "assertions" : "assertions:on", + "assertions" : "assertions:safe", "bigint" : "bigint:on", "finalFields" : "finalFields:immutable", "floatRules" : "floatRules:strictfpOnly", @@ -15,7 +15,7 @@ "javaLoopTreatment" : "javaLoopTreatment:efficient", "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", + "modelFields" : "modelFields:treatAsAxiom", "moreSeqRules" : "moreSeqRules:off", "permissions" : "permissions:off", "programRules" : "programRules:Java", @@ -48,22 +48,22 @@ }, "Strategy" : { "ActiveStrategy" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 9000, + "MaximumNumberOfAutomaticApplications" : 10000, "Timeout" : -1, "options" : { "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", "DEP_OPTIONS_KEY" : "DEP_ON", "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", "OSS_OPTIONS_KEY" : "OSS_ON", "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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", @@ -84,69 +84,58 @@ } \proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) -(keyLog "1" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) -(autoModeTime "91") +(autoModeTime "250") (branch "dummy ID" -(rule "disjointDefinition" (formula "1") (term "0") (newnames "f_x,f_y") (userinteraction)) (rule "equalityToElementOf" (formula "1") (term "0") (inst "ov=ov") (inst "fv=fv") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) -(rule "elementOfIntersect" (formula "1") (term "0,0,0,0") (userinteraction)) -(rule "elementOfSetMinus" (formula "1") (term "0,0,0,0,0") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) -(rule "repfpElement" (formula "1") (term "0,0,0,0,0,0") (userinteraction)) -(rule "repfpElement" (formula "1") (term "1,0,0,0,0") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) -(rule "equiv_right" (formula "1") (userinteraction)) + (builtin "One Step Simplification" (formula "1")) +(rule "eqSymm" (formula "1") (term "0,1")) +(rule "elementOfIntersect" (formula "1") (term "0,0,0,0")) +(rule "repfpElement" (formula "1") (term "1,0,0,0,0")) +(rule "elementOfSetMinus" (formula "1") (term "0,0,0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "repfpElement" (formula "1") (term "0,0,0,0,0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "nnf_notAnd" (formula "1") (term "0,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "nnf_notOr" (formula "1") (term "1,0,0")) +(rule "commute_or" (formula "1") (term "1")) +(rule "equiv_right" (formula "1")) (branch "Case '->'" (rule "orRight" (formula "2")) - (rule "eqSymm" (formula "2")) - (rule "nnf_notAnd" (formula "1") (term "0")) - (builtin "One Step Simplification" (formula "1")) - (rule "nnf_notOr" (formula "1") (term "1,0")) (rule "cnf_rightDist" (formula "1") (term "0")) (rule "distr_forallAnd" (formula "1")) (rule "andLeft" (formula "1")) (rule "commute_or" (formula "2") (term "0")) - (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "4")) (ifInst "" (formula "3"))) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "3")) (ifInst "" (formula "4"))) (rule "closeFalse" (formula "2")) ) (branch "Case '<-'" - (rule "allRight" (formula "2") (inst "sk=ov_0") (userinteraction)) - (rule "notRight" (formula "2") (userinteraction)) - (rule "andLeft" (formula "1") (userinteraction)) - (rule "notLeft" (formula "1") (userinteraction)) - (rule "orRight" (formula "3") (userinteraction)) - (rule "orLeft" (formula "2") (userinteraction)) - (branch "f_x = f_y" - (rule "applyEqReverse" (formula "1") (term "0,0") (ifseqformula "2") (userinteraction)) - (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "3") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) - (rule "eqSymm" (formula "2")) - (rule "applyEqRigid" (formula "3") (term "1") (ifseqformula "1")) - (rule "applyEq" (formula "1") (term "1") (ifseqformula "2")) - (rule "close" (formula "4") (ifseqformula "1")) + (rule "allRight" (formula "2") (inst "sk=ov_0")) + (rule "orRight" (formula "2")) + (rule "orRight" (formula "2")) + (rule "cut_direct" (formula "1") (term "1")) + (branch "CUT: f_y = f_x TRUE" + (builtin "One Step Simplification" (formula "2")) + (rule "true_left" (formula "2")) + (rule "applyEqRigid" (formula "4") (term "1,0,1") (ifseqformula "1")) + (rule "replace_known_right" (formula "4") (term "0,1") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "4")) + (rule "notRight" (formula "4")) + (rule "applyEqRigid" (formula "1") (term "0") (ifseqformula "2")) + (rule "close" (formula "3") (ifseqformula "1")) ) - (branch "dominates(f_x, f_y)" - (rule "cut_direct" (formula "1") (term "1")) - (branch "CUT: ov_0 = f_y TRUE" - (builtin "One Step Simplification" (formula "2")) - (rule "true_left" (formula "2")) - (rule "applyEqRigid" (formula "4") (term "0") (ifseqformula "1")) - (rule "dominatesNotEqualLeft" (formula "4") (ifseqformula "2")) - (rule "false_right" (formula "4")) - (rule "applyEq" (formula "3") (term "1") (ifseqformula "1")) - (rule "close" (formula "3") (ifseqformula "2")) - ) - (branch "CUT: ov_0 = f_y FALSE" - (builtin "One Step Simplification" (formula "1")) - (rule "dominatesNotEqualLeft" (formula "3") (ifseqformula "1")) - (rule "false_right" (formula "3")) - (rule "dominatesTransitive" (formula "1") (ifseqformula "2")) - (rule "close" (formula "4") (ifseqformula "1")) - ) + (branch "CUT: f_y = f_x FALSE" + (builtin "One Step Simplification" (formula "1")) + (rule "dominatesNegNotEqual" (formula "5") (term "0,1") (ifseqformula "1") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "5")) + (rule "notRight" (formula "5")) + (rule "dominatesNotEqualLeft" (formula "3") (ifseqformula "2")) + (rule "false_right" (formula "3")) + (rule "dominatesTransitive" (formula "1") (ifseqformula "2")) + (rule "close" (formula "4") (ifseqformula "1")) ) ) ) diff --git a/key.core/tacletProofs/universe/Taclet_repfpElement.proof b/key.core/tacletProofs/universe/Taclet_repfpElement.proof index 76ea7b04d83..cfc7fb96f85 100644 --- a/key.core/tacletProofs/universe/Taclet_repfpElement.proof +++ b/key.core/tacletProofs/universe/Taclet_repfpElement.proof @@ -5,7 +5,7 @@ "Choice" : { "JavaCard" : "JavaCard:off", "Strings" : "Strings:on", - "assertions" : "assertions:on", + "assertions" : "assertions:safe", "bigint" : "bigint:on", "finalFields" : "finalFields:immutable", "floatRules" : "floatRules:strictfpOnly", @@ -15,7 +15,7 @@ "javaLoopTreatment" : "javaLoopTreatment:efficient", "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", + "modelFields" : "modelFields:treatAsAxiom", "moreSeqRules" : "moreSeqRules:off", "permissions" : "permissions:off", "programRules" : "programRules:Java", @@ -48,22 +48,22 @@ }, "Strategy" : { "ActiveStrategy" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, + "MaximumNumberOfAutomaticApplications" : 10000, "Timeout" : -1, "options" : { "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", "DEP_OPTIONS_KEY" : "DEP_ON", "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", "OSS_OPTIONS_KEY" : "OSS_ON", "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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", @@ -84,15 +84,20 @@ } \proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) -(autoModeTime "0") +(autoModeTime "47") (branch "dummy ID" -(rule "repfpDef" (formula "1") (term "2,0") (newnames "f_x,f_f,f_y") (userinteraction)) -(rule "elementOfUnion" (formula "1") (term "0") (userinteraction)) -(rule "domfpElement" (formula "1") (term "0,0") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) -(rule "closeTrue" (formula "1") (userinteraction)) +(rule "repfpDef" (formula "1") (term "2,0") (inst "y=y") (userinteraction)) +(rule "eqSymm" (formula "1") (term "1,1")) +(rule "elementOfUnion" (formula "1") (term "0")) + (builtin "One Step Simplification" (formula "1")) +(rule "eqSymm" (formula "1") (term "0,0")) +(rule "elementOfInfiniteUnion" (formula "1") (term "1,0")) + (builtin "One Step Simplification" (formula "1")) +(rule "commute_or" (formula "1") (term "0")) + (builtin "One Step Simplification" (formula "1")) +(rule "closeTrue" (formula "1")) ) } diff --git a/key.core/tacletProofs/universe/Taclet_sameLevelUndom.proof b/key.core/tacletProofs/universe/Taclet_sameLevelUndom.proof index 3e83b17db9e..54bafbbaa36 100644 --- a/key.core/tacletProofs/universe/Taclet_sameLevelUndom.proof +++ b/key.core/tacletProofs/universe/Taclet_sameLevelUndom.proof @@ -5,7 +5,7 @@ "Choice" : { "JavaCard" : "JavaCard:off", "Strings" : "Strings:on", - "assertions" : "assertions:on", + "assertions" : "assertions:safe", "bigint" : "bigint:on", "finalFields" : "finalFields:immutable", "floatRules" : "floatRules:strictfpOnly", @@ -15,7 +15,7 @@ "javaLoopTreatment" : "javaLoopTreatment:efficient", "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", + "modelFields" : "modelFields:treatAsAxiom", "moreSeqRules" : "moreSeqRules:off", "permissions" : "permissions:off", "programRules" : "programRules:Java", @@ -48,22 +48,22 @@ }, "Strategy" : { "ActiveStrategy" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, + "MaximumNumberOfAutomaticApplications" : 10000, "Timeout" : -1, "options" : { "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", "DEP_OPTIONS_KEY" : "DEP_ON", "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", "OSS_OPTIONS_KEY" : "OSS_ON", "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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", @@ -80,141 +80,284 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", - "name" : "sameLevelUndom", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + "name" : "sameLevelUndom" } \proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) -(autoModeTime "1357") +(autoModeTime "465") (branch "dummy ID" -(rule "impRight" (formula "1") (newnames "f_x,f_y,f_o")) +(rule "undomSymm" (formula "1") (term "0,0") (userinteraction)) +(rule "impRight" (formula "1")) (rule "orRight" (formula "2")) (rule "notLeft" (formula "1")) (rule "notRight" (formula "3")) (rule "andLeft" (formula "1")) -(rule "undomRefl" (formula "3") (userinteraction)) -(rule "undomRefl" (formula "3") (userinteraction)) (rule "undomDef" (formula "3") (userinteraction)) -(rule "replace_known_right" (formula "3") (term "0,1") (ifseqformula "4") (userinteraction)) - (builtin "One Step Simplification" (formula "3") (userinteraction)) (rule "andRight" (formula "3") (userinteraction)) (branch "Case 1" - (rule "notRight" (formula "3") (userinteraction)) - (rule "owns2Dominates" (formula "2") (userinteraction)) - (rule "owns2Dominates" (formula "4") (userinteraction)) - (rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) - (rule "dominatesDef" (formula "1") (inst "n=n") (userinteraction)) - (rule "dominatesDef" (formula "4") (inst "n=n") (userinteraction)) - (rule "exLeft" (formula "2") (inst "sk=n_0") (userinteraction)) - (rule "exLeft" (formula "1") (inst "sk=n_1") (userinteraction)) - (rule "exLeft" (formula "4") (inst "sk=n_2") (userinteraction)) - (rule "dominatesDepthTransitive" (formula "1") (ifseqformula "2") (userinteraction)) - (rule "dominatesSingleDepth" (formula "1") (inst "m=m") (userinteraction)) - (rule "allLeft" (formula "1") (inst "t=Z(1(#))") (userinteraction)) - (rule "dominatesDepthDef" (formula "1") (term "0") (inst "ov=ov") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "8")) (userinteraction)) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_homoEq" (formula "1")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "polySimp_addComm0" (formula "1") (term "0,0")) - (rule "polySimp_sepPosMonomial" (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 "dominatesSingleDepth" (formula "5") (inst "m=m") (userinteraction)) - (rule "allLeft" (formula "5") (inst "t=Z(1(#))") (userinteraction)) - (rule "dominatesDepthDef" (formula "5") (term "0") (inst "ov=ov") (userinteraction)) - (rule "equal_literals" (formula "5") (term "0,2,0")) - (rule "sub_literals" (formula "5") (term "2,1,0,2,2,0")) - (rule "eqSymm" (formula "5") (term "0,0,2,2,0")) - (rule "eqSymm" (formula "5") (term "1,2,0")) - (rule "ifthenelse_split_for" (formula "5") (term "2,0")) - (branch "true TRUE" - (rule "true_left" (formula "5")) - (rule "eqSymm" (formula "5") (term "2,0") (userinteraction)) - (rule "replace_known_left" (formula "5") (term "2,0") (ifseqformula "8") (userinteraction)) - (builtin "One Step Simplification" (formula "5") (userinteraction)) - (rule "eqSymm" (formula "5") (term "1")) - (rule "inEqSimp_notLeq" (formula "5") (term "0")) - (rule "mul_literals" (formula "5") (term "1,0,0,0")) - (rule "polySimp_addLiterals" (formula "5") (term "0,0")) - (rule "add_literals" (formula "5") (term "0,0")) - (rule "qeq_literals" (formula "5") (term "0")) - (builtin "One Step Simplification" (formula "5")) - (rule "applyEqRigid" (formula "1") (term "0,1,1") (ifseqformula "5") (userinteraction)) - (rule "polySimp_pullOutFactor1" (formula "1") (term "1") (userinteraction)) - (rule "polySimp_rightDist" (formula "1") (term "1") (userinteraction)) - (rule "mul_literals" (formula "1") (term "0,1") (userinteraction)) - (rule "mul_literals" (formula "1") (term "1,1") (userinteraction)) - (rule "add_literals" (formula "1") (term "1") (userinteraction)) - (rule "applyEqRigid" (formula "4") (term "2") (ifseqformula "1") (userinteraction)) - (rule "dominatesDepthDef" (formula "4") (inst "ov=ov") (userinteraction)) - (rule "leq_literals" (formula "4") (term "0")) - (builtin "One Step Simplification" (formula "4")) - (rule "closeFalse" (formula "4")) + (rule "andRight" (formula "3") (userinteraction)) + (branch "Case 1" + (rule "notRight" (formula "3") (userinteraction)) + (rule "dominatesDef" (formula "1") (inst "n=n") (userinteraction)) + (rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) + (rule "owns2Dominates" (formula "2") (userinteraction)) + (rule "owns2Dominates" (formula "4") (userinteraction)) + (rule "dominatesDef" (formula "4") (inst "n=n") (userinteraction)) + (rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) + (rule "exLeft" (formula "2") (inst "sk=n_1") (userinteraction)) + (rule "exLeft" (formula "4") (inst "sk=n_2") (userinteraction)) + (rule "dominatesDepthTransitive" (formula "1") (ifseqformula "4") (userinteraction)) + (rule "cut" (inst "cutFormula=(add(n_2, n_0) = n_1)<>") (userinteraction)) + (branch "CUT: n_2 + n_0 = n_1 TRUE" + (rule "cut" (inst "cutFormula=(n_1 = Z(1(#)))<>") (userinteraction)) + (branch "CUT: n_1 = 1 TRUE" + (rule "cut" (inst "cutFormula=(n_2 = Z(1(#)))<>") (userinteraction)) + (branch "CUT: n_2 = 1 TRUE" + (rule "dominatesDepthDef" (formula "5") (inst "ov=ov") (userinteraction)) + (rule "eqSymm" (formula "5") (term "1,2")) + (rule "eqSymm" (formula "5") (term "0,0,2,2")) + (rule "eqSymm" (formula "10")) + (rule "polySimp_homoEq" (formula "3")) + (rule "polySimp_elimSub" (formula "5") (term "2,1,0,2,2")) + (rule "mul_literals" (formula "5") (term "1,2,1,0,2,2")) + (rule "polySimp_mulComm0" (formula "3") (term "1,0")) + (rule "polySimp_addComm0" (formula "4") (term "2")) + (rule "polySimp_addComm0" (formula "5") (term "2,1,0,2,2")) + (rule "polySimp_addComm0" (formula "3") (term "1,1,0")) + (rule "polySimp_rightDist" (formula "3") (term "1,0")) + (rule "polySimp_mulComm0" (formula "3") (term "0,1,0")) + (rule "polySimp_addAssoc" (formula "3") (term "0")) + (rule "polySimp_addComm0" (formula "3") (term "0,0")) + (rule "applyEq" (formula "4") (term "1,2") (ifseqformula "1")) + (rule "polySimp_addComm0" (formula "4") (term "2")) + (rule "applyEqRigid" (formula "5") (term "0,1,2") (ifseqformula "7")) + (rule "eqSymm" (formula "5") (term "1,2")) + (rule "applyEq" (formula "3") (term "0,1,0") (ifseqformula "1")) + (rule "mul_literals" (formula "3") (term "1,0")) + (rule "polySimp_addComm1" (formula "3") (term "0")) + (rule "polySimp_addComm0" (formula "3") (term "0,0")) + (rule "applyEqRigid" (formula "8") (term "2") (ifseqformula "1")) + (rule "applyEqRigid" (formula "6") (term "2") (ifseqformula "2")) + (rule "applyEqRigid" (formula "3") (term "1,0") (ifseqformula "2")) + (rule "polySimp_addComm1" (formula "3") (term "0")) + (rule "add_literals" (formula "3") (term "0,0")) + (rule "add_zero_left" (formula "3") (term "0")) + (rule "polySimp_invertEq" (formula "3")) + (rule "times_zero_2" (formula "3") (term "1")) + (rule "polySimp_mulLiterals" (formula "3") (term "0")) + (rule "polySimp_elimOne" (formula "3") (term "0")) + (rule "applyEqRigid" (formula "5") (term "1,2,1,0,2,2") (ifseqformula "3")) + (rule "add_zero_right" (formula "5") (term "2,1,0,2,2")) + (rule "applyEq" (formula "5") (term "0,0,2") (ifseqformula "3")) + (rule "equal_literals" (formula "5") (term "0,2")) + (builtin "One Step Simplification" (formula "5")) + (rule "applyEq" (formula "4") (term "1,2") (ifseqformula "3")) + (rule "add_zero_right" (formula "4") (term "2")) + (rule "applyEqRigid" (formula "4") (term "0,0") (ifseqformula "3")) + (rule "leq_literals" (formula "4") (term "0")) + (builtin "One Step Simplification" (formula "4")) + (rule "closeFalse" (formula "4")) + ) + (branch "CUT: n_2 = 1 FALSE" + (rule "dominatesSingleDepth" (formula "7") (inst "m=m") (userinteraction)) + (rule "allLeft" (formula "7") (inst "t=Z(1(#))") (userinteraction)) + (rule "dominatesDepthDef" (formula "7") (term "0") (inst "ov=ov") (userinteraction)) + (builtin "One Step Simplification" (formula "7")) + (rule "leq_literals" (formula "7") (term "0,0")) + (builtin "One Step Simplification" (formula "7")) + (rule "eqSymm" (formula "12")) + (rule "eqSymm" (formula "7") (term "0")) + (rule "eqSymm" (formula "7") (term "1")) + (rule "replace_known_left" (formula "7") (term "0") (ifseqformula "10")) + (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "11"))) + (rule "closeFalse" (formula "7")) + ) + ) + (branch "CUT: n_1 = 1 FALSE" + (rule "dominatesSingleDepth" (formula "4") (inst "m=m") (userinteraction)) + (rule "allLeft" (formula "4") (inst "t=Z(1(#))") (userinteraction)) + (rule "dominatesDepthDef" (formula "4") (term "0") (inst "ov=ov") (userinteraction)) + (builtin "One Step Simplification" (formula "4")) + (rule "leq_literals" (formula "4") (term "0,0")) + (builtin "One Step Simplification" (formula "4")) + (rule "eqSymm" (formula "11")) + (rule "eqSymm" (formula "4") (term "1")) + (rule "eqSymm" (formula "4") (term "0")) + (rule "replace_known_left" (formula "4") (term "0") (ifseqformula "7")) + (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "10"))) + (rule "closeFalse" (formula "4")) + ) + ) + (branch "CUT: n_2 + n_0 = n_1 FALSE" + (rule "dominatesSingleDepth" (formula "1") (inst "m=m") (userinteraction)) + (rule "allLeft" (formula "1") (inst "t=n_1") (userinteraction)) + (rule "eqSymm" (formula "10")) + (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "1")) + (rule "polySimp_homoEq" (formula "9")) + (rule "polySimp_homoEq" (formula "1")) + (rule "polySimp_mulComm0" (formula "9") (term "1,0")) + (rule "polySimp_addComm0" (formula "2") (term "1,1,0")) + (rule "polySimp_addComm0" (formula "3") (term "2")) + (rule "polySimp_addComm0" (formula "1") (term "0,0")) + (rule "polySimp_addComm0" (formula "9") (term "1,1,0")) + (rule "polySimp_addComm1" (formula "1") (term "0")) + (rule "polySimp_rightDist" (formula "9") (term "1,0")) + (rule "polySimp_mulComm0" (formula "9") (term "0,1,0")) + (rule "polySimp_addAssoc" (formula "9") (term "0")) + (rule "polySimp_addComm0" (formula "9") (term "0,0")) + (rule "polySimp_sepPosMonomial" (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 "polySimp_elimOne" (formula "1") (term "1,1")) + (rule "polySimp_mulComm0" (formula "1") (term "0,1")) + (rule "applyEq" (formula "7") (term "2") (ifseqformula "1")) + (rule "applyEq" (formula "3") (term "1,2") (ifseqformula "1")) + (rule "polySimp_addAssoc" (formula "3") (term "2")) + (rule "polySimp_pullOutFactor1" (formula "3") (term "0,2")) + (rule "add_literals" (formula "3") (term "1,0,2")) + (rule "times_zero_1" (formula "3") (term "0,2")) + (rule "add_zero_left" (formula "3") (term "2")) + (rule "applyEqRigid" (formula "8") (term "0,1,0") (ifseqformula "1")) + (rule "polySimp_pullOutFactor1" (formula "8") (term "0")) + (rule "add_literals" (formula "8") (term "1,0")) + (rule "times_zero_1" (formula "8") (term "0")) + (builtin "One Step Simplification" (formula "8")) + (rule "closeTrue" (formula "8")) + ) ) - (branch "true FALSE" - (rule "closeTrue" (formula "11")) + (branch "Case 2" + (rule "notRight" (formula "3") (userinteraction)) + (rule "dominatesDef" (formula "1") (inst "n=n") (userinteraction)) + (rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) + (rule "owns2Dominates" (formula "2") (userinteraction)) + (rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) + (rule "exLeft" (formula "2") (inst "sk=n_1") (userinteraction)) + (rule "dominatesDepthTransitive" (formula "1") (ifseqformula "2") (userinteraction)) + (rule "cut" (inst "cutFormula=(add(n_1, n_0) = Z(1(#)))<>") (userinteraction)) + (branch "CUT: n_1 + n_0 = 1 TRUE" + (rule "cut" (inst "cutFormula=(n_1 = Z(1(#)))<>") (userinteraction)) + (branch "CUT: n_1 = 1 TRUE" + (rule "applyEqRigid" (formula "2") (term "0,0") (ifseqformula "1") (userinteraction)) + (rule "cut" (inst "cutFormula=(n_0 = Z(0(#)))<>") (userinteraction)) + (branch "CUT: n_0 = 0 TRUE" + (rule "dominatesDepthDef" (formula "5") (inst "ov=ov") (userinteraction)) + (rule "eqSymm" (formula "5") (term "1,2")) + (rule "eqSymm" (formula "5") (term "0,0,2,2")) + (rule "eqSymm" (formula "9")) + (rule "polySimp_elimSub" (formula "5") (term "2,1,0,2,2")) + (rule "mul_literals" (formula "5") (term "1,2,1,0,2,2")) + (rule "polySimp_homoEq" (formula "3")) + (rule "polySimp_mulComm0" (formula "3") (term "1,0")) + (rule "polySimp_addComm0" (formula "4") (term "2")) + (rule "polySimp_addComm0" (formula "5") (term "2,1,0,2,2")) + (rule "polySimp_rightDist" (formula "3") (term "1,0")) + (rule "mul_literals" (formula "3") (term "0,1,0")) + (rule "owns2Dominates" (formula "8")) + (rule "polySimp_addAssoc" (formula "3") (term "0")) + (rule "add_literals" (formula "3") (term "0,0")) + (rule "add_zero_left" (formula "3") (term "0")) + (rule "applyEqRigid" (formula "5") (term "1,2,1,0,2,2") (ifseqformula "1")) + (rule "add_zero_right" (formula "5") (term "2,1,0,2,2")) + (rule "applyEqRigid" (formula "3") (term "0,0") (ifseqformula "1")) + (rule "times_zero_2" (formula "3") (term "0")) + (builtin "One Step Simplification" (formula "3")) + (rule "true_left" (formula "3")) + (rule "applyEq" (formula "4") (term "0,0") (ifseqformula "1")) + (rule "leq_literals" (formula "4") (term "0")) + (builtin "One Step Simplification" (formula "4")) + (rule "closeFalse" (formula "4")) + ) + (branch "CUT: n_0 = 0 FALSE" + (rule "eqSymm" (formula "9")) + (rule "polySimp_homoEq" (formula "2")) + (rule "polySimp_mulComm0" (formula "2") (term "1,0")) + (rule "polySimp_addComm0" (formula "3") (term "2")) + (rule "polySimp_rightDist" (formula "2") (term "1,0")) + (rule "mul_literals" (formula "2") (term "0,1,0")) + (rule "polySimp_addAssoc" (formula "2") (term "0")) + (rule "add_literals" (formula "2") (term "0,0")) + (rule "add_zero_left" (formula "2") (term "0")) + (rule "owns2Dominates" (formula "7")) + (rule "applyEq" (formula "3") (term "1,2") (ifseqformula "1")) + (rule "polySimp_addComm0" (formula "3") (term "2")) + (rule "applyEq" (formula "5") (term "2") (ifseqformula "1")) + (rule "polySimp_invertEq" (formula "2")) + (rule "polySimp_mulLiterals" (formula "2") (term "0")) + (rule "times_zero_2" (formula "2") (term "1")) + (rule "polySimp_elimOne" (formula "2") (term "0")) + (rule "close" (formula "9") (ifseqformula "2")) + ) + ) + (branch "CUT: n_1 = 1 FALSE" + (rule "dominatesSingleDepth" (formula "4") (inst "m=m") (userinteraction)) + (rule "allLeft" (formula "4") (inst "t=Z(1(#))") (userinteraction)) + (rule "dominatesDepthDef" (formula "4") (term "0") (inst "ov=ov") (userinteraction)) + (builtin "One Step Simplification" (formula "4")) + (rule "leq_literals" (formula "4") (term "0,0")) + (builtin "One Step Simplification" (formula "4")) + (rule "eqSymm" (formula "10")) + (rule "eqSymm" (formula "4") (term "0")) + (rule "eqSymm" (formula "4") (term "1")) + (rule "replace_known_left" (formula "4") (term "0") (ifseqformula "7")) + (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "9"))) + (rule "closeFalse" (formula "4")) + ) + ) + (branch "CUT: n_1 + n_0 = 1 FALSE" + (rule "dominatesSingleDepth" (formula "1") (inst "m=m") (userinteraction)) + (rule "allLeft" (formula "1") (inst "t=Z(1(#))") (userinteraction)) + (rule "dominatesDepthDef" (formula "1") (term "0") (inst "ov=ov") (userinteraction)) + (builtin "One Step Simplification" (formula "1")) + (rule "leq_literals" (formula "1") (term "0,0")) + (builtin "One Step Simplification" (formula "1")) + (rule "eqSymm" (formula "9")) + (rule "eqSymm" (formula "1") (term "0")) + (rule "replace_known_left" (formula "1") (term "0") (ifseqformula "7")) + (builtin "One Step Simplification" (formula "1")) + (rule "polySimp_homoEq" (formula "8")) + (rule "polySimp_homoEq" (formula "1")) + (rule "mul_literals" (formula "1") (term "1,0")) + (rule "polySimp_mulComm0" (formula "8") (term "1,0")) + (rule "polySimp_addComm0" (formula "2") (term "1,1,0")) + (rule "polySimp_addComm0" (formula "3") (term "2")) + (rule "polySimp_addComm0" (formula "1") (term "0,0")) + (rule "polySimp_addComm0" (formula "8") (term "1,1,0")) + (rule "polySimp_addComm1" (formula "1") (term "0")) + (rule "polySimp_addComm0" (formula "1") (term "0,0")) + (rule "polySimp_rightDist" (formula "8") (term "1,0")) + (rule "polySimp_mulComm0" (formula "8") (term "0,1,0")) + (rule "owns2Dominates" (formula "7")) + (rule "polySimp_addAssoc" (formula "9") (term "0")) + (rule "polySimp_sepPosMonomial" (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 "applyEqRigid" (formula "5") (term "2") (ifseqformula "1")) + (rule "applyEq" (formula "3") (term "1,2") (ifseqformula "1")) + (rule "polySimp_addAssoc" (formula "3") (term "2")) + (rule "polySimp_addComm0" (formula "3") (term "0,2")) + (rule "polySimp_pullOutFactor1b" (formula "3") (term "2")) + (rule "add_literals" (formula "3") (term "1,1,2")) + (rule "times_zero_1" (formula "3") (term "1,2")) + (rule "add_zero_right" (formula "3") (term "2")) + (rule "applyEq" (formula "9") (term "0,1,0") (ifseqformula "1")) + (rule "polySimp_pullOutFactor1" (formula "9") (term "0")) + (rule "add_literals" (formula "9") (term "1,0")) + (rule "times_zero_1" (formula "9") (term "0")) + (builtin "One Step Simplification" (formula "9")) + (rule "closeTrue" (formula "9")) + ) ) ) (branch "Case 2" - (rule "notRight" (formula "3") (userinteraction)) - (rule "dominatesDef" (formula "1") (inst "n=n") (userinteraction)) - (rule "exLeft" (formula "1") (inst "sk=n_0") (userinteraction)) - (rule "owns2Dominates" (formula "2") (userinteraction)) - (rule "owns2Dominates" (formula "4") (userinteraction)) - (rule "dominatesDef" (formula "2") (inst "n=n") (userinteraction)) - (rule "exLeft" (formula "2") (inst "sk=n_1") (userinteraction)) - (rule "dominatesDef" (formula "4") (inst "n=n") (userinteraction)) - (rule "exLeft" (formula "4") (inst "sk=n_2") (userinteraction)) - (rule "dominatesDepthTransitive" (formula "1") (ifseqformula "4") (userinteraction)) - (rule "dominatesSingleDepth" (formula "1") (inst "m=m") (userinteraction)) - (rule "allLeft" (formula "1") (inst "t=Z(1(#))") (userinteraction)) - (rule "dominatesDepthDef" (formula "1") (term "0") (inst "ov=ov") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6")) (userinteraction)) - (rule "leq_literals" (formula "1") (term "0,0")) - (builtin "One Step Simplification" (formula "1")) - (rule "polySimp_homoEq" (formula "1")) - (rule "mul_literals" (formula "1") (term "1,0")) - (rule "polySimp_addComm0" (formula "1") (term "0,0")) - (rule "polySimp_addComm1" (formula "1") (term "0")) - (rule "polySimp_addComm0" (formula "1") (term "0,0")) - (rule "polySimp_sepPosMonomial" (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 "dominatesSingleDepth" (formula "7") (inst "m=m") (userinteraction)) - (rule "allLeft" (formula "7") (inst "t=Z(1(#))") (userinteraction)) - (rule "dominatesDepthDef" (formula "7") (term "0") (inst "ov=ov") (userinteraction)) - (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "10")) (userinteraction)) - (rule "eqSymm" (formula "7") (term "1")) - (rule "applyEq" (formula "7") (term "0,1") (ifseqformula "1")) - (rule "polySimp_homoEq" (formula "7") (term "1")) - (rule "polySimp_mulComm0" (formula "7") (term "1,0,1")) - (rule "polySimp_rightDist" (formula "7") (term "1,0,1")) - (rule "polySimp_mulLiterals" (formula "7") (term "1,1,0,1")) - (rule "mul_literals" (formula "7") (term "0,1,0,1")) - (rule "polySimp_elimOne" (formula "7") (term "1,1,0,1")) - (rule "polySimp_addAssoc" (formula "7") (term "0,1")) - (rule "add_literals" (formula "7") (term "0,0,1")) - (rule "add_zero_left" (formula "7") (term "0,1")) - (rule "inEqSimp_notLeq" (formula "7") (term "0")) - (rule "mul_literals" (formula "7") (term "1,0,0,0")) - (rule "polySimp_addLiterals" (formula "7") (term "0,0")) - (rule "add_literals" (formula "7") (term "0,0")) - (rule "qeq_literals" (formula "7") (term "0")) - (builtin "One Step Simplification" (formula "7")) - (rule "applyEqRigid" (formula "4") (term "2") (ifseqformula "7") (userinteraction)) - (rule "dominatesDepthDef" (formula "4") (inst "ov=ov") (userinteraction)) - (rule "leq_literals" (formula "4") (term "0")) - (builtin "One Step Simplification" (formula "4")) - (rule "closeFalse" (formula "4")) + (rule "notRight" (formula "3")) + (rule "eqSymm" (formula "4")) + (rule "close" (formula "4") (ifseqformula "1")) ) ) } diff --git a/key.core/tacletProofs/universe/Taclet_selectOfDominatedAnon.proof b/key.core/tacletProofs/universe/Taclet_selectOfDominatedAnon.proof deleted file mode 100644 index 23fa3a5c63d..00000000000 --- a/key.core/tacletProofs/universe/Taclet_selectOfDominatedAnon.proof +++ /dev/null @@ -1,115 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "name" : "selectOfDominatedAnon" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "0") - -(branch "dummy ID" - (builtin "One Step Simplification" (formula "1") (newnames "f_h,f_s,f_h2,f_o,f_f") (userinteraction)) -(rule "ifthenelse_split" (formula "1") (term "0,1") (userinteraction)) -(branch " dominatesSet(f_o, f_s) ∧ ¬(¬f_o = null ∧ ¬f_o.@f_h = TRUE) TRUE" - (rule "selectOfAnon" (formula "2") (term "0") (userinteraction)) - (rule "andLeft" (formula "1") (userinteraction)) - (rule "notLeft" (formula "2") (userinteraction)) - (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "2")) (userinteraction)) - (rule "orRight" (formula "3") (userinteraction)) - (rule "notRight" (formula "3") (userinteraction)) - (rule "andLeft" (formula "1") (userinteraction)) - (rule "notLeft" (formula "2") (userinteraction)) - (rule "dominatesSetDef" (formula "2") (inst "o=o") (inst "f=f") (userinteraction)) - (rule "allLeft" (formula "2") (inst "t=f_o") (userinteraction)) - (builtin "One Step Simplification" (formula "2") (userinteraction)) - (rule "allLeft" (formula "2") (inst "t=f_f") (userinteraction)) - (rule "notLeft" (formula "2") (userinteraction)) - (rule "close" (formula "4") (ifseqformula "1") (userinteraction)) -) -(branch " dominatesSet(f_o, f_s) ∧ ¬(¬f_o = null ∧ ¬f_o.@f_h = TRUE) FALSE" - (builtin "One Step Simplification" (formula "2") (userinteraction)) - (rule "closeTrue" (formula "2") (userinteraction)) -) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_selectOfDominatedStore.proof b/key.core/tacletProofs/universe/Taclet_selectOfDominatedStore.proof deleted file mode 100644 index 82cae179e12..00000000000 --- a/key.core/tacletProofs/universe/Taclet_selectOfDominatedStore.proof +++ /dev/null @@ -1,115 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "name" : "selectOfDominatedStore" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "30") - -(branch "dummy ID" -(rule "ifthenelse_split" (formula "1") (term "0,1") (newnames "f_h,f_o,f_f,f_x,f_o2,f_f2") (userinteraction)) -(branch "dominates(f_o2, f_o) ∨ dominates(f_o, f_o2) TRUE" - (rule "selectOfStore" (formula "2") (term "0") (userinteraction)) - (rule "ifthenelse_split" (formula "2") (term "0") (userinteraction)) - (branch " f_o = f_o2 ∧ f_f = f_f2 ∧ ¬f_f = java.lang.Object:: TRUE" - (rule "andLeft" (formula "1")) - (rule "andLeft" (formula "1")) - (rule "notLeft" (formula "3")) - (rule "applyEqRigid" (formula "3") (term "1,0") (ifseqformula "1") (userinteraction)) - (rule "applyEqRigid" (formula "3") (term "0,1") (ifseqformula "1") (userinteraction)) - (builtin "One Step Simplification" (formula "3") (userinteraction)) - (rule "closeFalse" (formula "3") (userinteraction)) - ) - (branch " f_o = f_o2 ∧ f_f = f_f2 ∧ ¬f_f = java.lang.Object:: FALSE" - (builtin "One Step Simplification" (formula "3") (userinteraction)) - (rule "closeTrue" (formula "3") (userinteraction)) - ) -) -(branch "dominates(f_o2, f_o) ∨ dominates(f_o, f_o2) FALSE" - (builtin "One Step Simplification" (formula "2") (userinteraction)) - (rule "closeTrue" (formula "2") (userinteraction)) -) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_selectOfDominatedStoreEQ.proof b/key.core/tacletProofs/universe/Taclet_selectOfDominatedStoreEQ.proof deleted file mode 100644 index c77878b1bf3..00000000000 --- a/key.core/tacletProofs/universe/Taclet_selectOfDominatedStoreEQ.proof +++ /dev/null @@ -1,101 +0,0 @@ -\profile "Java Profile"; - -\settings // Proof-Settings-Config-File -{ - "Choice" : { - "JavaCard" : "JavaCard:off", - "Strings" : "Strings:on", - "assertions" : "assertions:on", - "bigint" : "bigint:on", - "finalFields" : "finalFields:immutable", - "floatRules" : "floatRules:strictfpOnly", - "initialisation" : "initialisation:disableStaticInitialisation", - "intRules" : "intRules:arithmeticSemanticsIgnoringOF", - "integerSimplificationRules" : "integerSimplificationRules:full", - "javaLoopTreatment" : "javaLoopTreatment:efficient", - "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", - "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", - "moreSeqRules" : "moreSeqRules:off", - "permissions" : "permissions:off", - "programRules" : "programRules:Java", - "reach" : "reach:on", - "runtimeExceptions" : "runtimeExceptions:ban", - "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" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, - "Timeout" : -1, - "options" : { - "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", - "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", - "DEP_OPTIONS_KEY" : "DEP_ON", - "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", - "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", - "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", - "OSS_OPTIONS_KEY" : "OSS_ON", - "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", - "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" - } - } - } - -\proofObligation -// Proof-Obligation settings -{ - "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "name" : "selectOfDominatedStoreEQ" - } - -\proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) - -(autoModeTime "3") - -(branch "dummy ID" -(rule "impRight" (formula "1") (newnames "f_EQ,f_o2,f_f2,f_o,f_h,f_f,f_x")) -(rule "notRight" (formula "2")) -(rule "notLeft" (formula "2")) -(rule "applyEqReverse" (formula "2") (term "0,0") (ifseqformula "1") (userinteraction)) -(rule "applyEqReverse" (formula "2") (term "2,0,1") (ifseqformula "1") (userinteraction)) -(rule "selectOfDominatedStore" (formula "2") (term "0") (userinteraction)) - (builtin "One Step Simplification" (formula "2") (userinteraction)) -(rule "closeTrue" (formula "2") (userinteraction)) -) -} diff --git a/key.core/tacletProofs/universe/Taclet_selectOfDominatedAnonEQ.proof b/key.core/tacletProofs/universe/Taclet_undomDisjointCreatedRepfp.proof similarity index 72% rename from key.core/tacletProofs/universe/Taclet_selectOfDominatedAnonEQ.proof rename to key.core/tacletProofs/universe/Taclet_undomDisjointCreatedRepfp.proof index 37ae14bb16c..10e417364cf 100644 --- a/key.core/tacletProofs/universe/Taclet_selectOfDominatedAnonEQ.proof +++ b/key.core/tacletProofs/universe/Taclet_undomDisjointCreatedRepfp.proof @@ -5,7 +5,7 @@ "Choice" : { "JavaCard" : "JavaCard:off", "Strings" : "Strings:on", - "assertions" : "assertions:on", + "assertions" : "assertions:safe", "bigint" : "bigint:on", "finalFields" : "finalFields:immutable", "floatRules" : "floatRules:strictfpOnly", @@ -15,7 +15,7 @@ "javaLoopTreatment" : "javaLoopTreatment:efficient", "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", + "modelFields" : "modelFields:treatAsAxiom", "moreSeqRules" : "moreSeqRules:off", "permissions" : "permissions:off", "programRules" : "programRules:Java", @@ -48,22 +48,22 @@ }, "Strategy" : { "ActiveStrategy" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, + "MaximumNumberOfAutomaticApplications" : 10000, "Timeout" : -1, "options" : { "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", "DEP_OPTIONS_KEY" : "DEP_ON", "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", "OSS_OPTIONS_KEY" : "OSS_ON", "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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", @@ -80,23 +80,26 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "name" : "selectOfDominatedAnonEQ" + "name" : "undomDisjointCreatedRepfp" } \proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) -(autoModeTime "4") +(autoModeTime "240") (branch "dummy ID" - (builtin "One Step Simplification" (formula "1") (newnames "f_EQ,f_o,f_f,f_s,f_h,f_h2") (userinteraction)) +(rule "createdRepfpDef" (formula "1") (term "0,0,0,0") (inst "y=y") (userinteraction)) +(rule "createdRepfpDef" (formula "1") (term "1,0,0,0") (inst "y=y") (userinteraction)) (rule "impRight" (formula "1")) (rule "notRight" (formula "2")) (rule "notLeft" (formula "2")) -(rule "applyEqReverse" (formula "2") (term "0,0") (ifseqformula "1") (userinteraction)) -(rule "applyEqReverse" (formula "2") (term "2,0,1") (ifseqformula "1") (userinteraction)) -(rule "selectOfDominatedAnon" (formula "2") (term "0") (userinteraction)) - (builtin "One Step Simplification" (formula "2") (userinteraction)) -(rule "closeTrue" (formula "2") (userinteraction)) +(rule "commuteIntersection" (formula "2") (term "0,0")) +(rule "commuteIntersection" (formula "2") (term "1,0")) +(rule "associativeLawIntersect" (formula "2") (term "0")) +(rule "commuteIntersection_2" (formula "2") (term "0,0")) +(rule "undomDisjointRepfp" (formula "2") (term "0,0,0") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "2")) +(rule "closeTrue" (formula "2")) ) } diff --git a/key.core/tacletProofs/universe/Taclet_undomDisjointCreatedRepfpInv.proof b/key.core/tacletProofs/universe/Taclet_undomDisjointCreatedRepfpInv.proof new file mode 100644 index 00000000000..4a5e6a10cdd --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_undomDisjointCreatedRepfpInv.proof @@ -0,0 +1,150 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:safe", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:treatAsAxiom", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 10000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "undomDisjointCreatedRepfpInv" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "148") + +(branch "dummy ID" +(rule "impRight" (formula "1") (newnames "f_h1,f_x,f_h2,f_y")) +(rule "notLeft" (formula "1")) +(rule "notRight" (formula "2")) +(rule "equalityToElementOfRight" (formula "2") (inst "ov=ov") (inst "fv=fv")) + (builtin "One Step Simplification" (formula "2")) +(rule "allRight" (formula "2") (inst "sk=ov_0")) +(rule "allRight" (formula "2") (inst "sk=fv_0")) +(rule "notRight" (formula "2")) +(rule "elementOfIntersect" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "createdRepfpElement" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "createdRepfpElement" (formula "3")) +(rule "andLeft" (formula "3")) +(rule "pullOutSelect" (formula "2") (term "0") (inst "selectSK=java_lang_Object_created__0")) +(rule "applyEqRigid" (formula "2") (term "1") (ifseqformula "3")) +(rule "pullOutSelect" (formula "5") (term "0") (inst "selectSK=java_lang_Object_created__1")) +(rule "applyEqRigid" (formula "5") (term "1") (ifseqformula "6")) +(rule "hideAuxiliaryEqConcrete" (formula "3")) +(rule "hideAuxiliaryEqConcrete" (formula "5")) +(rule "cut_direct" (formula "1") (term "1")) +(branch "CUT: ov_0 = f_x TRUE" + (builtin "One Step Simplification" (formula "2")) + (rule "true_left" (formula "2")) + (rule "applyEq" (formula "3") (term "0,1") (ifseqformula "1")) + (rule "eqSymm" (formula "3") (term "1")) + (rule "undomNotEqual" (formula "3") (term "1") (ifseqformula "5")) + (builtin "One Step Simplification" (formula "3")) + (rule "dominatesSameNotUndom" (formula "3") (ifseqformula "3")) + (rule "applyEq" (formula "2") (term "1,0") (ifseqformula "1")) + (rule "applyEq" (formula "4") (term "1,0") (ifseqformula "1")) + (rule "applyEq" (formula "3") (term "1") (ifseqformula "1")) + (rule "dominatesSameNotUndom" (formula "3") (ifseqformula "3")) + (rule "undomNotDominates" (formula "3") (ifseqformula "5")) + (rule "closeFalse" (formula "3")) +) +(branch "CUT: ov_0 = f_x FALSE" + (builtin "One Step Simplification" (formula "1")) + (rule "dominatesSameNotUndom" (formula "1") (ifseqformula "1")) + (rule "dominatesNotEqualLeft" (formula "7") (ifseqformula "1")) + (rule "false_right" (formula "7")) + (rule "cut_direct" (formula "3") (term "1")) + (branch "CUT: ov_0 = f_y TRUE" + (builtin "One Step Simplification" (formula "4")) + (rule "true_left" (formula "4")) + (rule "applyEq" (formula "1") (term "1") (ifseqformula "3")) + (rule "undomNotDominatesInv" (formula "1") (ifseqformula "5")) + (rule "closeFalse" (formula "1")) + ) + (branch "CUT: ov_0 = f_y FALSE" + (builtin "One Step Simplification" (formula "3")) + (rule "dominatesSameNotUndom" (formula "3") (ifseqformula "3")) + (rule "dominatesSameNotUndom" (formula "3") (ifseqformula "1")) + (rule "dominatesSameNotUndom" (formula "1") (ifseqformula "3")) + (rule "close" (formula "6") (ifseqformula "5")) + ) +) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetSubset.proof b/key.core/tacletProofs/universe/Taclet_undomDisjointRepfp.proof similarity index 53% rename from key.core/tacletProofs/universe/Taclet_dominatesSetSubset.proof rename to key.core/tacletProofs/universe/Taclet_undomDisjointRepfp.proof index 06831379988..bdcca44a4ab 100644 --- a/key.core/tacletProofs/universe/Taclet_dominatesSetSubset.proof +++ b/key.core/tacletProofs/universe/Taclet_undomDisjointRepfp.proof @@ -5,7 +5,7 @@ "Choice" : { "JavaCard" : "JavaCard:off", "Strings" : "Strings:on", - "assertions" : "assertions:on", + "assertions" : "assertions:safe", "bigint" : "bigint:on", "finalFields" : "finalFields:immutable", "floatRules" : "floatRules:strictfpOnly", @@ -15,7 +15,7 @@ "javaLoopTreatment" : "javaLoopTreatment:efficient", "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", + "modelFields" : "modelFields:treatAsAxiom", "moreSeqRules" : "moreSeqRules:off", "permissions" : "permissions:off", "programRules" : "programRules:Java", @@ -48,22 +48,22 @@ }, "Strategy" : { "ActiveStrategy" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, + "MaximumNumberOfAutomaticApplications" : 10000, "Timeout" : -1, "options" : { "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", "DEP_OPTIONS_KEY" : "DEP_ON", "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", "OSS_OPTIONS_KEY" : "OSS_ON", "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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", @@ -80,35 +80,59 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", - "name" : "dominatesSetSubset", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + "name" : "undomDisjointRepfp" } \proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) -(autoModeTime "7") +(autoModeTime "237") (branch "dummy ID" -(rule "dominatesSetDef" (formula "1") (term "0,0,1") (newnames "f_o,f_s2,f_s1") (inst "o=o") (inst "f=f") (userinteraction)) -(rule "dominatesSetDef" (formula "1") (term "0,0") (inst "o=o") (inst "f=f") (userinteraction)) +(rule "undomDef" (formula "1") (term "0,1") (userinteraction)) +(rule "equalityToElementOf" (formula "1") (term "0,0") (inst "ov=ov") (inst "fv=fv") (userinteraction)) (rule "impRight" (formula "1")) -(rule "orRight" (formula "2")) (rule "notRight" (formula "2")) (rule "notLeft" (formula "2")) -(rule "notRight" (formula "3")) -(rule "allRight" (formula "3") (inst "sk=o_0")) -(rule "allRight" (formula "3") (inst "sk=f_0")) -(rule "impRight" (formula "3")) -(rule "elementOfSubsetImpliesElementOfSuperset" (formula "1") (ifseqformula "2")) -(rule "nnf_imp2or" (formula "4") (term "0,0")) -(rule "commute_or" (formula "4") (term "0,0")) -(rule "allLeft" (formula "4") (inst "t=o_0")) -(rule "replace_known_right" (formula "4") (term "0,0") (ifseqformula "6")) - (builtin "One Step Simplification" (formula "4")) -(rule "allLeft" (formula "4") (inst "t=f_0")) -(rule "notLeft" (formula "4")) -(rule "close" (formula "6") (ifseqformula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "notLeft" (formula "3")) +(rule "notLeft" (formula "2")) +(rule "notLeft" (formula "1")) + (builtin "One Step Simplification" (formula "4") (userinteraction)) +(rule "allRight" (formula "4") (inst "sk=ov_0") (userinteraction)) +(rule "allRight" (formula "4") (inst "sk=fv_0") (userinteraction)) +(rule "notRight" (formula "4") (userinteraction)) +(rule "elementOfIntersect" (formula "1") (userinteraction)) +(rule "andLeft" (formula "1") (userinteraction)) +(rule "repfpElement" (formula "1") (userinteraction)) +(rule "repfpElement" (formula "2") (userinteraction)) +(rule "orLeft" (formula "2") (userinteraction)) +(branch "dominates(f_y, ov_0)" + (rule "orLeft" (formula "1") (userinteraction)) + (branch "dominates(f_x, ov_0)" + (rule "dominatesSameNotUndom" (formula "2") (ifseqformula "1") (userinteraction)) + (rule "undomDef" (formula "3") (userinteraction)) + (rule "eqSymm" (formula "6")) + (rule "eqSymm" (formula "3") (term "0,1")) + (rule "replace_known_right" (formula "3") (term "0,0,0") (ifseqformula "4")) + (builtin "One Step Simplification" (formula "3") (ifInst "" (formula "5")) (ifInst "" (formula "6"))) + (rule "closeTrue" (formula "3")) + ) + (branch "ov_0 = f_x" + (rule "eqSymm" (formula "5")) + (rule "dominatesSameNotUndom" (formula "2") (ifseqformula "2")) + (rule "applyEqRigid" (formula "2") (term "1") (ifseqformula "1")) + (rule "close" (formula "5") (ifseqformula "2")) + ) +) +(branch "ov_0 = f_y" + (rule "eqSymm" (formula "5")) + (rule "applyEqRigid" (formula "1") (term "1,0") (ifseqformula "2")) + (rule "replace_known_right" (formula "1") (term "0") (ifseqformula "3")) + (builtin "One Step Simplification" (formula "1")) + (rule "applyEq" (formula "1") (term "0") (ifseqformula "2")) + (rule "close" (formula "5") (ifseqformula "1")) +) ) } diff --git a/key.core/tacletProofs/universe/Taclet_owns2DominatesLeft.proof b/key.core/tacletProofs/universe/Taclet_undomNotDominates.proof similarity index 76% rename from key.core/tacletProofs/universe/Taclet_owns2DominatesLeft.proof rename to key.core/tacletProofs/universe/Taclet_undomNotDominates.proof index 817aea168b1..d095b7f8570 100644 --- a/key.core/tacletProofs/universe/Taclet_owns2DominatesLeft.proof +++ b/key.core/tacletProofs/universe/Taclet_undomNotDominates.proof @@ -5,7 +5,7 @@ "Choice" : { "JavaCard" : "JavaCard:off", "Strings" : "Strings:on", - "assertions" : "assertions:on", + "assertions" : "assertions:safe", "bigint" : "bigint:on", "finalFields" : "finalFields:immutable", "floatRules" : "floatRules:strictfpOnly", @@ -15,7 +15,7 @@ "javaLoopTreatment" : "javaLoopTreatment:efficient", "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", + "modelFields" : "modelFields:treatAsAxiom", "moreSeqRules" : "moreSeqRules:off", "permissions" : "permissions:off", "programRules" : "programRules:Java", @@ -48,22 +48,22 @@ }, "Strategy" : { "ActiveStrategy" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, + "MaximumNumberOfAutomaticApplications" : 10000, "Timeout" : -1, "options" : { "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", "DEP_OPTIONS_KEY" : "DEP_ON", "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", "OSS_OPTIONS_KEY" : "OSS_ON", "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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", @@ -80,22 +80,22 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", - "name" : "owns2DominatesLeft", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + "name" : "undomNotDominates" } \proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) -(autoModeTime "51") +(autoModeTime "58") (branch "dummy ID" -(rule "impRight" (formula "1") (newnames "f_x,f_y")) +(rule "undomDef" (formula "1") (term "0,1") (userinteraction)) +(rule "impRight" (formula "1")) (rule "notRight" (formula "2")) -(rule "notLeft" (formula "2")) -(rule "eqSymm" (formula "1") (userinteraction)) -(rule "owns2Dominates" (formula "1") (userinteraction)) -(rule "closeAntec" (formula "1") (ifseqformula "3") (userinteraction)) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "notLeft" (formula "3")) +(rule "notLeft" (formula "1")) +(rule "close" (formula "3") (ifseqformula "2")) ) } diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetNotElement.proof b/key.core/tacletProofs/universe/Taclet_undomNotDominatesInv.proof similarity index 74% rename from key.core/tacletProofs/universe/Taclet_dominatesSetNotElement.proof rename to key.core/tacletProofs/universe/Taclet_undomNotDominatesInv.proof index 4c49372aeef..6645db2b1d4 100644 --- a/key.core/tacletProofs/universe/Taclet_dominatesSetNotElement.proof +++ b/key.core/tacletProofs/universe/Taclet_undomNotDominatesInv.proof @@ -5,7 +5,7 @@ "Choice" : { "JavaCard" : "JavaCard:off", "Strings" : "Strings:on", - "assertions" : "assertions:on", + "assertions" : "assertions:safe", "bigint" : "bigint:on", "finalFields" : "finalFields:immutable", "floatRules" : "floatRules:strictfpOnly", @@ -15,7 +15,7 @@ "javaLoopTreatment" : "javaLoopTreatment:efficient", "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", + "modelFields" : "modelFields:treatAsAxiom", "moreSeqRules" : "moreSeqRules:off", "permissions" : "permissions:off", "programRules" : "programRules:Java", @@ -48,22 +48,22 @@ }, "Strategy" : { "ActiveStrategy" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, + "MaximumNumberOfAutomaticApplications" : 10000, "Timeout" : -1, "options" : { "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", "DEP_OPTIONS_KEY" : "DEP_ON", "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", "OSS_OPTIONS_KEY" : "OSS_ON", "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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", @@ -80,22 +80,23 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "name" : "dominatesSetNotElement" + "name" : "undomNotDominatesInv" } \proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) -(autoModeTime "3") +(autoModeTime "65") (branch "dummy ID" -(rule "impRight" (formula "1") (newnames "f_x,f_f,f_s")) +(rule "undomDef" (formula "1") (term "0,1") (userinteraction)) +(rule "impRight" (formula "1")) (rule "notRight" (formula "2")) -(rule "dominatesSetDef" (formula "1") (inst "o=o") (inst "f=f") (userinteraction)) -(rule "allLeft" (formula "1") (inst "t=f_x") (userinteraction)) - (builtin "One Step Simplification" (formula "1") (userinteraction)) -(rule "allLeft" (formula "1") (inst "t=f_f") (userinteraction)) -(rule "notLeft" (formula "1") (userinteraction)) -(rule "closeAntec" (formula "3") (ifseqformula "4") (userinteraction)) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "notLeft" (formula "3")) +(rule "notLeft" (formula "1")) +(rule "notLeft" (formula "1")) +(rule "close" (formula "2") (ifseqformula "1")) ) } diff --git a/key.core/tacletProofs/universe/Taclet_undomNotEqual.proof b/key.core/tacletProofs/universe/Taclet_undomNotEqual.proof new file mode 100644 index 00000000000..73b675805d9 --- /dev/null +++ b/key.core/tacletProofs/universe/Taclet_undomNotEqual.proof @@ -0,0 +1,104 @@ +\profile "Java Profile"; + +\settings // Proof-Settings-Config-File +{ + "Choice" : { + "JavaCard" : "JavaCard:off", + "Strings" : "Strings:on", + "assertions" : "assertions:safe", + "bigint" : "bigint:on", + "finalFields" : "finalFields:immutable", + "floatRules" : "floatRules:strictfpOnly", + "initialisation" : "initialisation:disableStaticInitialisation", + "intRules" : "intRules:arithmeticSemanticsIgnoringOF", + "integerSimplificationRules" : "integerSimplificationRules:full", + "javaLoopTreatment" : "javaLoopTreatment:efficient", + "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", + "methodExpansion" : "methodExpansion:modularOnly", + "modelFields" : "modelFields:treatAsAxiom", + "moreSeqRules" : "moreSeqRules:off", + "permissions" : "permissions:off", + "programRules" : "programRules:Java", + "reach" : "reach:on", + "runtimeExceptions" : "runtimeExceptions:ban", + "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" : "JavaCardDLStrategy", + "MaximumNumberOfAutomaticApplications" : 10000, + "Timeout" : -1, + "options" : { + "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", + "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", + "DEP_OPTIONS_KEY" : "DEP_ON", + "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", + "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", + "MPS_OPTIONS_KEY" : "MPS_MERGE", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", + "OSS_OPTIONS_KEY" : "OSS_ON", + "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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" + } + } + } + +\proofObligation +// Proof-Obligation settings +{ + "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", + "name" : "undomNotEqual" + } + +\proof { +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) + +(autoModeTime "94") + +(branch "dummy ID" +(rule "undomSymm" (formula "1") (term "0,1") (userinteraction)) +(rule "undomDef" (formula "1") (term "0,1") (userinteraction)) +(rule "impRight" (formula "1")) +(rule "notRight" (formula "2")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "notLeft" (formula "3")) +(rule "notLeft" (formula "1")) +(rule "notLeft" (formula "1")) +(rule "eqSymm" (formula "1")) +(rule "close" (formula "4") (ifseqformula "1")) +) +} diff --git a/key.core/tacletProofs/universe/Taclet_undomRefl.proof b/key.core/tacletProofs/universe/Taclet_undomSymm.proof similarity index 96% rename from key.core/tacletProofs/universe/Taclet_undomRefl.proof rename to key.core/tacletProofs/universe/Taclet_undomSymm.proof index 6d8597abf1a..afd16153dfe 100644 --- a/key.core/tacletProofs/universe/Taclet_undomRefl.proof +++ b/key.core/tacletProofs/universe/Taclet_undomSymm.proof @@ -80,9 +80,7 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", - "name" : "undomRefl", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + "name" : "undomSymm", } \proof { diff --git a/key.core/tacletProofs/universe/Taclet_undomTransitive.proof b/key.core/tacletProofs/universe/Taclet_undomTransitive.proof index 3598c2d9d97..df3fcfdcefc 100644 --- a/key.core/tacletProofs/universe/Taclet_undomTransitive.proof +++ b/key.core/tacletProofs/universe/Taclet_undomTransitive.proof @@ -89,7 +89,7 @@ (autoModeTime "260") (branch "dummy ID" -(rule "undomRefl" (formula "1") (term "0,0,1") (userinteraction)) +(rule "undomSymm" (formula "1") (term "0,0,1") (userinteraction)) (rule "undomDef" (formula "1") (term "0,0,1") (userinteraction)) (rule "undomDef" (formula "1") (term "0,0") (userinteraction)) (rule "impRight" (formula "1")) diff --git a/key.core/tacletProofs/universe/Taclet_dominatesSetEmpty.proof b/key.core/tacletProofs/universe/Taclet_variousReferencedObjectIsCreated.proof similarity index 77% rename from key.core/tacletProofs/universe/Taclet_dominatesSetEmpty.proof rename to key.core/tacletProofs/universe/Taclet_variousReferencedObjectIsCreated.proof index b82240baf17..59fb0938ab8 100644 --- a/key.core/tacletProofs/universe/Taclet_dominatesSetEmpty.proof +++ b/key.core/tacletProofs/universe/Taclet_variousReferencedObjectIsCreated.proof @@ -5,7 +5,7 @@ "Choice" : { "JavaCard" : "JavaCard:off", "Strings" : "Strings:on", - "assertions" : "assertions:on", + "assertions" : "assertions:safe", "bigint" : "bigint:on", "finalFields" : "finalFields:immutable", "floatRules" : "floatRules:strictfpOnly", @@ -15,7 +15,7 @@ "javaLoopTreatment" : "javaLoopTreatment:efficient", "mergeGenerateIsWeakeningGoal" : "mergeGenerateIsWeakeningGoal:off", "methodExpansion" : "methodExpansion:modularOnly", - "modelFields" : "modelFields:showSatisfiability", + "modelFields" : "modelFields:treatAsAxiom", "moreSeqRules" : "moreSeqRules:off", "permissions" : "permissions:off", "programRules" : "programRules:Java", @@ -48,22 +48,22 @@ }, "Strategy" : { "ActiveStrategy" : "JavaCardDLStrategy", - "MaximumNumberOfAutomaticApplications" : 7000, + "MaximumNumberOfAutomaticApplications" : 10000, "Timeout" : -1, "options" : { "AUTO_INDUCTION_OPTIONS_KEY" : "AUTO_INDUCTION_OFF", "BLOCK_OPTIONS_KEY" : "BLOCK_CONTRACT_INTERNAL", - "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_DELAYED", + "CLASS_AXIOM_OPTIONS_KEY" : "CLASS_AXIOM_FREE", "DEP_OPTIONS_KEY" : "DEP_ON", "INF_FLOW_CHECK_PROPERTY" : "INF_FLOW_CHECK_FALSE", - "LOOP_OPTIONS_KEY" : "LOOP_SCOPE_INV_TACLET", + "LOOP_OPTIONS_KEY" : "LOOP_INVARIANT", "METHOD_OPTIONS_KEY" : "METHOD_CONTRACT", "MPS_OPTIONS_KEY" : "MPS_MERGE", - "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_DEF_OPS", + "NON_LIN_ARITH_OPTIONS_KEY" : "NON_LIN_ARITH_NONE", "OSS_OPTIONS_KEY" : "OSS_ON", "QUANTIFIERS_OPTIONS_KEY" : "QUANTIFIERS_NON_SPLITTING_WITH_PROGS", - "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON", - "QUERY_NEW_OPTIONS_KEY" : "QUERY_ON", + "QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_OFF", + "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", @@ -80,19 +80,19 @@ // Proof-Obligation settings { "class" : "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", - "definitionFile" : "unknown", - "name" : "dominatesSetEmpty", - "tacletFile" : "/home/boby/Dev/key/Examples/universe_lemmas.key" + "name" : "variousReferencedObjectIsCreated" } \proof { -(keyLog "0" (keyUser "boby" ) (keyVersion "fb96158cd902ea794b07f245944d17da701055e2")) +(keyLog "0" (keyUser "boby" ) (keyVersion "19f98e9b750147137d3ed98179e16502b6f60abf")) -(autoModeTime "1") +(autoModeTime "69") (branch "dummy ID" -(rule "dominatesSetDef" (formula "1") (newnames "f_o") (inst "o=o") (inst "f=f") (userinteraction)) - (builtin "One Step Simplification" (formula "1")) -(rule "closeTrue" (formula "1")) +(rule "impRight" (formula "1") (newnames "f_h,f_o,f_f")) +(rule "impRight" (formula "2")) +(rule "notLeft" (formula "2")) +(rule "referencedObjectIsCreatedRight" (formula "2") (ifseqformula "3")) +(rule "close" (formula "2") (ifseqformula "1")) ) } From ac9124d67d84564a2636078ff8a2d3540dbafc87 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Fri, 24 Oct 2025 23:20:03 +0200 Subject: [PATCH 17/27] remove factorypaths --- key.core.example/.factorypath | 8 -------- key.core.proof_references/.factorypath | 8 -------- key.core.rifl/.factorypath | 8 -------- key.core.symbolic_execution.example/.factorypath | 8 -------- key.core.symbolic_execution/.factorypath | 8 -------- key.core.testgen/.factorypath | 8 -------- key.core/.factorypath | 8 -------- key.ncore.calculus/.factorypath | 8 -------- key.ncore/.factorypath | 8 -------- key.removegenerics/.factorypath | 8 -------- key.ui/.factorypath | 8 -------- key.util/.factorypath | 8 -------- keyext.caching/.factorypath | 8 -------- keyext.exploration/.factorypath | 8 -------- keyext.isabelletranslation/.factorypath | 8 -------- keyext.proofmanagement/.factorypath | 8 -------- keyext.slicing/.factorypath | 8 -------- keyext.ui.testgen/.factorypath | 8 -------- recoder/.factorypath | 8 -------- 19 files changed, 152 deletions(-) delete mode 100644 key.core.example/.factorypath delete mode 100644 key.core.proof_references/.factorypath delete mode 100644 key.core.rifl/.factorypath delete mode 100644 key.core.symbolic_execution.example/.factorypath delete mode 100644 key.core.symbolic_execution/.factorypath delete mode 100644 key.core.testgen/.factorypath delete mode 100644 key.core/.factorypath delete mode 100644 key.ncore.calculus/.factorypath delete mode 100644 key.ncore/.factorypath delete mode 100644 key.removegenerics/.factorypath delete mode 100644 key.ui/.factorypath delete mode 100644 key.util/.factorypath delete mode 100644 keyext.caching/.factorypath delete mode 100644 keyext.exploration/.factorypath delete mode 100644 keyext.isabelletranslation/.factorypath delete mode 100644 keyext.proofmanagement/.factorypath delete mode 100644 keyext.slicing/.factorypath delete mode 100644 keyext.ui.testgen/.factorypath delete mode 100644 recoder/.factorypath diff --git a/key.core.example/.factorypath b/key.core.example/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.core.example/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.core.proof_references/.factorypath b/key.core.proof_references/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.core.proof_references/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.core.rifl/.factorypath b/key.core.rifl/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.core.rifl/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.core.symbolic_execution.example/.factorypath b/key.core.symbolic_execution.example/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.core.symbolic_execution.example/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.core.symbolic_execution/.factorypath b/key.core.symbolic_execution/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.core.symbolic_execution/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.core.testgen/.factorypath b/key.core.testgen/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.core.testgen/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.core/.factorypath b/key.core/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.core/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.ncore.calculus/.factorypath b/key.ncore.calculus/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.ncore.calculus/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.ncore/.factorypath b/key.ncore/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.ncore/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.removegenerics/.factorypath b/key.removegenerics/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.removegenerics/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.ui/.factorypath b/key.ui/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.ui/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/key.util/.factorypath b/key.util/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/key.util/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/keyext.caching/.factorypath b/keyext.caching/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/keyext.caching/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/keyext.exploration/.factorypath b/keyext.exploration/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/keyext.exploration/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/keyext.isabelletranslation/.factorypath b/keyext.isabelletranslation/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/keyext.isabelletranslation/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/keyext.proofmanagement/.factorypath b/keyext.proofmanagement/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/keyext.proofmanagement/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/keyext.slicing/.factorypath b/keyext.slicing/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/keyext.slicing/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/keyext.ui.testgen/.factorypath b/keyext.ui.testgen/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/keyext.ui.testgen/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/recoder/.factorypath b/recoder/.factorypath deleted file mode 100644 index eed262358e1..00000000000 --- a/recoder/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - From 88187a0debb466f31e974a64e2049293160d7319 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Thu, 30 Oct 2025 16:23:36 +0100 Subject: [PATCH 18/27] add support for dom references --- .../ilkd/key/speclang/ContractFactory.java | 24 ++++-- .../uka/ilkd/key/proof/rules/universeDefs.key | 83 +++++++++++++++++++ .../key/proof/rules/universeDismissLemmas.key | 12 ++- .../ilkd/key/proof/rules/universeLemmas.key | 2 +- .../key/gui/plugins/javac/JavacSettings.java | 2 +- .../plugins/javac/JavacSettingsProvider.java | 2 +- 6 files changed, 113 insertions(+), 12 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java b/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java index 1340534a367..1d3a9284215 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java @@ -347,6 +347,7 @@ private void addUniverseConds(IProgramMethod pm, var heap = services.getTypeConverter().getHeapLDT().getHeap(); final TermBuilder tb = services.getTermBuilder(); final var owner = services.getNamespaces().functions().lookup("owner"); + final var dominates = services.getNamespaces().functions().lookup("dominates"); int i = 0; @@ -357,21 +358,27 @@ private void addUniverseConds(IProgramMethod pm, for (var modifier : modifiers) { if (!(modifier instanceof AnnotationUseSpecification)) continue; var specifier = (AnnotationUseSpecification)modifier; - if (specifier.getTypeReferenceAt(0).getName().equals("Rep")) { + var name = specifier.getTypeReferenceAt(0).getName(); + if (name.equals("Rep")) { change = true; pres = tb.and(pres, tb.imp( tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), tb.equals(tb.var(selfVar), tb.func(owner, tb.var(paramVars.get(i)))))); break; - } else if (specifier.getTypeReferenceAt(0).getName().equals("Peer")) { + } else if (name.equals("Peer")) { change = true; pres = tb.and(pres, tb.imp( tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), tb.equals(tb.func(owner, tb.var(selfVar)), tb.func(owner, tb.var(paramVars.get(i)))))); break; - } else if (specifier.getTypeReferenceAt(0).getName().equals("Payload")) { + } else if (name.equals("Dom")) { + change = true; + pres = tb.and(pres, tb.imp( + tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), + tb.func(dominates, tb.var(paramVars.get(i)), tb.var(selfVar)))); + } else if (name.equals("Payload")) { change = true; break; } @@ -389,21 +396,26 @@ private void addUniverseConds(IProgramMethod pm, for (var modifier : modifiers) { if (!(modifier instanceof AnnotationUseSpecification)) continue; var specifier = (AnnotationUseSpecification)modifier; - if (specifier.getTypeReferenceAt(0).getName().equals("Rep")) { + var name = specifier.getTypeReferenceAt(0).getName(); + if (name.equals("Rep")) { change = true; posts = tb.and(posts, tb.imp( tb.not(tb.equals(tb.var(resultVar), tb.NULL())), tb.equals(tb.var(selfVar), tb.func(owner, tb.var(resultVar))))); break; - } else if (specifier.getTypeReferenceAt(0).getName().equals("Peer")) { + } else if (name.equals("Dom")) { + pres = tb.and(pres, tb.imp( + tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), + tb.func(dominates, tb.var(resultVar), tb.var(selfVar)))); + } else if (name.equals("Peer")) { change = true; posts = tb.and(posts, tb.imp( tb.not(tb.equals(tb.var(resultVar), tb.NULL())), tb.equals(tb.func(owner, tb.var(selfVar)), tb.func(owner, tb.var(resultVar))))); break; - } else if (specifier.getTypeReferenceAt(0).getName().equals("Payload")) { + } else if (name.equals("Payload")) { change = true; break; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key index 27f1ce86d6d..edf479e047c 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key @@ -132,6 +132,56 @@ \displayname "variableDeclaration" }; + variableDeclarationDom { + \schemaVar \formula post; + \schemaVar \program Variable #v0; + \schemaVar \program Type #t0; + \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + + \find(\modality{#allmodal}{.. @universe.qual.Dom #t0 #v0; ...}\endmodality (post)) + + \sameUpdateLevel + \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) + \addprogvars(#v0) + + \heuristics(simplify_prog, simplify_prog_subset) + \displayname "variableDeclaration" + }; + + variableDeclarationDomAssignVariable { + \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + \schemaVar \formula post; + \schemaVar \program Variable #v0, #v; + \schemaVar \program Type #t1, #t; + \schemaVar \program ProgramMethod #pm; + \schemaVar \program VariableInitializer #vi; + + \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Dom #t1 #v0 = #vi; ...}\endmodality (post)) + \sameUpdateLevel + \varcond(\isLocalVariable(#vi)) + \replacewith(\modality{#allmodal}{.. @universe.qual.Dom #t1 #v0; #v0 = #vi; ...}\endmodality (post)) + \add(#vi != null -> dominates(#v, #vi) ==>) + + \heuristics(simplify_prog, simplify_prog_subset) + \displayname "variableDeclaration" + }; + + variableDeclarationDomAssign { + \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + \schemaVar \formula post; + \schemaVar \program Variable #v0, #v; + \schemaVar \program Type #t; + \schemaVar \program ProgramMethod #pm; + \schemaVar \program VariableInitializer #vi; + + \find(\modality{#allmodal}{.. @universe.qual.Dom #t #v0 = #vi; ...}\endmodality (post)) + \varcond(\not \isLocalVariable(#vi)) + \replacewith(\modality{#allmodal}{.. @universe.qual.Dom #t #v0; #v0 = #vi; ...}\endmodality (post)) + + \heuristics(simplify_prog, simplify_prog_subset) + \displayname "variableDeclaration" + }; + instanceCreationAssignmentPeer { \schemaVar \modalOperator {diamond, box} #normal; \schemaVar \formula post; @@ -176,6 +226,28 @@ \heuristics(method_expand) }; + instanceCreationAssignmentDom { + \schemaVar \modalOperator {diamond, box} #normal; + \schemaVar \formula post; + \schemaVar \program ProgramMethod #pm; + \schemaVar \program Type #t; + \schemaVar \program SimpleInstanceCreation #n; + \schemaVar \program LeftHandSide #lhs; + \schemaVar \program Variable #v0, #v, #v1; + + \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) + \sameUpdateLevel + + \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Dom)) + \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); + #constructor-call(#v0, #n); + #post-work(#v0); + @universe.qual.Dom #typeof(#v0) #v1 = #v0; + #lhs = #v1; + ...}\endmodality (post)) + \heuristics(method_expand) + }; + peerField { \schemaVar \term Object o; \schemaVar \term Field f; @@ -198,6 +270,17 @@ \heuristics(simplify) }; + dominatesField { + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term Heap h; + + \find(alpha::select(h, o, f)) + \varcond(\hasAnnotation(f, Dom)) + \add(alpha::select(h, o, f) != null -> dominates(o, Object::cast(alpha::select(h, o, f))) ==>) + \heuristics(simplify) + }; + // --------------------------------------------------- // Predicate and Function definitions // --------------------------------------------------- diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key index 93d188b89a6..b8b77181560 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key @@ -1,5 +1,11 @@ \rules(programRules:Java) { +// ======================================================== +// == == +// == Dismiss Rules == +// == ------------- == +// ======================================================== + // =============================== // Normal Variant // =============================== @@ -252,9 +258,9 @@ }; // ======================================================== -// ======================================================== -// ======================================================== -// ======================================================== +// == == +// == Simplify Rules == +// == -------------- == // ======================================================== diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key index ce7d335ab92..2ae5c1e8e8c 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key @@ -225,7 +225,7 @@ }; // ------------------------- - // createRepfp rules + // createdRepfp rules // ------------------------- \lemma diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettings.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettings.java index a68e6070f4d..dcf884734af 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettings.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettings.java @@ -9,7 +9,7 @@ /** * Settings for the javac extention. * - * @author Daniel Grévent + * @author PiisRational */ public class JavacSettings extends AbstractPropertiesSettings { diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettingsProvider.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettingsProvider.java index dffebd2b728..497552bc98d 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettingsProvider.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavacSettingsProvider.java @@ -13,7 +13,7 @@ /** * Settings for the javac extension. * - * @author Daniel Grévent + * @author PiisRational */ public class JavacSettingsProvider extends SettingsPanel implements SettingsProvider { /** From 16e29d2bc225de60fb1da9b49f488868f0917707 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Sun, 11 Jan 2026 18:04:27 +0100 Subject: [PATCH 19/27] update the heuristics --- .../uka/ilkd/key/proof/rules/universeDefs.key | 6 +-- .../key/proof/rules/universeDismissLemmas.key | 24 +++++------ .../ilkd/key/proof/rules/universeLemmas.key | 42 +++++++++---------- .../de/uka/ilkd/key/proof/rules/various.key | 12 +++--- 4 files changed, 43 insertions(+), 41 deletions(-) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key index edf479e047c..eab32a073ed 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key @@ -256,7 +256,7 @@ \find(alpha::select(h, o, f)) \varcond(\hasAnnotation(f, Peer)) \add(alpha::select(h, o, f) != null -> owner(Object::cast(o)) = owner(Object::cast(alpha::select(h, o, f))) ==>) - \heuristics(simplify) + \heuristics(type_hierarchy_def) }; ownsField { @@ -267,7 +267,7 @@ \find(alpha::select(h, o, f)) \varcond(\hasAnnotation(f, Rep)) \add(alpha::select(h, o, f) != null -> owner(Object::cast(alpha::select(h, o, f))) = o ==>) - \heuristics(simplify) + \heuristics(type_hierarchy_def) }; dominatesField { @@ -278,7 +278,7 @@ \find(alpha::select(h, o, f)) \varcond(\hasAnnotation(f, Dom)) \add(alpha::select(h, o, f) != null -> dominates(o, Object::cast(alpha::select(h, o, f))) ==>) - \heuristics(simplify) + \heuristics(type_hierarchy_def) }; // --------------------------------------------------- diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key index b8b77181560..9c52303d671 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key @@ -282,7 +282,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; \lemma @@ -299,7 +299,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; // -------------------------------------------- @@ -319,7 +319,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; \lemma @@ -336,7 +336,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; // ============================================ @@ -358,7 +358,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; \lemma @@ -375,7 +375,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; \lemma @@ -393,7 +393,7 @@ (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; \lemma @@ -411,7 +411,7 @@ (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; \lemma @@ -428,7 +428,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; \lemma @@ -445,7 +445,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; \lemma @@ -463,7 +463,7 @@ (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; \lemma @@ -481,6 +481,6 @@ (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key index 2ae5c1e8e8c..e5e8f925f50 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key @@ -65,7 +65,7 @@ \assumes(dominates(x, y) ==>) \find(dominates(y, z) ==>) \add(dominates(x, z) ==>) - \heuristics(simplify) + \heuristics(simplify_enlarging) }; \lemma @@ -79,7 +79,7 @@ \replacewith(false) - \heuristics(simplify) + \heuristics(concrete) }; \lemma @@ -93,7 +93,7 @@ \replacewith(false) - \heuristics(simplify) + \heuristics(concrete) \displayname "dominatesNotEqual" }; @@ -104,7 +104,7 @@ \assumes(dominates(y, x) ==>) \find(dominates(x, y) ==>) \closegoal - \heuristics(simplify) + \heuristics(closure) }; \lemma @@ -125,7 +125,7 @@ \sameUpdateLevel \replacewith(false) - \heuristics(simplify) + \heuristics(concrete) }; \lemma @@ -136,7 +136,7 @@ \find(dominates(z, y)) \sameUpdateLevel \replacewith(false) - \heuristics(simplify) + \heuristics(cpncrete) }; \lemma @@ -147,7 +147,7 @@ \find(y = z) \sameUpdateLevel \replacewith(false) - \heuristics(simplify) + \heuristics(concrete) }; // ------------------------- @@ -161,7 +161,7 @@ \find(owner(y) = x ==>) \add(dominates(x, y) ==>) - \heuristics(simplify) + \heuristics(simplify_enlarging) }; \lemma @@ -172,7 +172,7 @@ \replacewith(false) - \heuristics(simplify) + \heuristics(concrete) }; \lemma @@ -183,7 +183,7 @@ \find(owner(y) = x ==>) \closegoal - \heuristics(simplify) + \heuristics(closure) }; // ------------------------- @@ -211,7 +211,7 @@ \sameUpdateLevel \add(subset(repfp(y), repfp(x)) ==>) - \heuristics(simplify) + \heuristics(inReachableStateImplication) }; \lemma @@ -277,6 +277,7 @@ \find(undom(x, y)) \replacewith(undom(y, x)) + \heuristics(order_terms) }; \lemma @@ -287,7 +288,7 @@ \find(==> x = y) \add(undom(x, y) ==>) - \heuristics(simplify) + \heuristics(simplify_enlarging) }; \lemma @@ -298,7 +299,7 @@ \find(dominates(y, z) ==>) \add(==> undom(x, y)) - \heuristics(simplify) + \heuristics(inReachableStateImplication) }; \lemma @@ -310,8 +311,7 @@ \add(undom(x, z) ==>) - // do it by hand currently since there may be nicer ways to do that - //\heuristics(simplify) + \heuristics(simplify_enlarging) }; \lemma @@ -322,7 +322,7 @@ \find(dominates(x, y)) \sameUpdateLevel \replacewith(false) - \heuristics(simplify) + \heuristics(concrete) }; \lemma @@ -333,7 +333,7 @@ \find(dominates(y, x)) \sameUpdateLevel \replacewith(false) - \heuristics(simplify) + \heuristics(concrete) \displayname "undomDominates" }; @@ -343,7 +343,7 @@ \assumes(undom(x, y) ==>) \find(x = y) \sameUpdateLevel - \replacewith(false) + \replacewith(concrete) \heuristics(simplify) }; @@ -354,7 +354,7 @@ \find(intersect(repfp(x), repfp(y))) \sameUpdateLevel \replacewith(empty) - \heuristics(simplify) + \heuristics(concrete) }; \lemma @@ -366,7 +366,7 @@ \find(intersect(createdRepfp(h1, x), createdRepfp(h2, y))) \sameUpdateLevel \replacewith(empty) - \heuristics(simplify) + \heuristics(concrete) }; \lemma @@ -378,7 +378,7 @@ \find(intersect(createdRepfp(h1, x), createdRepfp(h2, y))) \sameUpdateLevel \replacewith(empty) - \heuristics(simplify) + \heuristics(concrete) \displayname "undomDisjointCreatedRepfp" }; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key index 392d24e73ae..c16fb84c4e7 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key @@ -36,7 +36,7 @@ \replacewith(true) - \heuristics(simplify) + \heuristics(concrete) }; \lemma @@ -54,7 +54,7 @@ \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; \lemma @@ -72,7 +72,7 @@ \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify) + \heuristics(simplify_select) }; \lemma @@ -83,7 +83,7 @@ \replacewith(disjoint(x, y) & disjoint(x, z)) - \heuristics(simplify) + \heuristics(simplify_enlarging) }; \lemma @@ -94,7 +94,7 @@ \replacewith(disjoint(x, y) & disjoint(x, z)) - \heuristics(simplify) + \heuristics(simplify_enlarging) \displayname "variousDisjointUnion" }; @@ -106,6 +106,7 @@ \find(disjoint(s, singleton(x, f))) \replacewith(!elementOf(x, f, s)) + \heuristics(simplify) }; \lemma @@ -116,6 +117,7 @@ \find(disjoint(singleton(x, f), s)) \replacewith(!elementOf(x, f, s)) + \heuristics(simplify) \displayname "variousDisjointSingleton" }; From 519a11c65b98cc413feeb065667ac7c1f5b0d85d Mon Sep 17 00:00:00 2001 From: PiisRational Date: Sun, 11 Jan 2026 19:30:16 +0100 Subject: [PATCH 20/27] update the heap simplification macro with universe rules --- .../key/macros/HeapSimplificationMacro.java | 29 ++++++++++++++++++- .../key/proof/rules/universeDismissLemmas.key | 24 +++++++-------- .../ilkd/key/proof/rules/universeLemmas.key | 12 ++++---- .../de/uka/ilkd/key/proof/rules/various.key | 4 +-- 4 files changed, 48 insertions(+), 21 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java b/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java index 4df46543999..21a6d0dabd9 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java +++ b/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java @@ -38,7 +38,7 @@ public String getDescription() { // note that rules in the 'concrete' rule set are usually not included here private static final Set ADMITTED_RULES_SET = asSet("selectOfStore", - "selectOfCreate", "selectOfAnon", "selectOfMemset", + "selectOfCreate", "selectOfAnon", "selectOfMemset", "selectCreatedOfStore", "selectCreatedOfCreate", "selectCreatedOfAnon", "selectCreatedOfMemset", @@ -63,6 +63,33 @@ public String getDescription() { "wellFormedAnonEQ", "wellFormedMemsetArrayObjectEQ", "wellFormedMemsetArrayPrimitiveEQ", "wellFormedMemsetObjectEQ", "wellFormedMemsetLocSetEQ", "wellFormedMemsetPrimitiveEQ", + // universe rules + "createdRepfpElement", + + "dismissSelectOfDominatedObject", "dismissSelectOfDominatingObject", + "dismissSelectOfDominatedAnon", "dismissSelectOfDominatedCreatedAnon", + + "dismissSelectOfSelfRepfpComplementAnon", "dismissSelectOfSelfCreatedRepfpComplementAnon", + "dismissSelectOfDominatingRepfpComplementAnon", + "dismissSelectOfDominatingCreatedRepfpComplementAnon", + + "dismissSelectOfDominatedObjectEQ", "dismissSelectOfDominatingObjectEQ", + "dismissSelectOfDominatedAnonEQ", "dismissSelectOfDominatedCreatedAnonEQ", + + "dismissSelectOfSelfRepfpComplementAnonEQ", "dismissSelectOfSelfCreatedRepfpComplementAnonEQ", + "dismissSelectOfDominatingRepfpComplementAnonEQ", + "dismissSelectOfDominatingCreatedRepfpComplementAnonEQ", + + "simplifySelectOfDominatedAnon", "simplifySelectOfDominatedCreatedAnon", + "simplifySelectOfSelfRepfpComplementAnon", "simplifySelectOfSelfCreatedRepfpComplementAnon", + "simplifySelectOfDominatingRepfpComplementAnon", + "simplifySelectOfDominatingCreatedRepfpComplementAnon", + + "simplifySelectOfDominatedAnonEQ", "simplifySelectOfDominatedCreatedAnonEQ", + "simplifySelectOfSelfRepfpComplementAnonEQ", "simplifySelectOfSelfCreatedRepfpComplementAnonEQ", + "simplifySelectOfDominatingRepfpComplementAnonEQ", + "simplifySelectOfDominatingCreatedRepfpComplementAnonEQ", + // locset rules "elementOfEmpty", "elementOfAllLocs", "elementOfSingleton", "elementOfUnion", "elementOfIntersect", "elementOfSetMinus", "elementOfAllFields", "elementOfAllObjects", diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key index 9c52303d671..313d986dc45 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key @@ -282,7 +282,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; \lemma @@ -299,7 +299,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; // -------------------------------------------- @@ -319,7 +319,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; \lemma @@ -336,7 +336,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; // ============================================ @@ -358,7 +358,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; \lemma @@ -375,7 +375,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; \lemma @@ -393,7 +393,7 @@ (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; \lemma @@ -411,7 +411,7 @@ (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; \lemma @@ -428,7 +428,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; \lemma @@ -445,7 +445,7 @@ \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; \lemma @@ -463,7 +463,7 @@ (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; \lemma @@ -481,6 +481,6 @@ (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key index e5e8f925f50..5e5f92cf45b 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key @@ -136,7 +136,7 @@ \find(dominates(z, y)) \sameUpdateLevel \replacewith(false) - \heuristics(cpncrete) + \heuristics(concrete) }; \lemma @@ -272,11 +272,11 @@ \lemma undomSymm { - \schemaVar \term Object x, y; + \schemaVar \term Object commEqLeft, commEqRight; - \find(undom(x, y)) + \find(undom(commEqLeft, commEqRight)) - \replacewith(undom(y, x)) + \replacewith(undom(commEqLeft, commEqRight)) \heuristics(order_terms) }; @@ -343,8 +343,8 @@ \assumes(undom(x, y) ==>) \find(x = y) \sameUpdateLevel - \replacewith(concrete) - \heuristics(simplify) + \replacewith(false) + \heuristics(concrete) }; \lemma diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key index c16fb84c4e7..07511dd03a5 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key @@ -54,7 +54,7 @@ \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; \lemma @@ -72,7 +72,7 @@ \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - \heuristics(simplify_select) + \heuristics(simplify_enlarging) }; \lemma From 2cb864d8fddf0f27e07aaeb20fa96567be6ccf25 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Fri, 30 Jan 2026 08:40:51 +0100 Subject: [PATCH 21/27] apply spotless --- .gitignore | 1 + .../ilkd/key/java/Recoder2KeYConverter.java | 6 +- .../modifier/AnnotationUseSpecification.java | 10 +-- .../key/java/expression/operator/New.java | 6 +- .../expression/operator/TypeOperator.java | 8 +- .../recoderext/SchemaJavaProgramFactory.java | 5 +- .../key/macros/HeapSimplificationMacro.java | 30 +++---- .../varexp/TacletBuilderManipulators.java | 4 +- .../key/proof/init/AbstractOperationPO.java | 1 - .../init/FunctionalOperationContractPO.java | 8 +- .../conditions/HasAnnotationCondition.java | 75 +++++++++-------- .../instructions/MatchProgramInstruction.java | 10 +-- .../rule/tacletbuilder/TacletGenerator.java | 7 +- .../ilkd/key/speclang/ContractFactory.java | 57 +++++++------ .../ilkd/key/proof/rules/standardRules.key | 2 +- .../uka/ilkd/key/proof/rules/universeDefs.key | 70 ++++++++-------- .../key/proof/rules/universeDismissLemmas.key | 80 +++++++++---------- .../ilkd/key/proof/rules/universeLemmas.key | 28 +++---- .../de/uka/ilkd/key/proof/rules/various.key | 18 ++--- .../dependency/NodeIntermediateWalker.java | 8 +- .../java/recoder/java/StatementBlock.java | 2 +- .../AnnotationUseSpecification.java | 5 +- .../declaration/LocalVariableDeclaration.java | 7 +- .../expression/operator/TypeOperator.java | 3 +- 24 files changed, 235 insertions(+), 216 deletions(-) diff --git a/.gitignore b/.gitignore index 894015b1c6c..05e1ef6c942 100644 --- a/.gitignore +++ b/.gitignore @@ -51,6 +51,7 @@ bin/ .settings .project .classpath +.factorypath # Files generated by IntelliJ ANTLR plugin key.core/src/main/gen diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java index 5e1f027b60f..e3798537410 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java @@ -633,7 +633,8 @@ public NewArray convert(recoder.java.expression.operator.NewArray newArr) { // annotations are collected separatly as they are not tracked var annots = newArr.getAnnotations(); - for (int i = annots.size() - 1; i >= 0; i--) children.add(convert(annots.get(i))); + for (int i = annots.size() - 1; i >= 0; i--) + children.add(convert(annots.get(i))); // now we have to extract the array initializer // is stored separately and must not appear in the children list @@ -1777,7 +1778,8 @@ public New convert(recoder.java.expression.operator.New n) { if (rp == null) { return new New(arguments, maybeAnonClass, null, immutableAnnots); } else { - return new New(arguments, maybeAnonClass, (ReferencePrefix) callConvert(rp), immutableAnnots); + return new New(arguments, maybeAnonClass, (ReferencePrefix) callConvert(rp), + immutableAnnots); } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java b/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java index f7c6768cf17..4a6f9ef2a8d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/declaration/modifier/AnnotationUseSpecification.java @@ -3,16 +3,15 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.java.declaration.modifier; -import org.key_project.logic.SyntaxElement; - import de.uka.ilkd.key.java.ProgramElement; +import de.uka.ilkd.key.java.SourceData; import de.uka.ilkd.key.java.declaration.Modifier; import de.uka.ilkd.key.java.reference.TypeReference; import de.uka.ilkd.key.java.reference.TypeReferenceContainer; - -import de.uka.ilkd.key.java.SourceData; import de.uka.ilkd.key.rule.MatchConditions; +import org.key_project.logic.SyntaxElement; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -62,7 +61,8 @@ public MatchConditions match(SourceData source, MatchConditions matchCond) { final ProgramElement pe = source.getSource(); matchCond = super.match(source, matchCond); - if (matchCond != null && !tr.getName().equals(((AnnotationUseSpecification)pe).tr.getName())) { + if (matchCond != null + && !tr.getName().equals(((AnnotationUseSpecification) pe).tr.getName())) { return null; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/New.java b/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/New.java index a0d8febe50d..dadeff4732b 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/New.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/New.java @@ -15,9 +15,8 @@ import de.uka.ilkd.key.java.reference.TypeReference; import de.uka.ilkd.key.java.visitor.Visitor; - -import org.key_project.util.collection.ImmutableArray; import org.key_project.util.ExtList; +import org.key_project.util.collection.ImmutableArray; /** * The object allocation operator. There are two variants for New: @@ -96,7 +95,8 @@ public New(Expression[] arguments, TypeReference type, ReferencePrefix rp) { * @param rp a ReferencePrefix as access path for the constructor * @param annotations the annotations on the constructor call */ - public New(Expression[] arguments, TypeReference type, ReferencePrefix rp, ImmutableArray annotations) { + public New(Expression[] arguments, TypeReference type, ReferencePrefix rp, + ImmutableArray annotations) { super(arguments, type, annotations); anonymousClass = null; accessPath = rp; diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/TypeOperator.java b/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/TypeOperator.java index fbddcb19802..9d585eb30d7 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/TypeOperator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/TypeOperator.java @@ -7,14 +7,14 @@ import de.uka.ilkd.key.java.PositionInfo; import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.declaration.modifier.AnnotationUseSpecification; import de.uka.ilkd.key.java.expression.Operator; import de.uka.ilkd.key.java.reference.ExecutionContext; import de.uka.ilkd.key.java.reference.TypeReference; import de.uka.ilkd.key.java.reference.TypeReferenceContainer; -import de.uka.ilkd.key.java.declaration.modifier.AnnotationUseSpecification; -import org.key_project.util.collection.ImmutableArray; import org.key_project.util.ExtList; +import org.key_project.util.collection.ImmutableArray; /** * Type operator. @@ -46,7 +46,7 @@ protected TypeOperator(ExtList children) { super(children); typeReference = children.get(TypeReference.class); annotations = new ImmutableArray<>( - children.collect(AnnotationUseSpecification.class)); + children.collect(AnnotationUseSpecification.class)); } /** @@ -60,7 +60,7 @@ protected TypeOperator(ExtList children, PositionInfo pi) { super(children); typeReference = children.get(TypeReference.class); annotations = new ImmutableArray<>( - children.collect(AnnotationUseSpecification.class)); + children.collect(AnnotationUseSpecification.class)); } protected TypeOperator(Expression unaryChild, TypeReference typeref) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaJavaProgramFactory.java b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaJavaProgramFactory.java index 6a4aaad5b44..0a53d361759 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaJavaProgramFactory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaJavaProgramFactory.java @@ -17,6 +17,8 @@ import org.key_project.logic.Namespace; import org.key_project.logic.op.sv.SchemaVariable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import recoder.ParserException; import recoder.convenience.TreeWalker; import recoder.java.*; @@ -33,9 +35,6 @@ import recoder.list.generic.ASTArrayList; import recoder.list.generic.ASTList; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class SchemaJavaProgramFactory extends JavaProgramFactory { private static final Logger LOGGER = LoggerFactory.getLogger(SchemaJavaProgramFactory.class); diff --git a/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java b/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java index 21a6d0dabd9..27ca065334f 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java +++ b/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java @@ -38,7 +38,7 @@ public String getDescription() { // note that rules in the 'concrete' rule set are usually not included here private static final Set ADMITTED_RULES_SET = asSet("selectOfStore", - "selectOfCreate", "selectOfAnon", "selectOfMemset", + "selectOfCreate", "selectOfAnon", "selectOfMemset", "selectCreatedOfStore", "selectCreatedOfCreate", "selectCreatedOfAnon", "selectCreatedOfMemset", @@ -64,29 +64,31 @@ public String getDescription() { "wellFormedMemsetObjectEQ", "wellFormedMemsetLocSetEQ", "wellFormedMemsetPrimitiveEQ", // universe rules - "createdRepfpElement", - + "createdRepfpElement", + "dismissSelectOfDominatedObject", "dismissSelectOfDominatingObject", "dismissSelectOfDominatedAnon", "dismissSelectOfDominatedCreatedAnon", - + "dismissSelectOfSelfRepfpComplementAnon", "dismissSelectOfSelfCreatedRepfpComplementAnon", - "dismissSelectOfDominatingRepfpComplementAnon", + "dismissSelectOfDominatingRepfpComplementAnon", "dismissSelectOfDominatingCreatedRepfpComplementAnon", - - "dismissSelectOfDominatedObjectEQ", "dismissSelectOfDominatingObjectEQ", + + "dismissSelectOfDominatedObjectEQ", "dismissSelectOfDominatingObjectEQ", "dismissSelectOfDominatedAnonEQ", "dismissSelectOfDominatedCreatedAnonEQ", - - "dismissSelectOfSelfRepfpComplementAnonEQ", "dismissSelectOfSelfCreatedRepfpComplementAnonEQ", - "dismissSelectOfDominatingRepfpComplementAnonEQ", + + "dismissSelectOfSelfRepfpComplementAnonEQ", + "dismissSelectOfSelfCreatedRepfpComplementAnonEQ", + "dismissSelectOfDominatingRepfpComplementAnonEQ", "dismissSelectOfDominatingCreatedRepfpComplementAnonEQ", - + "simplifySelectOfDominatedAnon", "simplifySelectOfDominatedCreatedAnon", "simplifySelectOfSelfRepfpComplementAnon", "simplifySelectOfSelfCreatedRepfpComplementAnon", - "simplifySelectOfDominatingRepfpComplementAnon", + "simplifySelectOfDominatingRepfpComplementAnon", "simplifySelectOfDominatingCreatedRepfpComplementAnon", - + "simplifySelectOfDominatedAnonEQ", "simplifySelectOfDominatedCreatedAnonEQ", - "simplifySelectOfSelfRepfpComplementAnonEQ", "simplifySelectOfSelfCreatedRepfpComplementAnonEQ", + "simplifySelectOfSelfRepfpComplementAnonEQ", + "simplifySelectOfSelfCreatedRepfpComplementAnonEQ", "simplifySelectOfDominatingRepfpComplementAnonEQ", "simplifySelectOfDominatingCreatedRepfpComplementAnonEQ", diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/varexp/TacletBuilderManipulators.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/varexp/TacletBuilderManipulators.java index a6b2a11879d..9ceac1e2b01 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/varexp/TacletBuilderManipulators.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/varexp/TacletBuilderManipulators.java @@ -270,7 +270,7 @@ public VariableCondition build(Object[] arguments, List parameters, new ConstructorBasedBuilder("static", StaticReferenceCondition.class, SV); public static final TacletBuilderCommand DIFFERENT_FIELDS = new ConstructorBasedBuilder("differentFields", DifferentFields.class, SV, SV); - public static final AbstractConditionBuilder HAS_ANNOTATION = + public static final AbstractConditionBuilder HAS_ANNOTATION = new ConstructorBasedBuilder("hasAnnotation", HasAnnotationCondition.class, SV, S); public static final AbstractConditionBuilder SAME_OBSERVER = new ConstructorBasedBuilder("sameObserver", SameObserverCondition.class, PV, PV); @@ -384,7 +384,7 @@ public IsLabeledCondition build(Object[] arguments, List parameters, applyUpdateOnRigid, DROP_EFFECTLESS_ELEMENTARIES, SIMPLIFY_ITE_UPDATE, SUBFORMULAS, STATIC_FIELD, MODEL_FIELD, SUBFORMULA, DROP_EFFECTLESS_STORES, EQUAL_UNIQUE, META_DISJOINT, - IS_OBSERVER, CONSTANT, HAS_SORT, LABEL, NEW_LABEL, HAS_ELEM_SORT, IS_IN_STRICTFP, + IS_OBSERVER, CONSTANT, HAS_SORT, LABEL, NEW_LABEL, HAS_ELEM_SORT, IS_IN_STRICTFP, HAS_ANNOTATION); register(STORE_TERM_IN, STORE_STMT_IN, HAS_INVARIANT, GET_INVARIANT, GET_FREE_INVARIANT, GET_VARIANT, IS_LABELED); diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java b/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java index 3c5fefbceb7..7f3ff6e83b8 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java @@ -39,7 +39,6 @@ import org.key_project.util.collection.ImmutableSet; import org.jspecify.annotations.Nullable; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalOperationContractPO.java b/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalOperationContractPO.java index fa24ca21cd0..38e76406571 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalOperationContractPO.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalOperationContractPO.java @@ -36,12 +36,11 @@ import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; - -import static de.uka.ilkd.key.java.KeYJavaASTFactory.declare; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static de.uka.ilkd.key.java.KeYJavaASTFactory.declare; + /** *

* The proof obligation for operation contracts. @@ -65,7 +64,8 @@ *

*/ public class FunctionalOperationContractPO extends AbstractOperationPO implements ContractPO { - private static final Logger LOGGER = LoggerFactory.getLogger(FunctionalOperationContractPO.class); + private static final Logger LOGGER = + LoggerFactory.getLogger(FunctionalOperationContractPO.class); public static final Map TRANSACTION_TAGS = new LinkedHashMap<>(); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java index a197c165140..c7882bd7844 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java @@ -4,17 +4,16 @@ package de.uka.ilkd.key.rule.conditions; import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.rule.VariableConditionAdapter; -import de.uka.ilkd.key.rule.inst.SVInstantiations; - import de.uka.ilkd.key.java.declaration.*; import de.uka.ilkd.key.java.expression.operator.TypeOperator; +import de.uka.ilkd.key.ldt.HeapLDT; +import de.uka.ilkd.key.logic.JTerm; +import de.uka.ilkd.key.rule.VariableConditionAdapter; +import de.uka.ilkd.key.rule.inst.SVInstantiations; import org.key_project.logic.SyntaxElement; -import org.key_project.logic.op.sv.SchemaVariable; -import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.ldt.HeapLDT; import org.key_project.logic.op.Function; +import org.key_project.logic.op.sv.SchemaVariable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,26 +30,29 @@ public HasAnnotationCondition(SchemaVariable variable, String annot) { } @Override - public boolean check(SchemaVariable var, SyntaxElement subst, + public boolean check(SchemaVariable var, SyntaxElement subst, SVInstantiations svInst, Services services) { - if (var != variable) return true; + if (var != variable) + return true; var inst = svInst.getInstantiation(variable); if (inst instanceof TypeOperator) { - var out = ((TypeOperator)inst) - .getAnnotations() - .stream() - .anyMatch(a -> a.getTypeReferenceAt(0).getName().equals(annot)); + var out = ((TypeOperator) inst) + .getAnnotations() + .stream() + .anyMatch(a -> a.getTypeReferenceAt(0).getName().equals(annot)); return out; - } else if (!(inst instanceof JTerm)) return false; + } else if (!(inst instanceof JTerm)) + return false; var op = ((JTerm) inst).op(); - if (op.arity() != 0) return false; + if (op.arity() != 0) + return false; if (op instanceof Function) { - return matchesField(services, (Function)op); + return matchesField(services, (Function) op); } return false; @@ -60,40 +62,45 @@ public boolean matchesField(Services services, Function op) { var kpmi = services.getJavaInfo().getKeYProgModelInfo(); HeapLDT.SplitFieldName name = HeapLDT.trySplitFieldName(op); - if (name == null) return false; + if (name == null) + return false; var classType = ((Services) services).getJavaInfo() - .getTypeByName(name.className()); + .getTypeByName(name.className()); + + if (classType == null || + !(classType.getJavaType() instanceof ClassDeclaration)) + return false; - if (classType == null || - !(classType.getJavaType() instanceof ClassDeclaration)) return false; - - var recoderTypeDecl = (recoder.java.declaration.TypeDeclaration) - kpmi.rec2key().toRecoder(classType); + var recoderTypeDecl = + (recoder.java.declaration.TypeDeclaration) kpmi.rec2key().toRecoder(classType); var fields = recoderTypeDecl.getAllFields(); var field = fields.stream() - .filter(f -> f.getName().equals(name.attributeName())) - .findFirst() - .orElse(null); + .filter(f -> f.getName().equals(name.attributeName())) + .findFirst() + .orElse(null); - if (field == null) return false; + if (field == null) + return false; var fType = field.getContainingClassType(); - if (!(fType instanceof recoder.java.declaration.TypeDeclaration)) return false; + if (!(fType instanceof recoder.java.declaration.TypeDeclaration)) + return false; - var fieldSpec = ((recoder.java.declaration.TypeDeclaration)fType) - .getFields().stream() - .filter(spec -> spec.getName().equals(name.attributeName())) - .findFirst() - .orElse(null); + var fieldSpec = ((recoder.java.declaration.TypeDeclaration) fType) + .getFields().stream() + .filter(spec -> spec.getName().equals(name.attributeName())) + .findFirst() + .orElse(null); - if (fieldSpec == null) return false; + if (fieldSpec == null) + return false; var fieldDecl = fieldSpec.getParent(); var declAnnotations = fieldDecl.getAnnotations(); var value = declAnnotations.stream() - .anyMatch(a -> a.getTypeReference().getName().equals(annot)); + .anyMatch(a -> a.getTypeReference().getName().equals(annot)); return value; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramInstruction.java index 265e0038bde..925ac5fef70 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramInstruction.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchProgramInstruction.java @@ -6,11 +6,10 @@ import de.uka.ilkd.key.java.ProgramElement; import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.SourceData; -import de.uka.ilkd.key.logic.JavaBlock; -import de.uka.ilkd.key.rule.MatchConditions; - import de.uka.ilkd.key.java.StatementBlock; import de.uka.ilkd.key.java.declaration.JavaDeclaration; +import de.uka.ilkd.key.logic.JavaBlock; +import de.uka.ilkd.key.rule.MatchConditions; import org.key_project.logic.LogicServices; import org.key_project.logic.SyntaxElement; @@ -40,10 +39,11 @@ public String toString() { var add = ""; if (pe instanceof StatementBlock) { - var body = ((StatementBlock)pe).getBody(); + var body = ((StatementBlock) pe).getBody(); var first = body.get(0); - add += " " + first.toString() + " " + first.getClass() + " " + ((JavaDeclaration)first).getModifiers(); + add += " " + first.toString() + " " + first.getClass() + " " + + ((JavaDeclaration) first).getModifiers(); } return "MatchProgramInstruction(pe: " + pe.toString() + ", " + pe.getClass() + ")" + add; diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletGenerator.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletGenerator.java index 488b535ac6d..1d6442ac3d0 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletGenerator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletGenerator.java @@ -245,10 +245,11 @@ public ImmutableSet generateFunctionalRepresentsTaclets(Name name, final Pair> limited = limitTerm(schemaRhs, toLimit, services); final JTerm limitedRhs = limited.first; result = result.union(limited.second); - final TermAndBoundVarPair schemaRepresentsLimited = + final TermAndBoundVarPair schemaRepresentsLimited = new TermAndBoundVarPair( - OpReplacer.replace(schemaRepresents.term.sub(1), limitedRhs, schemaRepresents.term, services.getTermFactory()), - schemaRepresents.boundVars); + OpReplacer.replace(schemaRepresents.term.sub(1), limitedRhs, schemaRepresents.term, + services.getTermFactory()), + schemaRepresents.boundVars); // create if sequent final boolean finalClass = kjt.getJavaType() instanceof ClassDeclaration diff --git a/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java b/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java index 457d6a98711..f327e885f0c 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java @@ -339,8 +339,8 @@ public FunctionalOperationContract func(String baseName, KeYJavaType kjt, IProgr services); } - private void addUniverseConds(IProgramMethod pm, - Map freePres, Map freePosts, + private void addUniverseConds(IProgramMethod pm, + Map freePres, Map freePosts, LocationVariable selfVar, ImmutableList paramVars, LocationVariable resultVar) { @@ -356,22 +356,24 @@ private void addUniverseConds(IProgramMethod pm, for (var param : pm.getMethodDeclaration().getParameters()) { var modifiers = param.getModifiers(); for (var modifier : modifiers) { - if (!(modifier instanceof AnnotationUseSpecification)) continue; - var specifier = (AnnotationUseSpecification)modifier; + if (!(modifier instanceof AnnotationUseSpecification)) + continue; + var specifier = (AnnotationUseSpecification) modifier; var name = specifier.getTypeReferenceAt(0).getName(); if (name.equals("Rep")) { change = true; - pres = tb.and(pres, - tb.imp( - tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), - tb.equals(tb.var(selfVar), tb.func(owner, tb.var(paramVars.get(i)))))); + pres = tb.and(pres, + tb.imp( + tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), + tb.equals(tb.var(selfVar), tb.func(owner, tb.var(paramVars.get(i)))))); break; } else if (name.equals("Peer")) { change = true; - pres = tb.and(pres, - tb.imp( - tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), - tb.equals(tb.func(owner, tb.var(selfVar)), tb.func(owner, tb.var(paramVars.get(i)))))); + pres = tb.and(pres, + tb.imp( + tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), + tb.equals(tb.func(owner, tb.var(selfVar)), + tb.func(owner, tb.var(paramVars.get(i)))))); break; } else if (name.equals("Dom")) { change = true; @@ -387,22 +389,24 @@ private void addUniverseConds(IProgramMethod pm, i++; } - if (change) freePres.put(heap, pres); + if (change) + freePres.put(heap, pres); change = false; var posts = freePosts.get(heap); if (resultVar != null) { var modifiers = pm.getMethodDeclaration().getModifiers(); for (var modifier : modifiers) { - if (!(modifier instanceof AnnotationUseSpecification)) continue; - var specifier = (AnnotationUseSpecification)modifier; + if (!(modifier instanceof AnnotationUseSpecification)) + continue; + var specifier = (AnnotationUseSpecification) modifier; var name = specifier.getTypeReferenceAt(0).getName(); if (name.equals("Rep")) { change = true; - posts = tb.and(posts, - tb.imp( - tb.not(tb.equals(tb.var(resultVar), tb.NULL())), - tb.equals(tb.var(selfVar), tb.func(owner, tb.var(resultVar))))); + posts = tb.and(posts, + tb.imp( + tb.not(tb.equals(tb.var(resultVar), tb.NULL())), + tb.equals(tb.var(selfVar), tb.func(owner, tb.var(resultVar))))); break; } else if (name.equals("Dom")) { pres = tb.and(pres, tb.imp( @@ -410,10 +414,11 @@ private void addUniverseConds(IProgramMethod pm, tb.func(dominates, tb.var(resultVar), tb.var(selfVar)))); } else if (name.equals("Peer")) { change = true; - posts = tb.and(posts, - tb.imp( - tb.not(tb.equals(tb.var(resultVar), tb.NULL())), - tb.equals(tb.func(owner, tb.var(selfVar)), tb.func(owner, tb.var(resultVar))))); + posts = tb.and(posts, + tb.imp( + tb.not(tb.equals(tb.var(resultVar), tb.NULL())), + tb.equals(tb.func(owner, tb.var(selfVar)), + tb.func(owner, tb.var(resultVar))))); break; } else if (name.equals("Payload")) { change = true; @@ -422,7 +427,8 @@ private void addUniverseConds(IProgramMethod pm, } } - if (change) freePosts.put(heap, posts); + if (change) + freePosts.put(heap, posts); } /** @@ -493,7 +499,8 @@ public FunctionalOperationContract func(String baseName, IProgramMethod pm, Map hasFreeModifiable, ProgramVariableCollection progVars, boolean toBeSaved, boolean transaction) { // add the conditions for the universe types to the pre- and post-conditions - addUniverseConds(pm, freePres, freePosts, progVars.selfVar, progVars.paramVars, progVars.resultVar); + addUniverseConds(pm, freePres, freePosts, progVars.selfVar, progVars.paramVars, + progVars.resultVar); return new FunctionalOperationContractImpl(baseName, null, pm.getContainerType(), pm, pm.getContainerType(), modalityKind, pres, freePres, mby, posts, freePosts, axioms, diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key index 5b07bcde6a6..3825969a56f 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key @@ -48,7 +48,7 @@ \include seqPerm; \include seqPerm2; -//universe definitions +//universe definitions \include universe; \include universeDefs; \include universeLemmas; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key index eab32a073ed..c78524a89d2 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key @@ -25,10 +25,10 @@ \schemaVar \program Variable #v0; \schemaVar \program Type #t; \schemaVar \program VariableInitializer #vi; - + \find(\modality{#allmodal}{.. @universe.qual.Payload #t #v0 = #vi; ...}\endmodality (post)) \replacewith(\modality{#allmodal}{.. @universe.qual.Payload #t #v0; #v0 = #vi; ...}\endmodality (post)) - + \heuristics(simplify_prog, simplify_prog_subset) \displayname "variableDeclaration" }; @@ -56,13 +56,13 @@ \schemaVar \program Type #t1, #t; \schemaVar \program ProgramMethod #pm; \schemaVar \program VariableInitializer #vi; - + \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Peer #t1 #v0 = #vi; ...}\endmodality (post)) \sameUpdateLevel \varcond(\isLocalVariable(#vi)) \replacewith(\modality{#allmodal}{.. @universe.qual.Peer #t1 #v0; #v0 = #vi; ...}\endmodality (post)) \add(#vi != null -> owner(#vi) = owner(#v) ==>) - + \heuristics(simplify_prog, simplify_prog_subset) \displayname "variableDeclaration" }; @@ -73,11 +73,11 @@ \schemaVar \program Variable #v0; \schemaVar \program Type #t; \schemaVar \program VariableInitializer #vi; - + \find(\modality{#allmodal}{.. @universe.qual.Peer #t #v0 = #vi; ...}\endmodality (post)) \varcond(\not \isLocalVariable(#vi)) \replacewith(\modality{#allmodal}{.. @universe.qual.Peer #t #v0; #v0 = #vi; ...}\endmodality (post)) - + \heuristics(simplify_prog, simplify_prog_subset) \displayname "variableDeclaration" }; @@ -87,13 +87,13 @@ \schemaVar \program Variable #v0; \schemaVar \program Type #t0; \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - + \find(\modality{#allmodal}{.. @universe.qual.Rep #t0 #v0; ...}\endmodality (post)) - + \sameUpdateLevel \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) \addprogvars(#v0) - + \heuristics(simplify_prog, simplify_prog_subset) \displayname "variableDeclaration" }; @@ -105,13 +105,13 @@ \schemaVar \program Type #t1, #t; \schemaVar \program ProgramMethod #pm; \schemaVar \program VariableInitializer #vi; - + \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Rep #t1 #v0 = #vi; ...}\endmodality (post)) \sameUpdateLevel \varcond(\isLocalVariable(#vi)) \replacewith(\modality{#allmodal}{.. @universe.qual.Rep #t1 #v0; #v0 = #vi; ...}\endmodality (post)) \add(#vi != null -> owner(#vi) = #v ==>) - + \heuristics(simplify_prog, simplify_prog_subset) \displayname "variableDeclaration" }; @@ -123,11 +123,11 @@ \schemaVar \program Type #t; \schemaVar \program ProgramMethod #pm; \schemaVar \program VariableInitializer #vi; - + \find(\modality{#allmodal}{.. @universe.qual.Rep #t #v0 = #vi; ...}\endmodality (post)) \varcond(\not \isLocalVariable(#vi)) \replacewith(\modality{#allmodal}{.. @universe.qual.Rep #t #v0; #v0 = #vi; ...}\endmodality (post)) - + \heuristics(simplify_prog, simplify_prog_subset) \displayname "variableDeclaration" }; @@ -137,13 +137,13 @@ \schemaVar \program Variable #v0; \schemaVar \program Type #t0; \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - + \find(\modality{#allmodal}{.. @universe.qual.Dom #t0 #v0; ...}\endmodality (post)) - + \sameUpdateLevel \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) \addprogvars(#v0) - + \heuristics(simplify_prog, simplify_prog_subset) \displayname "variableDeclaration" }; @@ -155,13 +155,13 @@ \schemaVar \program Type #t1, #t; \schemaVar \program ProgramMethod #pm; \schemaVar \program VariableInitializer #vi; - + \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Dom #t1 #v0 = #vi; ...}\endmodality (post)) \sameUpdateLevel \varcond(\isLocalVariable(#vi)) \replacewith(\modality{#allmodal}{.. @universe.qual.Dom #t1 #v0; #v0 = #vi; ...}\endmodality (post)) \add(#vi != null -> dominates(#v, #vi) ==>) - + \heuristics(simplify_prog, simplify_prog_subset) \displayname "variableDeclaration" }; @@ -173,11 +173,11 @@ \schemaVar \program Type #t; \schemaVar \program ProgramMethod #pm; \schemaVar \program VariableInitializer #vi; - + \find(\modality{#allmodal}{.. @universe.qual.Dom #t #v0 = #vi; ...}\endmodality (post)) \varcond(\not \isLocalVariable(#vi)) \replacewith(\modality{#allmodal}{.. @universe.qual.Dom #t #v0; #v0 = #vi; ...}\endmodality (post)) - + \heuristics(simplify_prog, simplify_prog_subset) \displayname "variableDeclaration" }; @@ -190,10 +190,10 @@ \schemaVar \program SimpleInstanceCreation #n; \schemaVar \program LeftHandSide #lhs; \schemaVar \program Variable #v0, #v, #v1; - + \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) \sameUpdateLevel - + \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Peer)) \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); #constructor-call(#v0, #n); @@ -212,10 +212,10 @@ \schemaVar \program SimpleInstanceCreation #n; \schemaVar \program LeftHandSide #lhs; \schemaVar \program Variable #v0, #v, #v1; - + \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) \sameUpdateLevel - + \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Rep)) \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); #constructor-call(#v0, #n); @@ -234,10 +234,10 @@ \schemaVar \program SimpleInstanceCreation #n; \schemaVar \program LeftHandSide #lhs; \schemaVar \program Variable #v0, #v, #v1; - + \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) \sameUpdateLevel - + \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Dom)) \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); #constructor-call(#v0, #n); @@ -252,7 +252,7 @@ \schemaVar \term Object o; \schemaVar \term Field f; \schemaVar \term Heap h; - + \find(alpha::select(h, o, f)) \varcond(\hasAnnotation(f, Peer)) \add(alpha::select(h, o, f) != null -> owner(Object::cast(o)) = owner(Object::cast(alpha::select(h, o, f))) ==>) @@ -263,7 +263,7 @@ \schemaVar \term Object o; \schemaVar \term Field f; \schemaVar \term Heap h; - + \find(alpha::select(h, o, f)) \varcond(\hasAnnotation(f, Rep)) \add(alpha::select(h, o, f) != null -> owner(Object::cast(alpha::select(h, o, f))) = o ==>) @@ -274,7 +274,7 @@ \schemaVar \term Object o; \schemaVar \term Field f; \schemaVar \term Heap h; - + \find(alpha::select(h, o, f)) \varcond(\hasAnnotation(f, Dom)) \add(alpha::select(h, o, f) != null -> dominates(o, Object::cast(alpha::select(h, o, f))) ==>) @@ -292,7 +292,7 @@ \find(dominatesDepth(x, y, n)) \varcond(\notFreeIn(ov, x, y, n)) - \replacewith(\if (n <= 0) + \replacewith(\if (n <= 0) \then(false) \else(\if (n = 1) \then(x = owner(y)) \else(\exists ov; (x = owner(ov) & dominatesDepth(ov, y, n - 1))))) }; @@ -338,7 +338,7 @@ \replacewith(union(x.*, infiniteUnion{y;}(\if(dominates(x, y)) \then(y.*) \else(empty)))) }; - + // --------------------------------------------------- // axioms for ownership // --------------------------------------------------- @@ -354,15 +354,15 @@ }; dominatesMaxDepth { - \schemaVar \term Object x; - \schemaVar \variables Object y; - \schemaVar \variables int m, n; + \schemaVar \term Object x; + \schemaVar \variables Object y; + \schemaVar \variables int m, n; \find(x) \varcond(\notFreeIn(y, x), \notFreeIn(m, x), \notFreeIn(n, x)) - \add(\exists n; (n >= 0 & (\forall y; (dominates(x, y) -> + \add(\exists n; (n >= 0 & (\forall y; (dominates(x, y) -> (\exists m; (dominatesDepth(x, y, m) & m < n))))) ==>) }; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key index 313d986dc45..506ef578e9d 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key @@ -10,7 +10,7 @@ // Normal Variant // =============================== - \lemma + \lemma dismissSelectOfDominatedObject { \schemaVar \term Heap h; \schemaVar \term Object o, u; @@ -25,7 +25,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfDominatedObjectEQ { \schemaVar \term Heap h, EQ; \schemaVar \term Object o, u; @@ -40,7 +40,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfDominatingObject { \schemaVar \term Heap h; \schemaVar \term Object o, u; @@ -55,7 +55,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfDominatingObjectEQ { \schemaVar \term Heap h, EQ; \schemaVar \term Object o, u; @@ -70,7 +70,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfDominatedAnon { \schemaVar \term Heap h, h2; \schemaVar \term Object o, u; @@ -85,7 +85,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfDominatedAnonEQ { \schemaVar \term Heap h, h2, EQ; \schemaVar \term Object o, u; @@ -100,7 +100,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfDominatedCreatedAnon { \schemaVar \term Heap h, h2, h3; \schemaVar \term Object o, u; @@ -115,7 +115,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfDominatedCreatedAnonEQ { \schemaVar \term Heap h, h2, h3, EQ; \schemaVar \term Object o, u; @@ -134,7 +134,7 @@ // Complement Rules (for accessible) // ============================================ - \lemma + \lemma dismissSelectOfSelfRepfpComplementAnon { \schemaVar \term Heap h, h2; \schemaVar \term Object o; @@ -149,7 +149,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfSelfCreatedRepfpComplementAnon { \schemaVar \term Heap h, h2, h3; \schemaVar \term Object o; @@ -164,7 +164,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfDominatingRepfpComplementAnon { \schemaVar \term Heap h, h2; \schemaVar \term Object o, u; @@ -179,7 +179,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfDominatingCreatedRepfpComplementAnon { \schemaVar \term Heap h, h2, h3; \schemaVar \term Object o, u; @@ -197,7 +197,7 @@ // ------------------------------------- // EQ rules - \lemma + \lemma dismissSelectOfSelfRepfpComplementAnonEQ { \schemaVar \term Heap h, h2, EQ; \schemaVar \term Object o; @@ -212,7 +212,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfSelfCreatedRepfpComplementAnonEQ { \schemaVar \term Heap h, h2, h3, EQ; \schemaVar \term Object o; @@ -227,7 +227,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfDominatingRepfpComplementAnonEQ { \schemaVar \term Heap h, h2, EQ; \schemaVar \term Object o, u; @@ -242,7 +242,7 @@ \heuristics(simplify) }; - \lemma + \lemma dismissSelectOfDominatingCreatedRepfpComplementAnonEQ { \schemaVar \term Heap h, h2, h3, EQ; \schemaVar \term Object o, u; @@ -268,7 +268,7 @@ // Normal Variant // =============================== - \lemma + \lemma simplifySelectOfDominatedAnon { \schemaVar \term Heap h, h2; \schemaVar \term Object o, u; @@ -279,13 +279,13 @@ \find(alpha::select(anon(h, repfp(u), h2), o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) - \then(alpha::select(h, o, f)) + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) }; - \lemma + \lemma simplifySelectOfDominatedCreatedAnon { \schemaVar \term Heap h, h2, h3; \schemaVar \term Object o, u; @@ -296,8 +296,8 @@ \find(alpha::select(anon(h, createdRepfp(h3, u), h2), o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) - \then(alpha::select(h, o, f)) + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) }; @@ -305,7 +305,7 @@ // -------------------------------------------- // EQ Rules - \lemma + \lemma simplifySelectOfDominatedAnonEQ { \schemaVar \term Heap h, h2, EQ; \schemaVar \term Object o, u; @@ -316,13 +316,13 @@ \find(alpha::select(EQ, o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) - \then(alpha::select(h, o, f)) + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) }; - \lemma + \lemma simplifySelectOfDominatedCreatedAnonEQ { \schemaVar \term Heap h, h2, h3, EQ; \schemaVar \term Object o, u; @@ -333,8 +333,8 @@ \find(alpha::select(EQ, o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) - \then(alpha::select(h, o, f)) + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) }; @@ -343,7 +343,7 @@ // Complement Rules (for accessible) // ============================================ - \lemma + \lemma simplifySelectOfSelfRepfpComplementAnon { \schemaVar \term Heap h, h2; \schemaVar \term Object o; @@ -361,7 +361,7 @@ \heuristics(simplify_enlarging) }; - \lemma + \lemma simplifySelectOfSelfRepfpComplementAnonEQ { \schemaVar \term Heap h, h2, EQ; \schemaVar \term Object o; @@ -378,7 +378,7 @@ \heuristics(simplify_enlarging) }; - \lemma + \lemma simplifySelectOfSelfCreatedRepfpComplementAnon { \schemaVar \term Heap h, h2, h3; \schemaVar \term Object o; @@ -389,14 +389,14 @@ \find(alpha::select(anon(h, setMinus(allLocs, createdRepfp(h3, o)), h2), o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) }; - \lemma + \lemma simplifySelectOfSelfCreatedRepfpComplementAnonEQ { \schemaVar \term Heap h, h2, h3, EQ; \schemaVar \term Object o; @@ -407,14 +407,14 @@ \find(alpha::select(EQ, o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) }; - \lemma + \lemma simplifySelectOfDominatingRepfpComplementAnon { \schemaVar \term Heap h, h2; \schemaVar \term Object o, u; @@ -431,7 +431,7 @@ \heuristics(simplify_enlarging) }; - \lemma + \lemma simplifySelectOfDominatingRepfpComplementAnonEQ { \schemaVar \term Heap h, h2, EQ; \schemaVar \term Object o, u; @@ -448,7 +448,7 @@ \heuristics(simplify_enlarging) }; - \lemma + \lemma simplifySelectOfDominatingCreatedRepfpComplementAnon { \schemaVar \term Heap h, h2, h3; \schemaVar \term Object o, u; @@ -459,14 +459,14 @@ \find(alpha::select(anon(h, setMinus(allLocs, createdRepfp(h3, u)), h2), o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) }; - \lemma + \lemma simplifySelectOfDominatingCreatedRepfpComplementAnonEQ { \schemaVar \term Heap h, h2, h3, EQ; \schemaVar \term Object o, u; @@ -477,7 +477,7 @@ \find(alpha::select(EQ, o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key index 5e5f92cf45b..f293f6f7855 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key @@ -27,7 +27,7 @@ dominatesSameDepth { \schemaVar \term Object x, y, z; \schemaVar \term int n; - + \assumes(dominatesDepth(x, z, n) ==>) \find(dominatesDepth(y, z, n) ==>) \add(x = y ==>) @@ -37,7 +37,7 @@ dominatesLargerDepth { \schemaVar \term Object x, y, z; \schemaVar \term int n, m; - + \assumes(m > n, dominatesDepth(x, z, n) ==>) \find(dominatesDepth(y, z, m) ==>) \add(dominatesDepth(y, x, m - n) ==>) @@ -48,9 +48,9 @@ \schemaVar \term Object x, y, z; \schemaVar \term int n; \schemaVar \variables int m; - + \find(dominatesDepth(x, y, n) ==>) - + \varcond(\notFreeIn(m, n, x, y)) \add(\forall m; (dominatesDepth(x, y, m) -> m = n) ==>) }; @@ -114,7 +114,7 @@ \add(==> x = y, dominates(y, x)) }; - \lemma + \lemma dominatesInverse { \schemaVar \term Object x, y; @@ -128,7 +128,7 @@ \heuristics(concrete) }; - \lemma + \lemma dominatesNegTransitive { \schemaVar \term Object x, y, z; @@ -139,7 +139,7 @@ \heuristics(concrete) }; - \lemma + \lemma dominatesNegNotEqual { \schemaVar \term Object x, y, z; @@ -169,7 +169,7 @@ \schemaVar \term Object o; \find(owner(o) = o) - + \replacewith(false) \heuristics(concrete) @@ -190,7 +190,7 @@ // repfp rules // ------------------------- - \lemma + \lemma repfpElement { \schemaVar \term Object x, y; \schemaVar \term Field f; @@ -200,7 +200,7 @@ \heuristics(simplify) }; - \lemma + \lemma repfpSubset { \schemaVar \term Object x, y; @@ -214,7 +214,7 @@ \heuristics(inReachableStateImplication) }; - \lemma + \lemma repfpDisjointComplement { \schemaVar \term Object x, y; @@ -228,7 +228,7 @@ // createdRepfp rules // ------------------------- - \lemma + \lemma createdRepfpDisjointComplementRepfp { \schemaVar \term Object x, y; \schemaVar \term Heap h; @@ -242,7 +242,7 @@ \heuristics(simplify) }; - \lemma + \lemma createdRepfpDisjointComplement { \schemaVar \term Object x, y; \schemaVar \term Heap h; @@ -255,7 +255,7 @@ \heuristics(simplify) }; - \lemma + \lemma createdRepfpElement { \schemaVar \term Object x, y; \schemaVar \term Heap h; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key index 07511dd03a5..c58c53596cd 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key @@ -15,7 +15,7 @@ \schemaVar \term LocSet x, y; \find(disjoint(setMinus(allLocs, x), y)) - + \replacewith(subset(y, x)) \heuristics(simplify) @@ -49,11 +49,11 @@ \find(alpha::select(EQ, o, f)) \inSequentState - + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - + \heuristics(simplify_enlarging) }; @@ -67,11 +67,11 @@ \find(alpha::select(anon(h, empty, h2), o, f)) \inSequentState - + \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) - + \heuristics(simplify_enlarging) }; @@ -80,9 +80,9 @@ \schemaVar \term LocSet x, y, z; \find(disjoint(x, union(y, z))) - + \replacewith(disjoint(x, y) & disjoint(x, z)) - + \heuristics(simplify_enlarging) }; @@ -91,9 +91,9 @@ \schemaVar \term LocSet x, y, z; \find(disjoint(union(y, z), x)) - + \replacewith(disjoint(x, y) & disjoint(x, z)) - + \heuristics(simplify_enlarging) \displayname "variousDisjointUnion" }; diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/NodeIntermediateWalker.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/NodeIntermediateWalker.java index e34cfa62f0c..f08678b6f17 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/NodeIntermediateWalker.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/NodeIntermediateWalker.java @@ -3,11 +3,11 @@ * SPDX-License-Identifier: GPL-2.0-only */ package org.key_project.proofmanagement.check.dependency; -import de.uka.ilkd.key.proof.io.intermediate.NodeIntermediate; - import java.util.Deque; import java.util.LinkedList; +import de.uka.ilkd.key.proof.io.intermediate.NodeIntermediate; + /** * Walks an intermediate proof representation tree as created when loading a *.proof file. * @@ -36,7 +36,7 @@ public void start() { * Walks the tree while performing specified action. * * @deprecated Might run into stack overflow for medium to long proofs, use - * {@link #walkIteratively()} instead. + * {@link #walkIteratively()} instead. * * @param node the current position of the walker in tree */ @@ -53,7 +53,7 @@ protected void walkRecursively(NodeIntermediate node) { * Walks the tree while performing specified action. This iterative variant avoids stack * overflows and is thus preferred. It performs a breadth-first search traversal. */ - protected void walkIteratively () { + protected void walkIteratively() { Deque queue = new LinkedList<>(); queue.add(root); diff --git a/recoder/src/main/java/recoder/java/StatementBlock.java b/recoder/src/main/java/recoder/java/StatementBlock.java index 2e08585bfce..9877de868ee 100644 --- a/recoder/src/main/java/recoder/java/StatementBlock.java +++ b/recoder/src/main/java/recoder/java/StatementBlock.java @@ -354,7 +354,7 @@ public void accept(SourceVisitor v) { @Override public String toString() { var out = "{" + System.lineSeparator(); - + for (var statement : body) { out += " " + statement.toString() + System.lineSeparator(); } diff --git a/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java b/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java index 0420855b2f3..8133c90e8b7 100644 --- a/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java +++ b/recoder/src/main/java/recoder/java/declaration/AnnotationUseSpecification.java @@ -6,9 +6,9 @@ import recoder.abstraction.AnnotationUse; import recoder.java.*; +import recoder.java.expression.operator.TypeOperator; import recoder.java.reference.TypeReference; import recoder.java.reference.TypeReferenceContainer; -import recoder.java.expression.operator.TypeOperator; import recoder.list.generic.ASTList; /** @@ -51,7 +51,8 @@ public AnnotationUseSpecification(TypeReference reference) { public AnnotationUseSpecification(AnnotationUseSpecification proto) { super(proto); this.reference = proto.reference; - this.elementValuePairs = proto.elementValuePairs == null ? null :proto.elementValuePairs.deepClone(); + this.elementValuePairs = + proto.elementValuePairs == null ? null : proto.elementValuePairs.deepClone(); makeParentRoleValid(); } diff --git a/recoder/src/main/java/recoder/java/declaration/LocalVariableDeclaration.java b/recoder/src/main/java/recoder/java/declaration/LocalVariableDeclaration.java index 834da7a3c53..be5312cde29 100644 --- a/recoder/src/main/java/recoder/java/declaration/LocalVariableDeclaration.java +++ b/recoder/src/main/java/recoder/java/declaration/LocalVariableDeclaration.java @@ -348,8 +348,9 @@ public void accept(SourceVisitor v) { public String toString() { var declspecs = getDeclarationSpecifiers(); - return declspecs == null ? "" : declspecs.toString() - + " " + getTypeReference().toString() - + " " + varSpecs.toString() + ";"; + return declspecs == null ? "" + : declspecs.toString() + + " " + getTypeReference().toString() + + " " + varSpecs.toString() + ";"; } } diff --git a/recoder/src/main/java/recoder/java/expression/operator/TypeOperator.java b/recoder/src/main/java/recoder/java/expression/operator/TypeOperator.java index 30977e189cc..a4575f59541 100644 --- a/recoder/src/main/java/recoder/java/expression/operator/TypeOperator.java +++ b/recoder/src/main/java/recoder/java/expression/operator/TypeOperator.java @@ -6,11 +6,10 @@ import recoder.java.Expression; import recoder.java.ProgramElement; +import recoder.java.declaration.AnnotationUseSpecification; import recoder.java.expression.Operator; import recoder.java.reference.TypeReference; import recoder.java.reference.TypeReferenceContainer; -import recoder.java.declaration.AnnotationUseSpecification; - import recoder.list.generic.ASTList; /** From eae3d258cae91ae6e964b57917fdc857124051fc Mon Sep 17 00:00:00 2001 From: PiisRational Date: Sat, 18 Apr 2026 16:26:59 +0200 Subject: [PATCH 22/27] refactoring --- .../ast/declaration/ArrayDeclaration.java | 10 +++- .../modifier/AnnotationUseSpecification.java | 16 ++++++ .../declaration/modifier/package-info.java | 6 +- .../ilkd/key/java/loader/JP2KeYConverter.java | 3 +- .../conditions/HasAnnotationCondition.java | 6 +- .../ilkd/key/proof/rules/standardRules.key | 10 ++-- .../proof/rules/{ => universe}/universe.key | 0 .../rules/{ => universe}/universeDefs.key | 2 +- .../{ => universe}/universeDismissLemmas.key | 56 +++++++++---------- .../rules/{ => universe}/universeLemmas.key | 6 +- .../proof/rules/{ => universe}/various.key | 6 +- 11 files changed, 70 insertions(+), 51 deletions(-) rename key.core/src/main/resources/de/uka/ilkd/key/proof/rules/{ => universe}/universe.key (100%) rename key.core/src/main/resources/de/uka/ilkd/key/proof/rules/{ => universe}/universeDefs.key (99%) rename key.core/src/main/resources/de/uka/ilkd/key/proof/rules/{ => universe}/universeDismissLemmas.key (87%) rename key.core/src/main/resources/de/uka/ilkd/key/proof/rules/{ => universe}/universeLemmas.key (97%) rename key.core/src/main/resources/de/uka/ilkd/key/proof/rules/{ => universe}/various.key (96%) diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/ArrayDeclaration.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/ArrayDeclaration.java index cee7f4a0b62..a805d607890 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/ArrayDeclaration.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/ArrayDeclaration.java @@ -14,6 +14,9 @@ import org.key_project.util.collection.ImmutableList; import org.key_project.util.collection.ImmutableSLList; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * KeY used to model arrays using only the {@link ArrayType}. As * the only attribute of an array has been the length attribute, it has been handled in a different @@ -27,6 +30,7 @@ public class ArrayDeclaration extends TypeDeclaration implements ArrayType { + private static final Logger LOGGER = LoggerFactory.getLogger(ArrayDeclaration.class); /** * reference to the type the elements of this array must subclass @@ -213,13 +217,14 @@ public static ProgramElementName createName(TypeReference basetype) { return null; } - public String getAlternativeNameRepresentation() { if (altNameRepresentation == null) { final StringBuilder alt = new StringBuilder(); Type baseType = this.baseType.getKeYJavaType().getJavaType(); - if (baseType instanceof ArrayType) { + if (baseType == null) { + alt.append(this.baseType.getKeYJavaType().getName()); + } else if (baseType instanceof ArrayType) { alt.append(((ArrayType) baseType).getAlternativeNameRepresentation()); } else { if (baseType instanceof ClassType) { @@ -234,7 +239,6 @@ public String getAlternativeNameRepresentation() { return altNameRepresentation; } - /** * returns the local declared supertypes */ diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/AnnotationUseSpecification.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/AnnotationUseSpecification.java index 9100921bf70..1ba1b775018 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/AnnotationUseSpecification.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/AnnotationUseSpecification.java @@ -3,7 +3,10 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.java.ast.declaration.modifier; +import de.uka.ilkd.key.rule.MatchConditions; + import org.key_project.logic.SyntaxElement; +import de.uka.ilkd.key.java.ast.SourceData; import de.uka.ilkd.key.java.ast.ProgramElement; import de.uka.ilkd.key.java.ast.declaration.Modifier; @@ -49,4 +52,17 @@ public SyntaxElement getChild(int index) { public int getChildCount() { return 1; } + + @Override + public MatchConditions match(SourceData source, MatchConditions matchCond) { + final ProgramElement pe = source.getSource(); + matchCond = super.match(source, matchCond); + + if (matchCond != null + && !tr.getName().equals(((AnnotationUseSpecification) pe).tr.getName())) { + return null; + } + + return matchCond; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/package-info.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/package-info.java index 573a2c02dcc..3f9cca9abe8 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/package-info.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/package-info.java @@ -1,6 +1,4 @@ /** - * This package collects all Java modifiers. The sole abstraction beneath - * the parent {@link recoder.java.declaration.Modifier} is the - * {@link recoder.java.declaration.modifier.VisibilityModifier}. + * This package collects all Java modifiers. */ -package de.uka.ilkd.key.java.declaration.modifier; +package de.uka.ilkd.key.java.ast.declaration.modifier; diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java index b2985ea025e..ea82837b62d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java @@ -2057,7 +2057,8 @@ public Object visit(TypeParameter n, Void arg) { @Override public Object visit(AnnotationDeclaration n, Void arg) { - return reportUnsupportedElement(n); + //return reportUnsupportedElement(n); + return null; } @Override diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java index 9d8d62eab46..cbb6eefb006 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java @@ -33,12 +33,12 @@ public HasAnnotationCondition(SchemaVariable variable, String annot) { public boolean check(SchemaVariable var, SyntaxElement subst, SVInstantiations svInst, Services services) { - if (var != variable) return true; -/* - var inst = svInst.getInstantiation(variable); + var inst = svInst.getInstantiation(variable); + LOGGER.info("{}", inst); +/* if (inst instanceof TypeOperator) { var out = ((TypeOperator) inst) .getAnnotations() diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key index ee64b9c26ba..4ec9ef138e2 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/standardRules.key @@ -49,11 +49,11 @@ \include "./sequence/seqPerm2.key"; //universe definitions -\include universe; -\include universeDefs; -\include universeLemmas; -\include universeDismissLemmas; -\include various; +\include "./universe/universe.key"; +\include "./universe/universeDefs.key"; +\include "./universe/universeLemmas.key"; +\include "./universe/universeDismissLemmas.key"; +\include "./universe/various.key"; // rules for Java (order does not matter, since not provable anyway) \include javaRules; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universe.key similarity index 100% rename from key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe.key rename to key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universe.key diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeDefs.key similarity index 99% rename from key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key rename to key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeDefs.key index c78524a89d2..f871252ffef 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDefs.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeDefs.key @@ -326,7 +326,7 @@ \varcond(\notFreeIn(y, x, h)) - \replacewith(intersect(infiniteUnion{y;}(\if(boolean::select(h, y, java.lang.Object::) = TRUE) \then(y.*) \else(empty)), repfp(x))) + \replacewith(intersect(infiniteUnion{y;}(\if(boolean::select(h, y, java.lang.Object::#$created) = TRUE) \then(y.*) \else(empty)), repfp(x))) }; repfpDef { diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeDismissLemmas.key similarity index 87% rename from key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key rename to key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeDismissLemmas.key index 506ef578e9d..f97da7158da 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeDismissLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeDismissLemmas.key @@ -77,7 +77,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(o, u) ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE, dominates(o, u) ==>) \find(alpha::select(anon(h, repfp(u), h2), o, f)) \sameUpdateLevel @@ -92,7 +92,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, anon(h, repfp(u), h2) = EQ, dominates(o, u) ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE, anon(h, repfp(u), h2) = EQ, dominates(o, u) ==>) \find(alpha::select(EQ, o, f)) \sameUpdateLevel @@ -107,7 +107,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(o, u) ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE, dominates(o, u) ==>) \find(alpha::select(anon(h, createdRepfp(h3, u), h2), o, f)) \sameUpdateLevel @@ -122,7 +122,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, anon(h, createdRepfp(h3, u), h2) = EQ, dominates(o, u) ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE, anon(h, createdRepfp(h3, u), h2) = EQ, dominates(o, u) ==>) \find(alpha::select(EQ, o, f)) \sameUpdateLevel @@ -141,7 +141,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE ==>) \find(alpha::select(anon(h, setMinus(allLocs, repfp(o)), h2), o, f)) \sameUpdateLevel @@ -156,7 +156,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, boolean::select(h3, o, java.lang.Object::) = TRUE ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE, boolean::select(h3, o, java.lang.Object::#$created) = TRUE ==>) \find(alpha::select(anon(h, setMinus(allLocs, createdRepfp(h3, o)), h2), o, f)) \sameUpdateLevel @@ -171,7 +171,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(u, o) ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE, dominates(u, o) ==>) \find(alpha::select(anon(h, setMinus(allLocs, repfp(u)), h2), o, f)) \sameUpdateLevel @@ -186,7 +186,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, boolean::select(h3, o, java.lang.Object::) = TRUE, dominates(u, o) ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE, boolean::select(h3, o, java.lang.Object::#$created) = TRUE, dominates(u, o) ==>) \find(alpha::select(anon(h, setMinus(allLocs, createdRepfp(h3, u)), h2), o, f)) \sameUpdateLevel @@ -204,7 +204,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, anon(h, setMinus(allLocs, repfp(o)), h2) = EQ ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE, anon(h, setMinus(allLocs, repfp(o)), h2) = EQ ==>) \find(alpha::select(EQ, o, f)) \sameUpdateLevel @@ -219,7 +219,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, boolean::select(h3, o, java.lang.Object::) = TRUE, anon(h, setMinus(allLocs, createdRepfp(h3, o)), h2) = EQ ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE, boolean::select(h3, o, java.lang.Object::#$created) = TRUE, anon(h, setMinus(allLocs, createdRepfp(h3, o)), h2) = EQ ==>) \find(alpha::select(EQ, o, f)) \sameUpdateLevel @@ -234,7 +234,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, dominates(u, o), anon(h, setMinus(allLocs, repfp(u)), h2) = EQ ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE, dominates(u, o), anon(h, setMinus(allLocs, repfp(u)), h2) = EQ ==>) \find(alpha::select(EQ, o, f)) \sameUpdateLevel @@ -249,7 +249,7 @@ \schemaVar \term Field f; \schemaVar \term any x; - \assumes(boolean::select(h, o, java.lang.Object::) = TRUE, boolean::select(h3, o, java.lang.Object::) = TRUE, dominates(u, o), anon(h, setMinus(allLocs, createdRepfp(h3, u)), h2) = EQ ==>) + \assumes(boolean::select(h, o, java.lang.Object::#$created) = TRUE, boolean::select(h3, o, java.lang.Object::#$created) = TRUE, dominates(u, o), anon(h, setMinus(allLocs, createdRepfp(h3, u)), h2) = EQ ==>) \find(alpha::select(EQ, o, f)) \sameUpdateLevel @@ -279,7 +279,7 @@ \find(alpha::select(anon(h, repfp(u), h2), o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) @@ -296,7 +296,7 @@ \find(alpha::select(anon(h, createdRepfp(h3, u), h2), o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) @@ -316,7 +316,7 @@ \find(alpha::select(EQ, o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) @@ -333,7 +333,7 @@ \find(alpha::select(EQ, o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) @@ -355,7 +355,7 @@ \find(alpha::select(anon(h, setMinus(allLocs, repfp(o)), h2), o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) @@ -372,7 +372,7 @@ \find(alpha::select(EQ, o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) @@ -389,8 +389,8 @@ \find(alpha::select(anon(h, setMinus(allLocs, createdRepfp(h3, o)), h2), o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & - (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE & + (boolean::select(h3, o, java.lang.Object::#$created) = TRUE | f = java.lang.Object::#$created)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) @@ -407,8 +407,8 @@ \find(alpha::select(EQ, o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & - (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE & + (boolean::select(h3, o, java.lang.Object::#$created) = TRUE | f = java.lang.Object::#$created)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) @@ -425,7 +425,7 @@ \find(alpha::select(anon(h, setMinus(allLocs, repfp(u)), h2), o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) @@ -442,7 +442,7 @@ \find(alpha::select(EQ, o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) @@ -459,8 +459,8 @@ \find(alpha::select(anon(h, setMinus(allLocs, createdRepfp(h3, u)), h2), o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & - (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE & + (boolean::select(h3, o, java.lang.Object::#$created) = TRUE | f = java.lang.Object::#$created)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) @@ -477,8 +477,8 @@ \find(alpha::select(EQ, o, f)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE & - (boolean::select(h3, o, java.lang.Object::) = TRUE | f = java.lang.Object::)) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE & + (boolean::select(h3, o, java.lang.Object::#$created) = TRUE | f = java.lang.Object::#$created)) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) \heuristics(simplify_enlarging) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeLemmas.key similarity index 97% rename from key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key rename to key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeLemmas.key index f293f6f7855..0b0559bc59e 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universeLemmas.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeLemmas.key @@ -233,7 +233,7 @@ \schemaVar \term Object x, y; \schemaVar \term Heap h; - \assumes(boolean::select(h, y, java.lang.Object::) = TRUE ==>) + \assumes(boolean::select(h, y, java.lang.Object::#$created) = TRUE ==>) \find(intersect(setMinus(allLocs, repfp(x)), createdRepfp(h, y)) = empty) \sameUpdateLevel @@ -247,7 +247,7 @@ \schemaVar \term Object x, y; \schemaVar \term Heap h; - \assumes(boolean::select(h, x, java.lang.Object::) = TRUE, boolean::select(h, y, java.lang.Object::) = TRUE ==>) + \assumes(boolean::select(h, x, java.lang.Object::#$created) = TRUE, boolean::select(h, y, java.lang.Object::#$created) = TRUE ==>) \find(intersect(setMinus(allLocs, createdRepfp(h, x)), createdRepfp(h, y)) = empty) \sameUpdateLevel @@ -262,7 +262,7 @@ \schemaVar \term Field f; \find(elementOf(x, f, createdRepfp(h, y))) - \replacewith((dominates(y, x) | x = y) & boolean::select(h, x, java.lang.Object::) = TRUE) + \replacewith((dominates(y, x) | x = y) & boolean::select(h, x, java.lang.Object::#$created) = TRUE) \heuristics(simplify) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/various.key similarity index 96% rename from key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key rename to key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/various.key index c58c53596cd..0e9db7bb7f5 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/various.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/various.key @@ -30,7 +30,7 @@ \assumes(wellFormed(h) ==> deltaObject::select(h, o, f) = null) \find(boolean::select(h, deltaObject::select(h, o, f), - java.lang.Object::) = TRUE) + java.lang.Object::#$created) = TRUE) \inSequentState @@ -50,7 +50,7 @@ \inSequentState - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) @@ -68,7 +68,7 @@ \inSequentState - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(boolean::select(h, o, java.lang.Object::#$created) = TRUE) \then(alpha::select(h, o, f)) \else(alpha::select(h2, o, f))) From 86d605e529c52c8ae4f73cb3c1869ca5895086ef Mon Sep 17 00:00:00 2001 From: PiisRational Date: Sun, 19 Apr 2026 16:43:20 +0200 Subject: [PATCH 23/27] a first try with the new parser --- .../java/de/uka/ilkd/key/java/JavaInfo.java | 6 +- .../uka/ilkd/key/java/KeYProgModelInfo.java | 24 ++++- .../AnnotationInterfaceDeclaration.java | 84 ++++++++++++++++ .../modifier/AnnotationUseSpecification.java | 68 ------------- .../ast/expression/AnnotationExpression.java | 43 ++++++++ .../annotation/MarkerAnnotation.java | 31 ++++++ .../key/java/ast/expression/operator/New.java | 9 -- .../ast/expression/operator/NewArray.java | 9 -- .../ast/expression/operator/TypeOperator.java | 31 ------ .../ilkd/key/java/loader/JP2KeYConverter.java | 29 +++++- .../key/java/loader/JP2KeYTypeConverter.java | 1 - .../ilkd/key/java/visitor/JavaASTVisitor.java | 11 +++ .../de/uka/ilkd/key/java/visitor/Visitor.java | 5 + .../de/uka/ilkd/key/pp/PrettyPrinter.java | 47 ++++++--- .../ilkd/key/speclang/ContractFactory.java | 99 ------------------- 15 files changed, 259 insertions(+), 238 deletions(-) create mode 100644 key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/AnnotationInterfaceDeclaration.java delete mode 100644 key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/AnnotationUseSpecification.java create mode 100644 key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/AnnotationExpression.java create mode 100644 key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/annotation/MarkerAnnotation.java diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/JavaInfo.java b/key.core/src/main/java/de/uka/ilkd/key/java/JavaInfo.java index 4e780b7ca34..195bc2f247f 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/JavaInfo.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/JavaInfo.java @@ -1181,8 +1181,12 @@ public ImmutableList getCommonSubtypes(KeYJavaType k1, KeYJavaType */ public LocationVariable getArrayLength() { if (length == null) { + final KeYJavaType sadKjt = rec2key().getSuperArrayType(); + + if (sadKjt == null) return null; + final SuperArrayDeclaration sad = - (SuperArrayDeclaration) rec2key().getSuperArrayType().getJavaType(); + (SuperArrayDeclaration) sadKjt.getJavaType(); length = (LocationVariable) sad.length().getVariables().get(0).getProgramVariable(); assert "length".equals(length.name().toString()) : "Wrong array length"; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/KeYProgModelInfo.java b/key.core/src/main/java/de/uka/ilkd/key/java/KeYProgModelInfo.java index a0342b15026..b9b08ef1ff3 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/KeYProgModelInfo.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/KeYProgModelInfo.java @@ -43,6 +43,7 @@ import com.github.javaparser.resolution.types.ResolvedReferenceType; import com.github.javaparser.resolution.types.ResolvedType; import com.github.javaparser.symbolsolver.javaparsermodel.declarations.DefaultConstructorDeclaration; +import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserAnnotationDeclaration; import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserMethodDeclaration; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; @@ -93,7 +94,11 @@ public Collection allTypes() { private List getAllMethods(KeYJavaType kjt) { var type = rec2key().resolveType(kjt); if (type.isReferenceType()) { - return type.asReferenceType().getAllMethods(); + var tr = type.asReferenceType(); + + if (!tr.getTypeDeclaration().orElseThrow().isAnnotation()) { + return tr.getAllMethods(); + } } return Collections.emptyList(); } @@ -166,6 +171,10 @@ public boolean isFinal(KeYJavaType kjt) { // Interfaces can't be final return false; } + if (td.isAnnotation()) { + // Interfaces can't be final + return false; + } if (td instanceof ResolvedLogicalType) { // Logic types are not final? Just following primitive types here return false; @@ -226,7 +235,18 @@ public List getAllProgramMethodsLocallyDeclared(KeYJavaType ct) { if (!type.isReferenceType()) { return result; } - var rml = type.asReferenceType().getDeclaredMethods(); + + var refType = type.asReferenceType(); + + // methods for annotation declarations are currently not implemented in + // javaparser + if (refType.getTypeDeclaration() + .map(d -> d instanceof JavaParserAnnotationDeclaration) + .orElse(false)) { + return result; + } + + var rml = refType.getDeclaredMethods(); result.ensureCapacity(rml.size()); for (MethodUsage methodUsage : rml) { if (methodUsage.getDeclaration() instanceof JavaParserMethodDeclaration) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/AnnotationInterfaceDeclaration.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/AnnotationInterfaceDeclaration.java new file mode 100644 index 00000000000..cd327ca04b2 --- /dev/null +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/AnnotationInterfaceDeclaration.java @@ -0,0 +1,84 @@ +/* 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.java.ast.declaration; + +import java.util.List; +import de.uka.ilkd.key.logic.ProgramElementName; +import de.uka.ilkd.key.java.ast.*; +import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; + +import org.key_project.util.collection.ImmutableArray; +import org.key_project.util.collection.ImmutableList; +import org.jspecify.annotations.NonNull; +import de.uka.ilkd.key.speclang.jml.pretranslation.TextualJMLConstruct; +import de.uka.ilkd.key.java.visitor.Visitor; + + +public class AnnotationInterfaceDeclaration extends TypeDeclaration { + public AnnotationInterfaceDeclaration( + PositionInfo pi, List comments, + @NonNull ImmutableArray modArray, + ProgramElementName name, ProgramElementName fullName, + ImmutableArray members, boolean parentIsInterfaceDeclaration, + boolean isLibrary, List jmlAttachments) { + super(pi, comments, modArray, name, fullName, members, parentIsInterfaceDeclaration, + isLibrary, ImmutableList.fromList(jmlAttachments)); + } + + /** + * returns the local declared supertypes + */ + public ImmutableList getSupertypes() { + return ImmutableList.of(); + } + + /** + * calls the corresponding method of a visitor in order to + * perform some action/transformation on this element + * + * @param v the Visitor + */ + public void visit(Visitor v) { + v.performActionOnAnnotationInterfaceDeclaration(this); + } + + /** + * Returns the number of children of this node. + * + * @return an int giving the number of children of this node + */ + public int getChildCount() { + int result = 0; + if (modArray != null) result += modArray.size(); + if (name != null) result++; + if (members != null) result += members.size(); + return result; + } + + /** + * Returns the child at the specified index in this node's "virtual" child array + * + * @param index an index into this node's "virtual" child array + * @return the program element at the given position + * @throws ArrayIndexOutOfBoundsException if index is out of bounds + */ + public ProgramElement getChildAt(int index) { + int len; + if (modArray != null) { + len = modArray.size(); + if (len > index) return modArray.get(index); + index -= len; + } + if (name != null) { + if (index == 0) return name; + index--; + } + if (members != null) return members.get(index); + throw new ArrayIndexOutOfBoundsException(); + } + + public boolean isInterface() { + return true; + } +} diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/AnnotationUseSpecification.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/AnnotationUseSpecification.java deleted file mode 100644 index 1ba1b775018..00000000000 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/modifier/AnnotationUseSpecification.java +++ /dev/null @@ -1,68 +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.java.ast.declaration.modifier; - -import de.uka.ilkd.key.rule.MatchConditions; - -import org.key_project.logic.SyntaxElement; -import de.uka.ilkd.key.java.ast.SourceData; - -import de.uka.ilkd.key.java.ast.ProgramElement; -import de.uka.ilkd.key.java.ast.declaration.Modifier; -import de.uka.ilkd.key.java.ast.reference.TypeReference; -import de.uka.ilkd.key.java.ast.reference.TypeReferenceContainer; - -public class AnnotationUseSpecification extends Modifier implements TypeReferenceContainer { - - protected final TypeReference tr; - - public AnnotationUseSpecification(TypeReference tr) { - super(); - this.tr = tr; - } - - protected String getSymbol() { - return "@" + tr.getName(); - } - - public TypeReference getTypeReferenceAt(int index) { - if (index == 0) { - return tr; - } - throw new ArrayIndexOutOfBoundsException(); - } - - public int getTypeReferenceCount() { - return 1; - } - - public ProgramElement getChildAt(int index) { - if (index == 0) { - return tr; - } - throw new ArrayIndexOutOfBoundsException(); - } - - @Override - public SyntaxElement getChild(int index) { - return getChildAt(index); - } - - public int getChildCount() { - return 1; - } - - @Override - public MatchConditions match(SourceData source, MatchConditions matchCond) { - final ProgramElement pe = source.getSource(); - matchCond = super.match(source, matchCond); - - if (matchCond != null - && !tr.getName().equals(((AnnotationUseSpecification) pe).tr.getName())) { - return null; - } - - return matchCond; - } -} diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/AnnotationExpression.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/AnnotationExpression.java new file mode 100644 index 00000000000..8860767b985 --- /dev/null +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/AnnotationExpression.java @@ -0,0 +1,43 @@ +/* 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.java.ast.expression; + +import de.uka.ilkd.key.java.*; +import de.uka.ilkd.key.java.ast.*; +import de.uka.ilkd.key.java.ast.reference.ExecutionContext; +import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.visitor.Visitor; + +public abstract class AnnotationExpression extends JavaNonTerminalProgramElement +implements Expression, ExpressionContainer { + + protected final KeYJavaType kjt; + + public AnnotationExpression(KeYJavaType kjt) { + this.kjt = kjt; + } + + @Override + public void visit(Visitor v) { + v.performActionOnAnnotationExpression(this); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + return ((AnnotationExpression) o).kjt.equals(kjt) && super.equals(o); + } + + @Override + public KeYJavaType getKeYJavaType(Services javaServ, ExecutionContext ec) { + return kjt; + } + + public KeYJavaType getKeYJavaType() { + return kjt; + } +} diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/annotation/MarkerAnnotation.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/annotation/MarkerAnnotation.java new file mode 100644 index 00000000000..d6b6087ce20 --- /dev/null +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/annotation/MarkerAnnotation.java @@ -0,0 +1,31 @@ +package de.uka.ilkd.key.java.ast.expression.annotation; + +import de.uka.ilkd.key.java.ast.*; +import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.expression.*; + +public class MarkerAnnotation extends AnnotationExpression { + public MarkerAnnotation(KeYJavaType kjt) { + super(kjt); + } + + @Override + public int getChildCount() { + return 0; + } + + @Override + public ProgramElement getChildAt(int index) { + throw new ArrayIndexOutOfBoundsException(); + } + + @Override + public int getExpressionCount() { + return 0; + } + + @Override + public Expression getExpressionAt(int index) { + throw new ArrayIndexOutOfBoundsException(); + } +} diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/New.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/New.java index f1147c647f7..38a083f527d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/New.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/New.java @@ -179,9 +179,6 @@ public int getChildCount() { if (anonymousClass != null) { result++; } - if (annotations != null) { - result += annotations.size(); - } return result; } @@ -214,12 +211,6 @@ public ProgramElement getChildAt(int index) { } index--; } - if (annotations != null) { - len = annotations.size(); - if (len > index) { - return annotations.get(index); - } - } throw new ArrayIndexOutOfBoundsException(); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/NewArray.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/NewArray.java index d26e0d0c670..355314b54ba 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/NewArray.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/NewArray.java @@ -178,9 +178,6 @@ public int getChildCount() { if (arrayInitializer != null) { result++; } - if (annotations != null) { - result += annotations.size(); - } return result; } @@ -215,12 +212,6 @@ public ProgramElement getChildAt(int index) { } index--; } - if (annotations != null) { - len = annotations.size(); - if (len > index) { - return annotations.get(index); - } - } throw new ArrayIndexOutOfBoundsException(); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/TypeOperator.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/TypeOperator.java index e426e5acbce..59ea05c30a8 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/TypeOperator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/TypeOperator.java @@ -5,7 +5,6 @@ import java.util.List; -import de.uka.ilkd.key.java.ast.declaration.modifier.AnnotationUseSpecification; import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.ast.Comment; import de.uka.ilkd.key.java.ast.PositionInfo; @@ -32,12 +31,6 @@ public abstract class TypeOperator extends Operator implements TypeReferenceCont */ protected final TypeReference typeReference; - /** - * Annotations. - */ - protected final ImmutableArray annotations; - - /** * Constructor for the transformation of COMPOST ASTs to KeY. * @@ -49,8 +42,6 @@ public abstract class TypeOperator extends Operator implements TypeReferenceCont protected TypeOperator(ExtList children) { super(children); typeReference = children.get(TypeReference.class); - annotations = new ImmutableArray<>( - children.collect(AnnotationUseSpecification.class)); } /** @@ -64,39 +55,26 @@ protected TypeOperator(ExtList children) { protected TypeOperator(ExtList children, PositionInfo pi) { super(children); typeReference = children.get(TypeReference.class); - annotations = new ImmutableArray<>( - children.collect(AnnotationUseSpecification.class)); } protected TypeOperator(Expression unaryChild, TypeReference typeref) { super(unaryChild); typeReference = typeref; - annotations = null; } protected TypeOperator(Expression[] arguments, TypeReference typeref) { super(arguments); typeReference = typeref; - annotations = null; - } - - protected TypeOperator(Expression[] arguments, TypeReference typeref, - ImmutableArray annotations) { - super(arguments); - typeReference = typeref; - this.annotations = annotations; } protected TypeOperator() { typeReference = null; - annotations = null; } public TypeOperator(PositionInfo pi, List c, ImmutableArray arguments, TypeReference type) { super(pi, c, arguments); typeReference = type; - annotations = null; } /** @@ -142,13 +120,4 @@ public KeYJavaType getKeYJavaType(Services javaServ, ExecutionContext ec) { public KeYJavaType getKeYJavaType(Services javaServ) { return getTypeReference().getKeYJavaType(); } - - /** - * A getter for the annotations. - * - * @return the annotations. - */ - public ImmutableArray getAnnotations() { - return annotations; - } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java index ea82837b62d..732a089fb22 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java @@ -17,6 +17,7 @@ import de.uka.ilkd.key.java.ast.declaration.*; import de.uka.ilkd.key.java.ast.declaration.TypeDeclaration; import de.uka.ilkd.key.java.ast.declaration.modifier.*; +import de.uka.ilkd.key.java.ast.expression.annotation.MarkerAnnotation; import de.uka.ilkd.key.java.ast.expression.ArrayInitializer; import de.uka.ilkd.key.java.ast.expression.Expression; import de.uka.ilkd.key.java.ast.expression.ParenthesizedExpression; @@ -2057,8 +2058,28 @@ public Object visit(TypeParameter n, Void arg) { @Override public Object visit(AnnotationDeclaration n, Void arg) { - //return reportUnsupportedElement(n); - return null; + final var ref = new ReferenceTypeImpl(n.resolve()); + var kjt = createOrCachedKeyJavaType(ref); + var pi = createPositionInfo(n); + var c = createComments(n); + + ProgramElementName name = createProgramElementName(n.getName()); + ProgramElementName fullName = new ProgramElementName(n.getFullyQualifiedName().get()); + + boolean isLibrary = mapping.isParsingLibraries(); + boolean parentIsInterface = false; + + ImmutableArray modArray = + map(n.getModifiers()); + ImmutableArray members = map(n.getMembers()); + + TypeDeclaration td = new AnnotationInterfaceDeclaration( + pi, c, modArray, name, fullName, members, + parentIsInterface, isLibrary, getClassSpec(n)); + kjt.setJavaType(td); + + mapping.registerType(ref, kjt); + return addToMapping(n, td); } @Override @@ -2093,7 +2114,9 @@ public Object visit(TraditionalJavadocComment n, Void arg) { @Override public Object visit(MarkerAnnotationExpr n, Void arg) { - return reportUnsupportedElement(n); + var rt = n.calculateResolvedType(); + var kjt = getKeYJavaType(rt); + return new MarkerAnnotation(kjt); } @Override diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYTypeConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYTypeConverter.java index 278ced1684e..866369a5b24 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYTypeConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYTypeConverter.java @@ -183,7 +183,6 @@ public KeYJavaType createKeYJavaType(ReferenceTypeImpl ref) { return getObjectType(); } - { // lookup in the cache var kjt = jp2KeY.resolvedTypeToKeY(type, services.getJavaService()); diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/visitor/JavaASTVisitor.java b/key.core/src/main/java/de/uka/ilkd/key/java/visitor/JavaASTVisitor.java index fb6a24e4824..c1e970a1e13 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/visitor/JavaASTVisitor.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/visitor/JavaASTVisitor.java @@ -7,6 +7,7 @@ import de.uka.ilkd.key.java.ast.*; import de.uka.ilkd.key.java.ast.ccatch.*; import de.uka.ilkd.key.java.ast.declaration.*; +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.java.ast.expression.ArrayInitializer; import de.uka.ilkd.key.java.ast.expression.ParenthesizedExpression; import de.uka.ilkd.key.java.ast.expression.PassiveExpression; @@ -468,6 +469,11 @@ public void performActionOnInterfaceDeclaration(InterfaceDeclaration x) { doDefaultAction(x); } + @Override + public void performActionOnAnnotationInterfaceDeclaration(AnnotationInterfaceDeclaration x) { + doDefaultAction(x); + } + @Override public void performActionOnIntLiteral(IntLiteral x) { doDefaultAction(x); @@ -626,6 +632,11 @@ public void performActionOnParenthesizedExpression(ParenthesizedExpression x) { doDefaultAction(x); } + @Override + public void performActionOnAnnotationExpression(AnnotationExpression x) { + doDefaultAction(x); + } + @Override public void performActionOnPassiveExpression(PassiveExpression x) { doDefaultAction(x); diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/visitor/Visitor.java b/key.core/src/main/java/de/uka/ilkd/key/java/visitor/Visitor.java index e5299c49298..1b1d9cbe09b 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/visitor/Visitor.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/visitor/Visitor.java @@ -6,6 +6,7 @@ import de.uka.ilkd.key.java.ast.*; import de.uka.ilkd.key.java.ast.ccatch.*; import de.uka.ilkd.key.java.ast.declaration.*; +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.java.ast.expression.ArrayInitializer; import de.uka.ilkd.key.java.ast.expression.ParenthesizedExpression; import de.uka.ilkd.key.java.ast.expression.PassiveExpression; @@ -118,6 +119,8 @@ public interface Visitor { void performActionOnInterfaceDeclaration(InterfaceDeclaration x); + void performActionOnAnnotationInterfaceDeclaration(AnnotationInterfaceDeclaration x); + void performActionOnFieldDeclaration(FieldDeclaration x); void performActionOnLocalVariableDeclaration(LocalVariableDeclaration x); @@ -326,6 +329,8 @@ public interface Visitor { void performActionOnLoopInit(LoopInit x); + void performActionOnAnnotationExpression(AnnotationExpression annot); + void performActionOnAssert(Assert assert1); void performActionOnProgramConstant(ProgramConstant constant); diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java b/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java index 43cd7e1bd3b..39db4e9cefc 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java @@ -7,7 +7,6 @@ import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.ast.*; -import de.uka.ilkd.key.java.ast.declaration.modifier.AnnotationUseSpecification; 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.ccatch.*; @@ -736,6 +735,32 @@ public void performActionOnClassDeclaration(ClassDeclaration x) { performActionOnMemberDeclarations(x.getMembers()); } + @Override + public void performActionOnAnnotationInterfaceDeclaration(AnnotationInterfaceDeclaration x) { + layouter.beginC(); + layouter.beginC(0); + ImmutableArray mods = x.getModifiers(); + boolean hasMods = mods != null && !mods.isEmpty(); + if (hasMods) { + writeKeywordList(mods); + } + if (x.getProgramElementName() != null) { + if (hasMods) { + layouter.print(" "); + } + layouter.keyWord("@interface").print(" "); + performActionOnProgramElementName(x.getProgramElementName()); + } + layouter.end(); + // not an anonymous class + if (x.getProgramElementName() != null) { + layouter.print(" "); + } + layouter.end(); + + performActionOnMemberDeclarations(x.getMembers()); + } + private void performActionOnMemberDeclarations( @Nullable ImmutableArray members) { if (members != null && !members.isEmpty()) { @@ -1455,13 +1480,6 @@ public void performActionOnNewArray(NewArray x) { layouter.print("("); } - ImmutableArray annots = x.getAnnotations(); - boolean hasAnnots = annots != null && !annots.isEmpty(); - if (hasAnnots) { - writeKeywordList(annots); - layouter.print(" "); - } - layouter.print("new "); x.getTypeReference().visit(this); @@ -1523,13 +1541,6 @@ public void performActionOnNew(New x) { printReferencePrefix(x.getReferencePrefix()); layouter.keyWord("new").print(" "); - ImmutableArray annots = x.getAnnotations(); - boolean hasAnnots = annots != null && !annots.isEmpty(); - if (hasAnnots) { - writeKeywordList(annots); - layouter.print(" "); - } - x.getTypeReference().visit(this); printArguments(x.getArguments()); if (x.getClassDeclaration() != null) { @@ -1729,6 +1740,12 @@ public void performActionOnThen(Then x) { handleBlockOrSingleStatement(x.getBody()); } + @Override + public void performActionOnAnnotationExpression(AnnotationExpression x) { + layouter.print("@"); + performActionOnType(x.getKeYJavaType().getJavaType()); + } + @Override public void performActionOnElse(Else x) { layouter.keyWord("else"); diff --git a/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java b/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java index 366ea0179df..e26bb1af5b0 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java @@ -7,7 +7,6 @@ import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; -import de.uka.ilkd.key.java.ast.declaration.modifier.AnnotationUseSpecification; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.TermBuilder; import de.uka.ilkd.key.logic.label.OriginTermLabel; @@ -363,9 +362,6 @@ public FunctionalOperationContract func(String baseName, KeYJavaType kjt, IProgr LocationVariable excVar, Map atPreVars, boolean toBeSaved) { - // add the conditions for the universe types to the pre- and post-conditions - addUniverseConds(pm, freePres, freePosts, selfVar, paramVars, resultVar); - return new FunctionalOperationContractImpl(baseName, null, kjt, pm, pm.getContainerType(), modalityKind, pres, freePres, mby, posts, freePosts, axioms, modifiables, freeModifiables, accs, @@ -377,98 +373,6 @@ public FunctionalOperationContract func(String baseName, KeYJavaType kjt, IProgr services); } - private void addUniverseConds(IProgramMethod pm, - Map freePres, Map freePosts, - LocationVariable selfVar, - ImmutableList paramVars, LocationVariable resultVar) { - - var heap = services.getTypeConverter().getHeapLDT().getHeap(); - final TermBuilder tb = services.getTermBuilder(); - final var owner = services.getNamespaces().functions().lookup("owner"); - final var dominates = services.getNamespaces().functions().lookup("dominates"); - - int i = 0; - - var change = false; - var pres = freePres.get(heap); - for (var param : pm.getMethodDeclaration().getParameters()) { - var modifiers = param.getModifiers(); - for (var modifier : modifiers) { - if (!(modifier instanceof AnnotationUseSpecification)) - continue; - var specifier = (AnnotationUseSpecification) modifier; - var name = specifier.getTypeReferenceAt(0).getName(); - if (name.equals("Rep")) { - change = true; - pres = tb.and(pres, - tb.imp( - tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), - tb.equals(tb.var(selfVar), tb.func(owner, tb.var(paramVars.get(i)))))); - break; - } else if (name.equals("Peer")) { - change = true; - pres = tb.and(pres, - tb.imp( - tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), - tb.equals(tb.func(owner, tb.var(selfVar)), - tb.func(owner, tb.var(paramVars.get(i)))))); - break; - } else if (name.equals("Dom")) { - change = true; - pres = tb.and(pres, tb.imp( - tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), - tb.func(dominates, tb.var(paramVars.get(i)), tb.var(selfVar)))); - } else if (name.equals("Payload")) { - change = true; - break; - } - } - - i++; - } - - if (change) - freePres.put(heap, pres); - change = false; - - var posts = freePosts.get(heap); - if (resultVar != null) { - var modifiers = pm.getMethodDeclaration().getModifiers(); - for (var modifier : modifiers) { - if (!(modifier instanceof AnnotationUseSpecification)) - continue; - var specifier = (AnnotationUseSpecification) modifier; - var name = specifier.getTypeReferenceAt(0).getName(); - if (name.equals("Rep")) { - change = true; - posts = tb.and(posts, - tb.imp( - tb.not(tb.equals(tb.var(resultVar), tb.NULL())), - tb.equals(tb.var(selfVar), tb.func(owner, tb.var(resultVar))))); - break; - } else if (name.equals("Dom")) { - pres = tb.and(pres, tb.imp( - tb.not(tb.equals(tb.var(paramVars.get(i)), tb.NULL())), - tb.func(dominates, tb.var(resultVar), tb.var(selfVar)))); - } else if (name.equals("Peer")) { - change = true; - posts = tb.and(posts, - tb.imp( - tb.not(tb.equals(tb.var(resultVar), tb.NULL())), - tb.equals(tb.func(owner, tb.var(selfVar)), - tb.func(owner, tb.var(resultVar))))); - break; - } else if (name.equals("Payload")) { - change = true; - break; - } - } - } - - if (change) - freePosts.put(heap, posts); - } - /** * Creates a new functional operation contract. * @@ -536,9 +440,6 @@ public FunctionalOperationContract func(String baseName, IProgramMethod pm, Map hasModifiable, Map hasFreeModifiable, ProgramVariableCollection progVars, boolean toBeSaved, boolean transaction) { - // add the conditions for the universe types to the pre- and post-conditions - addUniverseConds(pm, freePres, freePosts, progVars.selfVar, progVars.paramVars, - progVars.resultVar); return new FunctionalOperationContractImpl(baseName, null, pm.getContainerType(), pm, pm.getContainerType(), modalityKind, pres, freePres, mby, posts, freePosts, axioms, From 23d12f4bba7d707d8c04dc5b27f7e95e87de2e8d Mon Sep 17 00:00:00 2001 From: PiisRational Date: Tue, 21 Apr 2026 22:31:31 +0200 Subject: [PATCH 24/27] a minor change --- key.core/src/main/java/de/uka/ilkd/key/java/JavaInfo.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/JavaInfo.java b/key.core/src/main/java/de/uka/ilkd/key/java/JavaInfo.java index 195bc2f247f..4e780b7ca34 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/JavaInfo.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/JavaInfo.java @@ -1181,12 +1181,8 @@ public ImmutableList getCommonSubtypes(KeYJavaType k1, KeYJavaType */ public LocationVariable getArrayLength() { if (length == null) { - final KeYJavaType sadKjt = rec2key().getSuperArrayType(); - - if (sadKjt == null) return null; - final SuperArrayDeclaration sad = - (SuperArrayDeclaration) sadKjt.getJavaType(); + (SuperArrayDeclaration) rec2key().getSuperArrayType().getJavaType(); length = (LocationVariable) sad.length().getVariables().get(0).getProgramVariable(); assert "length".equals(length.name().toString()) : "Wrong array length"; } From 67995b6dd84219364b1fc4ca0b0f5453ee44262f Mon Sep 17 00:00:00 2001 From: PiisRational Date: Wed, 6 May 2026 17:32:16 +0200 Subject: [PATCH 25/27] tried to get types to wor --- .../java/ast/abstraction/AnnotatedType.java | 38 ++ .../key/java/ast/abstraction/KeYJavaType.java | 17 +- .../key/java/ast/abstraction/NullType.java | 10 +- .../java/ast/abstraction/PrimitiveType.java | 11 + .../ilkd/key/java/ast/abstraction/Type.java | 7 + .../java/ast/declaration/TypeDeclaration.java | 11 + .../ilkd/key/java/loader/JP2KeYConverter.java | 51 +- .../conditions/HasAnnotationCondition.java | 38 +- .../key/proof/rules/universe/universeDefs.key | 558 +++++++++--------- 9 files changed, 430 insertions(+), 311 deletions(-) create mode 100644 key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/AnnotatedType.java diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/AnnotatedType.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/AnnotatedType.java new file mode 100644 index 00000000000..de6ab5f4e7d --- /dev/null +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/AnnotatedType.java @@ -0,0 +1,38 @@ +package de.uka.ilkd.key.java.ast.abstraction; + +import org.key_project.util.collection.ImmutableArray; + +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; +import de.uka.ilkd.key.java.ast.expression.literal.Literal; + +public class AnnotatedType implements Type { + private Type subType; + private ImmutableArray annotations; + + public AnnotatedType(Type subType, + ImmutableArray annotations) { + assert subType.getAnnotations().size() == 0; + this.subType = subType; + this.annotations = annotations; + } + + @Override + public String getFullName() { + return subType.getFullName(); + } + + @Override + public String getName() { + return subType.getName(); + } + + @Override + public Literal getDefaultValue() { + return subType.getDefaultValue(); + } + + @Override + public ImmutableArray getAnnotations() { + return annotations; + } +} diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/KeYJavaType.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/KeYJavaType.java index 8540b1d53cf..fc3f5ecb264 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/KeYJavaType.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/KeYJavaType.java @@ -7,12 +7,16 @@ import java.util.Objects; import java.util.Optional; +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.java.ast.expression.literal.Literal; import de.uka.ilkd.key.java.ast.reference.PackageReference; import de.uka.ilkd.key.ldt.JavaDLTheory; import de.uka.ilkd.key.logic.ProgramElementName; import org.key_project.logic.sort.Sort; +import org.key_project.util.collection.ImmutableArray; + +import com.github.javaparser.ast.expr.AnnotationExpr; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @@ -74,13 +78,24 @@ public void setSort(@Nullable Sort s) { * * @return the default value of the given type according to JLS Sect. 4.5.5 */ - public Literal getDefaultValue() { + public @Nullable Literal getDefaultValue() { if (javaType == null) { return null; } return javaType.getDefaultValue(); } + /** + * @return null if this is not a real Java type and else its annotations. + */ + public @Nullable ImmutableArray getAnnotations() { + if (javaType == null) { + return null; + } + + return javaType.getAnnotations(); + } + public String toString() { if (this == VOID_TYPE) { return "KeYJavaType:void"; diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/NullType.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/NullType.java index 36fa7c46194..aa649705c55 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/NullType.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/NullType.java @@ -4,8 +4,10 @@ package de.uka.ilkd.key.java.ast.abstraction; import de.uka.ilkd.key.java.Services; +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.java.ast.expression.literal.Literal; +import org.key_project.util.collection.ImmutableArray; import org.key_project.util.collection.ImmutableList; /** @@ -198,7 +200,6 @@ public Package getPackage() { return null; } - /** * returns the default value of the given type according to JLS Sect. 4.5.5 * @@ -208,6 +209,13 @@ public Literal getDefaultValue() { return null; } + /** + * @return the annotations of the null type + */ + public ImmutableArray getAnnotations() { + return new ImmutableArray<>(); + } + public boolean equals(Object o) { return o == JAVA_NULL; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/PrimitiveType.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/PrimitiveType.java index 28cf6fe9942..5d1be329e22 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/PrimitiveType.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/PrimitiveType.java @@ -8,12 +8,14 @@ import java.util.LinkedHashMap; import java.util.Map; +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.java.ast.expression.literal.*; import de.uka.ilkd.key.java.ast.expression.literal.Literal; import de.uka.ilkd.key.ldt.*; import de.uka.ilkd.key.logic.ProgramElementName; import org.key_project.logic.Name; +import org.key_project.util.collection.ImmutableArray; /** * A program model element representing primitive types. @@ -128,6 +130,15 @@ public Literal getDefaultValue() { return defaultValue; } + /** + * returns the annotations of the primitive type, which is an empty array. + * + * @return the annotations of the type + */ + public ImmutableArray getAnnotations() { + return new ImmutableArray<>(); + } + /** * Returns the name of type. * diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/Type.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/Type.java index 50f31843bd7..8c937e4e849 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/Type.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/Type.java @@ -3,6 +3,9 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.java.ast.abstraction; +import org.key_project.util.collection.ImmutableArray; + +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.java.ast.expression.literal.Literal; /** @@ -20,4 +23,8 @@ public interface Type extends ProgramModelElement { */ Literal getDefaultValue(); + /** + * @return the list of annotations tied to the type + */ + ImmutableArray getAnnotations(); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/TypeDeclaration.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/TypeDeclaration.java index 56b7eb8c87b..76e23d28103 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/TypeDeclaration.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/TypeDeclaration.java @@ -10,6 +10,7 @@ import de.uka.ilkd.key.java.ast.abstraction.*; import de.uka.ilkd.key.java.ast.abstraction.Package; import de.uka.ilkd.key.java.ast.expression.literal.NullLiteral; +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.logic.ProgramElementName; import de.uka.ilkd.key.speclang.jml.JMLInfoExtractor; import de.uka.ilkd.key.speclang.jml.pretranslation.TextualJMLConstruct; @@ -168,6 +169,16 @@ public NullLiteral getDefaultValue() { return NullLiteral.NULL; } + /** + * returns the annotations of the type resulting from the type declaration, + * which is no annotations. + * + * @return the annotations of the type declaration + */ + public ImmutableArray getAnnotations() { + return new ImmutableArray<>(); + } + /** * Get ProgramElementName. * diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java index 732a089fb22..30529b35a2e 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java @@ -12,6 +12,7 @@ import de.uka.ilkd.key.java.ast.*; import de.uka.ilkd.key.java.ast.CompilationUnit; import de.uka.ilkd.key.java.ast.Statement; +import de.uka.ilkd.key.java.ast.abstraction.AnnotatedType; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; import de.uka.ilkd.key.java.ast.ccatch.*; import de.uka.ilkd.key.java.ast.declaration.*; @@ -73,7 +74,6 @@ import com.github.javaparser.resolution.declarations.ResolvedValueDeclaration; import com.github.javaparser.resolution.model.typesystem.ReferenceTypeImpl; import com.github.javaparser.resolution.types.ResolvedType; -import com.github.javaparser.resolution.types.ResolvedVoidType; import com.github.javaparser.symbolsolver.JavaSymbolSolver; import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserFieldDeclaration; import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserVariableDeclaration; @@ -708,8 +708,7 @@ public Object visit(FieldAccessExpr n, Void arg) { } } catch (UnsolvedSymbolException e) { try { - ResolvedType type = n.calculateResolvedType(); - var keyType = getKeYJavaType(type); + var keyType = getKeYJavaType(n.calculateResolvedType()); return new TypeRef(keyType); } catch (UnsolvedSymbolException e1) { throw new ParserException("Name could not be resolved '" + n + "'", @@ -720,20 +719,38 @@ public Object visit(FieldAccessExpr n, Void arg) { @Override public Object visit(TypeExpr n, Void arg) { - var rt = n.calculateResolvedType(); - var kjt = getKeYJavaType(rt); - return new TypeRef(kjt); + return new TypeRef(getKeYJavaType(n.getType())); } + private KeYJavaType getCachedKeYJavaType(Type type) { + var kjt = getCachedKeYJavaType(type.resolve()); + annotate(type, kjt); + return kjt; + } private KeYJavaType getCachedKeYJavaType(ResolvedType rtype) { - return typeConverter.getKeYJavaType(rtype, true); + return typeConverter.getKeYJavaType(rtype, false); + } + + private KeYJavaType getKeYJavaType(Type type) { + var kjt = getKeYJavaType(type.resolve()); + annotate(type, kjt); + return kjt; } private KeYJavaType getKeYJavaType(ResolvedType rtype) { return typeConverter.getKeYJavaType(rtype, false); } + private void annotate(Type type, KeYJavaType kjt) { + if (kjt.getAnnotations().size() != 0) return; + + var annotations = type.annotations(); + if (annotations.size() != 0) { + kjt.setJavaType(new AnnotatedType(kjt.getJavaType(), map(annotations))); + } + } + private ClassOrInterfaceDeclaration getContainingClass(Node node) { if (node instanceof ClassOrInterfaceDeclaration) { node = node.getParentNode().orElse(null); @@ -1009,8 +1026,7 @@ public Object visit(NameExpr n, Void arg) { target = n.resolve(); } catch (UnsolvedSymbolException e) { try { - ResolvedType type = n.calculateResolvedType(); - var keyType = getKeYJavaType(type); + var keyType = getKeYJavaType(n.calculateResolvedType()); return new TypeRef(keyType); } catch (UnsolvedSymbolException e1) { throw new ParserException("Name could not be resolved '" + n + "'", @@ -1140,7 +1156,7 @@ private static ReferencePrefix convertScopeToReferencePrefix(ClassOrInterfaceTyp ReferencePrefix prefix = type.getScope().map(JP2KeYVisitor::convertScopeToReferencePrefix).orElse(null); var name = createProgramElementName(type.getName()); - var resolvedType = getKeYJavaType(type.resolve()); + KeYJavaType resolvedType = getKeYJavaType(type.resolve()); return new TypeRef(name, 0, prefix, resolvedType); } @@ -1180,7 +1196,7 @@ public Object visit(Parameter n, Void arg) { @Override public TypeReference visit(PrimitiveType n, Void arg) { - return new TypeRef(getKeYJavaType(n.resolve())); + return new TypeRef(getKeYJavaType(n)); } @Override @@ -1205,7 +1221,7 @@ public Object visit(ArrayType n, Void arg) { } catch (IllegalStateException e) { System.out.println(e); } - return new TypeRef(getKeYJavaType(n.resolve())); + return new TypeRef(getKeYJavaType(n)); } @Override @@ -1472,7 +1488,7 @@ private ProgramVariable getProgramVariableForFieldSpecification(FullVariableDecl var spec = decl.decl; var varSpec = mapping.nodeToKeY(spec); if (varSpec == null) { - var t = spec.getType().resolve(); + var t = spec.getType(); var classNode = findContainingClass(spec).orElseThrow(); var classType = new ReferenceTypeImpl(classNode.resolve()); final ProgramElementName pen = @@ -1516,7 +1532,7 @@ private FieldSpecification visitFieldSpecification(FullVariableDeclarator v) { var pi = createPositionInfo(v.decl); var c = createComments(v.decl); Expression init = accepto(v.decl.getInitializer()); - var type = getKeYJavaType(v.decl.getType().resolve()); + var type = getKeYJavaType(v.decl.getType()); var pv = getProgramVariableForFieldSpecification(v); return new FieldSpecification(pi, c, init, pv, 0, type); } @@ -1529,7 +1545,7 @@ public Object visit(VariableDeclarator n, Void arg) { @Override public Object visit(VoidType n, Void arg) { - return new TypeRef(getKeYJavaType(ResolvedVoidType.INSTANCE)); + return new TypeRef(getKeYJavaType(n)); } @Override @@ -2114,8 +2130,7 @@ public Object visit(TraditionalJavadocComment n, Void arg) { @Override public Object visit(MarkerAnnotationExpr n, Void arg) { - var rt = n.calculateResolvedType(); - var kjt = getKeYJavaType(rt); + var kjt = getKeYJavaType(new ReferenceTypeImpl(n.resolve())); return new MarkerAnnotation(kjt); } @@ -2182,7 +2197,7 @@ public Object visit(ReceiverParameter n, Void arg) { @Override public Object visit(VarType n, Void arg) { - return getKeYJavaType(n.resolve()); + return getKeYJavaType(n); } @Override diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java index cbb6eefb006..4fa6075635d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java @@ -3,14 +3,17 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.rule.conditions; +import de.uka.ilkd.key.java.KeYJPMapping; import de.uka.ilkd.key.java.Services; -//import de.uka.ilkd.key.java.declaration.*; -//import de.uka.ilkd.key.java.expression.operator.TypeOperator; +import de.uka.ilkd.key.java.ast.declaration.*; import de.uka.ilkd.key.ldt.HeapLDT; import de.uka.ilkd.key.logic.JTerm; +import de.uka.ilkd.key.logic.op.LocationVariable; import de.uka.ilkd.key.rule.VariableConditionAdapter; import de.uka.ilkd.key.rule.inst.SVInstantiations; +import de.uka.ilkd.key.java.ast.ProgramElement; + import org.key_project.logic.SyntaxElement; import org.key_project.logic.op.Function; import org.key_project.logic.op.sv.SchemaVariable; @@ -36,17 +39,11 @@ public boolean check(SchemaVariable var, SyntaxElement subst, if (var != variable) return true; - var inst = svInst.getInstantiation(variable); - LOGGER.info("{}", inst); -/* - if (inst instanceof TypeOperator) { - var out = ((TypeOperator) inst) - .getAnnotations() - .stream() - .anyMatch(a -> a.getTypeReferenceAt(0).getName().equals(annot)); - return out; - } else if (!(inst instanceof JTerm)) + Object inst = svInst.getInstantiation(variable); + + if (!(inst instanceof JTerm)) return false; + var op = ((JTerm) inst).op(); if (op.arity() != 0) @@ -54,14 +51,19 @@ public boolean check(SchemaVariable var, SyntaxElement subst, if (op instanceof Function) { return matchesField(services, (Function) op); + } else if (op instanceof ProgramElement) { + var decl = services.getJavaInfo().rec2key() + .nodeFromKeY((LocationVariable)op); + LOGGER.info("inst {}, type {}", inst, inst.getClass()); + LOGGER.info("decl {}", decl); } -*/ return false; } public boolean matchesField(Services services, Function op) { - /* + LOGGER.info("{}", op); + var kpmi = services.getJavaInfo().getKeYProgModelInfo(); HeapLDT.SplitFieldName name = HeapLDT.trySplitFieldName(op); @@ -75,9 +77,13 @@ public boolean matchesField(Services services, Function op) { !(classType.getJavaType() instanceof ClassDeclaration)) return false; - var recoderTypeDecl = - (recoder.java.declaration.TypeDeclaration) kpmi.rec2key().toRecoder(classType); + LOGGER.info("{}", classType); + + var recoderTypeDecl = kpmi.rec2key() + .nodeFromKeY((ClassDeclaration)classType.getJavaType()); + //LOGGER.info("{}", recoderTypeDecl); +/* var fields = recoderTypeDecl.getAllFields(); var field = fields.stream() .filter(f -> f.getName().equals(name.attributeName())) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeDefs.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeDefs.key index f871252ffef..a2d350ebaf2 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeDefs.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/universe/universeDefs.key @@ -2,284 +2,292 @@ // --------------------------------------------------- // Introduction Rules // --------------------------------------------------- - variableDeclarationPayload { - \schemaVar \formula post; - \schemaVar \program Variable #v0; - \schemaVar \program Type #t0; - \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - \schemaVar \program ProgramMethod #pm; - - \find(\modality{#allmodal}{.. @universe.qual.Payload #t0 #v0; ...}\endmodality (post)) - \sameUpdateLevel - - \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) - \addprogvars(#v0) - - \heuristics(simplify_prog, simplify_prog_subset) - //\displayname "variableDeclaration" - }; - - variableDeclarationPayloadAssign { - \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - \schemaVar \formula post; - \schemaVar \program Variable #v0; - \schemaVar \program Type #t; - \schemaVar \program VariableInitializer #vi; - - \find(\modality{#allmodal}{.. @universe.qual.Payload #t #v0 = #vi; ...}\endmodality (post)) - \replacewith(\modality{#allmodal}{.. @universe.qual.Payload #t #v0; #v0 = #vi; ...}\endmodality (post)) - - \heuristics(simplify_prog, simplify_prog_subset) - \displayname "variableDeclaration" - }; - - variableDeclarationPeer { - \schemaVar \formula post; - \schemaVar \program Variable #v0; - \schemaVar \program Type #t0; - \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - - \find(\modality{#allmodal}{.. @universe.qual.Peer #t0 #v0; ...}\endmodality (post)) - \sameUpdateLevel - - \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) - \addprogvars(#v0) - - \heuristics(simplify_prog, simplify_prog_subset) - \displayname "variableDeclaration" - }; - - variableDeclarationPeerAssignVariable { - \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - \schemaVar \formula post; - \schemaVar \program Variable #v0, #v; - \schemaVar \program Type #t1, #t; - \schemaVar \program ProgramMethod #pm; - \schemaVar \program VariableInitializer #vi; - - \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Peer #t1 #v0 = #vi; ...}\endmodality (post)) - \sameUpdateLevel - \varcond(\isLocalVariable(#vi)) - \replacewith(\modality{#allmodal}{.. @universe.qual.Peer #t1 #v0; #v0 = #vi; ...}\endmodality (post)) - \add(#vi != null -> owner(#vi) = owner(#v) ==>) - - \heuristics(simplify_prog, simplify_prog_subset) - \displayname "variableDeclaration" - }; - - variableDeclarationPeerAssign { - \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - \schemaVar \formula post; - \schemaVar \program Variable #v0; - \schemaVar \program Type #t; - \schemaVar \program VariableInitializer #vi; - - \find(\modality{#allmodal}{.. @universe.qual.Peer #t #v0 = #vi; ...}\endmodality (post)) - \varcond(\not \isLocalVariable(#vi)) - \replacewith(\modality{#allmodal}{.. @universe.qual.Peer #t #v0; #v0 = #vi; ...}\endmodality (post)) - - \heuristics(simplify_prog, simplify_prog_subset) - \displayname "variableDeclaration" - }; - - variableDeclarationRep { - \schemaVar \formula post; - \schemaVar \program Variable #v0; - \schemaVar \program Type #t0; - \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - - \find(\modality{#allmodal}{.. @universe.qual.Rep #t0 #v0; ...}\endmodality (post)) - - \sameUpdateLevel - \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) - \addprogvars(#v0) - - \heuristics(simplify_prog, simplify_prog_subset) - \displayname "variableDeclaration" - }; - - variableDeclarationRepAssignVariable { - \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - \schemaVar \formula post; - \schemaVar \program Variable #v0, #v; - \schemaVar \program Type #t1, #t; - \schemaVar \program ProgramMethod #pm; - \schemaVar \program VariableInitializer #vi; - - \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Rep #t1 #v0 = #vi; ...}\endmodality (post)) - \sameUpdateLevel - \varcond(\isLocalVariable(#vi)) - \replacewith(\modality{#allmodal}{.. @universe.qual.Rep #t1 #v0; #v0 = #vi; ...}\endmodality (post)) - \add(#vi != null -> owner(#vi) = #v ==>) - - \heuristics(simplify_prog, simplify_prog_subset) - \displayname "variableDeclaration" - }; - - variableDeclarationRepAssign { - \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - \schemaVar \formula post; - \schemaVar \program Variable #v0, #v; - \schemaVar \program Type #t; - \schemaVar \program ProgramMethod #pm; - \schemaVar \program VariableInitializer #vi; - - \find(\modality{#allmodal}{.. @universe.qual.Rep #t #v0 = #vi; ...}\endmodality (post)) - \varcond(\not \isLocalVariable(#vi)) - \replacewith(\modality{#allmodal}{.. @universe.qual.Rep #t #v0; #v0 = #vi; ...}\endmodality (post)) - - \heuristics(simplify_prog, simplify_prog_subset) - \displayname "variableDeclaration" - }; - - variableDeclarationDom { - \schemaVar \formula post; - \schemaVar \program Variable #v0; - \schemaVar \program Type #t0; - \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - - \find(\modality{#allmodal}{.. @universe.qual.Dom #t0 #v0; ...}\endmodality (post)) - - \sameUpdateLevel - \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) - \addprogvars(#v0) - - \heuristics(simplify_prog, simplify_prog_subset) - \displayname "variableDeclaration" - }; - - variableDeclarationDomAssignVariable { - \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - \schemaVar \formula post; - \schemaVar \program Variable #v0, #v; - \schemaVar \program Type #t1, #t; - \schemaVar \program ProgramMethod #pm; - \schemaVar \program VariableInitializer #vi; - - \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Dom #t1 #v0 = #vi; ...}\endmodality (post)) - \sameUpdateLevel - \varcond(\isLocalVariable(#vi)) - \replacewith(\modality{#allmodal}{.. @universe.qual.Dom #t1 #v0; #v0 = #vi; ...}\endmodality (post)) - \add(#vi != null -> dominates(#v, #vi) ==>) - - \heuristics(simplify_prog, simplify_prog_subset) - \displayname "variableDeclaration" - }; - - variableDeclarationDomAssign { - \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; - \schemaVar \formula post; - \schemaVar \program Variable #v0, #v; - \schemaVar \program Type #t; - \schemaVar \program ProgramMethod #pm; - \schemaVar \program VariableInitializer #vi; - - \find(\modality{#allmodal}{.. @universe.qual.Dom #t #v0 = #vi; ...}\endmodality (post)) - \varcond(\not \isLocalVariable(#vi)) - \replacewith(\modality{#allmodal}{.. @universe.qual.Dom #t #v0; #v0 = #vi; ...}\endmodality (post)) - - \heuristics(simplify_prog, simplify_prog_subset) - \displayname "variableDeclaration" - }; - - instanceCreationAssignmentPeer { - \schemaVar \modalOperator {diamond, box} #normal; - \schemaVar \formula post; - \schemaVar \program ProgramMethod #pm; - \schemaVar \program Type #t; - \schemaVar \program SimpleInstanceCreation #n; - \schemaVar \program LeftHandSide #lhs; - \schemaVar \program Variable #v0, #v, #v1; - - \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) - \sameUpdateLevel - - \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Peer)) - \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); - #constructor-call(#v0, #n); - #post-work(#v0); - @universe.qual.Peer #typeof(#v0) #v1 = #v0; - #lhs = #v1; - ...}\endmodality (post)) - \heuristics(method_expand) - }; - - instanceCreationAssignmentRep { - \schemaVar \modalOperator {diamond, box} #normal; - \schemaVar \formula post; - \schemaVar \program ProgramMethod #pm; - \schemaVar \program Type #t; - \schemaVar \program SimpleInstanceCreation #n; - \schemaVar \program LeftHandSide #lhs; - \schemaVar \program Variable #v0, #v, #v1; - - \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) - \sameUpdateLevel - - \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Rep)) - \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); - #constructor-call(#v0, #n); - #post-work(#v0); - @universe.qual.Rep #typeof(#v0) #v1 = #v0; - #lhs = #v1; - ...}\endmodality (post)) - \heuristics(method_expand) - }; - - instanceCreationAssignmentDom { - \schemaVar \modalOperator {diamond, box} #normal; - \schemaVar \formula post; - \schemaVar \program ProgramMethod #pm; - \schemaVar \program Type #t; - \schemaVar \program SimpleInstanceCreation #n; - \schemaVar \program LeftHandSide #lhs; - \schemaVar \program Variable #v0, #v, #v1; - - \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) - \sameUpdateLevel - - \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Dom)) - \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); - #constructor-call(#v0, #n); - #post-work(#v0); - @universe.qual.Dom #typeof(#v0) #v1 = #v0; - #lhs = #v1; - ...}\endmodality (post)) - \heuristics(method_expand) - }; - - peerField { + //variableDeclarationPayload { + // \schemaVar \formula post; + // \schemaVar \program Variable #v0; + // \schemaVar \program Type #t0; + // \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + // \schemaVar \program ProgramMethod #pm; + // + // \find(\modality{#allmodal}{.. @universe.qual.Payload #t0 #v0; ...}\endmodality (post)) + // \sameUpdateLevel + // + // \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) + // \addprogvars(#v0) + // + // \heuristics(simplify_prog, simplify_prog_subset) + // //\displayname "variableDeclaration" + //}; + // + //variableDeclarationPayloadAssign { + // \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + // \schemaVar \formula post; + // \schemaVar \program Variable #v0; + // \schemaVar \program Type #t; + // \schemaVar \program VariableInitializer #vi; + // + // \find(\modality{#allmodal}{.. @universe.qual.Payload #t #v0 = #vi; ...}\endmodality (post)) + // \replacewith(\modality{#allmodal}{.. @universe.qual.Payload #t #v0; #v0 = #vi; ...}\endmodality (post)) + // + // \heuristics(simplify_prog, simplify_prog_subset) + // \displayname "variableDeclaration" + //}; + // + //variableDeclarationPeer { + // \schemaVar \formula post; + // \schemaVar \program Variable #v0; + // \schemaVar \program Type #t0; + // \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + // + // \find(\modality{#allmodal}{.. @universe.qual.Peer #t0 #v0; ...}\endmodality (post)) + // \sameUpdateLevel + // + // \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) + // \addprogvars(#v0) + // + // \heuristics(simplify_prog, simplify_prog_subset) + // \displayname "variableDeclaration" + //}; + // + //variableDeclarationPeerAssignVariable { + // \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + // \schemaVar \formula post; + // \schemaVar \program Variable #v0, #v; + // \schemaVar \program Type #t1, #t; + // \schemaVar \program ProgramMethod #pm; + // \schemaVar \program VariableInitializer #vi; + // + // \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Peer #t1 #v0 = #vi; ...}\endmodality (post)) + // \sameUpdateLevel + // \varcond(\isLocalVariable(#vi)) + // \replacewith(\modality{#allmodal}{.. @universe.qual.Peer #t1 #v0; #v0 = #vi; ...}\endmodality (post)) + // \add(#vi != null -> owner(#vi) = owner(#v) ==>) + // + // \heuristics(simplify_prog, simplify_prog_subset) + // \displayname "variableDeclaration" + //}; + // + //variableDeclarationPeerAssign { + // \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + // \schemaVar \formula post; + // \schemaVar \program Variable #v0; + // \schemaVar \program Type #t; + // \schemaVar \program VariableInitializer #vi; + // + // \find(\modality{#allmodal}{.. @universe.qual.Peer #t #v0 = #vi; ...}\endmodality (post)) + // \varcond(\not \isLocalVariable(#vi)) + // \replacewith(\modality{#allmodal}{.. @universe.qual.Peer #t #v0; #v0 = #vi; ...}\endmodality (post)) + // + // \heuristics(simplify_prog, simplify_prog_subset) + // \displayname "variableDeclaration" + //}; + // + //variableDeclarationRep { + // \schemaVar \formula post; + // \schemaVar \program Variable #v0; + // \schemaVar \program Type #t0; + // \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + // + // \find(\modality{#allmodal}{.. @universe.qual.Rep #t0 #v0; ...}\endmodality (post)) + // + // \sameUpdateLevel + // \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) + // \addprogvars(#v0) + // + // \heuristics(simplify_prog, simplify_prog_subset) + // \displayname "variableDeclaration" + //}; + // + //variableDeclarationRepAssignVariable { + // \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + // \schemaVar \formula post; + // \schemaVar \program Variable #v0, #v; + // \schemaVar \program Type #t1, #t; + // \schemaVar \program ProgramMethod #pm; + // \schemaVar \program VariableInitializer #vi; + // + // \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Rep #t1 #v0 = #vi; ...}\endmodality (post)) + // \sameUpdateLevel + // \varcond(\isLocalVariable(#vi)) + // \replacewith(\modality{#allmodal}{.. @universe.qual.Rep #t1 #v0; #v0 = #vi; ...}\endmodality (post)) + // \add(#vi != null -> owner(#vi) = #v ==>) + // + // \heuristics(simplify_prog, simplify_prog_subset) + // \displayname "variableDeclaration" + //}; + // + //variableDeclarationRepAssign { + // \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + // \schemaVar \formula post; + // \schemaVar \program Variable #v0, #v; + // \schemaVar \program Type #t; + // \schemaVar \program ProgramMethod #pm; + // \schemaVar \program VariableInitializer #vi; + // + // \find(\modality{#allmodal}{.. @universe.qual.Rep #t #v0 = #vi; ...}\endmodality (post)) + // \varcond(\not \isLocalVariable(#vi)) + // \replacewith(\modality{#allmodal}{.. @universe.qual.Rep #t #v0; #v0 = #vi; ...}\endmodality (post)) + // + // \heuristics(simplify_prog, simplify_prog_subset) + // \displayname "variableDeclaration" + //}; + // + //variableDeclarationDom { + // \schemaVar \formula post; + // \schemaVar \program Variable #v0; + // \schemaVar \program Type #t0; + // \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + // + // \find(\modality{#allmodal}{.. @universe.qual.Dom #t0 #v0; ...}\endmodality (post)) + // + // \sameUpdateLevel + // \replacewith(\modality{#allmodal}{.. ...}\endmodality (post)) + // \addprogvars(#v0) + // + // \heuristics(simplify_prog, simplify_prog_subset) + // \displayname "variableDeclaration" + //}; + // + //variableDeclarationDomAssignVariable { + // \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + // \schemaVar \formula post; + // \schemaVar \program Variable #v0, #v; + // \schemaVar \program Type #t1, #t; + // \schemaVar \program ProgramMethod #pm; + // \schemaVar \program VariableInitializer #vi; + // + // \find(\modality{#allmodal}{.#pm@#t(#v).. @universe.qual.Dom #t1 #v0 = #vi; ...}\endmodality (post)) + // \sameUpdateLevel + // \varcond(\isLocalVariable(#vi)) + // \replacewith(\modality{#allmodal}{.. @universe.qual.Dom #t1 #v0; #v0 = #vi; ...}\endmodality (post)) + // \add(#vi != null -> dominates(#v, #vi) ==>) + // + // \heuristics(simplify_prog, simplify_prog_subset) + // \displayname "variableDeclaration" + //}; + // + //variableDeclarationDomAssign { + // \schemaVar \modalOperator {diamond, box, diamond_transaction, box_transaction} #allmodal; + // \schemaVar \formula post; + // \schemaVar \program Variable #v0, #v; + // \schemaVar \program Type #t; + // \schemaVar \program ProgramMethod #pm; + // \schemaVar \program VariableInitializer #vi; + // + // \find(\modality{#allmodal}{.. @universe.qual.Dom #t #v0 = #vi; ...}\endmodality (post)) + // \varcond(\not \isLocalVariable(#vi)) + // \replacewith(\modality{#allmodal}{.. @universe.qual.Dom #t #v0; #v0 = #vi; ...}\endmodality (post)) + // + // \heuristics(simplify_prog, simplify_prog_subset) + // \displayname "variableDeclaration" + //}; + + //instanceCreationAssignmentPeer { + // \schemaVar \modalOperator {diamond, box} #normal; + // \schemaVar \formula post; + // \schemaVar \program ProgramMethod #pm; + // \schemaVar \program Type #t; + // \schemaVar \program SimpleInstanceCreation #n; + // \schemaVar \program LeftHandSide #lhs; + // \schemaVar \program Variable #v0, #v, #v1; + // + // \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) + // \sameUpdateLevel + // + // \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Peer)) + // \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); + // #constructor-call(#v0, #n); + // #post-work(#v0); + // @universe.qual.Peer #typeof(#v0) #v1 = #v0; + // #lhs = #v1; + // ...}\endmodality (post)) + // \heuristics(method_expand) + //}; + // + //instanceCreationAssignmentRep { + // \schemaVar \modalOperator {diamond, box} #normal; + // \schemaVar \formula post; + // \schemaVar \program ProgramMethod #pm; + // \schemaVar \program Type #t; + // \schemaVar \program SimpleInstanceCreation #n; + // \schemaVar \program LeftHandSide #lhs; + // \schemaVar \program Variable #v0, #v, #v1; + // + // \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) + // \sameUpdateLevel + // + // \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Rep)) + // \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); + // #constructor-call(#v0, #n); + // #post-work(#v0); + // @universe.qual.Rep #typeof(#v0) #v1 = #v0; + // #lhs = #v1; + // ...}\endmodality (post)) + // \heuristics(method_expand) + //}; + // + //instanceCreationAssignmentDom { + // \schemaVar \modalOperator {diamond, box} #normal; + // \schemaVar \formula post; + // \schemaVar \program ProgramMethod #pm; + // \schemaVar \program Type #t; + // \schemaVar \program SimpleInstanceCreation #n; + // \schemaVar \program LeftHandSide #lhs; + // \schemaVar \program Variable #v0, #v, #v1; + // + // \find(\modality{#normal}{.#pm@#t(#v).. #lhs = #n; ...}\endmodality (post)) + // \sameUpdateLevel + // + // \varcond(\newTypeOf(#v0, #lhs), \newTypeOf(#v1, #lhs), \hasAnnotation(#n, Dom)) + // \replacewith(\modality{#normal}{.. #typeof(#v0) #v0 = #create-object(#n); + // #constructor-call(#v0, #n); + // #post-work(#v0); + // @universe.qual.Dom #typeof(#v0) #v1 = #v0; + // #lhs = #v1; + // ...}\endmodality (post)) + // \heuristics(method_expand) + //}; + + dummy { \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term Heap h; - - \find(alpha::select(h, o, f)) - \varcond(\hasAnnotation(f, Peer)) - \add(alpha::select(h, o, f) != null -> owner(Object::cast(o)) = owner(Object::cast(alpha::select(h, o, f))) ==>) - \heuristics(type_hierarchy_def) + + \find(o) + \varcond(\hasAnnotation(o, Peer)) + \replacewith(o) }; - ownsField { - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term Heap h; - - \find(alpha::select(h, o, f)) - \varcond(\hasAnnotation(f, Rep)) - \add(alpha::select(h, o, f) != null -> owner(Object::cast(alpha::select(h, o, f))) = o ==>) - \heuristics(type_hierarchy_def) - }; - - dominatesField { - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term Heap h; - - \find(alpha::select(h, o, f)) - \varcond(\hasAnnotation(f, Dom)) - \add(alpha::select(h, o, f) != null -> dominates(o, Object::cast(alpha::select(h, o, f))) ==>) - \heuristics(type_hierarchy_def) - }; + //peerField { + // \schemaVar \term Object o; + // \schemaVar \term Field f; + // \schemaVar \term Heap h; + // + // \find(alpha::select(h, o, f)) + // \varcond(\hasAnnotation(f, Peer)) + // \add(alpha::select(h, o, f) != null -> owner(Object::cast(o)) = owner(Object::cast(alpha::select(h, o, f))) ==>) + // \heuristics(type_hierarchy_def) + //}; + // + //ownsField { + // \schemaVar \term Object o; + // \schemaVar \term Field f; + // \schemaVar \term Heap h; + // + // \find(alpha::select(h, o, f)) + // \varcond(\hasAnnotation(f, Rep)) + // \add(alpha::select(h, o, f) != null -> owner(Object::cast(alpha::select(h, o, f))) = o ==>) + // \heuristics(type_hierarchy_def) + //}; + // + //dominatesField { + // \schemaVar \term Object o; + // \schemaVar \term Field f; + // \schemaVar \term Heap h; + // + // \find(alpha::select(h, o, f)) + // \varcond(\hasAnnotation(f, Dom)) + // \add(alpha::select(h, o, f) != null -> dominates(o, Object::cast(alpha::select(h, o, f))) ==>) + // \heuristics(type_hierarchy_def) + //}; // --------------------------------------------------- // Predicate and Function definitions From 8bc04076da7d93e33d0187dcafba8c7c9b94e135 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Fri, 15 May 2026 17:57:02 +0200 Subject: [PATCH 26/27] add annotations to type references --- .../informationflow/ProofObligationVars.java | 16 +- .../informationflow/po/InfFlowContractPO.java | 4 +- .../informationflow/proof/init/StateVars.java | 45 +---- .../InfFlowBlockContractInternalRule.java | 10 +- .../rule/InfFlowWhileInvariantRule.java | 12 +- .../model/impl/ExecutionMethodReturn.java | 3 +- .../AbstractConditionalBreakpoint.java | 3 +- .../uka/ilkd/key/wd/po/WellDefinednessPO.java | 5 +- .../uka/ilkd/key/java/KeYJavaASTFactory.java | 190 ++++++++---------- .../uka/ilkd/key/java/KeYProgModelInfo.java | 2 +- .../java/ast/abstraction/AnnotatedType.java | 38 ---- .../key/java/ast/abstraction/KeYJavaType.java | 15 -- .../ilkd/key/java/ast/abstraction/Type.java | 7 - .../AnnotationInterfaceDeclaration.java | 28 ++- .../java/ast/declaration/TypeDeclaration.java | 2 +- .../ast/declaration/VariableDeclaration.java | 2 - .../ast/expression/AnnotationExpression.java | 6 +- .../annotation/MarkerAnnotation.java | 3 + .../operator/DLEmbeddedExpression.java | 2 +- .../java/ast/reference/ReferencePrefix.java | 1 - .../ast/reference/SchemaTypeReference.java | 8 +- .../reference/SchematicFieldReference.java | 6 +- .../ilkd/key/java/ast/reference/TypeRef.java | 23 ++- .../key/java/ast/reference/TypeReference.java | 9 +- .../java/ast/reference/TypeReferenceImp.java | 42 +++- .../java/loader/CreateArrayMethodBuilder.java | 8 +- .../ilkd/key/java/loader/JP2KeYConverter.java | 58 ++---- .../key/java/loader/JP2KeYTypeConverter.java | 5 +- .../OuterBreakContinueAndReturnReplacer.java | 4 +- .../ilkd/key/logic/InnerVariableNamer.java | 2 +- .../de/uka/ilkd/key/logic/TermBuilder.java | 50 +++-- .../ilkd/key/logic/op/IProgramVariable.java | 7 +- .../key/logic/op/JAbstractSortedOperator.java | 3 +- .../de/uka/ilkd/key/logic/op/JOperatorSV.java | 4 +- .../ilkd/key/logic/op/LocationVariable.java | 24 ++- .../ilkd/key/logic/op/ProgramConstant.java | 7 +- .../de/uka/ilkd/key/logic/op/ProgramSV.java | 6 + .../ilkd/key/logic/op/ProgramVariable.java | 39 ++-- .../nparser/builder/DeclarationBuilder.java | 5 +- .../de/uka/ilkd/key/pp/PrettyPrinter.java | 8 + .../key/proof/init/AbstractOperationPO.java | 8 +- .../key/proof/init/DependencyContractPO.java | 4 +- .../proof/init/FunctionalBlockContractPO.java | 9 +- .../proof/init/FunctionalLoopContractPO.java | 9 +- .../init/FunctionalOperationContractPO.java | 2 +- .../proof/mgt/SpecificationRepository.java | 6 +- .../rule/AbstractAuxiliaryContractRule.java | 8 +- .../key/rule/AbstractLoopInvariantRule.java | 3 +- .../key/rule/AuxiliaryContractBuilders.java | 28 +-- .../key/rule/BlockContractInternalRule.java | 2 +- .../key/rule/LoopContractInternalRule.java | 2 +- .../ilkd/key/rule/LoopScopeInvariantRule.java | 4 +- .../de/uka/ilkd/key/rule/QueryExpand.java | 10 +- .../java/de/uka/ilkd/key/rule/TacletApp.java | 15 +- .../key/rule/UseOperationContractRule.java | 2 +- .../uka/ilkd/key/rule/WhileInvariantRule.java | 5 +- .../conditions/HasAnnotationCondition.java | 76 ++++--- .../conditions/NewLocalVarsCondition.java | 12 +- .../key/rule/metaconstruct/ArrayPostDecl.java | 1 + .../metaconstruct/EnhancedForElimination.java | 11 +- .../key/rule/metaconstruct/EvaluateArgs.java | 5 +- .../key/rule/metaconstruct/InitArray.java | 5 +- .../rule/metaconstruct/InitArrayCreation.java | 6 +- .../rule/metaconstruct/IntroAtPreDefsOp.java | 2 +- .../key/rule/metaconstruct/MethodCall.java | 4 +- .../metaconstruct/ProgramTransformer.java | 20 +- .../key/rule/metaconstruct/SwitchToIf.java | 7 +- .../ilkd/key/rule/metaconstruct/TypeOf.java | 11 +- .../WhileInvariantTransformation.java | 7 +- .../WhileInvariantTransformer.java | 18 +- .../ilkd/key/speclang/AuxiliaryContract.java | 18 +- .../ilkd/key/speclang/ContractFactory.java | 3 +- .../ilkd/key/speclang/LoopContractImpl.java | 2 +- .../uka/ilkd/key/speclang/LoopSpecImpl.java | 4 +- .../ilkd/key/speclang/PartialInvAxiom.java | 9 +- .../key/speclang/jml/translation/Context.java | 3 +- .../jml/translation/JMLSpecFactory.java | 11 +- .../ilkd/key/speclang/njml/Translator.java | 4 +- .../ilkd/key/util/InfFlowProgVarRenamer.java | 4 +- .../key/util/mergerule/MergeRuleUtils.java | 2 +- .../key/proof/rules/universe/universeDefs.key | 2 +- .../key_project/logic/op/sv/OperatorSV.java | 3 +- 82 files changed, 533 insertions(+), 546 deletions(-) delete mode 100644 key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/AnnotatedType.java diff --git a/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/ProofObligationVars.java b/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/ProofObligationVars.java index abc2cc23e97..72515470370 100644 --- a/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/ProofObligationVars.java +++ b/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/ProofObligationVars.java @@ -7,6 +7,8 @@ import de.uka.ilkd.key.java.JavaInfo; import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.reference.TypeRef; +import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.ProgramElementName; import de.uka.ilkd.key.logic.TermBuilder; @@ -47,16 +49,15 @@ public class ProofObligationVars { private final TermBuilder tb; - public ProofObligationVars(IProgramMethod pm, KeYJavaType kjt, Services services) { - this.pre = StateVars.buildMethodContractPreVars(pm, kjt, services); - this.post = StateVars.buildMethodContractPostVars(this.pre, pm, kjt, services); + public ProofObligationVars(IProgramMethod pm, TypeReference typeRef, Services services) { + this.pre = StateVars.buildMethodContractPreVars(pm, typeRef, services); + this.post = StateVars.buildMethodContractPostVars(this.pre, pm, typeRef, services); this.tb = services.getTermBuilder(); this.exceptionParameter = buildExceptionParameter(services); this.formalParams = buildFormalParamVars(services); this.postfix = ""; } - public ProofObligationVars(ProofObligationVars orig, String postfix, Services services) { this.pre = StateVars.buildInfFlowPreVars(orig.pre, postfix, services); this.post = StateVars.buildInfFlowPostVars(orig.pre, orig.post, pre, postfix, services); @@ -66,7 +67,6 @@ public ProofObligationVars(ProofObligationVars orig, String postfix, Services se this.postfix = postfix; } - public ProofObligationVars(StateVars pre, StateVars post, JTerm exceptionParameter, ImmutableList formalParams, Services services) { this.pre = pre; @@ -114,7 +114,6 @@ public ProofObligationVars labelHeapAtPreAsAnonHeapFunc() { } } - /** * Build variable for try statement. * @@ -125,7 +124,7 @@ private JTerm buildExceptionParameter(Services services) { JavaInfo javaInfo = services.getJavaInfo(); final KeYJavaType eType = javaInfo.getTypeByClassName("java.lang.Exception"); final ProgramElementName ePEN = new ProgramElementName("e"); - return tb.var(new LocationVariable(ePEN, eType)); + return tb.var(new LocationVariable(ePEN, new TypeRef(eType))); } /** @@ -139,7 +138,8 @@ private ImmutableList buildFormalParamVars(Services services) for (JTerm param : pre.localVars) { ProgramVariable paramVar = param.op(ProgramVariable.class); ProgramElementName pen = new ProgramElementName("_" + paramVar.name()); - LocationVariable formalParamVar = new LocationVariable(pen, paramVar.getKeYJavaType()); + LocationVariable formalParamVar = + new LocationVariable(pen, paramVar.getTypeReference()); register(formalParamVar, services); JTerm formalParam = tb.var(formalParamVar); formalParamVars = formalParamVars.append(formalParam); diff --git a/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/po/InfFlowContractPO.java b/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/po/InfFlowContractPO.java index fb2dd1b66f5..19adc1096aa 100644 --- a/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/po/InfFlowContractPO.java +++ b/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/po/InfFlowContractPO.java @@ -12,6 +12,7 @@ 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.reference.TypeRef; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.op.IProgramMethod; import de.uka.ilkd.key.logic.op.JModality; @@ -50,7 +51,8 @@ public InfFlowContractPO(InitConfig initConfig, InformationFlowContract contract // generate proof obligation variables final IProgramMethod pm = contract.getTarget(); - symbExecVars = new ProofObligationVars(pm, contract.getKJT(), environmentServices); + symbExecVars = + new ProofObligationVars(pm, new TypeRef(contract.getKJT()), environmentServices); assert (symbExecVars.pre.self == null) == (pm.isStatic()); ifVars = new IFProofObligationVars(symbExecVars, environmentServices); diff --git a/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/proof/init/StateVars.java b/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/proof/init/StateVars.java index 2312879ffae..8c9a0cd0cc4 100644 --- a/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/proof/init/StateVars.java +++ b/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/proof/init/StateVars.java @@ -6,7 +6,7 @@ import java.util.Iterator; import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.ldt.HeapLDT; import de.uka.ilkd.key.ldt.JavaDLTheory; import de.uka.ilkd.key.logic.JTerm; @@ -86,13 +86,11 @@ public StateVars(JTerm self, JTerm guard, ImmutableList localVars, JTerm paddedTermList = allTerms; } - public StateVars(JTerm self, ImmutableList localVars, JTerm result, JTerm exception, JTerm heap, JTerm mbyAtPre) { this(self, null, localVars, result, exception, heap, mbyAtPre); } - private ImmutableList appendIfNotNull(ImmutableList list, JTerm t) { if (t != null) { return list.append(t); @@ -101,7 +99,6 @@ private ImmutableList appendIfNotNull(ImmutableList list, JTerm t) } } - private ImmutableList appendIfNotNull(ImmutableList list, ImmutableList list2) { ImmutableList result = list; @@ -111,30 +108,25 @@ private ImmutableList appendIfNotNull(ImmutableList list, return result; } - public StateVars(JTerm self, JTerm guard, ImmutableList localVars, JTerm heap) { this(self, guard, localVars, null, null, heap, null); } - public StateVars(JTerm self, JTerm guard, ImmutableList localVars, JTerm result, JTerm exception, JTerm heap) { this(self, guard, localVars, result, exception, heap, null); } - public StateVars(@Nullable JTerm self, ImmutableList localVars, @Nullable JTerm result, @Nullable JTerm exception, JTerm heap) { this(self, localVars, result, exception, heap, null); } - public StateVars(JTerm self, ImmutableList localVars, JTerm heap) { this(self, localVars, null, null, heap); } - public StateVars(StateVars orig, String postfix, Services services) { this(copyVariable(orig.self, postfix, services), copyVariable(orig.guard, postfix, services), @@ -145,7 +137,6 @@ public StateVars(StateVars orig, String postfix, Services services) { copyFunction(orig.mbyAtPre, postfix, services)); } - private static ImmutableList copyVariables(ImmutableList ts, String postfix, Services services) { ImmutableList result = ImmutableSLList.nil(); @@ -155,7 +146,6 @@ private static ImmutableList copyVariables(ImmutableList ts, Strin return result; } - private static JTerm copyVariable(JTerm t, String postfix, Services services) { if (t != null) { final TermBuilder tb = services.getTermBuilder(); @@ -168,7 +158,6 @@ private static JTerm copyVariable(JTerm t, String postfix, Services services) { } } - private static JTerm newVariable(JTerm t, String name, Services services) { if (t == null) { return null; @@ -185,7 +174,6 @@ private static JTerm newVariable(JTerm t, String name, Services services) { return tb.var(newVar); } - private static JTerm copyHeapSymbol(JTerm t, String postfix, Services services) { if (t != null) { final TermBuilder tb = services.getTermBuilder(); @@ -198,7 +186,6 @@ private static JTerm copyHeapSymbol(JTerm t, String postfix, Services services) } } - private static JTerm newHeapSymbol(JTerm t, String name, Services services) { if (t == null) { return null; @@ -216,7 +203,6 @@ private static JTerm newHeapSymbol(JTerm t, String name, Services services) { } } - private static JTerm newFunction(JTerm t, String name, Services services) { if (t == null) { return null; @@ -227,7 +213,6 @@ private static JTerm newFunction(JTerm t, String name, Services services) { return tb.func(newFunc); } - private static JTerm copyFunction(JTerm t, String postfix, Services services) { if (t != null) { final TermBuilder tb = services.getTermBuilder(); @@ -240,33 +225,30 @@ private static JTerm copyFunction(JTerm t, String postfix, Services services) { } } - - public static StateVars buildMethodContractPreVars(IProgramMethod pm, KeYJavaType kjt, + public static StateVars buildMethodContractPreVars(IProgramMethod pm, TypeReference typeRef, Services services) { ImmutableArray heapLabels = new ImmutableArray<>(ParameterlessTermLabel.ANON_HEAP_LABEL); - return new StateVars(buildSelfVar(services, pm, kjt, ""), buildParamVars(services, "", pm), + return new StateVars(buildSelfVar(services, pm, typeRef, ""), + buildParamVars(services, "", pm), buildResultVar(pm, services, ""), buildExceptionVar(services, "", pm), buildHeapFunc("AtPre", heapLabels, services), buildMbyVar("", services)); } - public static StateVars buildMethodContractPostVars(StateVars preVars, IProgramMethod pm, - KeYJavaType kjt, Services services) { + TypeReference typeRef, Services services) { final String postfix = "AtPost"; // preVars.localVars: no local out variables - return new StateVars(buildSelfVar(services, pm, kjt, postfix), preVars.localVars, + return new StateVars(buildSelfVar(services, pm, typeRef, postfix), preVars.localVars, buildResultVar(pm, services, postfix), buildExceptionVar(services, postfix, pm), buildHeapFunc(postfix, new ImmutableArray<>(), services), preVars.mbyAtPre); } - public static StateVars buildInfFlowPreVars(StateVars origPreVars, String postfix, Services services) { return new StateVars(origPreVars, postfix, services); } - public static StateVars buildInfFlowPostVars(StateVars origPreVars, StateVars origPostVars, StateVars preVars, String postfix, Services services) { // create new post vars if original pre and original post var differ; @@ -297,19 +279,17 @@ public static StateVars buildInfFlowPostVars(StateVars origPreVars, StateVars or return new StateVars(self, guard, localPostVars, result, exception, heap, mbyAtPre); } - - private static JTerm buildSelfVar(Services services, IProgramMethod pm, KeYJavaType kjt, + private static JTerm buildSelfVar(Services services, IProgramMethod pm, TypeReference typeRef, String postfix) { if (pm.isStatic()) { return null; } final TermBuilder tb = services.getTermBuilder(); - JTerm selfVar = tb.var(tb.selfVar(pm, kjt, true, postfix)); + JTerm selfVar = tb.var(tb.selfVar(pm, typeRef, true, postfix)); register(selfVar.op(ProgramVariable.class), services); return selfVar; } - private static ImmutableList buildParamVars(Services services, String postfix, IProgramMethod pm) { final TermBuilder tb = services.getTermBuilder(); @@ -318,7 +298,6 @@ private static ImmutableList buildParamVars(Services services, String pos return paramVars; } - private static JTerm buildResultVar(IProgramMethod pm, Services services, String postfix) { if (pm.isVoid() || pm.isConstructor()) { return null; @@ -329,7 +308,6 @@ private static JTerm buildResultVar(IProgramMethod pm, Services services, String return resultVar; } - private static JTerm buildHeapFunc(String postfix, ImmutableArray labels, Services services) { HeapLDT heapLDT = services.getTypeConverter().getHeapLDT(); @@ -345,7 +323,6 @@ private static JTerm buildHeapFunc(String postfix, ImmutableArray lab } } - private static JTerm buildExceptionVar(Services services, String postfix, IProgramMethod pm) { final TermBuilder tb = services.getTermBuilder(); JTerm excVar = tb.var(tb.excVar("exc" + postfix, pm, true)); @@ -353,7 +330,6 @@ private static JTerm buildExceptionVar(Services services, String postfix, IProgr return excVar; } - private static JTerm buildMbyVar(String postfix, Services services) { final TermBuilder tb = services.getTermBuilder(); final Sort intSort = services.getTypeConverter().getIntegerLDT().targetSort(); @@ -363,7 +339,6 @@ private static JTerm buildMbyVar(String postfix, Services services) { return tb.func(mbyAtPreFunc); } - static void register(ProgramVariable pv, Services services) { Namespace progVarNames = services.getNamespaces().programVariables(); if (pv != null && progVarNames.lookup(pv.name()) == null) { @@ -371,14 +346,12 @@ static void register(ProgramVariable pv, Services services) { } } - static void register(ImmutableList pvs, Services services) { for (ProgramVariable pv : pvs) { register(pv, services); } } - static void register(Function f, Services services) { Namespace functionNames = services.getNamespaces().functions(); if (f != null && functionNames.lookup(f.name()) == null) { @@ -387,7 +360,6 @@ static void register(Function f, Services services) { } } - static ImmutableList ops(ImmutableList terms, Class opClass) throws IllegalArgumentException { ImmutableList ops = ImmutableSLList.nil(); @@ -397,7 +369,6 @@ static ImmutableList ops(ImmutableList terms, Class opClass) return ops; } - @Override public String toString() { return termList.toString(); diff --git a/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/rule/InfFlowBlockContractInternalRule.java b/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/rule/InfFlowBlockContractInternalRule.java index dfbaf9d7d12..3c29c014455 100644 --- a/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/rule/InfFlowBlockContractInternalRule.java +++ b/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/rule/InfFlowBlockContractInternalRule.java @@ -19,8 +19,8 @@ import de.uka.ilkd.key.informationflow.proof.init.StateVars; import de.uka.ilkd.key.informationflow.rule.tacletbuilder.InfFlowBlockContractTacletBuilder; import de.uka.ilkd.key.java.Services; -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.TypeReference; import de.uka.ilkd.key.java.ast.statement.JavaStatement; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.ProgramElementName; @@ -192,7 +192,7 @@ protected void setUpValidityGoal(final ImmutableList result, var app = (InfFlowBlockContractInternalBuiltInRuleApp) application; final ProgramVariable exceptionParameter = - createLocalVariable("e", variables.exception.getKeYJavaType(), services); + createLocalVariable("e", variables.exception.getTypeReference(), services); validityGoal.setBranchLabel("Information Flow Validity"); // clear goal @@ -403,7 +403,7 @@ protected static ImmutableSet filterAppliedContracts( assert varTerm.op() instanceof LocationVariable; final TermBuilder tb = services.getTermBuilder(); - KeYJavaType resultType = ((LocationVariable) varTerm.op()).getKeYJavaType(); + TypeReference resultType = ((LocationVariable) varTerm.op()).getTypeReference(); if (!suffix.equalsIgnoreCase("")) { suffix = "_" + suffix; } @@ -426,7 +426,7 @@ protected static ImmutableList buildLocalOutsAtPre(ImmutableList v for (JTerm varTerm : varTerms) { assert varTerm.op() instanceof LocationVariable; - KeYJavaType resultType = ((LocationVariable) varTerm.op()).getKeYJavaType(); + TypeReference resultType = ((LocationVariable) varTerm.op()).getTypeReference(); String name = tb.newName(varTerm + "_Before"); LocationVariable varAtPostVar = @@ -448,7 +448,7 @@ protected static ImmutableList buildLocalOutsAtPost(ImmutableList for (JTerm varTerm : varTerms) { assert varTerm.op() instanceof LocationVariable; - KeYJavaType resultType = ((LocationVariable) varTerm.op()).getKeYJavaType(); + TypeReference resultType = ((LocationVariable) varTerm.op()).getTypeReference(); String name = tb.newName(varTerm + "_After"); LocationVariable varAtPostVar = diff --git a/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/rule/InfFlowWhileInvariantRule.java b/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/rule/InfFlowWhileInvariantRule.java index 63d9096654f..0c260a2df1c 100644 --- a/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/rule/InfFlowWhileInvariantRule.java +++ b/key.core.infflow/src/main/java/de/uka/ilkd/key/informationflow/rule/InfFlowWhileInvariantRule.java @@ -15,7 +15,7 @@ import de.uka.ilkd.key.informationflow.proof.init.StateVars; import de.uka.ilkd.key.informationflow.rule.tacletbuilder.InfFlowLoopInvariantTacletBuilder; import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.ldt.HeapLDT; import de.uka.ilkd.key.logic.*; import de.uka.ilkd.key.logic.label.ParameterlessTermLabel; @@ -251,7 +251,7 @@ private static JTerm buildAtPostVar(JTerm varTerm, String suffix, Services servi assert varTerm.op() instanceof LocationVariable; final TermBuilder tb = services.getTermBuilder(); - final KeYJavaType resultType = ((LocationVariable) varTerm.op()).getKeYJavaType(); + final TypeReference resultType = ((LocationVariable) varTerm.op()).getTypeReference(); if (!suffix.equalsIgnoreCase("")) { suffix = "_" + suffix; } @@ -269,7 +269,7 @@ private static JTerm buildBeforeVar(JTerm varTerm, Services services) { assert varTerm.op() instanceof LocationVariable; final TermBuilder tb = services.getTermBuilder(); - final KeYJavaType resultType = ((LocationVariable) varTerm.op()).getKeYJavaType(); + final TypeReference resultType = ((LocationVariable) varTerm.op()).getTypeReference(); final String name = tb.newName(varTerm + "_Before"); final LocationVariable varAtPreVar = new LocationVariable(new ProgramElementName(name), resultType); @@ -284,7 +284,7 @@ private static JTerm buildAfterVar(JTerm varTerm, Services services) { assert varTerm.op() instanceof LocationVariable; final TermBuilder tb = services.getTermBuilder(); - final KeYJavaType resultType = ((LocationVariable) varTerm.op()).getKeYJavaType(); + final TypeReference resultType = ((LocationVariable) varTerm.op()).getTypeReference(); final String name = tb.newName(varTerm + "_After"); final LocationVariable varAtPostVar = new LocationVariable(new ProgramElementName(name), resultType); @@ -302,7 +302,7 @@ private static ImmutableList buildLocalOutsAtPre(ImmutableList var for (final JTerm varTerm : varTerms) { assert varTerm.op() instanceof LocationVariable; - final KeYJavaType resultType = ((LocationVariable) varTerm.op()).getKeYJavaType(); + final TypeReference resultType = ((LocationVariable) varTerm.op()).getTypeReference(); final String name = tb.newName(varTerm + "_Before"); final LocationVariable varAtPostVar = @@ -324,7 +324,7 @@ private static ImmutableList buildLocalOutsAtPost(ImmutableList va for (final JTerm varTerm : varTerms) { assert varTerm.op() instanceof LocationVariable; - final KeYJavaType resultType = ((LocationVariable) varTerm.op()).getKeYJavaType(); + final TypeReference resultType = ((LocationVariable) varTerm.op()).getTypeReference(); final String name = tb.newName(varTerm + "_After"); final LocationVariable varAtPostVar = 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 index 1df059ea03d..af5ba39c17f 100644 --- 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 @@ -12,6 +12,7 @@ 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.reference.TypeRef; import de.uka.ilkd.key.java.ast.statement.MethodBodyStatement; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.ProgramElementName; @@ -244,7 +245,7 @@ protected IExecutionMethodReturnValue[] lazyComputeReturnValues() throws ProofIn if (!pm.isVoid()) { resultVar = new LocationVariable( new ProgramElementName(services.getTermBuilder().newName("TmpResultVar")), - pm.getReturnType()); + new TypeRef(pm.getReturnType())); } } if (resultVar != null) { 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 index 90b169143b8..a634003892e 100644 --- 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 @@ -13,6 +13,7 @@ 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.ast.reference.TypeRef; import de.uka.ilkd.key.java.visitor.ProgramVariableCollector; import de.uka.ilkd.key.logic.*; import de.uka.ilkd.key.logic.op.*; @@ -297,7 +298,7 @@ private JTerm computeTermForCondition(String condition) { // collect all variables needed to parse the condition setSelfVar(new LocationVariable( new ProgramElementName(getProof().getServices().getTermBuilder().newName("self")), - containerType, null, false, false)); + new TypeRef(containerType), null, false, false)); ImmutableList varsForCondition = ImmutableSLList.nil(); if (getPm() != null) { // collect parameter variables diff --git a/key.core.wd/src/main/java/de/uka/ilkd/key/wd/po/WellDefinednessPO.java b/key.core.wd/src/main/java/de/uka/ilkd/key/wd/po/WellDefinednessPO.java index 597cf841da4..646854f6d03 100644 --- a/key.core.wd/src/main/java/de/uka/ilkd/key/wd/po/WellDefinednessPO.java +++ b/key.core.wd/src/main/java/de/uka/ilkd/key/wd/po/WellDefinednessPO.java @@ -8,6 +8,7 @@ import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.reference.TypeRef; import de.uka.ilkd.key.ldt.HeapLDT; import de.uka.ilkd.key.logic.*; import de.uka.ilkd.key.logic.label.ParameterlessTermLabel; @@ -84,9 +85,9 @@ private static Function createAnonHeap(LocationVariable heap, Services services) private static LocationVariable createSelf(IProgramMethod pm, KeYJavaType selfKJT, TermServices services) { if (pm == null) { - return services.getTermBuilder().selfVar(selfKJT, false); + return services.getTermBuilder().selfVar(new TypeRef(selfKJT), false); } else { - return services.getTermBuilder().selfVar(pm, selfKJT, true); + return services.getTermBuilder().selfVar(pm, new TypeRef(selfKJT), true); } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/KeYJavaASTFactory.java b/key.core/src/main/java/de/uka/ilkd/key/java/KeYJavaASTFactory.java index 0523878dbb1..cc6900d2a3c 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/KeYJavaASTFactory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/KeYJavaASTFactory.java @@ -12,6 +12,7 @@ import de.uka.ilkd.key.java.ast.declaration.Modifier; import de.uka.ilkd.key.java.ast.declaration.ParameterDeclaration; import de.uka.ilkd.key.java.ast.declaration.VariableSpecification; +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.java.ast.expression.ArrayInitializer; import de.uka.ilkd.key.java.ast.expression.Expression; import de.uka.ilkd.key.java.ast.expression.ParenthesizedExpression; @@ -114,14 +115,6 @@ public static Expression attribute(ReferencePrefix prefix, ProgramVariable field return new FieldReference(field, prefix); } - /** - * creates a local variable declaration typeRef name; - */ - public static LocalVariableDeclaration declare(ProgramElementName name, TypeReference typeRef) { - return new LocalVariableDeclaration(typeRef, - new VariableSpecification(new LocationVariable(name, typeRef.getKeYJavaType()))); - } - /** * Create a local variable declaration without initialization. * @@ -131,15 +124,14 @@ public static LocalVariableDeclaration declare(ProgramElementName name, TypeRefe * * @param name * the {@link ProgramElementName} of the variable to be declared - * @param type - * the static {@link KeYJavaType} of the variable to be declared + * @param typeRef + * the static {@link TypeReference} of the variable to be declared * @return a new {@link LocalVariableDeclaration} of a variable with static type * type and name name */ public static LocalVariableDeclaration declare(final ProgramElementName name, - final KeYJavaType type) { - - return declare(name, null, type); + final TypeReference typeRef) { + return declare(name, null, typeRef); } /** @@ -149,9 +141,10 @@ public static LocalVariableDeclaration declare(final ProgramElementName name, */ public static LocalVariableDeclaration declare(ProgramElementName name, @Nullable Expression init, - KeYJavaType type) { - return new LocalVariableDeclaration(new TypeRef(type), - new VariableSpecification(new LocationVariable(name, type), init, type)); + TypeReference typeRef) { + return new LocalVariableDeclaration(typeRef, + new VariableSpecification(new LocationVariable(name, typeRef), init, + typeRef.getKeYJavaType())); } /** @@ -165,14 +158,14 @@ public static LocalVariableDeclaration declare(ProgramElementName name, * the named and typed {@link IProgramVariable} to be declared * @param init * the {@link Expression} var is initialized with - * @param type - * the static {@link KeYJavaType} of var + * @param typeRef + * the static {@link TypeReference} of var * @return a {@link LocalVariableDeclaration} of var with static type * type and initial value init */ public static LocalVariableDeclaration declare(IProgramVariable var, Expression init, - KeYJavaType type) { - return declare(new Modifier[0], var, init, type); + TypeReference typeRef) { + return declare(new Modifier[0], var, init, typeRef); } /** @@ -189,17 +182,17 @@ public static LocalVariableDeclaration declare(IProgramVariable var, Expression * the {@link String} on which the variable's unique name is based * @param initializer * the {@link Expression} the declared variable is initialized with - * @param type - * the static {@link KeYJavaType} of the to be declared variable + * @param typeRef + * the static {@link TypeReference} of the to be declared variable * @return a {@link LocalVariableDeclaration} of variable named uniquely after name * with static type type and initial value initializer */ public static LocalVariableDeclaration declare(final Services services, final String name, - final Expression initializer, final KeYJavaType type) { + final Expression initializer, final TypeReference typeRef) { final ProgramElementName uniqueName = services.getVariableNamer().getTemporaryNameProposal(name); - return declare(uniqueName, initializer, type); + return declare(uniqueName, initializer, typeRef); } /** @@ -211,31 +204,31 @@ public static LocalVariableDeclaration declare(final Services services, final St * * @param var * the named and typed {@link IProgramVariable} to be declared - * @param type - * the static {@link KeYJavaType} of var + * @param typeRef + * the static {@link TypeReference} of var * @return a {@link LocalVariableDeclaration} of var with static type * type */ - public static LocalVariableDeclaration declare(IProgramVariable var, KeYJavaType type) { - return declare(var, null, type); + public static LocalVariableDeclaration declare(IProgramVariable var, TypeReference typeRef) { + return declare(var, null, typeRef); } /** * create a local variable declaration */ - public static LocalVariableDeclaration declare(String name, KeYJavaType type) { - return new LocalVariableDeclaration(new TypeRef(type), - new VariableSpecification(new LocationVariable(new ProgramElementName(name), type))); + public static LocalVariableDeclaration declare(String name, TypeReference typeRef) { + return new LocalVariableDeclaration(typeRef, + new VariableSpecification(new LocationVariable(new ProgramElementName(name), typeRef))); } /** * create a parameter declaration */ - - public static ParameterDeclaration parameterDeclaration(JavaInfo javaInfo, KeYJavaType kjt, + public static ParameterDeclaration parameterDeclaration(JavaInfo javaInfo, + TypeReference typeRef, String name) { - return new ParameterDeclaration(new Modifier[0], javaInfo.createTypeReference(kjt), - new VariableSpecification(localVariable(name, kjt)), false); + return new ParameterDeclaration(new Modifier[0], typeRef, + new VariableSpecification(localVariable(name, typeRef)), false); } /** @@ -253,17 +246,18 @@ public static ParameterDeclaration parameterDeclaration(JavaInfo javaInfo, KeYJa * the named and typed {@link IProgramVariable} to be declared as parameter * @return a {@link ParameterDeclaration} of var with static type kjt */ - public static ParameterDeclaration parameterDeclaration(JavaInfo javaInfo, KeYJavaType kjt, + public static ParameterDeclaration parameterDeclaration(JavaInfo javaInfo, + TypeReference typeRef, IProgramVariable var) { - return new ParameterDeclaration(new Modifier[0], javaInfo.createTypeReference(kjt), + return new ParameterDeclaration(new Modifier[0], typeRef, new VariableSpecification(var), false); } public static ParameterDeclaration parameterDeclaration(JavaInfo javaInfo, String type, String name) { - KeYJavaType kjt = javaInfo.getKeYJavaType(type); - return new ParameterDeclaration(new Modifier[0], javaInfo.createTypeReference(kjt), - new VariableSpecification(localVariable(name, kjt)), false); + TypeReference typeRef = new TypeRef(javaInfo.getKeYJavaType(type)); + return new ParameterDeclaration(new Modifier[0], typeRef, + new VariableSpecification(localVariable(name, typeRef)), false); } /** @@ -297,15 +291,15 @@ public static PassiveExpression passiveExpression(final Expression expression) { /** * create a local variable */ - public static ProgramVariable localVariable(String name, KeYJavaType kjt) { - return localVariable(new ProgramElementName(name), kjt); + public static ProgramVariable localVariable(String name, TypeReference typeRef) { + return localVariable(new ProgramElementName(name), typeRef); } /** * create a local variable */ - public static LocationVariable localVariable(ProgramElementName name, KeYJavaType kjt) { - return new LocationVariable(name, kjt); + public static LocationVariable localVariable(ProgramElementName name, TypeReference typeRef) { + return new LocationVariable(name, typeRef); } /** @@ -315,26 +309,26 @@ public static LocationVariable localVariable(ProgramElementName name, KeYJavaTyp * the {@link Services} whose {@link VariableNamer} is used * @param name * the {@link String} on which the variable's unique name is based - * @param type - * the variable's static {@link KeYJavaType} + * @param typeRef + * the variable's static {@link TypeReference} * @return a new {@link ProgramVariable} of static type type and with a unique name * based on name */ public static ProgramVariable localVariable(final Services services, final String name, - final KeYJavaType type) { + final TypeReference typeRef) { // first check for a saved name for this variable final NameRecorder nameRecorder = services.getNameRecorder(); for (var prop : nameRecorder.getSetProposals()) { if (prop.toString().startsWith(name + VariableNamer.TEMP_INDEX_SEPARATOR)) { return localVariable(new ProgramElementName(prop.toString()), - type); + typeRef); } } final ProgramElementName uniqueName = services.getVariableNamer().getTemporaryNameProposal(name); nameRecorder.addProposal(new Name(uniqueName.getProgramName())); - return localVariable(uniqueName, type); + return localVariable(uniqueName, typeRef); } /** @@ -429,17 +423,16 @@ public static Catch catchClause(final ParameterDeclaration parameter, * the {@link JavaInfo} containing kjt * @param param * the {@link String} name of the exception object variable - * @param kjt - * the {@link KeYJavaType} of the exception object variable + * @param typeRef + * the {@link TypeReference} of the exception object variable * @param body * the {@link StatementBlock} catch clause body * @return a new {@link Catch} with parameter param of static type kjt * and body body */ - public static Catch catchClause(JavaInfo javaInfo, String param, KeYJavaType kjt, + public static Catch catchClause(JavaInfo javaInfo, String param, TypeReference typeRef, StatementBlock body) { - - return new Catch(parameterDeclaration(javaInfo, kjt, param), body); + return new Catch(parameterDeclaration(javaInfo, typeRef, param), body); } /** @@ -464,8 +457,7 @@ public static Catch catchClause(JavaInfo javaInfo, String param, KeYJavaType kjt */ public static Catch catchClause(JavaInfo javaInfo, String param, String type, StatementBlock body) { - - return catchClause(javaInfo, param, javaInfo.getKeYJavaType(type), body); + return catchClause(javaInfo, param, new TypeRef(javaInfo.getKeYJavaType(type)), body); } /** @@ -941,18 +933,18 @@ public static Instanceof instanceOf(final Expression expression, final KeYJavaTy * type variable = 0; * * - * @param type - * the static {@link KeYJavaType} of variable + * @param typeRef + * the static {@link TypeReference} of variable * @param variable * the named and typed {@link IProgramVariable} to be declared * @return a new {@link LocalVariableDeclaration} of variable with static type * type and initial value zero */ - public static LocalVariableDeclaration declareZero(final KeYJavaType type, + public static LocalVariableDeclaration declareZero(final TypeReference typeRef, final IProgramVariable variable) { final IntLiteral zeroLiteral = zeroLiteral(); - return declare(variable, zeroLiteral, type); + return declare(variable, zeroLiteral, typeRef); } /** @@ -962,8 +954,8 @@ public static LocalVariableDeclaration declareZero(final KeYJavaType type, * type variable = reference.method(); * * - * @param type - * the static {@link KeYJavaType} of variable + * @param typeRef + * the static {@link TypeReference} of variable * @param variable * the named and typed {@link IProgramVariable} to be declared * @param reference @@ -973,11 +965,11 @@ public static LocalVariableDeclaration declareZero(final KeYJavaType type, * @return a new {@link LocalVariableDeclaration} of variable with static type * type and initial value reference.method() */ - public static LocalVariableDeclaration declareMethodCall(final KeYJavaType type, + public static LocalVariableDeclaration declareMethodCall(final TypeReference typeRef, final IProgramVariable variable, final ReferencePrefix reference, final String method) { final MethodReference call = methodCall(reference, method); - return declare(variable, call, type); + return declare(variable, call, typeRef); } /** @@ -1150,15 +1142,16 @@ public static ILoopInit loopInit(final LoopInitializer init) { * type variable = 0 * * - * @param type - * the static {@link KeYJavaType} of variable + * @param typeRef + * the static {@link TypeReference} of variable * @param variable * the named and typed {@link IProgramVariable} to be declared * @return a new {@link ILoopInit} that declares variable variable with static type * type and initial value zero */ - public static ILoopInit loopInitZero(final KeYJavaType type, final IProgramVariable variable) { - final LoopInitializer initializer = declareZero(type, variable); + public static ILoopInit loopInitZero(final TypeReference typeRef, + final IProgramVariable variable) { + final LoopInitializer initializer = declareZero(typeRef, variable); return loopInit(initializer); } @@ -1498,7 +1491,6 @@ public static CopyAssignment assignArrayField(final ProgramVariable variable, * @return a new {@link LocalVariableDeclaration} as defined by parameters */ public static LocalVariableDeclaration declare(final ExtList parameters) { - return new LocalVariableDeclaration(parameters); } @@ -1517,7 +1509,6 @@ public static LocalVariableDeclaration declare(final ExtList parameters) { * @return a new {@link LocalVariableDeclaration} of variable */ public static LocalVariableDeclaration declare(final IProgramVariable variable) { - return declare(variable, (Expression) null); } @@ -1539,9 +1530,9 @@ public static LocalVariableDeclaration declare(final IProgramVariable variable) */ public static LocalVariableDeclaration declare(final IProgramVariable variable, final Expression init) { - final KeYJavaType type = variable.getKeYJavaType(); + final TypeReference typeRef = variable.getTypeReference(); - return declare(variable, init, type); + return declare(variable, init, typeRef); } /** @@ -1557,16 +1548,16 @@ public static LocalVariableDeclaration declare(final IProgramVariable variable, * the named and typed {@link IProgramVariable} to be declared * @param init * the {@link Expression} variable is initialized with - * @param type - * the static {@link KeYJavaType} of variable + * @param typeRef + * the static {@link TypeReference} of variable * @return a new {@link LocalVariableDeclaration} of variable with static type * type and initial value init */ public static LocalVariableDeclaration declare(final Modifier modifier, - final IProgramVariable variable, final Expression init, final KeYJavaType type) { + final IProgramVariable variable, final Expression init, final TypeReference typeRef) { final ImmutableArray modifiers = new ImmutableArray<>(modifier); - return declare(modifiers, variable, init, type); + return declare(modifiers, variable, init, typeRef); } /** @@ -1582,41 +1573,16 @@ public static LocalVariableDeclaration declare(final Modifier modifier, * the named and typed {@link IProgramVariable} to be declared * @param init * the {@link Expression} variable is initialized with - * @param type - * the static {@link KeYJavaType} of variable + * @param typeRef + * the static {@link TypeReference} of variable * @return a new {@link LocalVariableDeclaration} of variable with static type * type and initial value init */ public static LocalVariableDeclaration declare(final Modifier[] modifiers, - final IProgramVariable variable, final Expression init, final KeYJavaType type) { + final IProgramVariable variable, final Expression init, final TypeReference typeRef) { final ImmutableArray m = new ImmutableArray<>(modifiers); - return declare(m, variable, init, type); - } - - /** - * Create a local variable declaration with an arbitrary number of modifiers. - * - *
-     * modifiers type variable = init;
-     * 
- * - * @param modifiers - * the {@link Modifier}s - * @param variable - * the named and typed {@link IProgramVariable} to be declared - * @param init - * the {@link Expression} variable is initialized with - * @param type - * the static {@link KeYJavaType} of variable - * @return a new {@link LocalVariableDeclaration} of variable with static type - * type and initial value init - */ - public static LocalVariableDeclaration declare(final ImmutableArray modifiers, - final IProgramVariable variable, final Expression init, final KeYJavaType type) { - final TypeRef typeRef = new TypeRef(type); - - return declare(modifiers, variable, init, typeRef); + return declare(m, variable, init, typeRef); } /** @@ -1996,6 +1962,8 @@ public static Finally finallyBlock(final StatementBlock body) { * the type's {@link ProgramElementName} * @param dimensions * the type's dimensions + * @param annotations + * the type's annotations * @param typePrefix * the type's {@link ReferencePrefix} * @param baseType @@ -2006,8 +1974,10 @@ public static Finally finallyBlock(final StatementBlock body) { public static ProgramElement declare(final ImmutableArray modifiers, final IProgramVariable variable, final Expression init, final ProgramElementName typeName, final int dimensions, + final ImmutableArray annotations, final ReferencePrefix typePrefix, final KeYJavaType baseType) { - final TypeRef typeRef = new TypeRef(typeName, dimensions, typePrefix, baseType); + final TypeRef typeRef = + new TypeRef(typeName, annotations, dimensions, typePrefix, baseType); return declare(modifiers, variable, init, typeRef); } @@ -2700,11 +2670,13 @@ public static TypeRef typeRef(final KeYJavaType type) { * the base {@link KeYJavaType} * @param dimensions * the number of dimensions + * @param annotations + * the {@link ImmutableArray} of {@link AnnotationExpression}s * @return a new {@link TypeRef} for dimensions dimensions of type */ - public static TypeRef typeRef(final KeYJavaType type, final int dimensions) { - - return new TypeRef(type, dimensions); + public static TypeRef typeRef(final KeYJavaType type, final int dimensions, + final ImmutableArray annotations) { + return new TypeRef(type, annotations, dimensions); } /** diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/KeYProgModelInfo.java b/key.core/src/main/java/de/uka/ilkd/key/java/KeYProgModelInfo.java index b9b08ef1ff3..f0215c676d0 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/KeYProgModelInfo.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/KeYProgModelInfo.java @@ -238,7 +238,7 @@ public List getAllProgramMethodsLocallyDeclared(KeYJavaType ct) { var refType = type.asReferenceType(); - // methods for annotation declarations are currently not implemented in + // methods for annotation declarations are currently not implemented in // javaparser if (refType.getTypeDeclaration() .map(d -> d instanceof JavaParserAnnotationDeclaration) diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/AnnotatedType.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/AnnotatedType.java deleted file mode 100644 index de6ab5f4e7d..00000000000 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/AnnotatedType.java +++ /dev/null @@ -1,38 +0,0 @@ -package de.uka.ilkd.key.java.ast.abstraction; - -import org.key_project.util.collection.ImmutableArray; - -import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; -import de.uka.ilkd.key.java.ast.expression.literal.Literal; - -public class AnnotatedType implements Type { - private Type subType; - private ImmutableArray annotations; - - public AnnotatedType(Type subType, - ImmutableArray annotations) { - assert subType.getAnnotations().size() == 0; - this.subType = subType; - this.annotations = annotations; - } - - @Override - public String getFullName() { - return subType.getFullName(); - } - - @Override - public String getName() { - return subType.getName(); - } - - @Override - public Literal getDefaultValue() { - return subType.getDefaultValue(); - } - - @Override - public ImmutableArray getAnnotations() { - return annotations; - } -} diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/KeYJavaType.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/KeYJavaType.java index fc3f5ecb264..dada936367e 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/KeYJavaType.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/KeYJavaType.java @@ -7,16 +7,12 @@ import java.util.Objects; import java.util.Optional; -import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.java.ast.expression.literal.Literal; import de.uka.ilkd.key.java.ast.reference.PackageReference; import de.uka.ilkd.key.ldt.JavaDLTheory; import de.uka.ilkd.key.logic.ProgramElementName; import org.key_project.logic.sort.Sort; -import org.key_project.util.collection.ImmutableArray; - -import com.github.javaparser.ast.expr.AnnotationExpr; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @@ -85,17 +81,6 @@ public void setSort(@Nullable Sort s) { return javaType.getDefaultValue(); } - /** - * @return null if this is not a real Java type and else its annotations. - */ - public @Nullable ImmutableArray getAnnotations() { - if (javaType == null) { - return null; - } - - return javaType.getAnnotations(); - } - public String toString() { if (this == VOID_TYPE) { return "KeYJavaType:void"; diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/Type.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/Type.java index 8c937e4e849..4d458734394 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/Type.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/Type.java @@ -3,9 +3,7 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.java.ast.abstraction; -import org.key_project.util.collection.ImmutableArray; -import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.java.ast.expression.literal.Literal; /** @@ -22,9 +20,4 @@ public interface Type extends ProgramModelElement { * @return the default value of the given type according to JLS Sect. 4.5.5 */ Literal getDefaultValue(); - - /** - * @return the list of annotations tied to the type - */ - ImmutableArray getAnnotations(); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/AnnotationInterfaceDeclaration.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/AnnotationInterfaceDeclaration.java index cd327ca04b2..3afdd89cf4b 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/AnnotationInterfaceDeclaration.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/AnnotationInterfaceDeclaration.java @@ -4,15 +4,17 @@ package de.uka.ilkd.key.java.ast.declaration; import java.util.List; -import de.uka.ilkd.key.logic.ProgramElementName; + import de.uka.ilkd.key.java.ast.*; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.visitor.Visitor; +import de.uka.ilkd.key.logic.ProgramElementName; +import de.uka.ilkd.key.speclang.jml.pretranslation.TextualJMLConstruct; import org.key_project.util.collection.ImmutableArray; import org.key_project.util.collection.ImmutableList; + import org.jspecify.annotations.NonNull; -import de.uka.ilkd.key.speclang.jml.pretranslation.TextualJMLConstruct; -import de.uka.ilkd.key.java.visitor.Visitor; public class AnnotationInterfaceDeclaration extends TypeDeclaration { @@ -23,7 +25,7 @@ public AnnotationInterfaceDeclaration( ImmutableArray members, boolean parentIsInterfaceDeclaration, boolean isLibrary, List jmlAttachments) { super(pi, comments, modArray, name, fullName, members, parentIsInterfaceDeclaration, - isLibrary, ImmutableList.fromList(jmlAttachments)); + isLibrary, ImmutableList.fromList(jmlAttachments)); } /** @@ -50,9 +52,12 @@ public void visit(Visitor v) { */ public int getChildCount() { int result = 0; - if (modArray != null) result += modArray.size(); - if (name != null) result++; - if (members != null) result += members.size(); + if (modArray != null) + result += modArray.size(); + if (name != null) + result++; + if (members != null) + result += members.size(); return result; } @@ -67,14 +72,17 @@ public ProgramElement getChildAt(int index) { int len; if (modArray != null) { len = modArray.size(); - if (len > index) return modArray.get(index); + if (len > index) + return modArray.get(index); index -= len; } if (name != null) { - if (index == 0) return name; + if (index == 0) + return name; index--; } - if (members != null) return members.get(index); + if (members != null) + return members.get(index); throw new ArrayIndexOutOfBoundsException(); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/TypeDeclaration.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/TypeDeclaration.java index 76e23d28103..f1c179898e2 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/TypeDeclaration.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/TypeDeclaration.java @@ -9,8 +9,8 @@ import de.uka.ilkd.key.java.ast.*; import de.uka.ilkd.key.java.ast.abstraction.*; import de.uka.ilkd.key.java.ast.abstraction.Package; -import de.uka.ilkd.key.java.ast.expression.literal.NullLiteral; import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; +import de.uka.ilkd.key.java.ast.expression.literal.NullLiteral; import de.uka.ilkd.key.logic.ProgramElementName; import de.uka.ilkd.key.speclang.jml.JMLInfoExtractor; import de.uka.ilkd.key.speclang.jml.pretranslation.TextualJMLConstruct; diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/VariableDeclaration.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/VariableDeclaration.java index c51580e7788..19a1c55b590 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/VariableDeclaration.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/VariableDeclaration.java @@ -28,7 +28,6 @@ public abstract class VariableDeclaration extends JavaDeclaration /** * Type reference. */ - protected final TypeReference typeReference; /** @@ -41,7 +40,6 @@ public abstract class VariableDeclaration extends JavaDeclaration /** * Variable declaration. */ - protected VariableDeclaration() { typeReference = null; parentIsInterfaceDeclaration = false; diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/AnnotationExpression.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/AnnotationExpression.java index 8860767b985..57b8360dee3 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/AnnotationExpression.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/AnnotationExpression.java @@ -5,15 +5,15 @@ import de.uka.ilkd.key.java.*; import de.uka.ilkd.key.java.ast.*; -import de.uka.ilkd.key.java.ast.reference.ExecutionContext; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.reference.ExecutionContext; import de.uka.ilkd.key.java.visitor.Visitor; public abstract class AnnotationExpression extends JavaNonTerminalProgramElement -implements Expression, ExpressionContainer { + implements Expression, ExpressionContainer { protected final KeYJavaType kjt; - + public AnnotationExpression(KeYJavaType kjt) { this.kjt = kjt; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/annotation/MarkerAnnotation.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/annotation/MarkerAnnotation.java index d6b6087ce20..f902211fea1 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/annotation/MarkerAnnotation.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/annotation/MarkerAnnotation.java @@ -1,3 +1,6 @@ +/* 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.java.ast.expression.annotation; import de.uka.ilkd.key.java.ast.*; diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/DLEmbeddedExpression.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/DLEmbeddedExpression.java index db245659e60..031b4d9b939 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/DLEmbeddedExpression.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/DLEmbeddedExpression.java @@ -121,7 +121,7 @@ public void check(Services javaServ, KeYJavaType containingClass) throws Convert final ProgramElementName programName = qualifier.isEmpty() ? new ProgramElementName(name) : new ProgramElementName(name, qualifier); - TypeRef tr = new TypeRef(programName, 0, null, containingClass); + TypeRef tr = new TypeRef(programName, new ImmutableArray<>(), 0, null, containingClass); ExecutionContext ec = new ExecutionContext(tr, null, null); for (int i = 0; i < actual; i++) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/ReferencePrefix.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/ReferencePrefix.java index c99cac7c3a1..ad00443a7a5 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/ReferencePrefix.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/ReferencePrefix.java @@ -13,5 +13,4 @@ public interface ReferencePrefix extends ProgramElement { ReferencePrefix getReferencePrefix(); - } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/SchemaTypeReference.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/SchemaTypeReference.java index 8f1211de06b..fb05f1d8c2c 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/SchemaTypeReference.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/SchemaTypeReference.java @@ -12,13 +12,15 @@ import de.uka.ilkd.key.rule.AbstractProgramElement; import de.uka.ilkd.key.rule.MatchConditions; +import org.key_project.util.collection.ImmutableArray; + public class SchemaTypeReference extends TypeReferenceImp implements AbstractProgramElement { private final String fullName; public SchemaTypeReference(ProgramElementName name, int dimension, ReferencePrefix prefix) { - super(name, dimension, prefix); + super(name, new ImmutableArray<>(), dimension, prefix); final StringBuilder sb = new StringBuilder(); // as no inner classes prefix must be package reference @@ -31,6 +33,7 @@ public SchemaTypeReference(ProgramElementName name, int dimension, ReferencePref fullName = sb.toString(); } + @Override public KeYJavaType getKeYJavaType() { return null; } @@ -42,10 +45,12 @@ public KeYJavaType getKeYJavaType(Services services) { return kjt; } + @Override public ProgramElement getConcreteProgramElement(Services services) { return new TypeRef(getKeYJavaType(services)); } + @Override public MatchConditions match(SourceData source, MatchConditions matchCond) { ProgramElement t = source.getSource(); if (t instanceof TypeReference) { @@ -65,6 +70,7 @@ public MatchConditions match(SourceData source, MatchConditions matchCond) { * @param v * the Visitor */ + @Override public void visit(Visitor v) { v.performActionOnAbstractProgramElement(this); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/SchematicFieldReference.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/SchematicFieldReference.java index 0a83f703864..39fae03c8bc 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/SchematicFieldReference.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/SchematicFieldReference.java @@ -22,8 +22,7 @@ * * @author AutoDoc */ -public class SchematicFieldReference extends FieldReference - implements MemberReference, ReferenceSuffix, TypeReferenceContainer, ExpressionContainer { +public class SchematicFieldReference extends FieldReference { private static final ProgramVariable SCHEMA_VARIABLE = new LocationVariable(new ProgramElementName("SCHEMA_VARIABLE_IGNORE"), JavaDLTheory.ANY); @@ -95,7 +94,6 @@ public ReferenceSuffix getReferenceSuffix() { return (ProgramSV) schemaVariable; } - /** * Set reference prefix. * @@ -105,7 +103,6 @@ public ReferencePrefix setReferencePrefix(ReferencePrefix rp) { return new SchematicFieldReference(schemaVariable, rp); } - /** * Return the type reference at the specified index in this node's "virtual" type reference * array. @@ -164,7 +161,6 @@ public void visit(Visitor v) { v.performActionOnSchematicFieldReference(this); } - public MatchConditions match(SourceData source, MatchConditions matchCond) { ProgramElement src = source.getSource(); if (!(src instanceof FieldReference)) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeRef.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeRef.java index a008f4a6170..cbb44c242a7 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeRef.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeRef.java @@ -3,14 +3,16 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.java.ast.reference; - +import static de.uka.ilkd.key.java.KeYJavaASTFactory.throwClause; import java.util.Objects; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.logic.ProgramElementName; import org.key_project.util.ExtList; +import org.key_project.util.collection.ImmutableArray; import org.jspecify.annotations.NonNull; @@ -21,33 +23,36 @@ public class TypeRef extends TypeReferenceImp { /** * creates a type reference for the given KeYJavaType with dimension 0 and creates a suitable * package reference prefix from the KeYJavaType. If this is not desired use the constructor - * TypeRef(ProgramElementName, int, ReferencePrefix, KeYJavaType) and take null as last + * TypeRef(ProgramElementName, ImmutableArray, int, ReferencePrefix, + * KeYJavaType) and take null as last * argument. */ public TypeRef(@NonNull KeYJavaType kjt) { - this(kjt, 0); + this(kjt, new ImmutableArray<>(), 0); } /** * creates a type reference for the given KeYJavaType and the given dimension and creates a * suitable package reference prefix from the KeYJavaType. If this is not desired use the - * constructor TypeRef(ProgramElementName, int, ReferencePrefix, KeYJavaType) and take null as + * constructor TypeRef(ProgramElementName, ImmutableArray, int, + * ReferencePrefix, KeYJavaType) and take null as * last argument. */ - public TypeRef(@NonNull KeYJavaType kjt, int dim) { - super(new ProgramElementName(kjt.getName()), dim, kjt.createPackagePrefix()); + public TypeRef(@NonNull KeYJavaType kjt, ImmutableArray annotations, + int dim) { + super(new ProgramElementName(kjt.getName()), annotations, dim, kjt.createPackagePrefix()); this.kjt = kjt; } - public TypeRef(ExtList children, KeYJavaType kjt, int dim) { super(children, dim); this.kjt = kjt; } - public TypeRef(ProgramElementName name, int dimension, ReferencePrefix prefix, + public TypeRef(ProgramElementName name, ImmutableArray annotations, + int dimension, ReferencePrefix prefix, KeYJavaType kjt) { - super(name, dimension, prefix); + super(name, annotations, dimension, prefix); this.kjt = kjt; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeReference.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeReference.java index e28114bea09..de0513e6e02 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeReference.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeReference.java @@ -3,11 +3,12 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.java.ast.reference; -import de.uka.ilkd.key.java.ast.NonTerminalProgramElement; -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.AnnotationExpression; import de.uka.ilkd.key.logic.ProgramElementName; +import org.key_project.util.collection.ImmutableArray; + /** * TypeReferences reference Types by name. A TypeReference can refer to * an outer or inner type and hence can also be a {@link MemberReference}, but does not have to. A @@ -16,7 +17,7 @@ * {@link TypeReferenceContainer}. */ public interface TypeReference extends TypeReferenceInfix, TypeReferenceContainer, - PackageReferenceContainer, MemberReference, NonTerminalProgramElement, SourceElement { + PackageReferenceContainer, MemberReference { String getName(); @@ -27,4 +28,6 @@ public interface TypeReference extends TypeReferenceInfix, TypeReferenceContaine int getDimensions(); KeYJavaType getKeYJavaType(); + + ImmutableArray getAnnotations(); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeReferenceImp.java b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeReferenceImp.java index a0d4f71f143..555c3e0fd60 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeReferenceImp.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/TypeReferenceImp.java @@ -5,12 +5,14 @@ import de.uka.ilkd.key.java.ast.*; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; import de.uka.ilkd.key.java.ast.expression.Expression; import de.uka.ilkd.key.java.visitor.Visitor; import de.uka.ilkd.key.logic.ProgramElementName; import de.uka.ilkd.key.rule.MatchConditions; import org.key_project.util.ExtList; +import org.key_project.util.collection.ImmutableArray; /** * TypeReferences reference Types by name. A TypeReference can refer to @@ -39,6 +41,11 @@ public abstract class TypeReferenceImp extends JavaNonTerminalProgramElement */ protected final ProgramElementName name; + /** + * Annotations. + */ + protected final ImmutableArray annotations; + /** * Constructor for the transformation of RECODER ASTs to KeY. @@ -54,21 +61,28 @@ protected TypeReferenceImp(ExtList children, int dim) { super(children); prefix = children.get(ReferencePrefix.class); name = children.get(ProgramElementName.class); + annotations = new ImmutableArray<>( + children.collect(AnnotationExpression.class)); dimensions = dim; } protected TypeReferenceImp(ProgramElementName name) { - this(name, 0, null); + this(name, new ImmutableArray<>(), 0, null); } - protected TypeReferenceImp(ProgramElementName name, int dimension, ReferencePrefix prefix) { + protected TypeReferenceImp( + ProgramElementName name, + ImmutableArray annotations, + int dimension, + ReferencePrefix prefix) { this.name = name; + this.annotations = annotations; this.dimensions = dimension; this.prefix = prefix; } - + @Override public SourceElement getFirstElement() { return (prefix == null) ? name : prefix.getFirstElement(); } @@ -83,6 +97,7 @@ public SourceElement getFirstElementIncludingBlocks() { * * @return an int giving the number of children of this node */ + @Override public int getChildCount() { int result = 0; if (prefix != null) { @@ -103,6 +118,7 @@ public int getChildCount() { * @exception ArrayIndexOutOfBoundsException * if index is out of bounds */ + @Override public ProgramElement getChildAt(int index) { if (prefix != null) { if (index == 0) { @@ -118,11 +134,17 @@ public ProgramElement getChildAt(int index) { throw new ArrayIndexOutOfBoundsException(); } + @Override + public ImmutableArray getAnnotations() { + return annotations; + } + /** * Get the number of type references in this container. * * @return the number of type references. */ + @Override public int getTypeReferenceCount() { return (prefix instanceof TypeReference) ? 1 : 0; } @@ -137,6 +159,7 @@ public int getTypeReferenceCount() { * * @exception ArrayIndexOutOfBoundsException if index is out of bounds. */ + @Override public TypeReference getTypeReferenceAt(int index) { if (prefix instanceof TypeReference && index == 0) { return (TypeReference) prefix; @@ -149,6 +172,7 @@ public TypeReference getTypeReferenceAt(int index) { * * @return the number of expressions. */ + @Override public int getExpressionCount() { return (prefix instanceof Expression) ? 1 : 0; } @@ -162,6 +186,7 @@ public int getExpressionCount() { * * @exception ArrayIndexOutOfBoundsException if index is out of bounds. */ + @Override public Expression getExpressionAt(int index) { if (prefix instanceof Expression && index == 0) { return (Expression) prefix; @@ -174,6 +199,7 @@ public Expression getExpressionAt(int index) { * * @return the reference prefix. */ + @Override public ReferencePrefix getReferencePrefix() { return prefix; } @@ -183,6 +209,7 @@ public ReferencePrefix getReferencePrefix() { * * @return the package reference. */ + @Override public PackageReference getPackageReference() { return (prefix instanceof PackageReference) ? (PackageReference) prefix : null; } @@ -192,6 +219,7 @@ public PackageReference getPackageReference() { * * @return the int value. */ + @Override public int getDimensions() { return dimensions; } @@ -201,10 +229,12 @@ public int getDimensions() { * * @return the string. */ + @Override public final String getName() { return (name == null) ? null : name.toString(); } + @Override public abstract KeYJavaType getKeYJavaType(); /** @@ -212,12 +242,11 @@ public final String getName() { * * @return the identifier. */ - + @Override public ProgramElementName getProgramElementName() { return name; } - /** * calls the corresponding method of a visitor in order to perform some action/transformation on * this element @@ -225,11 +254,12 @@ public ProgramElementName getProgramElementName() { * @param v * the Visitor */ + @Override public void visit(Visitor v) { v.performActionOnTypeReference(this); } - + @Override public MatchConditions match(SourceData source, MatchConditions matchCond) { final ProgramElement pe = source.getSource(); if (!(pe instanceof TypeReference) diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/loader/CreateArrayMethodBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/java/loader/CreateArrayMethodBuilder.java index 7275fe5f2b0..e5d189e2997 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/loader/CreateArrayMethodBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/loader/CreateArrayMethodBuilder.java @@ -71,7 +71,7 @@ public final class CreateArrayMethodBuilder extends KeYJavaASTFactory { /** * keeps the currently used integer type */ - private final KeYJavaType integerType; + private final TypeReference integerType; /** * stores the currently used object type @@ -87,7 +87,7 @@ public final class CreateArrayMethodBuilder extends KeYJavaASTFactory { /** create the method builder for array implict creation methods */ public CreateArrayMethodBuilder(KeYJavaType integerType, KeYJavaType objectType, Sort heapSort, int heapCount) { - this.integerType = integerType; + this.integerType = new TypeRef(integerType); this.objectType = objectType; this.heapSort = heapSort; this.heapCount = heapCount; @@ -218,7 +218,7 @@ public IProgramMethod getArrayInstanceAllocatorMethod(TypeReference arrayTypeRef new LocationVariable(new ProgramElementName("length"), integerType, true); final ParameterDeclaration param = new ParameterDeclaration(new Modifier[0], - new TypeRef(integerType), new VariableSpecification(paramLength), false); + integerType, new VariableSpecification(paramLength), false); final MethodDeclaration md = new MethodDeclaration(modifiers, arrayTypeReference, new ProgramElementName(PipelineConstants.IMPLICIT_INSTANCE_ALLOCATE), @@ -341,7 +341,7 @@ public IProgramMethod getCreateArrayMethod(TypeReference arrayTypeReference, new LocationVariable(new ProgramElementName("length"), integerType); final ParameterDeclaration param = new ParameterDeclaration(new Modifier[0], - new TypeRef(integerType), new VariableSpecification(paramLength), false); + integerType, new VariableSpecification(paramLength), false); final MethodDeclaration md = new MethodDeclaration(modifiers, arrayTypeReference, new ProgramElementName(IMPLICIT_ARRAY_CREATE), new ParameterDeclaration[] { param }, diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java index 30529b35a2e..979c0779e1f 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java @@ -12,17 +12,16 @@ import de.uka.ilkd.key.java.ast.*; import de.uka.ilkd.key.java.ast.CompilationUnit; import de.uka.ilkd.key.java.ast.Statement; -import de.uka.ilkd.key.java.ast.abstraction.AnnotatedType; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; import de.uka.ilkd.key.java.ast.ccatch.*; import de.uka.ilkd.key.java.ast.declaration.*; import de.uka.ilkd.key.java.ast.declaration.TypeDeclaration; import de.uka.ilkd.key.java.ast.declaration.modifier.*; -import de.uka.ilkd.key.java.ast.expression.annotation.MarkerAnnotation; import de.uka.ilkd.key.java.ast.expression.ArrayInitializer; import de.uka.ilkd.key.java.ast.expression.Expression; import de.uka.ilkd.key.java.ast.expression.ParenthesizedExpression; import de.uka.ilkd.key.java.ast.expression.PassiveExpression; +import de.uka.ilkd.key.java.ast.expression.annotation.MarkerAnnotation; import de.uka.ilkd.key.java.ast.expression.literal.*; import de.uka.ilkd.key.java.ast.expression.operator.*; import de.uka.ilkd.key.java.ast.expression.operator.adt.*; @@ -719,38 +718,18 @@ public Object visit(FieldAccessExpr n, Void arg) { @Override public Object visit(TypeExpr n, Void arg) { - return new TypeRef(getKeYJavaType(n.getType())); - } - - private KeYJavaType getCachedKeYJavaType(Type type) { - var kjt = getCachedKeYJavaType(type.resolve()); - annotate(type, kjt); - return kjt; + return new TypeRef(getKeYJavaType(n.getType().resolve()), map(n.getType().getAnnotations()), + 0); } private KeYJavaType getCachedKeYJavaType(ResolvedType rtype) { return typeConverter.getKeYJavaType(rtype, false); } - private KeYJavaType getKeYJavaType(Type type) { - var kjt = getKeYJavaType(type.resolve()); - annotate(type, kjt); - return kjt; - } - private KeYJavaType getKeYJavaType(ResolvedType rtype) { return typeConverter.getKeYJavaType(rtype, false); } - private void annotate(Type type, KeYJavaType kjt) { - if (kjt.getAnnotations().size() != 0) return; - - var annotations = type.annotations(); - if (annotations.size() != 0) { - kjt.setJavaType(new AnnotatedType(kjt.getJavaType(), map(annotations))); - } - } - private ClassOrInterfaceDeclaration getContainingClass(Node node) { if (node instanceof ClassOrInterfaceDeclaration) { node = node.getParentNode().orElse(null); @@ -1157,7 +1136,7 @@ private static ReferencePrefix convertScopeToReferencePrefix(ClassOrInterfaceTyp type.getScope().map(JP2KeYVisitor::convertScopeToReferencePrefix).orElse(null); var name = createProgramElementName(type.getName()); KeYJavaType resolvedType = getKeYJavaType(type.resolve()); - return new TypeRef(name, 0, prefix, resolvedType); + return new TypeRef(name, map(type.getAnnotations()), 0, prefix, resolvedType); } private ParameterDeclaration visitNoMap(Parameter n) { @@ -1180,7 +1159,7 @@ private ParameterDeclaration visitNoMap(Parameter n) { pv = (IProgramVariable) lookupSchemaVariable(n.getName()); } else { var name = VariableNamer.parseName(n.getName().asString()); - pv = new LocationVariable(name, type.getKeYJavaType(), n.isFinal()); + pv = new LocationVariable(name, type, n.isFinal()); } var spec = new VariableSpecification(pi, c, null, pv, 0, type.getKeYJavaType()); var isInInterface = parentIsInterface(n); @@ -1196,7 +1175,7 @@ public Object visit(Parameter n, Void arg) { @Override public TypeReference visit(PrimitiveType n, Void arg) { - return new TypeRef(getKeYJavaType(n)); + return new TypeRef(getKeYJavaType(n.resolve()), map(n.getAnnotations()), 0); } @Override @@ -1221,7 +1200,7 @@ public Object visit(ArrayType n, Void arg) { } catch (IllegalStateException e) { System.out.println(e); } - return new TypeRef(getKeYJavaType(n)); + return new TypeRef(getKeYJavaType(n.resolve()), map(n.getAnnotations()), 0); } @Override @@ -1404,16 +1383,16 @@ private VariableSpecification visitVariableSpecification(TypeReference type, var c = createComments(v); Expression init = accepto(v.getInitializer()); IProgramVariable pv; - KeYJavaType kjt = type.getKeYJavaType(); if (v.getNameAsString().startsWith("#")) { pv = (IProgramVariable) lookupSchemaVariable(v.getNameAsString(), v); } else { var name = VariableNamer.parseName(v.getNameAsString()); - pv = new LocationVariable(name, kjt, modifiers.hasModifier(JML_GHOST), + pv = new LocationVariable(name, type, modifiers.hasModifier(JML_GHOST), modifiers.hasModifier(FINAL)); } - return addToMapping(v, new VariableSpecification(pi, c, init, pv, 0, kjt)); + return addToMapping(v, + new VariableSpecification(pi, c, init, pv, 0, type.getKeYJavaType())); } /** @@ -1498,11 +1477,11 @@ private ProgramVariable getProgramVariableForFieldSpecification(FullVariableDecl final Literal compileTimeConstant = getCompileTimeConstantInitializer(decl); if (compileTimeConstant == null) { - pv = new LocationVariable(pen, getKeYJavaType(t), + pv = new LocationVariable(pen, accept(t), getKeYJavaType(classType), decl.isStatic, decl.isModel, decl.isGhost, decl.isFinal); } else { - pv = new ProgramConstant(pen, getKeYJavaType(t), + pv = new ProgramConstant(pen, accept(t), getKeYJavaType(classType), decl.isStatic, compileTimeConstant); } @@ -1532,9 +1511,8 @@ private FieldSpecification visitFieldSpecification(FullVariableDeclarator v) { var pi = createPositionInfo(v.decl); var c = createComments(v.decl); Expression init = accepto(v.decl.getInitializer()); - var type = getKeYJavaType(v.decl.getType()); var pv = getProgramVariableForFieldSpecification(v); - return new FieldSpecification(pi, c, init, pv, 0, type); + return new FieldSpecification(pi, c, init, pv, 0, accept(v.decl.getType())); } @Override @@ -1545,7 +1523,7 @@ public Object visit(VariableDeclarator n, Void arg) { @Override public Object visit(VoidType n, Void arg) { - return new TypeRef(getKeYJavaType(n)); + return new TypeRef(getKeYJavaType(n.resolve()), map(n.annotations()), 0); } @Override @@ -2081,7 +2059,7 @@ public Object visit(AnnotationDeclaration n, Void arg) { ProgramElementName name = createProgramElementName(n.getName()); ProgramElementName fullName = new ProgramElementName(n.getFullyQualifiedName().get()); - + boolean isLibrary = mapping.isParsingLibraries(); boolean parentIsInterface = false; @@ -2090,8 +2068,8 @@ public Object visit(AnnotationDeclaration n, Void arg) { ImmutableArray members = map(n.getMembers()); TypeDeclaration td = new AnnotationInterfaceDeclaration( - pi, c, modArray, name, fullName, members, - parentIsInterface, isLibrary, getClassSpec(n)); + pi, c, modArray, name, fullName, members, + parentIsInterface, isLibrary, getClassSpec(n)); kjt.setJavaType(td); mapping.registerType(ref, kjt); @@ -2197,7 +2175,7 @@ public Object visit(ReceiverParameter n, Void arg) { @Override public Object visit(VarType n, Void arg) { - return getKeYJavaType(n); + return new TypeRef(getKeYJavaType(n.resolve()), map(n.getAnnotations()), 0); } @Override diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYTypeConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYTypeConverter.java index 866369a5b24..f936c1696ab 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYTypeConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYTypeConverter.java @@ -397,6 +397,7 @@ private ArrayDeclaration createArrayType(KeYJavaType baseType, KeYJavaType array baseTypeRef = new TypeRef(baseType); } else { baseTypeRef = new TypeRef(new ProgramElementName(baseType.getSort().name().toString()), + new ImmutableArray<>(), 0, null, baseType); } @@ -420,7 +421,7 @@ private KeYJavaType createSuperArrayType() { var superArrayType = new KeYJavaType(); var specLength = new FieldSpecification(new LocationVariable(new ProgramElementName("length"), - integerType, superArrayType, false, false, false, true)); + new TypeRef(integerType), superArrayType, false, false, false, true)); var f = new FieldDeclaration(new Modifier[] { new Public(), new Final() }, new TypeRef(integerType), new FieldSpecification[] { specLength }, false); superArrayType.setJavaType(new SuperArrayDeclaration(f)); @@ -441,7 +442,7 @@ private void addImplicitArrayMembers(ExtList members, KeYJavaType parent, KeYJav int dimension = base instanceof ArrayType ? ((ArrayType) base).getDimension() + 1 : 1; TypeRef parentReference = new TypeRef(new ProgramElementName(String.valueOf(parent.getSort().name())), - dimension, null, parent); + new ImmutableArray<>(), dimension, null, parent); // add methods // the only situation where base can be null is in case of a diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/visitor/OuterBreakContinueAndReturnReplacer.java b/key.core/src/main/java/de/uka/ilkd/key/java/visitor/OuterBreakContinueAndReturnReplacer.java index 1890954ca7a..3f10903b512 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/visitor/OuterBreakContinueAndReturnReplacer.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/visitor/OuterBreakContinueAndReturnReplacer.java @@ -448,7 +448,7 @@ public void performActionOnFinally(final Finally x) { // Remember current flags. for (Entry entry : oldFlags.entrySet()) { newStatements.add(KeYJavaASTFactory.declare(entry.getValue(), entry.getKey(), - entry.getValue().getKeYJavaType())); + entry.getValue().getTypeReference())); } // Reset flags. @@ -479,7 +479,7 @@ private void addOldFlag(Map oldFlags, ProgramV new LocationVariable( new ProgramElementName( flag.getProgramElementName().toString() + "__BEFORE_FINALLY"), - flag.getKeYJavaType())); + flag.getTypeReference())); } private void changed() { diff --git a/key.core/src/main/java/de/uka/ilkd/key/logic/InnerVariableNamer.java b/key.core/src/main/java/de/uka/ilkd/key/logic/InnerVariableNamer.java index eb0edc7087c..f3fb7ee33a2 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/logic/InnerVariableNamer.java +++ b/key.core/src/main/java/de/uka/ilkd/key/logic/InnerVariableNamer.java @@ -69,7 +69,7 @@ public LocationVariable rename(LocationVariable var, Goal goal, PosInOccurrence LocationVariable newvar = var; if (!newname.equals(name)) { - newvar = new LocationVariable(newname, var.getKeYJavaType()); + newvar = new LocationVariable(newname, var.getTypeReference()); map.put(var, newvar); renamingHistory = map; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/logic/TermBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/logic/TermBuilder.java index f9b363ee86a..5362261e244 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/logic/TermBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/logic/TermBuilder.java @@ -12,6 +12,8 @@ import de.uka.ilkd.key.java.TypeConverter; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; import de.uka.ilkd.key.java.ast.abstraction.PrimitiveType; +import de.uka.ilkd.key.java.ast.reference.TypeRef; +import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.ldt.*; import de.uka.ilkd.key.logic.label.OriginTermLabel; import de.uka.ilkd.key.logic.label.OriginTermLabelFactory; @@ -38,6 +40,8 @@ import org.key_project.logic.sort.Sort; import org.key_project.util.collection.*; +import static de.uka.ilkd.key.java.KeYJavaASTFactory.typeRef; + /** *

* Use this class if you intend to build complex terms by hand. It is more convenient than @@ -183,38 +187,40 @@ public String newName(Sort sort) { /** * Creates a program variable for "self". Take care to register it in the namespaces! */ - public LocationVariable selfVar(KeYJavaType kjt, boolean makeNameUnique) { - return selfVar(kjt, makeNameUnique, ""); + public LocationVariable selfVar(TypeReference typeRef, boolean makeNameUnique) { + return selfVar(typeRef, makeNameUnique, ""); } /** * Creates a program variable for "self". Take care to register it in the namespaces! */ - public LocationVariable selfVar(KeYJavaType kjt, boolean makeNameUnique, String postfix) { + public LocationVariable selfVar(TypeReference typeRef, boolean makeNameUnique, String postfix) { String name = "self" + postfix; - return locationVariable(name, kjt, makeNameUnique); + return locationVariable(name, typeRef, makeNameUnique); } /** * Creates a program variable for "self". Take care to register it in the namespaces! */ - public LocationVariable selfVar(IProgramMethod pm, KeYJavaType kjt, boolean makeNameUnique, + public LocationVariable selfVar(IProgramMethod pm, TypeReference typeRef, + boolean makeNameUnique, String postfix) { if (pm.isStatic()) { return null; } else { - return selfVar(kjt, makeNameUnique, postfix); + return selfVar(typeRef, makeNameUnique, postfix); } } /** * Creates a program variable for "self". Take care to register it in the namespaces! */ - public LocationVariable selfVar(IProgramMethod pm, KeYJavaType kjt, boolean makeNameUnique) { + public LocationVariable selfVar(IProgramMethod pm, TypeReference typeRef, + boolean makeNameUnique) { if (pm.isStatic()) { return null; } else { - return selfVar(kjt, makeNameUnique); + return selfVar(typeRef, makeNameUnique); } } @@ -233,7 +239,8 @@ public ImmutableList paramVars(IObserverFunction obs, } else { name = String.valueOf(paramType.getSort().name().toString().charAt(0)); } - final LocationVariable paramVar = locationVariable(name, paramType, makeNamesUnique); + final LocationVariable paramVar = + locationVariable(name, new TypeRef(paramType), makeNamesUnique); result = result.append(paramVar); } return result; @@ -248,7 +255,8 @@ public ImmutableList paramVars(String postfix, IObserverFuncti ImmutableList result = ImmutableSLList.nil(); for (LocationVariable paramVar : paramVars) { ProgramElementName pen = new ProgramElementName(paramVar.name() + postfix); - LocationVariable formalParamVar = new LocationVariable(pen, paramVar.getKeYJavaType()); + LocationVariable formalParamVar = + new LocationVariable(pen, paramVar.getTypeReference()); result = result.append(formalParamVar); } return result; @@ -270,7 +278,7 @@ public LocationVariable resultVar(String name, IProgramMethod pm, boolean makeNa return null; } else { name += "_" + pm.getName(); - return locationVariable(name, pm.getReturnType(), makeNameUnique); + return locationVariable(name, new TypeRef(pm.getReturnType()), makeNameUnique); } } @@ -288,7 +296,8 @@ public LocationVariable excVar(IProgramMethod pm, boolean makeNameUnique) { */ public LocationVariable excVar(String name, IProgramMethod pm, boolean makeNameUnique) { return locationVariable(name, - services.getJavaInfo().getTypeByClassName(JAVA_LANG_THROWABLE), makeNameUnique); + new TypeRef(services.getJavaInfo().getTypeByClassName(JAVA_LANG_THROWABLE)), + makeNameUnique); } /** @@ -313,7 +322,7 @@ public LocationVariable atPreVar(String baseName, Sort sort, boolean makeNameUni if (kjt == null) { kjt = new KeYJavaType(sort); } - return atPreVar(baseName, kjt, makeNameUnique); + return atPreVar(baseName, new TypeRef(kjt), makeNameUnique); } /** @@ -321,12 +330,13 @@ public LocationVariable atPreVar(String baseName, Sort sort, boolean makeNameUni * namespaces. * * @param baseName the base name to use - * @param kjt the type of the variable + * @param typeRef the type of the variable * @param makeNameUnique whether to change the base name to be unique * @return a location variable for the given name and type */ - public LocationVariable atPreVar(String baseName, KeYJavaType kjt, boolean makeNameUnique) { - return locationVariable(baseName + "AtPre", kjt, makeNameUnique); + public LocationVariable atPreVar(String baseName, TypeReference typeRef, + boolean makeNameUnique) { + return locationVariable(baseName + "AtPre", typeRef, makeNameUnique); } /** @@ -339,7 +349,7 @@ public LocationVariable atPreVar(String baseName, KeYJavaType kjt, boolean makeN * @return a location variable for the given name and type */ public LocationVariable locationVariable(String baseName, Sort sort, boolean makeNameUnique) { - return locationVariable(baseName, new KeYJavaType(sort), makeNameUnique); + return locationVariable(baseName, new TypeRef(new KeYJavaType(sort)), makeNameUnique); } /** @@ -347,16 +357,16 @@ public LocationVariable locationVariable(String baseName, Sort sort, boolean mak * the namespaces. * * @param baseName the base name to use - * @param kjt the type of the variable + * @param typeRef the type of the variable * @param makeNameUnique whether to change the base name to be unique * @return a location variable for the given name and type */ - public LocationVariable locationVariable(String baseName, KeYJavaType kjt, + public LocationVariable locationVariable(String baseName, TypeReference typeRef, boolean makeNameUnique) { if (makeNameUnique) { baseName = newName(baseName); } - return new LocationVariable(new ProgramElementName(baseName), kjt); + return new LocationVariable(new ProgramElementName(baseName), typeRef); } // ------------------------------------------------------------------------- diff --git a/key.core/src/main/java/de/uka/ilkd/key/logic/op/IProgramVariable.java b/key.core/src/main/java/de/uka/ilkd/key/logic/op/IProgramVariable.java index 68c4d837564..a6726f5fc6c 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/logic/op/IProgramVariable.java +++ b/key.core/src/main/java/de/uka/ilkd/key/logic/op/IProgramVariable.java @@ -7,16 +7,17 @@ import de.uka.ilkd.key.java.ast.TerminalProgramElement; 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.TypeReference; -import org.key_project.logic.op.Operator; import org.key_project.logic.op.SortedOperator; - public interface IProgramVariable - extends TerminalProgramElement, SortedOperator, Operator { + extends TerminalProgramElement, SortedOperator { KeYJavaType getKeYJavaType(); KeYJavaType getKeYJavaType(Services javaServ); KeYJavaType getKeYJavaType(Services javaServ, ExecutionContext ec); + + TypeReference getTypeReference(); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/logic/op/JAbstractSortedOperator.java b/key.core/src/main/java/de/uka/ilkd/key/logic/op/JAbstractSortedOperator.java index 3375c5108fe..15917981e89 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/logic/op/JAbstractSortedOperator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/logic/op/JAbstractSortedOperator.java @@ -11,7 +11,6 @@ import org.key_project.logic.TermCreationException; import org.key_project.logic.op.AbstractSortedOperator; import org.key_project.logic.op.Modifier; -import org.key_project.logic.op.Operator; import org.key_project.logic.sort.Sort; import org.key_project.util.collection.ImmutableArray; @@ -20,7 +19,7 @@ * Abstract sorted operator class offering some common functionality. */ public abstract class JAbstractSortedOperator extends AbstractSortedOperator - implements Sorted, Operator { + implements Sorted { protected JAbstractSortedOperator(Name name, ImmutableArray argSorts, Sort sort, ImmutableArray whereToBind, Modifier modifier) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/logic/op/JOperatorSV.java b/key.core/src/main/java/de/uka/ilkd/key/logic/op/JOperatorSV.java index 98ecfdfd983..b8ae89c1f07 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/logic/op/JOperatorSV.java +++ b/key.core/src/main/java/de/uka/ilkd/key/logic/op/JOperatorSV.java @@ -4,11 +4,9 @@ package de.uka.ilkd.key.logic.op; import org.key_project.logic.Name; -import org.key_project.logic.Named; import org.key_project.logic.Term; import org.key_project.logic.TermCreationException; import org.key_project.logic.op.sv.OperatorSV; -import org.key_project.logic.op.sv.SchemaVariable; import org.key_project.logic.sort.Sort; import org.key_project.util.collection.ImmutableArray; @@ -16,7 +14,7 @@ * Abstract base class for schema variables. */ public abstract class JOperatorSV extends JAbstractSortedOperator - implements OperatorSV, SchemaVariable, Named { + implements OperatorSV { private final boolean isStrict; diff --git a/key.core/src/main/java/de/uka/ilkd/key/logic/op/LocationVariable.java b/key.core/src/main/java/de/uka/ilkd/key/logic/op/LocationVariable.java index 3406cbc3ac1..57bfadc61a3 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/logic/op/LocationVariable.java +++ b/key.core/src/main/java/de/uka/ilkd/key/logic/op/LocationVariable.java @@ -5,6 +5,7 @@ import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.java.visitor.Visitor; import de.uka.ilkd.key.logic.ProgramElementName; @@ -16,29 +17,30 @@ * description of the superclass ProgramVariable for more information. */ public final class LocationVariable extends ProgramVariable implements UpdateableOperator { - public LocationVariable(ProgramElementName name, KeYJavaType t, KeYJavaType containingType, + public LocationVariable(ProgramElementName name, TypeReference t, KeYJavaType containingType, boolean isStatic, boolean isModel, boolean isGhost, boolean isFinal) { - super(name, t.getSort(), t, containingType, isStatic, isModel, isGhost, isFinal); + super(name, t.getKeYJavaType().getSort(), t, containingType, isStatic, isModel, isGhost, + isFinal); } - public LocationVariable(ProgramElementName name, KeYJavaType t, KeYJavaType containingType, + public LocationVariable(ProgramElementName name, TypeReference t, KeYJavaType containingType, boolean isStatic, boolean isModel) { - super(name, t.getSort(), t, containingType, isStatic, isModel, false); + super(name, t.getKeYJavaType().getSort(), t, containingType, isStatic, isModel, false); } - public LocationVariable(ProgramElementName name, KeYJavaType t) { - super(name, t.getSort(), t, null, false, false, false); + public LocationVariable(ProgramElementName name, TypeReference t) { + super(name, t.getKeYJavaType().getSort(), t, null, false, false, false); } - public LocationVariable(ProgramElementName name, KeYJavaType t, boolean isFinal) { - super(name, t.getSort(), t, null, false, false, false, isFinal); + public LocationVariable(ProgramElementName name, TypeReference t, boolean isFinal) { + super(name, t.getKeYJavaType().getSort(), t, null, false, false, false, isFinal); } - public LocationVariable(ProgramElementName name, KeYJavaType t, boolean isGhost, + public LocationVariable(ProgramElementName name, TypeReference t, boolean isGhost, boolean isFinal) { - super(name, t.getSort(), t, null, false, false, isGhost, isFinal); + super(name, t.getKeYJavaType().getSort(), t, null, false, false, isGhost, isFinal); } @@ -61,7 +63,7 @@ public void visit(Visitor v) { */ public static LocationVariable fromProgramVariable(ProgramVariable variable, ProgramElementName name) { - return new LocationVariable(name, variable.getKeYJavaType(), variable.getContainerType(), + return new LocationVariable(name, variable.getTypeReference(), variable.getContainerType(), variable.isStatic(), variable.isModel(), variable.isGhost(), variable.isFinal()); } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramConstant.java b/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramConstant.java index e07d49745ca..de2dc97452e 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramConstant.java +++ b/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramConstant.java @@ -5,6 +5,7 @@ import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; import de.uka.ilkd.key.java.ast.expression.literal.Literal; +import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.java.visitor.Visitor; import de.uka.ilkd.key.logic.ProgramElementName; @@ -19,13 +20,12 @@ public final class ProgramConstant extends ProgramVariable { // a compile-time constant, null otherwise private final Literal compileTimeConstant; - public ProgramConstant(ProgramElementName name, KeYJavaType t, KeYJavaType containingType, + public ProgramConstant(ProgramElementName name, TypeReference t, KeYJavaType containingType, boolean isStatic, Literal compileTimeConstant) { - super(name, t.getSort(), t, containingType, isStatic, false, false); + super(name, t.getKeYJavaType().getSort(), t, containingType, isStatic, false, false); this.compileTimeConstant = compileTimeConstant; } - /** * @return the value of the initializer as a literal, if this variable is a compile-time * constant, null otherwise @@ -34,7 +34,6 @@ public Literal getCompileTimeConstant() { return compileTimeConstant; } - @Override public void visit(Visitor v) { v.performActionOnProgramConstant(this); diff --git a/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramSV.java b/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramSV.java index 34d4455925e..93ecc48ecd6 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramSV.java +++ b/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramSV.java @@ -9,6 +9,7 @@ import de.uka.ilkd.key.java.ast.*; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; import de.uka.ilkd.key.java.ast.declaration.*; +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; 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.PackageReference; @@ -104,6 +105,11 @@ public ReferencePrefix getReferencePrefix() { return null; } + @Override + public ImmutableArray getAnnotations() { + return new ImmutableArray<>(); + } + @Override public int getDimensions() { return 0; diff --git a/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramVariable.java b/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramVariable.java index a044ae28454..bc9fdf143f0 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramVariable.java +++ b/key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramVariable.java @@ -44,7 +44,7 @@ public abstract class ProgramVariable extends JAbstractSortedOperator ParsableVariable, ReferenceSuffix, ProgramInLogic { public static final Logger LOGGER = LoggerFactory.getLogger(ProgramVariable.class); - private final KeYJavaType type; + private final TypeReference type; private final boolean isStatic; private final boolean isModel; private final boolean isGhost; @@ -54,10 +54,10 @@ public abstract class ProgramVariable extends JAbstractSortedOperator // the program variable denotes a field private final KeYJavaType containingType; - protected ProgramVariable(ProgramElementName name, Sort s, KeYJavaType t, + protected ProgramVariable(ProgramElementName name, Sort s, TypeReference t, KeYJavaType containingType, boolean isStatic, boolean isModel, boolean isGhost, boolean isFinal) { - super(name, s == null ? t.getSort() : s, false); + super(name, s == null ? t.getKeYJavaType().getSort() : s, false); this.type = t; this.containingType = containingType; this.isStatic = isStatic; @@ -70,18 +70,16 @@ protected ProgramVariable(ProgramElementName name, Sort s, KeYJavaType t, assert sort() != JavaDLTheory.UPDATE; } - protected ProgramVariable(ProgramElementName name, Sort s, KeYJavaType t, + protected ProgramVariable(ProgramElementName name, Sort s, TypeReference t, KeYJavaType containingType, boolean isStatic, boolean isModel, boolean isGhost) { this(name, s, t, containingType, isStatic, isModel, isGhost, false); } - /** @return name of the ProgramVariable */ public ProgramElementName getProgramElementName() { return (ProgramElementName) name(); } - /** * returns true iff the program variable has been declared as static */ @@ -89,7 +87,6 @@ public boolean isStatic() { return isStatic; } - /** * returns true iff the program variable has been declared as model */ @@ -104,7 +101,6 @@ public boolean isGhost() { return isGhost; } - /** * returns true iff the program variable has been declared as final */ @@ -112,7 +108,6 @@ public boolean isFinal() { return isFinal; } - /** * returns true iff the program variable is a member */ @@ -120,7 +115,6 @@ public boolean isMember() { return containingType != null; } - /** * returns the KeYJavaType where the program variable is declared or null if the program * variable denotes not a field @@ -129,7 +123,6 @@ public KeYJavaType getContainerType() { return containingType; } - @Override public SourceElement getFirstElement() { return this; @@ -145,19 +138,16 @@ public SourceElement getLastElement() { return this; } - @Override public Comment[] getComments() { return new Comment[0]; } - @Override public void visit(Visitor v) { v.performActionOnProgramVariable(this); } - @Override public Position getStartPosition() { return Position.UNDEFINED; @@ -175,33 +165,29 @@ public PositionInfo getPositionInfo() { return PositionInfo.UNDEFINED; } - @Override - public KeYJavaType getKeYJavaType() { + public TypeReference getTypeReference() { return type; } + @Override + public KeYJavaType getKeYJavaType() { + return type != null ? type.getKeYJavaType() : null; + } @Override public KeYJavaType getKeYJavaType(Services javaServ) { return getKeYJavaType(); } - @Override public KeYJavaType getKeYJavaType(Services javaServ, ExecutionContext ec) { return getKeYJavaType(); } - - /** - * We do not have a prefix, so fake it! This way we implement ReferencePrefix - * - * @author VK - */ @Override public ReferencePrefix getReferencePrefix() { - return null; + return type.getReferencePrefix(); } @Override @@ -213,16 +199,15 @@ public Expression convertToProgram(JTerm t, ExtList l) { } } - public String proofToString() { - final Type javaType = type.getJavaType(); + final Type javaType = getKeYJavaType().getJavaType(); final String typeName; if (javaType instanceof ArrayType) { typeName = ((ArrayType) javaType).getAlternativeNameRepresentation(); } else if (javaType != null) { typeName = javaType.getFullName(); } else { - typeName = type.getSort().name().toString(); + typeName = getKeYJavaType().getSort().name().toString(); } return typeName + " " + name() + ";\n"; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DeclarationBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DeclarationBuilder.java index b9d4c467101..375ae0b4168 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DeclarationBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DeclarationBuilder.java @@ -7,6 +7,7 @@ import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.reference.TypeRef; import de.uka.ilkd.key.ldt.JavaDLTheory; import de.uka.ilkd.key.logic.*; import de.uka.ilkd.key.logic.op.LocationVariable; @@ -106,10 +107,10 @@ public Object visitProg_var_decls(KeYParser.Prog_var_declsContext ctx) { // getColumn()) if (!(name instanceof ProgramVariable) || !((ProgramVariable) name).getKeYJavaType().equals(kjt)) { - programVariables().add(new LocationVariable(pvName, kjt)); + programVariables().add(new LocationVariable(pvName, new TypeRef(kjt))); } } else { - programVariables().add(new LocationVariable(pvName, kjt)); + programVariables().add(new LocationVariable(pvName, new TypeRef(kjt))); } } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java b/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java index 39db4e9cefc..850ff82589a 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java @@ -616,8 +616,16 @@ public void performActionOnTypeReference(TypeReference x) { public void performActionOnTypeReference(TypeReference x, boolean fullTypeNames) { if (x.getKeYJavaType() != null && x.getKeYJavaType().getJavaType() instanceof ArrayDeclaration) { + for (AnnotationExpression expr : x.getAnnotations()) { + performActionOnAnnotationExpression(expr); + } + performActionOnArrayDeclaration((ArrayDeclaration) x.getKeYJavaType().getJavaType()); } else if (x.getProgramElementName() != null) { + for (AnnotationExpression expr : x.getAnnotations()) { + performActionOnAnnotationExpression(expr); + } + printTypeReference(x.getReferencePrefix(), x.getKeYJavaType(), x.getProgramElementName(), fullTypeNames); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java b/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java index 0364fd00bdb..56e3e80b1d8 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java @@ -16,6 +16,7 @@ import de.uka.ilkd.key.java.ast.declaration.VariableSpecification; import de.uka.ilkd.key.java.ast.expression.literal.NullLiteral; import de.uka.ilkd.key.java.ast.expression.operator.CopyAssignment; +import de.uka.ilkd.key.java.ast.reference.TypeRef; import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.java.ast.statement.*; import de.uka.ilkd.key.java.ast.statement.Try; @@ -401,7 +402,8 @@ public void readProblem() throws ProofInputException { // prepare variables, program method boolean makeNamesUnique = isMakeNamesUnique(); final ImmutableList paramVars = tb.paramVars(pm, makeNamesUnique); - final LocationVariable selfVar = tb.selfVar(pm, getCalleeKeYJavaType(), makeNamesUnique); + final LocationVariable selfVar = + tb.selfVar(pm, new TypeRef(getCalleeKeYJavaType()), makeNamesUnique); final LocationVariable resultVar = tb.resultVar(pm, makeNamesUnique); final LocationVariable exceptionVar = tb.excVar(pm, makeNamesUnique); @@ -902,7 +904,7 @@ protected JavaBlock buildJavaBlock(ImmutableList formalParVars final KeYJavaType eType = javaInfo.getTypeByClassName(JAVA_LANG_THROWABLE); final TypeReference excTypeRef = javaInfo.createTypeReference(eType); final ProgramElementName ePEN = new ProgramElementName("e"); - final ProgramVariable eVar = new LocationVariable(ePEN, eType); + final ProgramVariable eVar = new LocationVariable(ePEN, new TypeRef(eType)); final StatementBlock sb2; if (exceptionVar == null) { @@ -1013,7 +1015,7 @@ private ImmutableList createFormalParamVars( if (isCopyOfMethodArgumentsUsed()) { ProgramElementName pen = new ProgramElementName("_" + paramVar.name()); LocationVariable formalParamVar = - new LocationVariable(pen, paramVar.getKeYJavaType()); + new LocationVariable(pen, paramVar.getTypeReference()); formalParamVars = formalParamVars.append(formalParamVar); register(formalParamVar, proofServices); } else { diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/init/DependencyContractPO.java b/key.core/src/main/java/de/uka/ilkd/key/proof/init/DependencyContractPO.java index 06d7558df20..d983d1c6f29 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/init/DependencyContractPO.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/init/DependencyContractPO.java @@ -7,6 +7,7 @@ import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.reference.TypeRef; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.TermBuilder; import de.uka.ilkd.key.logic.label.ParameterlessTermLabel; @@ -133,7 +134,8 @@ public void readProblem() throws ProofInputException { // prepare variables final LocationVariable selfVar = - !contract.getTarget().isStatic() ? tb.selfVar(contract.getKJT(), true) : null; + !contract.getTarget().isStatic() ? tb.selfVar(new TypeRef(contract.getKJT()), true) + : null; final ImmutableList paramVars = tb.paramVars(target, true); final boolean twoState = (contract.getTarget().getStateCount() == 2); diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalBlockContractPO.java b/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalBlockContractPO.java index 4531162a8e3..bf2a6c92aba 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalBlockContractPO.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalBlockContractPO.java @@ -31,6 +31,7 @@ import org.key_project.logic.Name; import org.key_project.logic.op.Function; +import org.key_project.util.collection.ImmutableArray; import org.key_project.util.collection.ImmutableSet; import org.key_project.util.java.ArrayUtil; @@ -272,7 +273,8 @@ public void readProblem() { final IProgramMethod pm = getProgramMethod(); final StatementBlock block = getBlock(); - final LocationVariable selfVar = tb.selfVar(pm, getCalleeKeYJavaType(), makeNamesUnique); + final LocationVariable selfVar = + tb.selfVar(pm, new TypeRef(getCalleeKeYJavaType()), makeNamesUnique); register(selfVar, services); final JTerm selfTerm = selfVar == null ? null : tb.var(selfVar); @@ -296,7 +298,7 @@ public void readProblem() { .createAndRegister(selfTerm, false, contract.getBlock()); final ProgramVariable exceptionParameter = KeYJavaASTFactory.localVariable( services.getVariableNamer().getTemporaryNameProposal("e"), - variables.exception.getKeYJavaType()); + variables.exception.getTypeReference()); final ConditionsAndClausesBuilder conditionsAndClausesBuilder = new ConditionsAndClausesBuilder(contract.getAuxiliaryContract(), heaps, variables, @@ -394,7 +396,8 @@ private GoalsConfigurator setUpGoalConfigurator(final StatementBlock block, final BlockContract.Variables variables, final Services services, final TermBuilder tb) { final KeYJavaType kjt = getCalleeKeYJavaType(); - final TypeRef typeRef = new TypeRef(new ProgramElementName(kjt.getName()), 0, selfVar, kjt); + final TypeRef typeRef = new TypeRef(new ProgramElementName(kjt.getName()), + new ImmutableArray<>(), 0, selfVar, kjt); final ExecutionContext ec = new ExecutionContext(typeRef, getProgramMethod(), selfVar); JModality.JavaModalityKind kind = contract.getModalityKind(); JavaBlock jb = JavaBlock.createJavaBlock(new StatementBlock()); diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalLoopContractPO.java b/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalLoopContractPO.java index 544cd1da17d..d480f5ca5d2 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalLoopContractPO.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalLoopContractPO.java @@ -31,6 +31,7 @@ import org.key_project.logic.Name; import org.key_project.logic.op.Function; +import org.key_project.util.collection.ImmutableArray; import org.key_project.util.collection.ImmutableSet; import org.key_project.util.java.ArrayUtil; @@ -131,7 +132,8 @@ public void readProblem() { contract.replaceEnhancedForVariables(services); - final LocationVariable selfVar = tb.selfVar(pm, getCalleeKeYJavaType(), makeNamesUnique); + final LocationVariable selfVar = + tb.selfVar(pm, new TypeRef(getCalleeKeYJavaType()), makeNamesUnique); register(selfVar, services); final JTerm selfTerm = selfVar == null ? null : tb.var(selfVar); @@ -368,7 +370,8 @@ private GoalsConfigurator createGoalConfigurator(final ProgramVariable selfVar, final TermBuilder tb) { final TermLabelState termLabelState = new TermLabelState(); final KeYJavaType kjt = getCalleeKeYJavaType(); - final TypeRef ref = new TypeRef(new ProgramElementName(kjt.getName()), 0, selfVar, kjt); + final TypeRef ref = new TypeRef(new ProgramElementName(kjt.getName()), + new ImmutableArray<>(), 0, selfVar, kjt); final ExecutionContext ec = new ExecutionContext(ref, getProgramMethod(), selfVar); // TODO (DD): HACK @@ -413,7 +416,7 @@ private JTerm setUpValidityGoal(final JTerm selfTerm, final List buildOperationBlocks( // construct what would be produced from rule instanceCreationAssignment final Expression init = (Expression) (new CreateObject(n)).transform(n, services, svInst)[0]; - final Statement assignTmp = declare(selfVar, init, type); + final Statement assignTmp = declare(selfVar, init, new TypeRef(type)); result[0] = new StatementBlock(assignTmp); // try block diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/mgt/SpecificationRepository.java b/key.core/src/main/java/de/uka/ilkd/key/proof/mgt/SpecificationRepository.java index 6b3af7663ee..52e3d1bee8e 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/mgt/SpecificationRepository.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/mgt/SpecificationRepository.java @@ -16,6 +16,7 @@ import de.uka.ilkd.key.java.ast.declaration.ClassDeclaration; import de.uka.ilkd.key.java.ast.declaration.modifier.Private; import de.uka.ilkd.key.java.ast.declaration.modifier.VisibilityModifier; +import de.uka.ilkd.key.java.ast.reference.TypeRef; import de.uka.ilkd.key.java.ast.statement.LoopStatement; import de.uka.ilkd.key.java.ast.statement.MergePointStatement; import de.uka.ilkd.key.logic.*; @@ -856,7 +857,7 @@ public ImmutableSet getClassAxioms(KeYJavaType selfKjt) { continue; // only non-private classes } final ImmutableSet myInvs = getClassInvariants(kjt); - final LocationVariable selfVar = tb.selfVar(kjt, false); + final LocationVariable selfVar = tb.selfVar(new TypeRef(kjt), false); JTerm invDef = tb.tt(); JTerm staticInvDef = tb.tt(); @@ -948,7 +949,8 @@ private ImmutableSet getModelMethodAxioms() { ImmutableSet result = DefaultImmutableSet.nil(); for (KeYJavaType kjt : services.getJavaInfo().getAllKeYJavaTypes()) { for (IProgramMethod pm : services.getJavaInfo().getAllProgramMethods(kjt)) { - final LocationVariable selfVar = pm.isStatic() ? null : tb.selfVar(kjt, false); + final LocationVariable selfVar = + pm.isStatic() ? null : tb.selfVar(new TypeRef(kjt), false); if (!pm.isVoid() && pm.isModel()) { pm = services.getJavaInfo().getToplevelPM(kjt, pm); ImmutableList paramVars = tb.paramVars(pm, false); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/AbstractAuxiliaryContractRule.java b/key.core/src/main/java/de/uka/ilkd/key/rule/AbstractAuxiliaryContractRule.java index 790dafb48d8..4f09f6028f7 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/AbstractAuxiliaryContractRule.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/AbstractAuxiliaryContractRule.java @@ -7,8 +7,8 @@ import de.uka.ilkd.key.java.KeYJavaASTFactory; import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.ast.*; -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.TypeReference; import de.uka.ilkd.key.java.ast.statement.*; import de.uka.ilkd.key.ldt.JavaDLTheory; import de.uka.ilkd.key.logic.JTerm; @@ -139,14 +139,14 @@ protected static JTerm createLocalAnonUpdate(ImmutableSet loca /** * * @param nameBase a base name. - * @param type a type. + * @param typeRef a {@link TypeReference}. * @param services services. * @return a new local variable with the specified base name of the specified type. */ protected static LocationVariable createLocalVariable(final String nameBase, - final KeYJavaType type, final Services services) { + final TypeReference typeRef, final Services services) { return KeYJavaASTFactory.localVariable( - services.getVariableNamer().getTemporaryNameProposal(nameBase), type); + services.getVariableNamer().getTemporaryNameProposal(nameBase), typeRef); } /** diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/AbstractLoopInvariantRule.java b/key.core/src/main/java/de/uka/ilkd/key/rule/AbstractLoopInvariantRule.java index 126ef455d22..af3017975e6 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/AbstractLoopInvariantRule.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/AbstractLoopInvariantRule.java @@ -207,7 +207,8 @@ protected static JTerm createBeforeLoopUpdate(Services services, for (ProgramVariable pv : localOuts) { final String pvBeforeLoopName = tb.newName(pv.name() + "Before_LOOP"); final LocationVariable pvBeforeLoop = - new LocationVariable(new ProgramElementName(pvBeforeLoopName), pv.getKeYJavaType()); + new LocationVariable(new ProgramElementName(pvBeforeLoopName), + pv.getTypeReference()); progVarNS.addSafely(pvBeforeLoop); beforeLoopUpdate = tb.parallel(beforeLoopUpdate, tb.elementary(pvBeforeLoop, tb.var(pv))); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/AuxiliaryContractBuilders.java b/key.core/src/main/java/de/uka/ilkd/key/rule/AuxiliaryContractBuilders.java index d78676170aa..609a7a3b17b 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/AuxiliaryContractBuilders.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/AuxiliaryContractBuilders.java @@ -17,6 +17,8 @@ import de.uka.ilkd.key.java.ast.expression.literal.*; import de.uka.ilkd.key.java.ast.expression.literal.BooleanLiteral; import de.uka.ilkd.key.java.ast.expression.operator.NotEquals; +import de.uka.ilkd.key.java.ast.reference.TypeRef; +import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.java.ast.statement.*; import de.uka.ilkd.key.java.ast.statement.Catch; import de.uka.ilkd.key.java.ast.statement.LabeledStatement; @@ -181,7 +183,7 @@ private void declareFlagsFalse() { statements.add(KeYJavaASTFactory.assign(flag, BooleanLiteral.FALSE)); } else { statements.add(KeYJavaASTFactory.declare(flag, BooleanLiteral.FALSE, - services.getJavaInfo().getKeYJavaType("boolean"))); + new TypeRef(services.getJavaInfo().getKeYJavaType("boolean")))); } } @@ -190,7 +192,7 @@ private void declareFlagsFalse() { statements.add(KeYJavaASTFactory.assign(flag, BooleanLiteral.FALSE)); } else { statements.add(KeYJavaASTFactory.declare(flag, BooleanLiteral.FALSE, - services.getJavaInfo().getKeYJavaType("boolean"))); + new TypeRef(services.getJavaInfo().getKeYJavaType("boolean")))); } } if (variables.returnFlag != null) { @@ -199,7 +201,8 @@ private void declareFlagsFalse() { KeYJavaASTFactory.assign(variables.returnFlag, BooleanLiteral.FALSE)); } else { statements.add(KeYJavaASTFactory.declare(variables.returnFlag, - BooleanLiteral.FALSE, services.getJavaInfo().getKeYJavaType("boolean"))); + BooleanLiteral.FALSE, + new TypeRef(services.getJavaInfo().getKeYJavaType("boolean")))); } } } @@ -215,9 +218,9 @@ private void declareResultDefault() { statements.add( KeYJavaASTFactory.assign(variables.result, resultType.getDefaultValue())); } else { - KeYJavaType resultType = variables.result.getKeYJavaType(); + TypeReference resultType = variables.result.getTypeReference(); statements.add(KeYJavaASTFactory.declare(variables.result, - resultType.getDefaultValue(), resultType)); + resultType.getKeYJavaType().getDefaultValue(), resultType)); } } } @@ -239,7 +242,7 @@ private void declareExceptionNull() { statements.add(KeYJavaASTFactory.assign(variables.exception, NullLiteral.NULL)); } else { statements.add(KeYJavaASTFactory.declare(variables.exception, NullLiteral.NULL, - variables.exception.getKeYJavaType())); + variables.exception.getTypeReference())); } } @@ -295,7 +298,7 @@ private Statement wrapInTryCatch(final Statement labeledBlock, final ProgramVariable exceptionParameter) { Catch katch = KeYJavaASTFactory.catchClause( KeYJavaASTFactory.parameterDeclaration(services.getJavaInfo(), - exceptionParameter.getKeYJavaType(), exceptionParameter), + exceptionParameter.getTypeReference(), exceptionParameter), new StatementBlock( KeYJavaASTFactory.assign(variables.exception, exceptionParameter))); return new Try(new StatementBlock(labeledBlock), new Branch[] { katch }); @@ -443,7 +446,7 @@ private Map appendSuffix(final Map String newName = services.getTermBuilder().newName(value.name() + suffix); LocationVariable newValue = - new LocationVariable(new ProgramElementName(newName), value.getKeYJavaType()); + new LocationVariable(new ProgramElementName(newName), value.getTypeReference()); result.put(key, newValue); } @@ -493,7 +496,7 @@ private LocationVariable createAndRegisterVariable( String newName = services.getTermBuilder().newName(placeholderVariable.name().toString()); LocationVariable newVariable = new LocationVariable(new ProgramElementName(newName), - placeholderVariable.getKeYJavaType()); + placeholderVariable.getTypeReference()); if (goal != null) { goal.addProgramVariable(newVariable); @@ -1193,14 +1196,15 @@ public GoalsConfigurator(final AbstractAuxiliaryContractBuiltInRuleApp applicati */ private static LocationVariable[] createLoopVariables(final Services services) { LocationVariable conditionVariable = AbstractAuxiliaryContractRule.createLocalVariable( - "cond", services.getJavaInfo().getKeYJavaType("boolean"), services); + "cond", new TypeRef(services.getJavaInfo().getKeYJavaType("boolean")), services); LocationVariable brokeLoopVariable = AbstractAuxiliaryContractRule.createLocalVariable( - "brokeLoop", services.getJavaInfo().getKeYJavaType("boolean"), services); + "brokeLoop", new TypeRef(services.getJavaInfo().getKeYJavaType("boolean")), + services); LocationVariable continuedLoopVariable = AbstractAuxiliaryContractRule.createLocalVariable("continuedLoop", - services.getJavaInfo().getKeYJavaType("boolean"), services); + new TypeRef(services.getJavaInfo().getKeYJavaType("boolean")), services); final LocationVariable[] loopVariables = { conditionVariable, brokeLoopVariable, continuedLoopVariable }; return loopVariables; diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/BlockContractInternalRule.java b/key.core/src/main/java/de/uka/ilkd/key/rule/BlockContractInternalRule.java index e041d235090..5fc00968782 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/BlockContractInternalRule.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/BlockContractInternalRule.java @@ -315,7 +315,7 @@ protected void setUpValidityGoal(final ImmutableList result, final Services services) { Goal validityGoal = result.tail().tail().head(); final ProgramVariable exceptionParameter = - createLocalVariable("e", variables.exception.getKeYJavaType(), services); + createLocalVariable("e", variables.exception.getTypeReference(), services); configurator.setUpValidityGoal(validityGoal, new JTerm[] { updates[0], updates[1] }, preconditions, new JTerm[] { assumptions[0], frameCondition }, exceptionParameter, conditionsAndClausesBuilder.terms); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/LoopContractInternalRule.java b/key.core/src/main/java/de/uka/ilkd/key/rule/LoopContractInternalRule.java index 213804a89b3..d4132d21757 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/LoopContractInternalRule.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/LoopContractInternalRule.java @@ -321,7 +321,7 @@ public LoopContractInternalBuiltInRuleApp createApp(final PosInOccurrence occurr configurator.setUpUsageGoal(result.head(), updates, ArrayUtil.add(usageAssumptions, freePostcondition)); final LocationVariable exceptionParameter = - createLocalVariable("e", vars[0].exception.getKeYJavaType(), services); + createLocalVariable("e", vars[0].exception.getTypeReference(), services); configurator.setUpLoopValidityGoal(goal, contract, context, updates[1], nextRemembranceUpdate, anonOutHeaps, modifiableClauses, freeModifiableClauses, diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/LoopScopeInvariantRule.java b/key.core/src/main/java/de/uka/ilkd/key/rule/LoopScopeInvariantRule.java index 9a1a248c4e6..3fe1b72ff3c 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/LoopScopeInvariantRule.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/LoopScopeInvariantRule.java @@ -13,6 +13,7 @@ import de.uka.ilkd.key.java.ast.Statement; import de.uka.ilkd.key.java.ast.StatementBlock; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.reference.TypeRef; import de.uka.ilkd.key.java.ast.statement.LabeledStatement; import de.uka.ilkd.key.java.ast.statement.LoopScopeBlock; import de.uka.ilkd.key.java.ast.statement.While; @@ -249,7 +250,8 @@ private ProgramVariable loopScopeIdxVar(Services services) { final ProgramVariable loopScopeIdxVar = // KeYJavaASTFactory.localVariable( // - services.getVariableNamer().getTemporaryNameProposal("x"), booleanType); + services.getVariableNamer().getTemporaryNameProposal("x"), + new TypeRef(booleanType)); return loopScopeIdxVar; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/QueryExpand.java b/key.core/src/main/java/de/uka/ilkd/key/rule/QueryExpand.java index 7c9c327582e..6c40c2d6188 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/QueryExpand.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/QueryExpand.java @@ -156,12 +156,14 @@ public Pair queryEvalTerm(Services services, JTerm query, callee = null; offset = 0; } else { - callee = new LocationVariable(new ProgramElementName(calleeName), calleeType); + callee = + new LocationVariable(new ProgramElementName(calleeName), new TypeRef(calleeType)); offset = 1; } final ProgramVariable result = - new LocationVariable(new ProgramElementName(progResultName), progResultType); + new LocationVariable(new ProgramElementName(progResultName), + new TypeRef(progResultType)); final MethodReference mr = @@ -197,7 +199,7 @@ public Pair queryEvalTerm(Services services, JTerm query, ArrayList stmnt = new ArrayList<>(); - stmnt.add(KeYJavaASTFactory.declare(result, progResultType)); + stmnt.add(KeYJavaASTFactory.declare(result, new TypeRef(progResultType))); final CopyAssignment assignment = new CopyAssignment(result, mr); @@ -255,7 +257,7 @@ private ImmutableArray getRegisteredArgumentVariables( final String newName = services.getTermBuilder().newName(baseName); final ProgramElementName argVarName = new ProgramElementName(newName); args[i] = new LocationVariable(argVarName, - pdecl.getVariableSpecification().getProgramVariable().getKeYJavaType()); + pdecl.getVariableSpecification().getProgramVariable().getTypeReference()); progvarsNS.addSafely(args[i]); i++; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/TacletApp.java b/key.core/src/main/java/de/uka/ilkd/key/rule/TacletApp.java index 226512729bd..6968b7f50be 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/TacletApp.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/TacletApp.java @@ -12,6 +12,7 @@ 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.Expression; +import de.uka.ilkd.key.java.ast.reference.TypeRef; import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.logic.*; import de.uka.ilkd.key.logic.ClashFreeSubst.VariableCollectVisitor; @@ -1164,13 +1165,13 @@ public ProgramElement getProgramElement(String instantiation, ProgramSV sv, } else if (svSort == ProgramSVSort.VARIABLE) { final NewVarcond nvc = (NewVarcond) taclet.varDeclaredNew(sv); if (nvc != null) { - KeYJavaType kjt; + TypeReference typeRef; Object o = nvc.getTypeDefiningObject(); if (o instanceof SchemaVariable peerSV) { final TypeConverter tc = services.getTypeConverter(); final Object peerInst = instantiations().getInstantiation(peerSV); if (peerInst instanceof TypeReference) { - kjt = ((TypeReference) peerInst).getKeYJavaType(); + typeRef = (TypeReference) peerInst; } else { Expression peerInstExpr; if (peerInst instanceof JTerm peerTerm) { @@ -1178,14 +1179,14 @@ public ProgramElement getProgramElement(String instantiation, ProgramSV sv, } else { peerInstExpr = (Expression) peerInst; } - kjt = tc.getKeYJavaType(peerInstExpr, - instantiations().getContextInstantiation().activeStatementContext()); + typeRef = new TypeRef(tc.getKeYJavaType(peerInstExpr, + instantiations().getContextInstantiation().activeStatementContext())); } } else { - kjt = (KeYJavaType) o; + typeRef = new TypeRef((KeYJavaType) o); } - assert kjt != null : "could not find kjt for: " + o; - return new LocationVariable(VariableNamer.parseName(instantiation), kjt); + assert typeRef != null : "could not find TypeReference for: " + o; + return new LocationVariable(VariableNamer.parseName(instantiation), typeRef); } } return null; diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/UseOperationContractRule.java b/key.core/src/main/java/de/uka/ilkd/key/rule/UseOperationContractRule.java index 3780c359933..e464eb0a053 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/UseOperationContractRule.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/UseOperationContractRule.java @@ -612,7 +612,7 @@ public static ImmutableList computeParams(JTerm baseHeapTerm, */ public static ProgramVariable computeResultVar(Instantiation inst, TermServices services) { final TermBuilder tb = services.getTermBuilder(); - return inst.pm.isConstructor() ? tb.selfVar(inst.staticType, true) + return inst.pm.isConstructor() ? tb.selfVar(new TypeRef(inst.staticType), true) : tb.resultVar(inst.pm, true); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/WhileInvariantRule.java b/key.core/src/main/java/de/uka/ilkd/key/rule/WhileInvariantRule.java index e727678997f..075547e8aac 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/WhileInvariantRule.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/WhileInvariantRule.java @@ -301,7 +301,7 @@ public WhileInvariantRuleApplier(Goal goal, LoopInvariantBuiltInRuleApp ruleA final String pvBeforeLoopName = tb.newName(pv.name() + "Before_LOOP"); final LocationVariable pvBeforeLoop = new LocationVariable(new ProgramElementName(pvBeforeLoopName), - pv.getKeYJavaType()); + pv.getTypeReference()); services.getNamespaces().programVariables().addSafely(pvBeforeLoop); beforeLoopUpdate = tb.parallel(beforeLoopUpdate, tb.elementary(pvBeforeLoop, tb.var(pv))); @@ -606,7 +606,8 @@ protected Guard prepareGuard(final Instantiation inst, final TermServices services) { final TermBuilder tb = services.getTermBuilder(); final ProgramElementName guardVarName = new ProgramElementName(tb.newName("b")); - final LocationVariable guardVar = new LocationVariable(guardVarName, booleanKJT); + final LocationVariable guardVar = + new LocationVariable(guardVarName, new TypeRef(booleanKJT)); services.getNamespaces().programVariables().addSafely(guardVar); loopRuleApp.setGuard(tb.var(guardVar)); final VariableSpecification guardVarSpec = diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java index 4fa6075635d..fee9621e48d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/HasAnnotationCondition.java @@ -3,8 +3,8 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.rule.conditions; -import de.uka.ilkd.key.java.KeYJPMapping; import de.uka.ilkd.key.java.Services; +import de.uka.ilkd.key.java.ast.ProgramElement; import de.uka.ilkd.key.java.ast.declaration.*; import de.uka.ilkd.key.ldt.HeapLDT; import de.uka.ilkd.key.logic.JTerm; @@ -12,8 +12,6 @@ import de.uka.ilkd.key.rule.VariableConditionAdapter; import de.uka.ilkd.key.rule.inst.SVInstantiations; -import de.uka.ilkd.key.java.ast.ProgramElement; - import org.key_project.logic.SyntaxElement; import org.key_project.logic.op.Function; import org.key_project.logic.op.sv.SchemaVariable; @@ -53,7 +51,7 @@ public boolean check(SchemaVariable var, SyntaxElement subst, return matchesField(services, (Function) op); } else if (op instanceof ProgramElement) { var decl = services.getJavaInfo().rec2key() - .nodeFromKeY((LocationVariable)op); + .nodeFromKeY((LocationVariable) op); LOGGER.info("inst {}, type {}", inst, inst.getClass()); LOGGER.info("decl {}", decl); } @@ -63,7 +61,7 @@ public boolean check(SchemaVariable var, SyntaxElement subst, public boolean matchesField(Services services, Function op) { LOGGER.info("{}", op); - + var kpmi = services.getJavaInfo().getKeYProgModelInfo(); HeapLDT.SplitFieldName name = HeapLDT.trySplitFieldName(op); @@ -78,41 +76,41 @@ public boolean matchesField(Services services, Function op) { return false; LOGGER.info("{}", classType); - - var recoderTypeDecl = kpmi.rec2key() - .nodeFromKeY((ClassDeclaration)classType.getJavaType()); - - //LOGGER.info("{}", recoderTypeDecl); -/* - var fields = recoderTypeDecl.getAllFields(); - var field = fields.stream() - .filter(f -> f.getName().equals(name.attributeName())) - .findFirst() - .orElse(null); - - if (field == null) - return false; - var fType = field.getContainingClassType(); - if (!(fType instanceof recoder.java.declaration.TypeDeclaration)) - return false; - - var fieldSpec = ((recoder.java.declaration.TypeDeclaration) fType) - .getFields().stream() - .filter(spec -> spec.getName().equals(name.attributeName())) - .findFirst() - .orElse(null); - - if (fieldSpec == null) - return false; - - var fieldDecl = fieldSpec.getParent(); - var declAnnotations = fieldDecl.getAnnotations(); - var value = declAnnotations.stream() - .anyMatch(a -> a.getTypeReference().getName().equals(annot)); - - return value; - */ + var recoderTypeDecl = kpmi.rec2key() + .nodeFromKeY((ClassDeclaration) classType.getJavaType()); + + // LOGGER.info("{}", recoderTypeDecl); + /* + * var fields = recoderTypeDecl.getAllFields(); + * var field = fields.stream() + * .filter(f -> f.getName().equals(name.attributeName())) + * .findFirst() + * .orElse(null); + * + * if (field == null) + * return false; + * + * var fType = field.getContainingClassType(); + * if (!(fType instanceof recoder.java.declaration.TypeDeclaration)) + * return false; + * + * var fieldSpec = ((recoder.java.declaration.TypeDeclaration) fType) + * .getFields().stream() + * .filter(spec -> spec.getName().equals(name.attributeName())) + * .findFirst() + * .orElse(null); + * + * if (fieldSpec == null) + * return false; + * + * var fieldDecl = fieldSpec.getParent(); + * var declAnnotations = fieldDecl.getAnnotations(); + * var value = declAnnotations.stream() + * .anyMatch(a -> a.getTypeReference().getName().equals(annot)); + * + * return value; + */ return false; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/NewLocalVarsCondition.java b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/NewLocalVarsCondition.java index 7b564bae403..41f69da2d66 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/NewLocalVarsCondition.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/conditions/NewLocalVarsCondition.java @@ -11,7 +11,7 @@ import de.uka.ilkd.key.java.ast.Statement; import de.uka.ilkd.key.java.ast.abstraction.*; import de.uka.ilkd.key.java.ast.declaration.*; -import de.uka.ilkd.key.java.ast.reference.TypeRef; +import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.op.LocationVariable; import de.uka.ilkd.key.rule.inst.SVInstantiations; @@ -85,14 +85,10 @@ public MatchResultInfo check(SchemaVariable var, SyntaxElement instCandidate, for (var v : vars) { final var newName = services.getVariableNamer().getTemporaryNameProposal(v.name() + "_before"); - KeYJavaType type = v.getKeYJavaType(); - var locVar = new LocationVariable(newName, type); + TypeReference typeRef = v.getTypeReference(); + var locVar = new LocationVariable(newName, typeRef); var spec = new VariableSpecification(locVar); - int dim = 0; - if (type.getJavaType() instanceof ArrayType at) { - dim = at.getDimension(); - } - decls.add(new LocalVariableDeclaration(new TypeRef(type, dim), spec)); + decls.add(new LocalVariableDeclaration(typeRef, spec)); updatesBefore = updatesBefore.append(tb.elementary(tb.var(locVar), tb.var(v))); updatesFrame = updatesFrame.append(tb.elementary(tb.var(v), tb.var(locVar))); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayPostDecl.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayPostDecl.java index 4d332418ce1..1162c798325 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayPostDecl.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayPostDecl.java @@ -43,6 +43,7 @@ public ProgramElement[] transform(ProgramElement pe, Services services, return new ProgramElement[] { KeYJavaASTFactory.declare(modifiers, variable, var.getInitializer(), originalTypeReference.getProgramElementName(), originalTypeReference.getDimensions() + var.getDimensions(), + originalTypeReference.getAnnotations(), originalTypeReference.getReferencePrefix(), variable.getKeYJavaType()) }; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/EnhancedForElimination.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/EnhancedForElimination.java index efb484735f1..998832bd19e 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/EnhancedForElimination.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/EnhancedForElimination.java @@ -193,14 +193,15 @@ private ProgramElement makeArrayForLoop(EnhancedFor enhancedFor, TransformationD final JavaInfo ji = services.getJavaInfo(); // T[] arr = exp; - final KeYJavaType arrayType = expression.getKeYJavaType(services, data.execContext()); + final TypeReference arrayType = + new TypeRef(expression.getKeYJavaType(services, data.execContext())); final ProgramVariable arrayVar = KeYJavaASTFactory.localVariable(services, ARR, arrayType); final Statement arrAssignment = KeYJavaASTFactory.declare(arrayVar, expression); data.setHead(KeYJavaASTFactory.block(arrAssignment)); // for(int i; i < arr.length; i++) - final KeYJavaType intType = ji.getPrimitiveKeYJavaType("int"); + final TypeReference intType = new TypeRef(ji.getPrimitiveKeYJavaType("int")); data.setIndexVariable(KeYJavaASTFactory.localVariable(services, INDEX, intType)); final ILoopInit inits = KeYJavaASTFactory.loopInitZero(intType, data.indexVariable()); final IGuard guard = @@ -243,13 +244,13 @@ private ProgramElement makeIterableForLoop(EnhancedFor enhancedFor, Transformati ImmutableSLList.nil(), data.execContext().getTypeReference().getKeYJavaType()); // local variable "it" - final KeYJavaType iteratorType = iteratorMethod.getReturnType(); + final TypeReference iteratorType = new TypeRef(iteratorMethod.getReturnType()); ProgramVariable iteratorVariable = KeYJavaASTFactory.localVariable(services, IT, iteratorType); // local variable "values" - final KeYJavaType seqType = - services.getTypeConverter().getKeYJavaType(PrimitiveType.JAVA_SEQ); + final TypeReference seqType = + new TypeRef(services.getTypeConverter().getKeYJavaType(PrimitiveType.JAVA_SEQ)); data.setValuesVariable(KeYJavaASTFactory.localVariable(services, VALUES, seqType)); // ghost \seq values = \seq_empty diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/EvaluateArgs.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/EvaluateArgs.java index 647738134c8..180feb48ccf 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/EvaluateArgs.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/EvaluateArgs.java @@ -11,7 +11,6 @@ import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.java.ast.ProgramElement; import de.uka.ilkd.key.java.ast.Statement; -import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; import de.uka.ilkd.key.java.ast.declaration.LocalVariableDeclaration; import de.uka.ilkd.key.java.ast.expression.Expression; import de.uka.ilkd.key.java.ast.expression.operator.CopyAssignment; @@ -24,6 +23,8 @@ import de.uka.ilkd.key.java.ast.reference.SuperReference; import de.uka.ilkd.key.java.ast.reference.ThisConstructorReference; import de.uka.ilkd.key.java.ast.reference.ThisReference; +import de.uka.ilkd.key.java.ast.reference.TypeRef; +import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.logic.ProgramElementName; import de.uka.ilkd.key.logic.VariableNamer; import de.uka.ilkd.key.logic.op.ProgramVariable; @@ -60,7 +61,7 @@ public static ProgramVariable evaluate(Expression e, List bodyStmnts, Expressio services.getJavaInfo().getKeYJavaType(PrimitiveType.JAVA_INT); final ProgramElementName name = varNamer.getTemporaryNameProposal("i"); final LocalVariableDeclaration forInit = - KeYJavaASTFactory.declare(name, KeYJavaASTFactory.zeroLiteral(), intType); + KeYJavaASTFactory.declare(name, KeYJavaASTFactory.zeroLiteral(), + new TypeRef(intType)); final ProgramVariable pv = (ProgramVariable) forInit.getVariables().get(0).getProgramVariable(); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/IntroAtPreDefsOp.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/IntroAtPreDefsOp.java index 86a6ba85cf9..dec5c6c2906 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/IntroAtPreDefsOp.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/IntroAtPreDefsOp.java @@ -271,7 +271,7 @@ public void addNeededVariables(Collection variables) { continue; } final LocationVariable l = tb.locationVariable(var.name() + "Before_" + methodName, - var.getKeYJavaType(), true); + var.getTypeReference(), true); services.getNamespaces().programVariables().addSafely(l); final JTerm u = tb.elementary(l, tb.var(var)); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/MethodCall.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/MethodCall.java index 9d889a2b8e4..63d7857d79b 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/MethodCall.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/MethodCall.java @@ -327,7 +327,7 @@ private Statement makeMbs(KeYJavaType t, Services services) { if (newContextAsExp.getKeYJavaType(services, execContext) != targetType) { castedThisVar = KeYJavaASTFactory.declare( new ProgramElementName(services.getTermBuilder().newName("target")), - KeYJavaASTFactory.cast(newContextAsExp, targetType), targetType); + KeYJavaASTFactory.cast(newContextAsExp, targetType), new TypeRef(targetType)); localContext = (ReferencePrefix) castedThisVar.getVariableSpecifications().get(0) .getProgramVariable(); @@ -380,7 +380,7 @@ private VariableSpecification[] createParamSpecs(Services services) { final IProgramVariable paramVar = KeYJavaASTFactory.localVariable(services, originalParamVar.getProgramElementName().toString(), - originalParamVar.getKeYJavaType()); + originalParamVar.getTypeReference()); // this condition checks whether this is the last formal parameter // and is used diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ProgramTransformer.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ProgramTransformer.java index 79ab2757adc..51d43c89d30 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ProgramTransformer.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ProgramTransformer.java @@ -6,6 +6,7 @@ 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.expression.AnnotationExpression; 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.PackageReference; @@ -18,6 +19,7 @@ import org.key_project.logic.Name; import org.key_project.logic.op.sv.SchemaVariable; +import org.key_project.util.collection.ImmutableArray; import org.key_project.util.collection.ImmutableList; import org.key_project.util.collection.ImmutableSLList; @@ -155,6 +157,7 @@ public ProgramElement getChildAt(int index) { // -------------some methods to pretend being a type reference -------- + @Override public ReferencePrefix getReferencePrefix() { return null; } @@ -163,37 +166,49 @@ public ReferencePrefix setReferencePrefix(ReferencePrefix r) { return this; } + @Override + public ImmutableArray getAnnotations() { + return new ImmutableArray<>(); + } + @Override public int getDimensions() { return 0; } + @Override public int getTypeReferenceCount() { return 0; } + @Override public TypeReference getTypeReferenceAt(int index) { return this; } + @Override public PackageReference getPackageReference() { return null; } + @Override public int getExpressionCount() { return 0; } + @Override public Expression getExpressionAt(int index) { return null; } + @Override public ProgramElementName getProgramElementName() { return new ProgramElementName(toString()); } + @Override public String getName() { return toString(); } @@ -204,15 +219,18 @@ public String getName() { * * @param v the Visitor */ + @Override public void visit(Visitor v) { v.performActionOnProgramMetaConstruct(this); } /** to String */ + @Override public String toString() { return name + "( " + body + ");"; } + @Override public KeYJavaType getKeYJavaType() { return null; } @@ -221,6 +239,7 @@ public KeYJavaType getKeYJavaType(TermServices javaServ) { return getKeYJavaType(); } + @Override public KeYJavaType getKeYJavaType(Services javaServ, ExecutionContext ec) { return getKeYJavaType(); } @@ -245,5 +264,4 @@ public ImmutableList needs() { public ImmutableList neededInstantiations(SVInstantiations svInst) { return ImmutableSLList.nil(); } - } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/SwitchToIf.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/SwitchToIf.java index dea977c4653..0742e3a0786 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/SwitchToIf.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/SwitchToIf.java @@ -18,6 +18,7 @@ import de.uka.ilkd.key.java.ast.expression.operator.Equals; import de.uka.ilkd.key.java.ast.expression.operator.New; 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.*; import de.uka.ilkd.key.logic.ProgramElementName; import de.uka.ilkd.key.logic.VariableNamer; @@ -59,9 +60,11 @@ public ProgramElement[] transform(ProgramElement pe, Services services, final ExecutionContext ec = insts.getExecutionContext(); ProgramVariable exV = - KeYJavaASTFactory.localVariable(name, sw.getExpression().getKeYJavaType(services, ec)); + KeYJavaASTFactory.localVariable(name, + new TypeRef(sw.getExpression().getKeYJavaType(services, ec))); Statement s = - KeYJavaASTFactory.declare(name, sw.getExpression().getKeYJavaType(services, ec)); + KeYJavaASTFactory.declare(name, + new TypeRef(sw.getExpression().getKeYJavaType(services, ec))); final var changeBreakResult = changeBreaks(sw, newBreak, true); sw = (Switch) changeBreakResult.result; diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/TypeOf.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/TypeOf.java index 1cc9337ecb3..7ede1a5b14a 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/TypeOf.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/TypeOf.java @@ -9,11 +9,14 @@ import de.uka.ilkd.key.java.ast.abstraction.ArrayType; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; import de.uka.ilkd.key.java.ast.abstraction.PrimitiveType; +import de.uka.ilkd.key.java.ast.expression.AnnotationExpression; 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.TypeRef; import de.uka.ilkd.key.rule.inst.SVInstantiations; +import org.key_project.util.collection.ImmutableArray; + public class TypeOf extends ProgramTransformer { /** @@ -36,21 +39,25 @@ public ProgramElement[] transform(ProgramElement pe, Services services, ec = insts.getContextInstantiation().activeStatementContext(); } KeYJavaType kjt = null; + ImmutableArray annotations = null; if (pe instanceof Expression) { kjt = services.getTypeConverter().getKeYJavaType((Expression) pe, ec); } else { kjt = ((TypeRef) pe).getKeYJavaType(); + annotations = ((TypeRef) pe).getAnnotations(); } + annotations = annotations == null ? new ImmutableArray<>() : annotations; + assert kjt != null; if (!(kjt.getJavaType() instanceof PrimitiveType)) { if (kjt.getJavaType() instanceof ArrayType) { return new ProgramElement[] { KeYJavaASTFactory.typeRef(kjt, - ((ArrayType) kjt.getJavaType()).getDimension()) }; + ((ArrayType) kjt.getJavaType()).getDimension(), annotations) }; } } - return new ProgramElement[] { KeYJavaASTFactory.typeRef(kjt) }; + return new ProgramElement[] { KeYJavaASTFactory.typeRef(kjt, 0, annotations) }; } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/WhileInvariantTransformation.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/WhileInvariantTransformation.java index 69e2d642d23..912d1e00a66 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/WhileInvariantTransformation.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/WhileInvariantTransformation.java @@ -10,6 +10,7 @@ import de.uka.ilkd.key.java.ast.*; import de.uka.ilkd.key.java.ast.expression.Expression; import de.uka.ilkd.key.java.ast.expression.literal.BooleanLiteral; +import de.uka.ilkd.key.java.ast.reference.TypeRef; import de.uka.ilkd.key.java.ast.statement.*; import de.uka.ilkd.key.logic.ProgramElementName; import de.uka.ilkd.key.logic.op.ProgramVariable; @@ -234,7 +235,8 @@ public void performActionOnWhile(While x) { Catch ctch = KeYJavaASTFactory.catchClause(KeYJavaASTFactory.parameterDeclaration(javaInfo, - javaInfo.getKeYJavaType("java.lang.Throwable"), excParam), catchStatements); + new TypeRef(javaInfo.getKeYJavaType("java.lang.Throwable")), excParam), + catchStatements); Branch[] branch = { ctch }; Statement res = KeYJavaASTFactory.tryBlock(newBody, branch); @@ -298,7 +300,8 @@ public void performActionOnEnhancedFor(EnhancedFor x) { Catch ctch = KeYJavaASTFactory.catchClause(KeYJavaASTFactory.parameterDeclaration(javaInfo, - javaInfo.getKeYJavaType("java.lang.Throwable"), excParam), catchStatements); + new TypeRef(javaInfo.getKeYJavaType("java.lang.Throwable")), excParam), + catchStatements); addChild(KeYJavaASTFactory.tryBlock(body, ctch)); changed(); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/WhileInvariantTransformer.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/WhileInvariantTransformer.java index 3f0907a142d..a369d49b9f1 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/WhileInvariantTransformer.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/WhileInvariantTransformer.java @@ -14,6 +14,7 @@ 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.literal.BooleanLiteral; +import de.uka.ilkd.key.java.ast.reference.TypeRef; import de.uka.ilkd.key.java.ast.statement.If; import de.uka.ilkd.key.java.ast.statement.MethodFrame; import de.uka.ilkd.key.java.ast.statement.TransactionStatement; @@ -145,7 +146,7 @@ public JTerm transform(TermLabelState termLabelState, Rule rule, getNewLocalvariable("break_" + breakCounter++, "boolean", services); b.setProgramVariable(newVar); stmnt.add(KeYJavaASTFactory.declare(newVar, BooleanLiteral.FALSE, - javaInfo.getKeYJavaType("boolean"))); + new TypeRef(javaInfo.getKeYJavaType("boolean")))); numberOfBreaks++; Statement s; if (b.getBreak().getLabel() != null) { @@ -183,7 +184,7 @@ public JTerm transform(TermLabelState termLabelState, Rule rule, post, rule, ruleApp, goal, applicationPos, services)); if (returnType != null) { - stmnt.add(KeYJavaASTFactory.declare(returnExpression, returnType)); + stmnt.add(KeYJavaASTFactory.declare(returnExpression, new TypeRef(returnType))); } } @@ -197,10 +198,10 @@ public JTerm transform(TermLabelState termLabelState, Rule rule, // we catch all exceptions stmnt.add(KeYJavaASTFactory.declare(excFlag, BooleanLiteral.FALSE, - javaInfo.getKeYJavaType("boolean"))); + new TypeRef(javaInfo.getKeYJavaType("boolean")))); excFlagTerm = typeConv.convertToLogicElement(excFlag); stmnt.add(KeYJavaASTFactory.declare(thrownException, - javaInfo.getKeYJavaType("java.lang.Throwable"))); + new TypeRef(javaInfo.getKeYJavaType("java.lang.Throwable")))); resultSubterms.add(normalCaseAndContinue(termLabelState, services, applicationPos, rule, ruleApp, goal, applicationSequent, contFlagTerm, returnFlagTerm, breakFlagTerm, @@ -287,7 +288,8 @@ private ProgramVariable getNewLocalvariable(String varNameBase, String varType, private ProgramVariable getNewLocalvariable(String varNameBase, KeYJavaType varType, Services services) { return KeYJavaASTFactory.localVariable( - services.getVariableNamer().getTemporaryNameProposal(varNameBase), varType); + services.getVariableNamer().getTemporaryNameProposal(varNameBase), + new TypeRef(varType)); } @@ -331,7 +333,7 @@ private JTerm createLongJunctorTerm(Junctor junctor, ArrayList terms) { private Statement returnFlagDecl(ProgramVariable returnFlag, SVInstantiations svInst) { return KeYJavaASTFactory.declare(returnFlag, BooleanLiteral.FALSE, - javaInfo.getKeYJavaType("boolean")); + new TypeRef(javaInfo.getKeYJavaType("boolean"))); } private JTerm returnCase(TermLabelState termLabelState, ProgramVariable returnFlag, @@ -354,12 +356,12 @@ private JTerm returnCase(TermLabelState termLabelState, ProgramVariable returnFl private Statement breakFlagDecl(ProgramVariable breakFlag) { return KeYJavaASTFactory.declare(breakFlag, BooleanLiteral.FALSE, - javaInfo.getKeYJavaType("boolean")); + new TypeRef(javaInfo.getKeYJavaType("boolean"))); } private Statement contFlagDecl(ProgramVariable contFlag) { return KeYJavaASTFactory.declare(contFlag, BooleanLiteral.FALSE, - javaInfo.getKeYJavaType("boolean")); + new TypeRef(javaInfo.getKeYJavaType("boolean"))); } private JTerm breakCase(TermLabelState termLabelState, ProgramVariable breakFlag, JTerm post, diff --git a/key.core/src/main/java/de/uka/ilkd/key/speclang/AuxiliaryContract.java b/key.core/src/main/java/de/uka/ilkd/key/speclang/AuxiliaryContract.java index 53a30efff06..ad845423f4d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/speclang/AuxiliaryContract.java +++ b/key.core/src/main/java/de/uka/ilkd/key/speclang/AuxiliaryContract.java @@ -17,6 +17,8 @@ import de.uka.ilkd.key.java.ast.SourceElement; import de.uka.ilkd.key.java.ast.StatementBlock; import de.uka.ilkd.key.java.ast.abstraction.KeYJavaType; +import de.uka.ilkd.key.java.ast.reference.TypeRef; +import de.uka.ilkd.key.java.ast.reference.TypeReference; import de.uka.ilkd.key.java.ast.statement.Break; import de.uka.ilkd.key.java.ast.statement.Continue; import de.uka.ilkd.key.java.ast.statement.For; @@ -1021,7 +1023,8 @@ public VariablesCreator(final JavaStatement statement, final List