From 230f842dffa19a02727547fb52f1cd4db0670264 Mon Sep 17 00:00:00 2001 From: PiisRational Date: Sun, 1 Jun 2025 18:30:12 +0200 Subject: [PATCH 01/21] 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 b1a2a9a2cd..f3561bcb0b 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 a1f63101ff..4f67bb9fbe 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/21] 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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 4f67bb9fbe..2243d52a3b 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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 01759d8366..79de1024f1 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 c8d62a2e08..ce54dcfcf7 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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /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 0000000000..eed262358e --- /dev/null +++ b/keyext.ui.testgen/.factorypath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/recoder/.factorypath b/recoder/.factorypath new file mode 100644 index 0000000000..eed262358e --- /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/21] 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 2243d52a3b..aadcf130fe 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 5ec55a4a26..f5db1e9eb1 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 79de1024f1..fe9a63618f 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 ce54dcfcf7..e9c587a04f 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 0000000000..a68e6070f4 --- /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 0000000000..dffebd2b72 --- /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/21] 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 f3561bcb0b..b1a2a9a2cd 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 aadcf130fe..40fc57b278 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 0000000000..7b8f67169a --- /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/21] 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 544c9371a4..1ddd217469 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 6c262484c9..ef2ca0b00d 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 acfc54551e..253c8acf7d 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 c97fa31041..9b0623219f 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 18202e0b80..efd28d00f3 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 49f1f6ac0d..a79ced3f81 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 ef17dc6903..4dc9f0a056 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 0000000000..78023f9ce7 --- /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 4fe1e671e8..a54135978b 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 3f4c57e6bf..a647f1ee96 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 c926c71684..a8fa274731 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 5e06303b29..3e6061301f 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 dc655cd302..355b2dc36f 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 33c727c209..7f7c2f21bb 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 4cd996587c..fc9ce66c71 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 e313232406..3f086650e5 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 8906ea19c3..479268aec7 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 815513d44e..7a177e2396 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 c1000e6b69..bb5a64725f 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 0d96c4d78f..a2c28703f9 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 1d127b553f..8867d940ad 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 9449b8e009..57b47b4d0e 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 6ce5450797..27ef838481 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 3f0facaaf6..d3f1a0b533 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 2c5917fc03..0bbaa22675 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 0577ae58ba..163237a94e 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 35cf61f564..2e08585bfc 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 baef2de3f2..554311e324 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 d1e4588b36..834da7a3c5 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 6c530533f1..efdd95416f 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 7b8f67169a..0000000000 --- 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/21] 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 fa81c6b4a6..dfcbe591dd 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 78023f9ce7..4e7be04104 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 849094e6a9..7b05784360 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 163237a94e..034dd121e5 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 6936e4daea..44f6e21d4a 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/21] 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 28002dfabd..f0369eb9a2 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 dfcbe591dd..a9324ac091 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 bd5c67dfdc..a0d8febe50 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 2496a1a84c..8304eefbe7 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 f947db77c8..fbddcb1980 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 7b8feda450..4e276d5cde 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 4e7be04104..f4daa90658 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 729dce19cb..1b915f85d1 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 7b05784360..448f617a0b 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 034dd121e5..4dad0f415a 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 6c4ec56fdd..747230bc3d 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 40fc57b278..970be11080 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 90e8d1940c..522a42e097 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 0000000000..0a00fda0f9 --- /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 0000000000..3c67d758de --- /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 0000000000..89e9665a42 --- /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 554311e324..0420855b2f 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 e887a63b5a..30977e189c 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/21] 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 a9324ac091..f7c6768cf1 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 e4322308fb..f5a5c687ae 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 ea00e468f2..4dde28602c 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 3830e404ea..b124e2a0f4 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 4ef53e320c..9361758ce4 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 0a00fda0f9..40bf51f9e3 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 3c67d758de..7734dcbadd 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 89e9665a42..866908fdf5 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/21] 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 ed66b22e09..1340534a36 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 9361758ce4..4394faf032 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/21] 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 ece9cf04a5..a86564689e 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 ed8b65547e..a65813efb6 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 0000000000..c068b55a50 --- /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 0000000000..4a09eb9312 --- /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 0000000000..bb54c77a35 --- /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 0000000000..bcd9b9d815 --- /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 0000000000..f1e24a4cf6 --- /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 44f6e21d4a..bc2257d6a7 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 40bf51f9e3..13da6fd4f6 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 7734dcbadd..8fd53c4f98 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 866908fdf5..00dbdf729c 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 f5db1e9eb1..1761c0c060 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/21] 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 522a42e097..5b07bcde6a 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 8fd53c4f98..e576adef58 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 0000000000..93d188b89a --- /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 00dbdf729c..82c9869ec0 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 0000000000..d31da5d55d --- /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 0000000000..2f15451431 --- /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/21] 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 e576adef58..e0842aeb95 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 d31da5d55d..f0e020a7fe 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 0000000000..833a8ef8f5 --- /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 0000000000..9ad1e6ae2e --- /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 0000000000..2ae6e0ebb2 --- /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 0000000000..d0dc47abee --- /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 0000000000..8abd6e0669 --- /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 0000000000..62603640d6 --- /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 0000000000..c88b5d2db3 --- /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 0000000000..f2f1458814 --- /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 0000000000..9e82a95a86 --- /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 0000000000..cb1f008706 --- /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 0000000000..61408e265d --- /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 0000000000..d7db4c5519 --- /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 0000000000..628c7f3453 --- /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 0000000000..b145eaaaf8 --- /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 0000000000..75d7f05bcb --- /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 0000000000..243001ac85 --- /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 0000000000..ead572f5e3 --- /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 0000000000..bb1b59a4eb --- /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 0000000000..1b6f2b9519 --- /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 0000000000..4617a3cd05 --- /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 0000000000..3bb902ccab --- /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 0000000000..f0fe15abef --- /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 0000000000..bde595d5f3 --- /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 0000000000..f11fa28d94 --- /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 0000000000..66261013e9 --- /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 0000000000..1245e07a49 --- /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 0000000000..bd5e4de8a0 --- /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 0000000000..a4f6454f04 --- /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 0000000000..56486708f6 --- /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 0000000000..3b1edb4311 --- /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 0000000000..228c46b32b --- /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 0000000000..a41e96097b --- /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 0000000000..c9cd0dfac8 --- /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 0000000000..fe01bc7861 --- /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 0000000000..85aa9c9b2a --- /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 0000000000..4347fba0d6 --- /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 0000000000..f90ba3e553 --- /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 0000000000..04ec2bec40 --- /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 0000000000..53c605302a --- /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 0000000000..bbdeec6bb6 --- /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 0000000000..b82240baf1 --- /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 0000000000..4c49372aee --- /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 0000000000..0683137998 --- /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 0000000000..9a16d9e07c --- /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 0000000000..4b1874f0da --- /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 0000000000..3129dcf121 --- /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 0000000000..5a62a97e9e --- /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 0000000000..3f90162903 --- /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 0000000000..817aea168b --- /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 0000000000..e77b9f6b3f --- /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 0000000000..e2def9b17a --- /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 0000000000..76ea7b04d8 --- /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 0000000000..cfef7b2466 --- /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 0000000000..3e83b17db9 --- /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 0000000000..23fa3a5c63 --- /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 0000000000..37ae14bb16 --- /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 0000000000..82cae179e1 --- /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 0000000000..c77878b1bf --- /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 0000000000..f5ffd6ff44 --- /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 0000000000..adaaa3ad53 --- /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 0000000000..34440d97bf --- /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 0000000000..851c23c9de --- /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 0000000000..e2c15fcbf5 --- /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 0000000000..aac04fa9b4 --- /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 0000000000..b307adc64d --- /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 0000000000..6197caee21 --- /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 0000000000..5976f94e36 --- /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 0000000000..2c0c9996f3 --- /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 0000000000..bcd21f44d0 --- /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 0000000000..69a49c33fc --- /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 0000000000..6d8597abf1 --- /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 0000000000..3598c2d9d9 --- /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 0000000000..5d4c4ab401 --- /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 0000000000..37a1ca865e --- /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 0000000000..6285b16607 --- /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 0000000000..c1ce647879 --- /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 0000000000..741abc8172 --- /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 0000000000..577f2805f0 --- /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 0000000000..dac1a9c1e0 --- /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 0000000000..2699601181 --- /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 9afa8bbd5c..e34cfa62f0 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/21] 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 13da6fd4f6..f536a495c3 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 e0842aeb95..27f1ce86d6 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 82c9869ec0..d62974986e 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/21] 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 f0369eb9a2..51211e412a 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/21] 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 0bbaa22675..26c75ac2c9 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/21] 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 ae1703c58a..7673265cd3 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 d62974986e..ce7d335ab9 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 f0e020a7fe..392d24e73a 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 833a8ef8f5..0f29db6278 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 9ad1e6ae2e..c7fe71ab83 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 2ae6e0ebb2..e3385bc497 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 d0dc47abee..00dda7fdea 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 f0fe15abef..0000000000 --- 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 bde595d5f3..0000000000 --- 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 f11fa28d94..0000000000 --- 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 66261013e9..0000000000 --- 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 1245e07a49..0000000000 --- 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 bd5e4de8a0..68328ec9e6 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 a4f6454f04..2f8d800581 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 56486708f6..848f6fe2ee 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 228c46b32b..f3fad37148 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 4347fba0d6..68077327ce 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 04ec2bec40..0000000000 --- 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 53c605302a..0000000000 --- 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 bbdeec6bb6..0000000000 --- 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 9a16d9e07c..0000000000 --- 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 4b1874f0da..0000000000 --- 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 3129dcf121..3e0cdd6072 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 5a62a97e9e..c76f2603af 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 3f90162903..dbcbf98abe 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 e77b9f6b3f..f589ae6636 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 e2def9b17a..c8d5e0697f 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 76ea7b04d8..cfc7fb96f8 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 3e83b17db9..54bafbbaa3 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 23fa3a5c63..0000000000 --- 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 82cae179e1..0000000000 --- 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 c77878b1bf..0000000000 --- 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 37ae14bb16..10e417364c 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 0000000000..4a5e6a10cd --- /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 0683137998..bdcca44a4a 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 817aea168b..d095b7f857 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 4c49372aee..6645db2b1d 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 0000000000..73b675805d --- /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 6d8597abf1..afd16153df 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 3598c2d9d9..df3fcfdcef 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 b82240baf1..59fb0938ab 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/21] 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- 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 eed262358e..0000000000 --- a/keyext.ui.testgen/.factorypath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/recoder/.factorypath b/recoder/.factorypath deleted file mode 100644 index eed262358e..0000000000 --- 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/21] 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 1340534a36..1d3a928421 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 27f1ce86d6..edf479e047 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 93d188b89a..b8b7718156 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 ce7d335ab9..2ae5c1e8e8 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 a68e6070f4..dcf884734a 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 dffebd2b72..497552bc98 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/21] 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 edf479e047..eab32a073e 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 b8b7718156..9c52303d67 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 2ae5c1e8e8..e5e8f925f5 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 392d24e73a..c16fb84c4e 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/21] 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 4df4654399..21a6d0dabd 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 9c52303d67..313d986dc4 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 e5e8f925f5..5e5f92cf45 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 c16fb84c4e..07511dd03a 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/21] 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 894015b1c6..05e1ef6c94 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 5e1f027b60..e379853741 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 f7c6768cf1..4a6f9ef2a8 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 a0d8febe50..dadeff4732 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 fbddcb1980..9d585eb30d 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 6a4aaad5b4..0a53d36175 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 21a6d0dabd..27ca065334 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 a6b2a11879..9ceac1e2b0 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 3c5fefbceb..7f3ff6e83b 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 fa24ca21cd..38e7640657 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 a197c16514..c7882bd784 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 265e0038bd..925ac5fef7 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 488b535ac6..1d6442ac3d 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 457d6a9871..f327e885f0 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 5b07bcde6a..3825969a56 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 eab32a073e..c78524a89d 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 313d986dc4..506ef578e9 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 5e5f92cf45..f293f6f785 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 07511dd03a..c58c53596c 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 e34cfa62f0..f08678b6f1 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 2e08585bfc..9877de868e 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 0420855b2f..8133c90e8b 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 834da7a3c5..be5312cde2 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 30977e189c..a4575f5954 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; /**