From 0b4a1ab9130f0ac084ee34a5a2201aa438ef37f1 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Mon, 16 Jun 2025 18:28:56 +0200 Subject: [PATCH 01/22] rewrite stringtemplate to freemarker --- .../resources/report/html/dependency/dep.ftl | 19 ++++++++ .../resources/report/html/dependency/dep.st | 11 ----- .../{dependencies.st => dependencies.ftl} | 4 +- .../resources/report/html/lines/contract.ftl | 4 ++ .../resources/report/html/lines/contract.st | 3 -- .../main/resources/report/html/lines/line.ftl | 29 +++++++++++ .../main/resources/report/html/lines/line.st | 28 ----------- .../report/html/lines/{lines.st => lines.ftl} | 4 +- ...essContracts.st => prooflessContracts.ftl} | 10 ++-- .../report/html/overview/globalprogress.ftl | 23 +++++++++ .../report/html/overview/globalprogress.st | 22 --------- .../report/html/overview/overview.ftl | 48 +++++++++++++++++++ .../report/html/overview/overview.st | 36 -------------- .../report/html/{report.st => report.ftl} | 0 .../report/html/{scripts.st => scripts.js} | 6 --- .../html/settings/{choices.st => choices.ftl} | 0 .../settings/{settings.st => settings.ftl} | 0 .../report/html/{style.st => style.css} | 0 .../main/resources/report/html/tree/dir.ftl | 6 +++ .../main/resources/report/html/tree/dir.st | 4 -- .../main/resources/report/html/tree/tree.ftl | 9 ++++ .../main/resources/report/html/tree/tree.st | 9 ---- 22 files changed, 150 insertions(+), 125 deletions(-) create mode 100644 keyext.proofmanagement/src/main/resources/report/html/dependency/dep.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/dependency/dep.st rename keyext.proofmanagement/src/main/resources/report/html/dependency/{dependencies.st => dependencies.ftl} (84%) create mode 100644 keyext.proofmanagement/src/main/resources/report/html/lines/contract.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/lines/contract.st create mode 100644 keyext.proofmanagement/src/main/resources/report/html/lines/line.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/lines/line.st rename keyext.proofmanagement/src/main/resources/report/html/lines/{lines.st => lines.ftl} (90%) rename keyext.proofmanagement/src/main/resources/report/html/lines/{prooflessContracts.st => prooflessContracts.ftl} (57%) create mode 100644 keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.st create mode 100644 keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/overview/overview.st rename keyext.proofmanagement/src/main/resources/report/html/{report.st => report.ftl} (100%) rename keyext.proofmanagement/src/main/resources/report/html/{scripts.st => scripts.js} (95%) rename keyext.proofmanagement/src/main/resources/report/html/settings/{choices.st => choices.ftl} (100%) rename keyext.proofmanagement/src/main/resources/report/html/settings/{settings.st => settings.ftl} (100%) rename keyext.proofmanagement/src/main/resources/report/html/{style.st => style.css} (100%) create mode 100644 keyext.proofmanagement/src/main/resources/report/html/tree/dir.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/tree/dir.st create mode 100644 keyext.proofmanagement/src/main/resources/report/html/tree/tree.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/tree/tree.st diff --git a/keyext.proofmanagement/src/main/resources/report/html/dependency/dep.ftl b/keyext.proofmanagement/src/main/resources/report/html/dependency/dep.ftl new file mode 100644 index 00000000000..c12000cd53f --- /dev/null +++ b/keyext.proofmanagement/src/main/resources/report/html/dependency/dep.ftl @@ -0,0 +1,19 @@ + + + ${node.contract.name?xml} + + + #${graph.node2SCC[node].id?string("00")} + <#if graph.node2SCC[node].legal> + (legal) + <#else> + (illegal) + + + ⟶ + + <#list node.dependencies?keys as d> + ${d.contract.name?xml}
+ + + diff --git a/keyext.proofmanagement/src/main/resources/report/html/dependency/dep.st b/keyext.proofmanagement/src/main/resources/report/html/dependency/dep.st deleted file mode 100644 index 535b36e7ca0..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/dependency/dep.st +++ /dev/null @@ -1,11 +0,0 @@ - - $node.contract.name; format="xml-encode"$ - $\\$ - #$graph.node2SCC.(node).id; format="%02d"$$\\$ - $if(graph.node2SCC.(node).legal)$ (legal)$\\$ - $else$ (illegal)$\\$ - $endif$$\\$ - - ⟶ - $node.dependencies.keys:{d | $d.contract.name; format="xml-encode"$
}$ - \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/resources/report/html/dependency/dependencies.st b/keyext.proofmanagement/src/main/resources/report/html/dependency/dependencies.ftl similarity index 84% rename from keyext.proofmanagement/src/main/resources/report/html/dependency/dependencies.st rename to keyext.proofmanagement/src/main/resources/report/html/dependency/dependencies.ftl index 68a10e4b8bf..296a7f22d22 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/dependency/dependencies.st +++ b/keyext.proofmanagement/src/main/resources/report/html/dependency/dependencies.ftl @@ -8,7 +8,9 @@ - $graph.nodes:{node | $dep(graph=graph, node=node)$}$ + <#list graph.nodes as node> + <@dep graph=graph node=node /> + diff --git a/keyext.proofmanagement/src/main/resources/report/html/lines/contract.ftl b/keyext.proofmanagement/src/main/resources/report/html/lines/contract.ftl new file mode 100644 index 00000000000..dafff247be6 --- /dev/null +++ b/keyext.proofmanagement/src/main/resources/report/html/lines/contract.ftl @@ -0,0 +1,4 @@ + +class: ${contract.KJT.javaType.name}
+target: ${contract.target.name?xml}
+type: ${contract.displayName?xml} diff --git a/keyext.proofmanagement/src/main/resources/report/html/lines/contract.st b/keyext.proofmanagement/src/main/resources/report/html/lines/contract.st deleted file mode 100644 index 335e6cd7075..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/lines/contract.st +++ /dev/null @@ -1,3 +0,0 @@ -class: $contract.KJT.javaType.name$
-target: $contract.target.name.toString; format="xml-encode"$
-type: $contract.displayName; format="xml-encode"$ diff --git a/keyext.proofmanagement/src/main/resources/report/html/lines/line.ftl b/keyext.proofmanagement/src/main/resources/report/html/lines/line.ftl new file mode 100644 index 00000000000..9b2bd77d9d6 --- /dev/null +++ b/keyext.proofmanagement/src/main/resources/report/html/lines/line.ftl @@ -0,0 +1,29 @@ + + + <@contract contract=entry.contract /> + +
${entry.shortSrc}
+
${entry.proofFile.toFile.name}
+ #${entry.settingsId?string("00")} + ${entry.loadingState} + ${entry.replayState} + ${entry.proofState} + ${entry.dependencyState} + + <#if cd.checks.replay> + <#if entry.replaySuccess> + + Nodes: ${entry.proof.statistics.nodes}
+ Interactive Steps: ${entry.proof.statistics.interactiveSteps}
+ Automode Time: ${entry.proof.statistics.autoModeTimeInMillis} ms + + <#else> + Replay of proof failed! + + <#else> + + Replay of proof is needed to display meaningful information here.
+ Enable via --replay switch. + + + diff --git a/keyext.proofmanagement/src/main/resources/report/html/lines/line.st b/keyext.proofmanagement/src/main/resources/report/html/lines/line.st deleted file mode 100644 index c3595be61ca..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/lines/line.st +++ /dev/null @@ -1,28 +0,0 @@ - - - $contract(contract=entry.contract)$ - -
$entry.shortSrc$
-
$entry.proofFile.toFile.getName$
$! using toFile is a workaround (since Path is Iterable, otherwise there is a stack overflow) !$ - #$entry.settingsId; format="%02d"$ - $entry.loadingState$ - $entry.replayState$ - $entry.proofState$ - $entry.dependencyState$ - $if(cd.checks.replay)$ - $if(entry.replaySuccess)$ - - Nodes: $entry.proof.statistics.nodes$
$!--> replay is needed to build the data structures --> else NPE in Proof.getStatistics!$ - Interactive Steps: $entry.proof.statistics.interactiveSteps$
- Automode Time: $entry.proof.statistics.autoModeTimeInMillis$ ms - - $else$ - Replay of proof failed! - $endif$ - $else$ - - Replay of proof is needed to display meaningful information here.
- Enable via --replay switch. - - $endif$ - diff --git a/keyext.proofmanagement/src/main/resources/report/html/lines/lines.st b/keyext.proofmanagement/src/main/resources/report/html/lines/lines.ftl similarity index 90% rename from keyext.proofmanagement/src/main/resources/report/html/lines/lines.st rename to keyext.proofmanagement/src/main/resources/report/html/lines/lines.ftl index 5e18f404512..b275722d783 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/lines/lines.st +++ b/keyext.proofmanagement/src/main/resources/report/html/lines/lines.ftl @@ -19,6 +19,8 @@ - $entries:{e | $line(entry=e, cd=cd)$}$ + <#list entries as e> + <@line entry=e cd=cd /> + diff --git a/keyext.proofmanagement/src/main/resources/report/html/lines/prooflessContracts.st b/keyext.proofmanagement/src/main/resources/report/html/lines/prooflessContracts.ftl similarity index 57% rename from keyext.proofmanagement/src/main/resources/report/html/lines/prooflessContracts.st rename to keyext.proofmanagement/src/main/resources/report/html/lines/prooflessContracts.ftl index 2042c2a811a..0cffbbb820a 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/lines/prooflessContracts.st +++ b/keyext.proofmanagement/src/main/resources/report/html/lines/prooflessContracts.ftl @@ -5,8 +5,10 @@ - $cd.contractsWithoutProof:{c | - $contract(contract=c)$ - }$ + <#list cd.contractsWithoutProof as c> + + <@contract contract=c /> + + - \ No newline at end of file + diff --git a/keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.ftl b/keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.ftl new file mode 100644 index 00000000000..1fdc1eab07c --- /dev/null +++ b/keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.ftl @@ -0,0 +1,23 @@ +
+ <#if cd.hasProvenContracts> +
proven
+ + <#if cd.hasLemmaLeftContracts> +
dependencies left
+ + <#if cd.hasUnprovenContracts> +
unproven
+ +
+ +
+ <#if cd.hasProvenContracts> +
${proven}
+ + <#if cd.hasLemmaLeftContracts> +
${lemmaLeft}
+ + <#if cd.hasUnprovenContracts> +
${unproven}
+ +
diff --git a/keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.st b/keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.st deleted file mode 100644 index 75ace167341..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.st +++ /dev/null @@ -1,22 +0,0 @@ -
- $if(cd.hasProvenContracts)$ -
proven
- $endif$ - $if(cd.hasLemmaLeftContracts)$ -
dependencies left
- $endif$ - $if(cd.hasUnprovenContracts)$ -
unproven
- $endif$ -
-
- $if(cd.hasProvenContracts)$ -
$proven$
- $endif$ - $if(cd.hasLemmaLeftContracts)$ -
$lemmaLeft$
- $endif$ - $if(cd.hasUnprovenContracts)$ -
$unproven$
- $endif$ -
\ No newline at end of file diff --git a/keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl b/keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl new file mode 100644 index 00000000000..502d31fc07c --- /dev/null +++ b/keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl @@ -0,0 +1,48 @@ + diff --git a/keyext.proofmanagement/src/main/resources/report/html/overview/overview.st b/keyext.proofmanagement/src/main/resources/report/html/overview/overview.st deleted file mode 100644 index d1262889575..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/overview/overview.st +++ /dev/null @@ -1,36 +0,0 @@ - diff --git a/keyext.proofmanagement/src/main/resources/report/html/report.st b/keyext.proofmanagement/src/main/resources/report/html/report.ftl similarity index 100% rename from keyext.proofmanagement/src/main/resources/report/html/report.st rename to keyext.proofmanagement/src/main/resources/report/html/report.ftl diff --git a/keyext.proofmanagement/src/main/resources/report/html/scripts.st b/keyext.proofmanagement/src/main/resources/report/html/scripts.js similarity index 95% rename from keyext.proofmanagement/src/main/resources/report/html/scripts.st rename to keyext.proofmanagement/src/main/resources/report/html/scripts.js index 9e6eef1943e..33fc33aaed0 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/scripts.st +++ b/keyext.proofmanagement/src/main/resources/report/html/scripts.js @@ -1,4 +1,3 @@ - - - diff --git a/keyext.proofmanagement/src/main/resources/report/html/settings/choices.st b/keyext.proofmanagement/src/main/resources/report/html/settings/choices.ftl similarity index 100% rename from keyext.proofmanagement/src/main/resources/report/html/settings/choices.st rename to keyext.proofmanagement/src/main/resources/report/html/settings/choices.ftl diff --git a/keyext.proofmanagement/src/main/resources/report/html/settings/settings.st b/keyext.proofmanagement/src/main/resources/report/html/settings/settings.ftl similarity index 100% rename from keyext.proofmanagement/src/main/resources/report/html/settings/settings.st rename to keyext.proofmanagement/src/main/resources/report/html/settings/settings.ftl diff --git a/keyext.proofmanagement/src/main/resources/report/html/style.st b/keyext.proofmanagement/src/main/resources/report/html/style.css similarity index 100% rename from keyext.proofmanagement/src/main/resources/report/html/style.st rename to keyext.proofmanagement/src/main/resources/report/html/style.css diff --git a/keyext.proofmanagement/src/main/resources/report/html/tree/dir.ftl b/keyext.proofmanagement/src/main/resources/report/html/tree/dir.ftl new file mode 100644 index 00000000000..0c6df1b4bf7 --- /dev/null +++ b/keyext.proofmanagement/src/main/resources/report/html/tree/dir.ftl @@ -0,0 +1,6 @@ +${f} + diff --git a/keyext.proofmanagement/src/main/resources/report/html/tree/dir.st b/keyext.proofmanagement/src/main/resources/report/html/tree/dir.st deleted file mode 100644 index 031136cd4f9..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/tree/dir.st +++ /dev/null @@ -1,4 +0,0 @@ -$f$ - \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/resources/report/html/tree/tree.ftl b/keyext.proofmanagement/src/main/resources/report/html/tree/tree.ftl new file mode 100644 index 00000000000..ce523fd7264 --- /dev/null +++ b/keyext.proofmanagement/src/main/resources/report/html/tree/tree.ftl @@ -0,0 +1,9 @@ + diff --git a/keyext.proofmanagement/src/main/resources/report/html/tree/tree.st b/keyext.proofmanagement/src/main/resources/report/html/tree/tree.st deleted file mode 100644 index 062062b3e86..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/tree/tree.st +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file From 86d98556fd4c5dcae458052f362c1db356a4bfef Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Mon, 16 Jun 2025 19:09:16 +0200 Subject: [PATCH 02/22] Prepare java, fix some mistakes in templates --- keyext.proofmanagement/build.gradle | 2 +- .../proofmanagement/io/HTMLReport.java | 163 ++++-------------- .../report/html/overview/overview.ftl | 26 +-- .../src/main/resources/report/html/report.ftl | 84 +++++---- .../src/test/java/TestGenerateReport.java | 19 ++ 5 files changed, 120 insertions(+), 174 deletions(-) create mode 100644 keyext.proofmanagement/src/test/java/TestGenerateReport.java diff --git a/keyext.proofmanagement/build.gradle b/keyext.proofmanagement/build.gradle index 6e0c56bef0d..7cc9fca3ca4 100644 --- a/keyext.proofmanagement/build.gradle +++ b/keyext.proofmanagement/build.gradle @@ -9,7 +9,7 @@ dependencies { implementation project(':key.core') implementation project(':key.ui') - implementation group: 'org.antlr', name: 'ST4', version: '4.3.4' + implementation("org.freemarker:freemarker:2.3.34") } application { diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java index 171056afa64..426c56d9169 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java @@ -3,165 +3,76 @@ * SPDX-License-Identifier: GPL-2.0-only */ package org.key_project.proofmanagement.io; +import freemarker.template.Configuration; +import freemarker.template.Template; +import freemarker.template.TemplateException; +import org.key_project.proofmanagement.check.CheckerData; +import org.key_project.proofmanagement.check.PathNode; +import org.key_project.util.java.IOUtil; + import java.io.IOException; -import java.lang.reflect.Method; -import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; +import java.util.HashMap; import java.util.Map; -import org.key_project.proofmanagement.check.CheckerData; -import org.key_project.proofmanagement.check.PathNode; - -import org.stringtemplate.v4.*; -import org.stringtemplate.v4.misc.MapModelAdaptor; -import org.stringtemplate.v4.misc.ObjectModelAdaptor; -import org.stringtemplate.v4.misc.STMessage; -import org.stringtemplate.v4.misc.STNoSuchPropertyException; - /** * Provides a static method to print the check results in HTML format to a given path. * * @author Wolfram Pfeifer */ public final class HTMLReport { - /** to prevent from instantiating */ + /** + * to prevent from instantiating + */ private HTMLReport() { } /** * Prints out the given check results to a target path. * - * @param data the check results to print + * @param data the check results to print * @param target the target path of the output * @throws IOException if an error occurs when accessing to the target path or the string - * template resources + * template resources */ public static void print(CheckerData data, Path target) throws IOException { + Configuration cfg = new Configuration(Configuration.VERSION_2_3_32); + cfg.setClassLoaderForTemplateLoading(HTMLReport.class.getClassLoader(), "/report/html"); + cfg.setDefaultEncoding("UTF-8"); + + // Load template + Template template = cfg.getTemplate("report.ftl"); + + // Prepare data model + Map st = new HashMap<>(); + + st.put("style", IOUtil.readFrom(HTMLReport.class.getResourceAsStream("/report/html/style.css"))); + st.put("scripts", IOUtil.readFrom(HTMLReport.class.getResourceAsStream("/report/html/scripts.js"))); - ST st = prepareStringTemplate(); - st.add("title", data.getPbh().getBundleName() + " - Proof Management Report"); + st.put("title", data.getPbh() != null ? data.getPbh().getBundleName() : ""); PathNode fileTree = data.getFileTree(); - st.add("checkerData", data); - st.add("bundleFileName", fileTree == null ? null : fileTree.getContent()); - st.add("treeRoot", fileTree); - st.add("entries", data.getProofEntries()); - st.add("graph", data.getDependencyGraph()); + st.put("checkerData", data); + st.put("bundleFileName", fileTree == null ? null : fileTree.getContent()); + st.put("treeRoot", fileTree); + st.put("entries", data.getProofEntries()); + st.put("graph", data.getDependencyGraph()); data.print("All checks completed!"); data.print("Generating html report ..."); - try { - String output = st.render(); - Files.writeString(target, output); + + + try (var out = Files.newBufferedWriter(target)) { + template.process(st, out); data.print("Report generated at " + target.normalize()); } catch (IOException e) { data.print("Unable to generate report: " + e.getMessage()); + } catch (TemplateException e) { + throw new RuntimeException(e); } } - /** - * Set up StringTemplate model adaptors and listeners. - * - * @return the ST object for rendering the HTML report - * @throws IOException if an error occurs accessing the StringTemplate resources - */ - @SuppressWarnings("rawtypes") - private static ST prepareStringTemplate() throws IOException { - ClassLoader classLoader = HTMLReport.class.getClassLoader(); - URL url = classLoader.getResource("report/html"); - - if (url == null) { - throw new IOException("Could not load report template resource from report/html."); - } - - STGroup group = new STRawGroupDir(url, "UTF-8", '$', '$'); - - // provide access to getter methods with a name equal to the property (without "get") - // (needed to access some KeY properties, e.g. Proof.name() - group.registerModelAdaptor(Object.class, new ObjectModelAdaptor<>() { - @Override - public synchronized Object getProperty(Interpreter interp, ST self, Object o, - Object property, String propertyName) - throws STNoSuchPropertyException { - Method m = tryGetMethod(o.getClass(), propertyName); - if (m != null) { - try { - return m.invoke(o); - } catch (Exception e) { - throwNoSuchProperty(o.getClass(), propertyName, e); - } - } - return super.getProperty(interp, self, o, property, propertyName); - } - }); - - // provide access to entrySet property of Maps - Class> mapClass = (Class>) (Class) Map.class; - group.registerModelAdaptor(mapClass, new MapModelAdaptor() { - @Override - public Object getProperty(Interpreter interp, ST self, Map map, Object property, - String propertyName) - throws STNoSuchPropertyException { - if (property.equals("entrySet")) { - return map.entrySet(); - } - return super.getProperty(interp, self, map, property, propertyName); - } - }); - - /* - * This additional ModelAdaptor is workaround needed for access of Node.getValue in string - * template, otherwise we would have to add this to build.gradle files in key.ui and - * keyext.proofmanagement: - * jvmArgs += ['--add-opens', 'java.base/java.util=ALL-UNNAMED'] - */ - Class> mapEntryClass = (Class>) (Class) Map.Entry.class; - group.registerModelAdaptor(mapEntryClass, new ObjectModelAdaptor<>() { - @Override - public synchronized Object getProperty(Interpreter interp, ST self, - Map.Entry entry, Object property, - String propertyName) - throws STNoSuchPropertyException { - if (property.equals("value")) { - return entry.getValue(); - } else if (property.equals("key")) { - return entry.getKey(); - } - return super.getProperty(interp, self, entry, property, propertyName); - } - }); - - // StringRenderer to escape special HTML chars, for example in java.lang.Object:: - group.registerRenderer(String.class, new StringRenderer()); - // NumberRenderer to allow for format strings such as %02d - group.registerRenderer(Number.class, new NumberRenderer()); - - // register listeners to get error output on console - group.setListener(new STErrorListener() { - @Override - public void compileTimeError(STMessage msg) { - throw new RuntimeException(msg.toString(), msg.cause); - } - - @Override - public void runTimeError(STMessage msg) { - throw new RuntimeException(msg.toString(), msg.cause); - } - - @Override - public void IOError(STMessage msg) { - throw new RuntimeException(msg.toString(), msg.cause); - } - - @Override - public void internalError(STMessage msg) { - throw new RuntimeException(msg.toString(), msg.cause); - } - }); - - return group.getInstanceOf("report"); - } } diff --git a/keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl b/keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl index 502d31fc07c..4d0a39fef25 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl +++ b/keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl @@ -1,19 +1,20 @@ +<#-- @ftlvariable name="checkerData" type="org.key_project.proofmanagement.check.CheckerData" -->
    -
  • Bundle: ${cd.Pbh.bundleName}
  • +
  • Bundle: ${checkerData.pbh.bundleName!"n/a"}
  • Checks run: - <#list cd.checks as c> + <#list checkerData.checks as c> ${c}<#if c_has_next>,
  • -
  • Date: ${cd.checkDate}
  • -
  • Overall Status: ${cd.globalState}
  • +
  • Date: ${checkerData.checkDate}
  • +
  • Overall Status: ${checkerData.globalState}
  • Contracts: <@globalprogress data=cd - total=cd.bundleProofCount - proven=cd.provenCount - lemmaLeft=cd.lemmaLeftCount - unproven=cd.unprovenCount /> + total=checkerData.bundleProofCount + proven=checkerData.provenCount + lemmaLeft=checkerData.lemmaLeftCount + unproven=checkerData.unprovenCount />
  • Standard output:
    @@ -36,12 +37,13 @@ font-size:16px; width:max-content; padding:10px"> - <#list cd.messages as msg> + <#list checkerData.messages as msg> <#escape x as x?xml> ${msg} - <#if msg_has_next> -
    - + + <#if msg_has_next> +
    +
  • diff --git a/keyext.proofmanagement/src/main/resources/report/html/report.ftl b/keyext.proofmanagement/src/main/resources/report/html/report.ftl index 43d1dc7cb85..69235c88ce0 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/report.ftl +++ b/keyext.proofmanagement/src/main/resources/report/html/report.ftl @@ -1,60 +1,74 @@ +<#-- @ftlvariable name="checkerData" type="org.key_project.proofmanagement.check.CheckerData" --> +<#-- @ftlvariable name="style" type="String" --> +<#-- @ftlvariable name="scripts" type="String" --> +<#-- @ftlvariable name="title" type="String" --> +<#-- @ftlvariable name="bundleFileName" type="String" --> +<#-- @ftlvariable name="treeRoot" type="org.key_project.proofmanagement.check.PathNode" --> +<#-- @ftlvariable name="entries" type="java.util.List" --> +<#-- @ftlvariable name="graph" type="org.key_project.proofmanagement.check.dependency.DependencyGraph" --> + + - - $title$ - - $scripts()$ + + $title$ + +
    - - + +
    -$/overview/overview(cd=checkerData)$ + <#include "overview/overview.ftl" >
    -

    Files found inside proof bundle:

    - $/tree/tree(node=treeRoot)$ +

    Files found inside proof bundle:

    + <#include "tree/tree.ftl" > // (node=treeRoot)$
    -

    Contracts with proof inside bundle:

    - $/lines/lines(cd=checkerData, entries=entries)$ -

    Contracts declared inside bundle without proof:

    - $/lines/prooflessContracts(cd=checkerData)$ -

    Settings comparison:

    - $/settings/settings(cd=checkerData)$ +

    Contracts with proof inside bundle:

    + <#include "lines/lines.ftl" > + //(cd=checkerData, entries=entries)$ +

    Contracts declared inside bundle without proof:

    + <#include "lines/prooflessContracts.ftl" > + (cd=checkerData)$ +

    Settings comparison:

    + <#include "settings/settings.ftl">(cd=checkerData)$
    -

    Dependencies between contracts:

    - $if(graph)$ - $/dependency/dependencies(graph=graph)$ - $else$ - Dependency check has not been enabled. Use --dependency flag to enable it. - $endif$ +

    Dependencies between contracts:

    + <#if graph > + <#include "dependency/dependencies.ftl"> + <#else> + Dependency check has not been enabled. Use --dependency flag to enable it. +
    + // make the filetree foldable/expandable + let toggler = document.getElementsByClassName("caret"); + for (let i = 0; i < toggler.length; i++) { + toggler[i].addEventListener("click", function () { + this.parentElement.querySelector(".nested").classList.toggle("active"); + this.classList.toggle("caret-down"); + }); + } + // ensure that the overview tab is opened when the file is loaded + document.getElementById("defaultOpen").click() + + \ No newline at end of file diff --git a/keyext.proofmanagement/src/test/java/TestGenerateReport.java b/keyext.proofmanagement/src/test/java/TestGenerateReport.java new file mode 100644 index 00000000000..e6bcad36203 --- /dev/null +++ b/keyext.proofmanagement/src/test/java/TestGenerateReport.java @@ -0,0 +1,19 @@ +import org.junit.jupiter.api.Test; +import org.key_project.proofmanagement.Main; +import org.key_project.proofmanagement.check.CheckerData; +import org.key_project.proofmanagement.io.HTMLReport; +import org.key_project.proofmanagement.io.LogLevel; + +import java.io.IOException; +import java.nio.file.Files; + +/** + * @author Alexander Weigl + * @version 1 (6/16/25) + */ +public class TestGenerateReport { + @Test void test() throws IOException { + CheckerData data = new CheckerData(LogLevel.DEBUG); + HTMLReport.print(data, Files.createTempFile("report", ".html")); + } +} From 94fc6411b3559c93551eeee426447caa39e0872c Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Mon, 16 Jun 2025 19:17:56 +0200 Subject: [PATCH 03/22] Tried to come up with a test case --- .../org/key_project/util/helper/FindResources.java | 4 +++- .../src/test/java/TestGenerateReport.java | 13 +++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/key.util/src/main/java/org/key_project/util/helper/FindResources.java b/key.util/src/main/java/org/key_project/util/helper/FindResources.java index 2b2d8893032..4376bba6d2d 100644 --- a/key.util/src/main/java/org/key_project/util/helper/FindResources.java +++ b/key.util/src/main/java/org/key_project/util/helper/FindResources.java @@ -168,7 +168,9 @@ public final class FindResources { } public static @Nullable Path getTestCasesDirectory() { - return findFolder("TEST_CASES", "src/test/resources/testcase"); + return findFolder("TEST_CASES", + "src/test/resources/testcase", + "../key.core/src/test/resources/testcase"); } public static @Nullable Path getTestResourcesDirectory() { diff --git a/keyext.proofmanagement/src/test/java/TestGenerateReport.java b/keyext.proofmanagement/src/test/java/TestGenerateReport.java index e6bcad36203..a114851045d 100644 --- a/keyext.proofmanagement/src/test/java/TestGenerateReport.java +++ b/keyext.proofmanagement/src/test/java/TestGenerateReport.java @@ -1,8 +1,6 @@ +import de.uka.ilkd.key.util.HelperClassForTests; import org.junit.jupiter.api.Test; import org.key_project.proofmanagement.Main; -import org.key_project.proofmanagement.check.CheckerData; -import org.key_project.proofmanagement.io.HTMLReport; -import org.key_project.proofmanagement.io.LogLevel; import java.io.IOException; import java.nio.file.Files; @@ -12,8 +10,11 @@ * @version 1 (6/16/25) */ public class TestGenerateReport { - @Test void test() throws IOException { - CheckerData data = new CheckerData(LogLevel.DEBUG); - HTMLReport.print(data, Files.createTempFile("report", ".html")); + @Test + void test() throws IOException { + var testDir = HelperClassForTests.TESTCASE_DIRECTORY.resolve("proofBundle") + .toAbsolutePath().normalize(); + var file = Files.createTempFile("report", ".html"); + Main.check(true, true, true, true, testDir, file); } } From 7c99b7fc6c48c6c35055cf234d226d2711927188 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Wed, 18 Jun 2025 15:57:38 +0200 Subject: [PATCH 04/22] a working simplified version with freemarker --- .../util/helper/FindResources.java | 4 +- keyext.proofmanagement/build.gradle | 13 + .../proofmanagement/io/HTMLReport.java | 25 +- .../resources/report/html/dependency/dep.ftl | 19 -- .../report/html/dependency/dependencies.ftl | 20 -- .../resources/report/html/lines/contract.ftl | 4 - .../main/resources/report/html/lines/line.ftl | 29 -- .../resources/report/html/lines/lines.ftl | 26 -- .../report/html/lines/prooflessContracts.ftl | 14 - .../report/html/overview/globalprogress.ftl | 23 -- .../report/html/overview/overview.ftl | 50 ---- .../src/main/resources/report/html/report.ftl | 249 +++++++++++++++++- .../report/html/settings/choices.ftl | 5 - .../report/html/settings/settings.ftl | 12 - .../main/resources/report/html/tree/dir.ftl | 6 - .../main/resources/report/html/tree/tree.ftl | 9 - .../src/test/java/TestGenerateReport.java | 11 +- 17 files changed, 274 insertions(+), 245 deletions(-) delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/dependency/dep.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/dependency/dependencies.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/lines/contract.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/lines/line.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/lines/lines.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/lines/prooflessContracts.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/settings/choices.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/settings/settings.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/tree/dir.ftl delete mode 100644 keyext.proofmanagement/src/main/resources/report/html/tree/tree.ftl diff --git a/key.util/src/main/java/org/key_project/util/helper/FindResources.java b/key.util/src/main/java/org/key_project/util/helper/FindResources.java index 4376bba6d2d..c6731e1bb0a 100644 --- a/key.util/src/main/java/org/key_project/util/helper/FindResources.java +++ b/key.util/src/main/java/org/key_project/util/helper/FindResources.java @@ -169,8 +169,8 @@ public final class FindResources { public static @Nullable Path getTestCasesDirectory() { return findFolder("TEST_CASES", - "src/test/resources/testcase", - "../key.core/src/test/resources/testcase"); + "src/test/resources/testcase", + "../key.core/src/test/resources/testcase"); } public static @Nullable Path getTestResourcesDirectory() { diff --git a/keyext.proofmanagement/build.gradle b/keyext.proofmanagement/build.gradle index 7cc9fca3ca4..efc03d06afc 100644 --- a/keyext.proofmanagement/build.gradle +++ b/keyext.proofmanagement/build.gradle @@ -18,6 +18,19 @@ application { applicationName = "pm" } + +tasks.register('testIntegrationReport', JavaExec) { + mainClass.set(application.mainClass) + classpath = sourceSets.main.runtimeClasspath + + args('check', '--missing', '--settings', '--report', 'proofManagementReport.html', '--replay', '--dependency', + 'proofBundle/simpleBundleGeneration') + + // not necessary any more with the workaround in HTMLReport + // needed for access of Node.getValue in string template + // jvmArgs += ['--add-opens', 'java.base/java.util=ALL-UNNAMED'] +} + run { // for debugging, something like this can be used: //args('check', '--missing', '--settings', '--report', 'proofManagementReport.html', '--replay', '--dependency', 'pmexample2') diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java index 426c56d9169..58156ac1b87 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java @@ -3,19 +3,20 @@ * SPDX-License-Identifier: GPL-2.0-only */ package org.key_project.proofmanagement.io; -import freemarker.template.Configuration; -import freemarker.template.Template; -import freemarker.template.TemplateException; -import org.key_project.proofmanagement.check.CheckerData; -import org.key_project.proofmanagement.check.PathNode; -import org.key_project.util.java.IOUtil; - import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.HashMap; import java.util.Map; +import org.key_project.proofmanagement.check.CheckerData; +import org.key_project.proofmanagement.check.PathNode; +import org.key_project.util.java.IOUtil; + +import freemarker.template.Configuration; +import freemarker.template.Template; +import freemarker.template.TemplateException; + /** * Provides a static method to print the check results in HTML format to a given path. * @@ -31,10 +32,10 @@ private HTMLReport() { /** * Prints out the given check results to a target path. * - * @param data the check results to print + * @param data the check results to print * @param target the target path of the output * @throws IOException if an error occurs when accessing to the target path or the string - * template resources + * template resources */ public static void print(CheckerData data, Path target) throws IOException { Configuration cfg = new Configuration(Configuration.VERSION_2_3_32); @@ -47,8 +48,10 @@ public static void print(CheckerData data, Path target) throws IOException { // Prepare data model Map st = new HashMap<>(); - st.put("style", IOUtil.readFrom(HTMLReport.class.getResourceAsStream("/report/html/style.css"))); - st.put("scripts", IOUtil.readFrom(HTMLReport.class.getResourceAsStream("/report/html/scripts.js"))); + st.put("style", + IOUtil.readFrom(HTMLReport.class.getResourceAsStream("/report/html/style.css"))); + st.put("scripts", + IOUtil.readFrom(HTMLReport.class.getResourceAsStream("/report/html/scripts.js"))); st.put("title", data.getPbh() != null ? data.getPbh().getBundleName() : ""); diff --git a/keyext.proofmanagement/src/main/resources/report/html/dependency/dep.ftl b/keyext.proofmanagement/src/main/resources/report/html/dependency/dep.ftl deleted file mode 100644 index c12000cd53f..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/dependency/dep.ftl +++ /dev/null @@ -1,19 +0,0 @@ - - - ${node.contract.name?xml} - - - #${graph.node2SCC[node].id?string("00")} - <#if graph.node2SCC[node].legal> - (legal) - <#else> - (illegal) - - - ⟶ - - <#list node.dependencies?keys as d> - ${d.contract.name?xml}
    - - - diff --git a/keyext.proofmanagement/src/main/resources/report/html/dependency/dependencies.ftl b/keyext.proofmanagement/src/main/resources/report/html/dependency/dependencies.ftl deleted file mode 100644 index 296a7f22d22..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/dependency/dependencies.ftl +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - <#list graph.nodes as node> - <@dep graph=graph node=node /> - - -
    ProofSCCDependencies
    - - - diff --git a/keyext.proofmanagement/src/main/resources/report/html/lines/contract.ftl b/keyext.proofmanagement/src/main/resources/report/html/lines/contract.ftl deleted file mode 100644 index dafff247be6..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/lines/contract.ftl +++ /dev/null @@ -1,4 +0,0 @@ - -class: ${contract.KJT.javaType.name}
    -target: ${contract.target.name?xml}
    -type: ${contract.displayName?xml} diff --git a/keyext.proofmanagement/src/main/resources/report/html/lines/line.ftl b/keyext.proofmanagement/src/main/resources/report/html/lines/line.ftl deleted file mode 100644 index 9b2bd77d9d6..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/lines/line.ftl +++ /dev/null @@ -1,29 +0,0 @@ - - - <@contract contract=entry.contract /> - -
    ${entry.shortSrc}
    -
    ${entry.proofFile.toFile.name}
    - #${entry.settingsId?string("00")} - ${entry.loadingState} - ${entry.replayState} - ${entry.proofState} - ${entry.dependencyState} - - <#if cd.checks.replay> - <#if entry.replaySuccess> - - Nodes: ${entry.proof.statistics.nodes}
    - Interactive Steps: ${entry.proof.statistics.interactiveSteps}
    - Automode Time: ${entry.proof.statistics.autoModeTimeInMillis} ms - - <#else> - Replay of proof failed! - - <#else> - - Replay of proof is needed to display meaningful information here.
    - Enable via --replay switch. - - - diff --git a/keyext.proofmanagement/src/main/resources/report/html/lines/lines.ftl b/keyext.proofmanagement/src/main/resources/report/html/lines/lines.ftl deleted file mode 100644 index b275722d783..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/lines/lines.ftl +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - <#list entries as e> - <@line entry=e cd=cd /> - - -
    ContractSource FileProof
    FileSettings IDStatusStatistics
    loadedreplayedstatedependencies
    diff --git a/keyext.proofmanagement/src/main/resources/report/html/lines/prooflessContracts.ftl b/keyext.proofmanagement/src/main/resources/report/html/lines/prooflessContracts.ftl deleted file mode 100644 index 0cffbbb820a..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/lines/prooflessContracts.ftl +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - <#list cd.contractsWithoutProof as c> - - - - - -
    Contract
    <@contract contract=c />
    diff --git a/keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.ftl b/keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.ftl deleted file mode 100644 index 1fdc1eab07c..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/overview/globalprogress.ftl +++ /dev/null @@ -1,23 +0,0 @@ -
    - <#if cd.hasProvenContracts> -
    proven
    - - <#if cd.hasLemmaLeftContracts> -
    dependencies left
    - - <#if cd.hasUnprovenContracts> -
    unproven
    - -
    - -
    - <#if cd.hasProvenContracts> -
    ${proven}
    - - <#if cd.hasLemmaLeftContracts> -
    ${lemmaLeft}
    - - <#if cd.hasUnprovenContracts> -
    ${unproven}
    - -
    diff --git a/keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl b/keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl deleted file mode 100644 index 4d0a39fef25..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/overview/overview.ftl +++ /dev/null @@ -1,50 +0,0 @@ -<#-- @ftlvariable name="checkerData" type="org.key_project.proofmanagement.check.CheckerData" --> -
      -
    • Bundle: ${checkerData.pbh.bundleName!"n/a"}
    • -
    • Checks run: - <#list checkerData.checks as c> - ${c}<#if c_has_next>, - -
    • -
    • Date: ${checkerData.checkDate}
    • -
    • Overall Status: ${checkerData.globalState}
    • -
    • Contracts: - <@globalprogress - data=cd - total=checkerData.bundleProofCount - proven=checkerData.provenCount - lemmaLeft=checkerData.lemmaLeftCount - unproven=checkerData.unprovenCount /> -
    • -
    • Standard output: -
      -
      - - - - - - - - -
      -
      -
      - <#list checkerData.messages as msg> - <#escape x as x?xml> - ${msg} - - <#if msg_has_next> -
      - - -
      -
    • -
    diff --git a/keyext.proofmanagement/src/main/resources/report/html/report.ftl b/keyext.proofmanagement/src/main/resources/report/html/report.ftl index 69235c88ce0..2b61f5f7062 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/report.ftl +++ b/keyext.proofmanagement/src/main/resources/report/html/report.ftl @@ -6,15 +6,15 @@ <#-- @ftlvariable name="treeRoot" type="org.key_project.proofmanagement.check.PathNode" --> <#-- @ftlvariable name="entries" type="java.util.List" --> <#-- @ftlvariable name="graph" type="org.key_project.proofmanagement.check.dependency.DependencyGraph" --> - + - $title$ + ${title} - @@ -29,29 +29,254 @@
    - <#include "overview/overview.ftl" > +
      +
    • Bundle: ${checkerData.pbh.bundleName!"n/a"}
    • +
    • Checks run: + <#list checkerData.checks as key, c> + ${c}<#sep>, + +
    • +
    • Date: ${checkerData.checkDate}
    • +
    • Overall Status: ${checkerData.globalState}
    • +
    • Contracts: + <#assign total=checkerData.bundleProofCount() + proven=checkerData.provenCount() + lemmaLeft=checkerData.lemmaLeftCount() + unproven=checkerData.unprovenCount() + data=checkerData> + +
      + <#if data.hasProvenContracts()> +
      proven
      + + <#if data.hasLemmaLeftContracts()> +
      dependencies left +
      + + <#if data.hasUnprovenContracts()> +
      unproven
      + +
      + +
      + <#if data.hasProvenContracts()> +
      ${proven}
      + + <#if data.hasLemmaLeftContracts()> +
      ${lemmaLeft}
      + + <#if data.hasUnprovenContracts()> +
      ${unproven}
      + +
      + +
    • +
    • Standard output: +
      +
      + + + + + + + + +
      +
      +
      + <#list checkerData.messages as msg> + <#escape x as x?xml> + ${msg} + + <#if msg_has_next> +
      + + +
      +
    • +

    Files found inside proof bundle:

    - <#include "tree/tree.ftl" > // (node=treeRoot)$ + + <#macro tree_folder f> + ${f} +
      + <#list f.children as c> + <@tree node=c /> + +
    + + + <#macro tree node> +
      +
    • + <#if node.children?has_content> + <@tree_folder node /> + <#else> + ${node} + +
    • +
    + + <@tree treeRoot />

    Contracts with proof inside bundle:

    - <#include "lines/lines.ftl" > - //(cd=checkerData, entries=entries)$ + + + + + + + + + + + + + + + + + + + + + + <#list entries as entry> + + + + + + + + + + + <#if cd.checks.replay> + <#if entry.replaySuccess> + + <#else> + + + <#else> + + + + + +
    ContractSource FileProof
    FileSettings IDStatusStatistics
    loadedreplayedstatedependencies
    + class: ${entry.contract.KJT.javaType.name}
    + target: ${entry.contract.target.name?xml}
    + type: ${entry.contract.displayName?xml} +
    +
    ${entry.shortSrc}
    +
    +
    ${entry.proofFile.toFile.name}
    +
    #${entry.settingsId?string("00")}${entry.loadingState}${entry.replayState}${entry.proofState}${entry.dependencyState} + Nodes: ${entry.proof.statistics.nodes}
    + Interactive Steps: ${entry.proof.statistics.interactiveSteps}
    + Automode Time: ${entry.proof.statistics.autoModeTimeInMillis} ms +
    Replay of proof failed! + Replay of proof is needed to display meaningful information here.
    + Enable via --replay switch. +
    +

    Contracts declared inside bundle without proof:

    - <#include "lines/prooflessContracts.ftl" > - (cd=checkerData)$ + + + + + + + + <#list checkerData.contractsWithoutProof as c> + + + + + +
    Contract
    + class: ${c.KJT.javaType.name}
    + target: ${c.target.name()}
    + type: ${c.displayName} +

    Settings comparison:

    - <#include "settings/settings.ftl">(cd=checkerData)$ + + + + + <#list checkerData.choiceNames as names> + + + + + + <#list checkerData.shortChoices2Id as key,value> + + + <#list checkerData.choiceNames as name > + + + + + +
    ID${c}
    ${value} format="%02d"$${key.get(name)}

    Dependencies between contracts:

    - <#if graph > - <#include "dependency/dependencies.ftl"> + <#if graph?? > + + + + + + + + + + + <#list graph.nodes as node> + + + + + + + + +
    ProofSCCDependencies
    + ${node.contract.name?xml} + + #${graph.node2SCC[node].id?string("00")} + <#if graph.node2SCC[node].legal> + (legal) + <#else> + (illegal) + + + <#list node.dependencies?keys as d> + ${d.contract.name?xml}
    + +
    + + + <#else> Dependency check has not been enabled. Use --dependency flag to enable it. diff --git a/keyext.proofmanagement/src/main/resources/report/html/settings/choices.ftl b/keyext.proofmanagement/src/main/resources/report/html/settings/choices.ftl deleted file mode 100644 index 873da867e49..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/settings/choices.ftl +++ /dev/null @@ -1,5 +0,0 @@ - - #$entry.value; format="%02d"$ - $names:{name | $entry.key.(name)$ - }$ - \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/resources/report/html/settings/settings.ftl b/keyext.proofmanagement/src/main/resources/report/html/settings/settings.ftl deleted file mode 100644 index 14713005818..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/settings/settings.ftl +++ /dev/null @@ -1,12 +0,0 @@ - - - - - $cd.choiceNames:{c | - }$ - - - - $cd.shortChoices2Id.entrySet:{entry | $choices(names=cd.choiceNames,entry=entry)$}$ - -
    ID$c$
    diff --git a/keyext.proofmanagement/src/main/resources/report/html/tree/dir.ftl b/keyext.proofmanagement/src/main/resources/report/html/tree/dir.ftl deleted file mode 100644 index 0c6df1b4bf7..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/tree/dir.ftl +++ /dev/null @@ -1,6 +0,0 @@ -${f} -
      - <#list f.children as c> - <@tree node=c /> - -
    diff --git a/keyext.proofmanagement/src/main/resources/report/html/tree/tree.ftl b/keyext.proofmanagement/src/main/resources/report/html/tree/tree.ftl deleted file mode 100644 index ce523fd7264..00000000000 --- a/keyext.proofmanagement/src/main/resources/report/html/tree/tree.ftl +++ /dev/null @@ -1,9 +0,0 @@ -
      -
    • - <#if node.children?has_content> - <@dir f=node /> - <#else> - ${node} - -
    • -
    diff --git a/keyext.proofmanagement/src/test/java/TestGenerateReport.java b/keyext.proofmanagement/src/test/java/TestGenerateReport.java index a114851045d..8e02f1333c3 100644 --- a/keyext.proofmanagement/src/test/java/TestGenerateReport.java +++ b/keyext.proofmanagement/src/test/java/TestGenerateReport.java @@ -1,9 +1,14 @@ +/* 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 */ +import java.io.IOException; +import java.nio.file.Files; + import de.uka.ilkd.key.util.HelperClassForTests; -import org.junit.jupiter.api.Test; + import org.key_project.proofmanagement.Main; -import java.io.IOException; -import java.nio.file.Files; +import org.junit.jupiter.api.Test; /** * @author Alexander Weigl From 7769b341062ec0d6b981d644cd748391719d82f8 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Wed, 18 Jun 2025 16:06:57 +0200 Subject: [PATCH 05/22] css solution for tabs --- .../src/main/resources/report/html/report.ftl | 15 +++++-------- .../src/main/resources/report/html/style.css | 22 ++++++++++--------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/keyext.proofmanagement/src/main/resources/report/html/report.ftl b/keyext.proofmanagement/src/main/resources/report/html/report.ftl index 2b61f5f7062..4c9e5985eb4 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/report.ftl +++ b/keyext.proofmanagement/src/main/resources/report/html/report.ftl @@ -21,14 +21,14 @@ -
    - - - - + -
    +
    • Bundle: ${checkerData.pbh.bundleName!"n/a"}
    • Checks run: @@ -291,9 +291,6 @@ this.classList.toggle("caret-down"); }); } - - // ensure that the overview tab is opened when the file is loaded - document.getElementById("defaultOpen").click() \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/resources/report/html/style.css b/keyext.proofmanagement/src/main/resources/report/html/style.css index 5bd1c2cfd11..3e634fde0f1 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/style.css +++ b/keyext.proofmanagement/src/main/resources/report/html/style.css @@ -1,34 +1,36 @@ body, html { margin: 0; - font-family: Arial; + font-family: "Arial", sans-serif; } -.tab { +div.tabcontent { overflow: hidden; background-color: #f1f1f1; + display:none; /* Hide all tabs */ } -.tab button { +div.tabcontent:target, /*show tabs if targeted */ +:root:not(:has(:target)) div.tabcontent.default /*if nothing targeted at all, show the default tab*/ { + display: block +} + + +.nav a { background-color: inherit; - float: left; - border: none; - outline: none; - cursor: pointer; padding: 14px 16px; transition: 0.3s; font-size: 20px; } -.tab button:hover { +.tab a:hover { background-color: #ddd; } -.tab button.active { +.tab a.active { background-color: #ccc } .tabcontent { - display: none; padding: 6px 12px; } From 7b2821ce229b12056fc8aad7bbc410946a742971 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Wed, 18 Jun 2025 16:09:47 +0200 Subject: [PATCH 06/22] Final clean up --- keyext.proofmanagement/build.gradle | 5 +- .../a/io/FilterOutputStream.java | 7 + .../a/io/IOException.java | 13 + .../a/io/InputStream.java | 7 + .../a/io/OutputStream.java | 6 + .../a/io/PrintStream.java | 27 + .../a/io/Serializable.java | 9 + .../a/lang/ArithmeticException.java | 11 + .../lang/ArrayIndexOutOfBoundsException.java | 12 + .../a/lang/ArrayStoreException.java | 11 + .../a/lang/AssertionError.java | 12 + .../a/lang/Character.java | 9 + .../complexBundleGeneration/a/lang/Class.java | 8 + .../a/lang/ClassCastException.java | 11 + .../a/lang/CloneNotSupportedException.java | 11 + .../a/lang/Cloneable.java | 9 + .../a/lang/Comparable.java | 10 + .../complexBundleGeneration/a/lang/Enum.java | 14 + .../complexBundleGeneration/a/lang/Error.java | 13 + .../a/lang/Exception.java | 13 + .../a/lang/ExceptionInInitializerError.java | 19 + .../a/lang/IllegalArgumentException.java | 11 + .../a/lang/IndexOutOfBoundsException.java | 11 + .../a/lang/Integer.java | 46 + .../a/lang/InterruptedException.java | 11 + .../a/lang/Iterable.java | 10 + .../a/lang/LinkageError.java | 11 + .../a/lang/NegativeArraySizeException.java | 11 + .../a/lang/NoClassDefFoundError.java | 11 + .../a/lang/NullPointerException.java | 23 + .../a/lang/Number.java | 16 + .../a/lang/NumberFormatException.java | 11 + .../a/lang/Object.java | 32 + .../a/lang/OutOfMemoryError.java | 8 + .../a/lang/Runnable.java | 7 + .../a/lang/RuntimeException.java | 13 + .../a/lang/String.java | 91 ++ .../complexBundleGeneration/a/lang/String.key | 1348 +++++++++++++++++ .../a/lang/StringBuffer.java | 25 + .../a/lang/System.java | 9 + .../a/lang/Thread.java | 7 + .../a/lang/Throwable.java | 82 + .../a/lang/VirtualMachineError.java | 8 + .../a/lang/annotation/Annotation.java | 10 + .../a/util/Collection.java | 24 + .../a/util/Iterator.java | 12 + .../complexBundleGeneration/a/util/List.java | 34 + .../a/util/ListIterator.java | 18 + .../complexBundleGeneration/a/util/Map.java | 23 + .../complexBundleGeneration/a/util/Set.java | 38 + .../complexBundleGeneration/b/Compressed.zip | Bin 0 -> 454 bytes .../b/Compressed/C2.java | 2 + .../b/Compressed/subdir/C1.java | 2 + .../complexBundleGeneration/b/cp1/B.java | 3 + .../b/cp1/subdir/A.java | 2 + .../complexBundleGeneration/b/cp2/D.java | 10 + .../complexBundleGeneration/src/Client.java | 2 + .../complexBundleGeneration/src/Test.java | 37 + .../complexBundleGeneration/test.key | 43 + .../simpleBundleGeneration/src/Client.java | 2 + .../simpleBundleGeneration/src/Test.java | 30 + .../simpleBundleGeneration/test.key | 38 + .../src/test/java/TestGenerateReport.java | 25 - 63 files changed, 2365 insertions(+), 29 deletions(-) create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/FilterOutputStream.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/IOException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/InputStream.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/OutputStream.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/PrintStream.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/Serializable.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArithmeticException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArrayIndexOutOfBoundsException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArrayStoreException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/AssertionError.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Character.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Class.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ClassCastException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/CloneNotSupportedException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Cloneable.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Comparable.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Enum.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Error.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Exception.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ExceptionInInitializerError.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/IllegalArgumentException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/IndexOutOfBoundsException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Integer.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/InterruptedException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Iterable.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/LinkageError.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NegativeArraySizeException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NoClassDefFoundError.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NullPointerException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Number.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NumberFormatException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Object.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/OutOfMemoryError.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Runnable.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/RuntimeException.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/String.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/String.key create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/StringBuffer.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/System.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Thread.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Throwable.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/VirtualMachineError.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/annotation/Annotation.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Collection.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Iterator.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/List.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/ListIterator.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Map.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Set.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/b/Compressed.zip create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/b/Compressed/C2.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/b/Compressed/subdir/C1.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp1/B.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp1/subdir/A.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp2/D.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/src/Client.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/src/Test.java create mode 100644 keyext.proofmanagement/proofBundle/complexBundleGeneration/test.key create mode 100644 keyext.proofmanagement/proofBundle/simpleBundleGeneration/src/Client.java create mode 100644 keyext.proofmanagement/proofBundle/simpleBundleGeneration/src/Test.java create mode 100644 keyext.proofmanagement/proofBundle/simpleBundleGeneration/test.key delete mode 100644 keyext.proofmanagement/src/test/java/TestGenerateReport.java diff --git a/keyext.proofmanagement/build.gradle b/keyext.proofmanagement/build.gradle index efc03d06afc..61cde1fb71a 100644 --- a/keyext.proofmanagement/build.gradle +++ b/keyext.proofmanagement/build.gradle @@ -20,15 +20,12 @@ application { tasks.register('testIntegrationReport', JavaExec) { + group = "verification" mainClass.set(application.mainClass) classpath = sourceSets.main.runtimeClasspath args('check', '--missing', '--settings', '--report', 'proofManagementReport.html', '--replay', '--dependency', 'proofBundle/simpleBundleGeneration') - - // not necessary any more with the workaround in HTMLReport - // needed for access of Node.getValue in string template - // jvmArgs += ['--add-opens', 'java.base/java.util=ALL-UNNAMED'] } run { diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/FilterOutputStream.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/FilterOutputStream.java new file mode 100644 index 00000000000..0ee5a481ecc --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/FilterOutputStream.java @@ -0,0 +1,7 @@ +package java.io; + +public class FilterOutputStream extends java.io.OutputStream { + + protected java.io.OutputStream out; + +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/IOException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/IOException.java new file mode 100644 index 00000000000..ce2a4d5e208 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/IOException.java @@ -0,0 +1,13 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.io; + +public class IOException extends java.lang.Exception +{ + + public IOException(); + public IOException(java.lang.String arg0); + public IOException(java.lang.String arg0, java.lang.Throwable arg1); + public IOException(java.lang.Throwable arg0); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/InputStream.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/InputStream.java new file mode 100644 index 00000000000..34286f49389 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/InputStream.java @@ -0,0 +1,7 @@ +package java.io; + +public class InputStream { + + public InputStream(); + +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/OutputStream.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/OutputStream.java new file mode 100644 index 00000000000..1f7d73f21c1 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/OutputStream.java @@ -0,0 +1,6 @@ +package java.io; + +public class OutputStream { + + +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/PrintStream.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/PrintStream.java new file mode 100644 index 00000000000..cc1a7168f6e --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/PrintStream.java @@ -0,0 +1,27 @@ +package java.io; + +public class PrintStream extends java.io.FilterOutputStream { + + public PrintStream(java.io.OutputStream out); + public PrintStream(java.io.OutputStream out, boolean autoFlush); + + public void print(boolean b); + public void print(char c); + public void print(int i); + public void print(long l); + // public void print(float f); + // public void print(double d); + public void print(char[] s); + public void print(java.lang.String s); + public void print(java.lang.Object obj); + public void println(); + public void println(boolean x); + public void println(char x); + public void println(int x); + public void println(long x); + // public void println(float x); + // public void println(double x); + public void println(char[] x); + public void println(java.lang.String x); + public void println(java.lang.Object x); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/Serializable.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/Serializable.java new file mode 100644 index 00000000000..7cbab07da4f --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/io/Serializable.java @@ -0,0 +1,9 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.io; + +public interface Serializable +{ + +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArithmeticException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArithmeticException.java new file mode 100644 index 00000000000..7c77a788775 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArithmeticException.java @@ -0,0 +1,11 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class ArithmeticException extends java.lang.RuntimeException +{ + + public ArithmeticException() { super(); } + public ArithmeticException(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArrayIndexOutOfBoundsException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArrayIndexOutOfBoundsException.java new file mode 100644 index 00000000000..1609f29c468 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArrayIndexOutOfBoundsException.java @@ -0,0 +1,12 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class ArrayIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException +{ + + public ArrayIndexOutOfBoundsException() { super(); } + public ArrayIndexOutOfBoundsException(int arg0); + public ArrayIndexOutOfBoundsException(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArrayStoreException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArrayStoreException.java new file mode 100644 index 00000000000..0a49a9f8e28 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ArrayStoreException.java @@ -0,0 +1,11 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class ArrayStoreException extends java.lang.RuntimeException +{ + + public ArrayStoreException() { super(); } + public ArrayStoreException(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/AssertionError.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/AssertionError.java new file mode 100644 index 00000000000..d1b743af381 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/AssertionError.java @@ -0,0 +1,12 @@ +package java.lang; + +public class AssertionError extends java.lang.Error { + public AssertionError() {} + public AssertionError(java.lang.Object detailMessage) {} + public AssertionError(boolean detailMessage){} + public AssertionError(char detailMessage) {} +// public AssertionError(double detailMessage) {} +// public AssertionError(float detailMessage) {} + public AssertionError(int detailMessage) {} + public AssertionError(long detailMessage) {} +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Character.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Character.java new file mode 100644 index 00000000000..7f65576dac5 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Character.java @@ -0,0 +1,9 @@ +package java.lang; + +/** + * Exists only for proving EVotingMachine + */ +public final class Character extends java.lang.Object implements java.io.Serializable, java.lang.Comparable +{ + static int digit(char ch, int radix); +} \ No newline at end of file diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Class.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Class.java new file mode 100644 index 00000000000..94764a1af19 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Class.java @@ -0,0 +1,8 @@ + + +package java.lang; + + +public final class Class { + +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ClassCastException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ClassCastException.java new file mode 100644 index 00000000000..12a075ba59d --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ClassCastException.java @@ -0,0 +1,11 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Tue Apr 15 10:18:21 CEST 2008 + */ +package java.lang; + +public class ClassCastException extends java.lang.RuntimeException +{ + + public ClassCastException() { super(); } + public ClassCastException(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/CloneNotSupportedException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/CloneNotSupportedException.java new file mode 100644 index 00000000000..cb216cab7b5 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/CloneNotSupportedException.java @@ -0,0 +1,11 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class CloneNotSupportedException extends java.lang.Exception +{ + + public CloneNotSupportedException() { super(); } + public CloneNotSupportedException(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Cloneable.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Cloneable.java new file mode 100644 index 00000000000..6842225aeb0 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Cloneable.java @@ -0,0 +1,9 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public interface Cloneable +{ + +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Comparable.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Comparable.java new file mode 100644 index 00000000000..d90fa74e28f --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Comparable.java @@ -0,0 +1,10 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public interface Comparable +{ + + public int compareTo(java.lang.Object arg0); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Enum.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Enum.java new file mode 100644 index 00000000000..2f822fc942a --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Enum.java @@ -0,0 +1,14 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Jan 31 13:24:50 CET 2014 + */ +package java.lang; + +public abstract class Enum extends java.lang.Object implements java.lang.Comparable, java.io.Serializable +{ + + public final java.lang.String name(); + public final int ordinal(); + protected Enum(java.lang.String arg0, int arg1); + public final java.lang.Class getDeclaringClass(); + public static java.lang.Enum valueOf(java.lang.Class arg0, java.lang.String arg1); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Error.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Error.java new file mode 100644 index 00000000000..b67f5b3cc69 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Error.java @@ -0,0 +1,13 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class Error extends java.lang.Throwable +{ + + public Error() { super(); } + public Error(java.lang.String arg0) { super(arg0); } + public Error(java.lang.String arg0, java.lang.Throwable arg1) { super(arg0, arg1); } + public Error(java.lang.Throwable arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Exception.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Exception.java new file mode 100644 index 00000000000..5be227222d9 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Exception.java @@ -0,0 +1,13 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class Exception extends java.lang.Throwable +{ + + public Exception() { super(); } + public Exception(java.lang.String arg0) { super(arg0); } + public Exception(java.lang.String arg0, java.lang.Throwable arg1) { super(arg0, arg1); } + public Exception(java.lang.Throwable arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ExceptionInInitializerError.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ExceptionInInitializerError.java new file mode 100644 index 00000000000..bba819146a7 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/ExceptionInInitializerError.java @@ -0,0 +1,19 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class ExceptionInInitializerError extends java.lang.LinkageError +{ + + public ExceptionInInitializerError() { super(); } + // the following is needed for in some examples to static initialisation: + public ExceptionInInitializerError(java.lang.Throwable arg0) { + super(); + initCause(arg0); + } + + public ExceptionInInitializerError(java.lang.String arg0) { super(arg0); } + public java.lang.Throwable getException(); + public java.lang.Throwable getCause(); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/IllegalArgumentException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/IllegalArgumentException.java new file mode 100644 index 00000000000..8063a445223 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/IllegalArgumentException.java @@ -0,0 +1,11 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class IllegalArgumentException extends java.lang.RuntimeException +{ + + public IllegalArgumentException() { super(); } + public IllegalArgumentException(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/IndexOutOfBoundsException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/IndexOutOfBoundsException.java new file mode 100644 index 00000000000..6c5cac27a64 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/IndexOutOfBoundsException.java @@ -0,0 +1,11 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class IndexOutOfBoundsException extends java.lang.RuntimeException +{ + + public IndexOutOfBoundsException() { super(); } + public IndexOutOfBoundsException(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Integer.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Integer.java new file mode 100644 index 00000000000..d5a9fdb19bc --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Integer.java @@ -0,0 +1,46 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Jan 31 13:24:50 CET 2014 + */ +package java.lang; + +public final class Integer implements java.lang.Comparable +{ + public final static int MIN_VALUE = -2147483648; + public final static int MAX_VALUE = 2147483647; + public final static java.lang.Class TYPE; + public final static int SIZE = 32; + + public static java.lang.String toString(int arg0, int arg1); + public static java.lang.String toHexString(int arg0); + public static java.lang.String toOctalString(int arg0); + public static java.lang.String toBinaryString(int arg0); + public static java.lang.String toString(int arg0); + public static int parseInt(java.lang.String arg0, int arg1) throws java.lang.NumberFormatException; + public static int parseInt(java.lang.String arg0) throws java.lang.NumberFormatException; + public static java.lang.Integer valueOf(java.lang.String arg0, int arg1) throws java.lang.NumberFormatException; + public static java.lang.Integer valueOf(java.lang.String arg0) throws java.lang.NumberFormatException; + public static java.lang.Integer valueOf(int arg0); + public Integer(int arg0); + public Integer(java.lang.String arg0) throws java.lang.NumberFormatException; + public byte byteValue(); + public short shortValue(); + public int intValue(); + public long longValue(); +// public float floatValue(); +// public double doubleValue(); + public static java.lang.Integer getInteger(java.lang.String arg0); + public static java.lang.Integer getInteger(java.lang.String arg0, int arg1); + public static java.lang.Integer getInteger(java.lang.String arg0, java.lang.Integer arg1); + public static java.lang.Integer decode(java.lang.String arg0) throws java.lang.NumberFormatException; + public int compareTo(java.lang.Integer arg0); + public static int highestOneBit(int arg0); + public static int lowestOneBit(int arg0); + public static int numberOfLeadingZeros(int arg0); + public static int numberOfTrailingZeros(int arg0); + public static int bitCount(int arg0); + public static int rotateLeft(int arg0, int arg1); + public static int rotateRight(int arg0, int arg1); + public static int reverse(int arg0); + public static int signum(int arg0); + public static int reverseBytes(int arg0); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/InterruptedException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/InterruptedException.java new file mode 100644 index 00000000000..922b1daa6a6 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/InterruptedException.java @@ -0,0 +1,11 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class InterruptedException extends java.lang.Exception +{ + + public InterruptedException() { super(); } + public InterruptedException(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Iterable.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Iterable.java new file mode 100644 index 00000000000..3e5413ae5d1 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Iterable.java @@ -0,0 +1,10 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public interface Iterable +{ + + public java.util.Iterator iterator(); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/LinkageError.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/LinkageError.java new file mode 100644 index 00000000000..54c8539022d --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/LinkageError.java @@ -0,0 +1,11 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Tue Apr 15 10:18:21 CEST 2008 + */ +package java.lang; + +public class LinkageError extends java.lang.Error +{ + + public LinkageError() { super(); } + public LinkageError(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NegativeArraySizeException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NegativeArraySizeException.java new file mode 100644 index 00000000000..4b816e4ea8d --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NegativeArraySizeException.java @@ -0,0 +1,11 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Tue Apr 15 10:17:24 CEST 2008 + */ +package java.lang; + +public class NegativeArraySizeException extends java.lang.RuntimeException +{ + + public NegativeArraySizeException() { super(); } + public NegativeArraySizeException(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NoClassDefFoundError.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NoClassDefFoundError.java new file mode 100644 index 00000000000..04c67bb073c --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NoClassDefFoundError.java @@ -0,0 +1,11 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class NoClassDefFoundError extends java.lang.LinkageError +{ + + public NoClassDefFoundError() { super(); } + public NoClassDefFoundError(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NullPointerException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NullPointerException.java new file mode 100644 index 00000000000..8bfd65aaf04 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NullPointerException.java @@ -0,0 +1,23 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class NullPointerException extends java.lang.RuntimeException +{ + + /*@ public normal_behavior + @ ensures message == null && cause == null; + @ assignable message, cause; + @*/ + public NullPointerException() { } + + + /*@ public normal_behavior + @ ensures message == arg0 && cause == null; + @ assignable message, cause; + @*/ + public NullPointerException(java.lang.String arg0) { + super(arg0); + } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Number.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Number.java new file mode 100644 index 00000000000..69d2dc26e12 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Number.java @@ -0,0 +1,16 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Jan 31 13:16:59 CET 2014 + */ +package java.lang; + +public abstract class Number extends java.lang.Object implements java.io.Serializable +{ + + public Number(); + public abstract int intValue(); + public abstract long longValue(); +// public abstract float floatValue(); +// public abstract double doubleValue(); + public byte byteValue(); + public short shortValue(); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NumberFormatException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NumberFormatException.java new file mode 100644 index 00000000000..af79a8454c3 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/NumberFormatException.java @@ -0,0 +1,11 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Jan 31 13:24:50 CET 2014 + */ +package java.lang; + +public class NumberFormatException extends java.lang.IllegalArgumentException +{ + + public NumberFormatException() { super(); } + public NumberFormatException(java.lang.String arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Object.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Object.java new file mode 100644 index 00000000000..49639aa4ea4 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Object.java @@ -0,0 +1,32 @@ +package java.lang; + +public class Object { + + public int integer; + + + /*@ public normal_behavior + @ assignable \nothing; + @ assignable \nothing; + @*/ + public /*@ pure @*/ Object() {} + + + public /*@ pure @*/ boolean equals(java.lang.Object o); + public int hashCode(); + + public java.lang.String toString(); + + protected void finalize() throws java.lang.Throwable {} + protected java.lang.Object clone() throws java.lang.CloneNotSupportedException {} + + public final void notify(); + public final void notifyAll(); + public final void wait() throws java.lang.InterruptedException; + + public final void wait(long ms) throws java.lang.InterruptedException; + + public final void wait(long ms, int ns) + throws java.lang.InterruptedException; + +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/OutOfMemoryError.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/OutOfMemoryError.java new file mode 100644 index 00000000000..73b0b475df1 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/OutOfMemoryError.java @@ -0,0 +1,8 @@ + + + +package java.lang; +public class OutOfMemoryError extends java.lang.VirtualMachineError { + public OutOfMemoryError() {} + public OutOfMemoryError(java.lang.String arg0) {} +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Runnable.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Runnable.java new file mode 100644 index 00000000000..18d2e9d9559 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Runnable.java @@ -0,0 +1,7 @@ +package java.lang; + +public interface Runnable{ + + public void run(); + +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/RuntimeException.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/RuntimeException.java new file mode 100644 index 00000000000..29b1e50efc1 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/RuntimeException.java @@ -0,0 +1,13 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public class RuntimeException extends java.lang.Exception +{ + + public RuntimeException() { super(); } + public RuntimeException(java.lang.String arg0) { super(arg0); } + public RuntimeException(java.lang.String arg0, java.lang.Throwable arg1) { super(arg0, arg1); } + public RuntimeException(java.lang.Throwable arg0) { super(arg0); } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/String.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/String.java new file mode 100644 index 00000000000..5257d1f2de0 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/String.java @@ -0,0 +1,91 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.lang; + +public final class String extends java.lang.Object implements java.io.Serializable, java.lang.Comparable +{ +// public final static java.util.Comparator CASE_INSENSITIVE_ORDER; + + public String(); + public String(java.lang.String arg0); + public String(char[] arg0); + public String(char[] arg0, int arg1, int arg2); + public String(int[] arg0, int arg1, int arg2); + public String(byte[] arg0, int arg1, int arg2, int arg3); + public String(byte[] arg0, int arg1); +// public String(byte[] arg0, int arg1, int arg2, java.lang.String arg3) throws java.io.UnsupportedEncodingException; +// public String(byte[] arg0, int arg1, int arg2, java.nio.charset.Charset arg3); +// public String(byte[] arg0, java.lang.String arg1) throws java.io.UnsupportedEncodingException; +// public String(byte[] arg0, java.nio.charset.Charset arg1); + public String(byte[] arg0, int arg1, int arg2); + public String(byte[] arg0); +// public String(java.lang.StringBuffer arg0); +// public String(java.lang.StringBuilder arg0); + public int length(); + public boolean isEmpty(); + public char charAt(int arg0); + public int codePointAt(int arg0); + public int codePointBefore(int arg0); + public int codePointCount(int arg0, int arg1); + public int offsetByCodePoints(int arg0, int arg1); + public void getChars(int arg0, int arg1, char[] arg2, int arg3); + public void getBytes(int arg0, int arg1, byte[] arg2, int arg3); +// public byte[] getBytes(java.lang.String arg0) throws java.io.UnsupportedEncodingException; +// public byte[] getBytes(java.nio.charset.Charset arg0); + public byte[] getBytes(); + public boolean equals(java.lang.Object arg0); +// public boolean contentEquals(java.lang.StringBuffer arg0); +// public boolean contentEquals(java.lang.CharSequence arg0); + public boolean equalsIgnoreCase(java.lang.String arg0); + public int compareTo(java.lang.String arg0); + public int compareToIgnoreCase(java.lang.String arg0); + public boolean regionMatches(int arg0, java.lang.String arg1, int arg2, int arg3); + public boolean regionMatches(boolean arg0, int arg1, java.lang.String arg2, int arg3, int arg4); + public boolean startsWith(java.lang.String arg0, int arg1); + public boolean startsWith(java.lang.String arg0); + public boolean endsWith(java.lang.String arg0); + public int hashCode(); + public int indexOf(int arg0); + public int indexOf(int arg0, int arg1); + public int lastIndexOf(int arg0); + public int lastIndexOf(int arg0, int arg1); + public int indexOf(java.lang.String arg0); + public int indexOf(java.lang.String arg0, int arg1); + public int lastIndexOf(java.lang.String arg0); + public int lastIndexOf(java.lang.String arg0, int arg1); + public java.lang.String substring(int arg0); + public java.lang.String substring(int arg0, int arg1); +// public java.lang.CharSequence subSequence(int arg0, int arg1); + public java.lang.String concat(java.lang.String arg0); + public java.lang.String replace(char arg0, char arg1); + public boolean matches(java.lang.String arg0); +// public boolean contains(java.lang.CharSequence arg0); + public java.lang.String replaceFirst(java.lang.String arg0, java.lang.String arg1); + public java.lang.String replaceAll(java.lang.String arg0, java.lang.String arg1); +// public java.lang.String replace(java.lang.CharSequence arg0, java.lang.CharSequence arg1); + public java.lang.String[] split(java.lang.String arg0, int arg1); + public java.lang.String[] split(java.lang.String arg0); +// public java.lang.String toLowerCase(java.util.Locale arg0); + public java.lang.String toLowerCase(); +// public java.lang.String toUpperCase(java.util.Locale arg0); + public java.lang.String toUpperCase(); + public java.lang.String trim(); + public java.lang.String toString(); + public char[] toCharArray(); + public static java.lang.String format(java.lang.String arg0, java.lang.Object[] arg1); +// public static java.lang.String format(java.util.Locale arg0, java.lang.String arg1, java.lang.Object[] arg2); + public static java.lang.String valueOf(java.lang.Object arg0); + public static java.lang.String valueOf(char[] arg0); + public static java.lang.String valueOf(char[] arg0, int arg1, int arg2); + public static java.lang.String copyValueOf(char[] arg0, int arg1, int arg2); + public static java.lang.String copyValueOf(char[] arg0); + public static java.lang.String valueOf(boolean arg0); + public static java.lang.String valueOf(char arg0); + public static java.lang.String valueOf(int arg0); + public static java.lang.String valueOf(long arg0); +// public static java.lang.String valueOf(float arg0); +// public static java.lang.String valueOf(double arg0); + public java.lang.String intern(); + public int compareTo(java.lang.Object arg0); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/String.key b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/String.key new file mode 100644 index 00000000000..72a70f71f0a --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/String.key @@ -0,0 +1,1348 @@ +\functions { + Seq strContent(java.lang.String); + java.lang.String strPool(Seq); +} + + +\contracts { + // + // length + // + stringLength { + \programVariables { + int result; + java.lang.String string; + } + true -> + \<{ + result = string.length(); + }\>(result = seqLen(strContent(string))) + \modifiable empty + }; + + + // + // charAt + // + stringCharAtNormal { + \programVariables { + char result; + java.lang.String string; + int charIdx; + java.lang.Throwable exc; + } + (charIdx >= 0 & charIdx < seqLen(strContent(string))) -> + \<{ + #catchAll(exc) { + result = string.charAt(charIdx); + }}\>(exc = null & result = int::seqGet(strContent(string), charIdx)) + \modifiable empty + }; + + stringCharAtExc { + \programVariables { + char result; + java.lang.String string; + int charIdx; + java.lang.Throwable exc; + } + (charIdx < 0 | charIdx >= seqLen(strContent(string))) -> + \<{ + #catchAll(exc) { + result = string.charAt(charIdx); + }}\>( exc != null + & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE) + \modifiable empty + }; + + + // + // concat + // + stringConcatNormal { + \programVariables { + java.lang.String result, calleeStringObj, argumentStringObj; + Heap heapAtPre; + } + (argumentStringObj != null & seqLen(strContent(argumentStringObj)) > 0) -> + {heapAtPre := heap} + \<{ + result = calleeStringObj.concat(argumentStringObj); + }\>( boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null + & strContent(result) = seqConcat(strContent(calleeStringObj), strContent(argumentStringObj)) ) + \modifiable empty + }; + + stringConcatNormalLen0 { + \programVariables { + java.lang.String result, calleeStringObj, argumentStringObj; + } + (argumentStringObj != null & seqLen(strContent(argumentStringObj)) = 0) -> + \<{ + result = calleeStringObj.concat(argumentStringObj); + }\>(result = calleeStringObj) + \modifiable empty + }; + + stringConcatExc { + \programVariables { + java.lang.String result, calleeStringObj, argumentStringObj; + java.lang.Throwable exc; + } + (argumentStringObj = null) -> + \<{ + #catchAll(exc) { + result = calleeStringObj.concat(argumentStringObj); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + + + // + // substring + // + stringSubstringNormal { + \programVariables { + java.lang.String result, string; + int startIdx, endIdx; + Heap heapAtPre; + } + (endIdx >= startIdx & startIdx >= 0 & endIdx <= seqLen(strContent(string))) -> + {heapAtPre := heap} + \<{ + result = string.substring(startIdx, endIdx); + }\>( boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null + & strContent(result) = seqSub(strContent(string),startIdx, endIdx)) + \modifiable empty + }; + + stringSubstringExc { + \programVariables { + java.lang.String result, string; + int startIdx, endIdx; + java.lang.Throwable exc; + } + (startIdx > endIdx | startIdx < 0 | endIdx > seqLen(strContent(string))) -> + \<{ + #catchAll(exc) { + result = string.substring(startIdx, endIdx); + }}\>( exc != null + & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE) + \modifiable empty + }; + + stringSubstring2Normal { + \programVariables { + java.lang.String result, string; + int startIdx; + Heap heapAtPre; + } + (startIdx >= 0 & startIdx < seqLen(strContent(string))) -> + {heapAtPre := heap} + \<{ + result = string.substring(startIdx); + }\>( boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null + & strContent(result) = seqSub( strContent(string), startIdx, seqLen(strContent(string)) ) ) + \modifiable empty + }; + + stringSubstring2Exc { + \programVariables { + java.lang.String result, string; + int startIdx; + java.lang.Throwable exc; + } + (startIdx < 0 | startIdx > seqLen(strContent(string))) -> + \<{ + #catchAll(exc) { + result = string.substring(startIdx); + }}\>( exc != null + & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE) + \modifiable empty + }; + + + // + // compareTo + // + stringCompareToNormal { + \programVariables { + java.lang.String stringCallee, stringArgument; + int result; + } + (stringArgument != null) -> + \<{ + result = stringCallee.compareTo(stringArgument); + }\>( result = \ifEx int i; ( i < seqLen(strContent(stringCallee)) + & i < seqLen(strContent(stringArgument)) + & int::seqGet(strContent(stringCallee),i) + != int::seqGet(strContent(stringArgument),i) ) + \then (int::seqGet(strContent(stringCallee), i) - int::seqGet(strContent(stringArgument), i)) + \else (seqLen(strContent(stringCallee)) - seqLen(strContent(stringArgument))) ) + \modifiable empty + }; + + stringCompareToExc { + \programVariables { + java.lang.String stringCallee, stringArgument; + int result; + java.lang.Throwable exc; + } + (stringArgument = null) -> + \<{ + #catchAll(exc) { + result = stringCallee.compareTo(stringArgument); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + + + // + // endsWith + // + stringEndsWithNormal { + \programVariables { + java.lang.String stringCallee, stringArgument; + boolean result; + } + (stringArgument != null) -> + \<{ + result = stringCallee.endsWith(stringArgument); + }\>(result = TRUE <-> clEndsWith(strContent(stringCallee), strContent(stringArgument))) + \modifiable empty + }; + + stringEndsWithExc { + \programVariables { + java.lang.String stringCallee, stringArgument; + boolean result; + java.lang.Throwable exc; + } + (stringArgument = null) -> + \<{ + #catchAll(exc) { + result = stringCallee.endsWith(stringArgument); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + + // + // startsWith + // + stringStartsWith1Normal { + \programVariables { + java.lang.String stringCallee, stringArgument; + boolean result; + } + (stringArgument != null) -> + \<{ + result = stringCallee.startsWith(stringArgument); + }\>(result = TRUE <-> clStartsWith(strContent(stringCallee), strContent(stringArgument))) + \modifiable empty + }; + + stringStartsWith1Exc { + \programVariables { + java.lang.String stringCallee, stringArgument; + boolean result; + java.lang.Throwable exc; + } + (stringArgument = null) -> + \<{ + #catchAll(exc) { + result = stringCallee.startsWith(stringArgument); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + stringStartsWith2Normal { + \programVariables { + java.lang.String stringCallee, stringArgument; + boolean result; + int startIdx; + } + (stringArgument != null) -> + \<{ + result = stringCallee.startsWith(stringArgument, startIdx); + }\>(result = TRUE <-> ( (startIdx >= 0) + & (startIdx <= seqLen(strContent(stringCallee))) + & clStartsWith(seqSub(strContent(stringCallee), startIdx, seqLen(strContent(stringCallee))), + strContent(stringArgument)) + ) ) + \modifiable empty + }; + + stringStartsWith2Exc { + \programVariables { + java.lang.String stringCallee, stringArgument; + boolean result; + int startIdx; + java.lang.Throwable exc; + } + (stringArgument = null) -> + \<{ + #catchAll(exc) { + result = stringCallee.startsWith(stringArgument, startIdx); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + + // + // replace + // + stringReplaceNormal { + \programVariables { + java.lang.String s, result; + char c1, c2; + Heap heapAtPre; + } + true -> + {heapAtPre := heap} + \<{ + result = s.replace(c1,c2); + }\>(\if (\exists int i; ( i >= 0 + & i < seqLen(strContent(s)) + & int::seqGet(strContent(s), i) = c1)) + \then( boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null + & strContent(result) = clReplace(strContent(s), c1, c2) ) + \else ( result = s )) + \modifiable empty + }; + + + // + // indexOf + // + stringIndexOfNormal { + \programVariables { + java.lang.String s; + int charVal; + int result; + } + true -> + \<{ + result = s.indexOf(charVal); + }\> ( result = clIndexOfChar ( strContent(s), charVal, 0 ) ) + \modifiable empty + }; + + stringIndexOfFromNormal { + \programVariables { + java.lang.String s; + int charVal, from; + int result; + } + true -> + \<{ + result = s.indexOf(charVal,from); + }\>( result = clIndexOfChar(strContent(s), charVal, from) ) + \modifiable empty + }; + + stringIndexOfStringNormal { + \programVariables { + java.lang.String s, t; + int result; + } + (t != null) -> + \<{ + result = s.indexOf(t); + }\>(result = clIndexOfCl(strContent(s), 0, strContent(t))) + \modifiable empty + }; + + stringIndexOfStringExc { + \programVariables { + java.lang.String s, t; + int result; + java.lang.Throwable exc; + } + (t = null) -> + \<{ + #catchAll (exc) { + result = s.indexOf(t); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + stringIndexOfStringFromNormal { + \programVariables { + java.lang.String s, t; + int result, from; + } + (t != null) -> + \<{ + result = s.indexOf(t, from); + }\>(result = clIndexOfCl(strContent(s), from, strContent(t))) + \modifiable empty + }; + + stringIndexOfStringFromExc { + \programVariables { + java.lang.String s, t; + int result, from; + java.lang.Throwable exc; + } + (t = null) -> + \<{ + #catchAll (exc) { + result = s.indexOf(t,from); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + + // + // lastIndexOf + // + stringLastIndexOfNormal { + \programVariables { + java.lang.String s; + int charVal; + int result; + } + true -> + \<{ + result = s.lastIndexOf(charVal); + }\>(result = clLastIndexOfChar(strContent(s), charVal, seqLen(strContent(s)) - 1)) + \modifiable empty + }; + + stringLastIndexOfFromNormal { + \programVariables { + java.lang.String s; + int charVal, from; + int result; + } + true -> + \<{ + result = s.lastIndexOf(charVal, from); + }\>(result = clLastIndexOfChar(strContent(s), charVal, from)) + \modifiable empty + }; + + stringLastIndexOfStringNormal { + \programVariables { + java.lang.String s, t; + int result; + } + (t != null) -> + \<{ + result = s.lastIndexOf(t); + }\>(result = clLastIndexOfCl(strContent(s), + seqLen(strContent(s)) - 1, + strContent(t))) + \modifiable empty + }; + + stringLastIndexOfStringExc { + \programVariables { + java.lang.String s, t; + int result; + java.lang.Throwable exc; + } + (t = null) -> + \<{ + #catchAll (exc) { + result = s.lastIndexOf(t); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + stringLastIndexOfStringFromNormal { + \programVariables { + java.lang.String s, t; + int result, from; + } + (t != null) -> + \<{ + result = s.lastIndexOf(t, from); + }\>(result = clLastIndexOfCl(strContent(s), from, strContent(t))) + \modifiable empty + }; + + stringLastIndexOfStringFromExc { + \programVariables { + java.lang.String s, t; + int result, from; + java.lang.Throwable exc; + } + (t = null) -> + \<{ + #catchAll (exc) { + result = s.lastIndexOf(t, from); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + + // + // toString + // + stringToStringNormal { + \programVariables { + java.lang.String s, result; + } + true -> + \<{ + result = s.toString(); + }\>(result = s) + \modifiable empty + }; + + + // + // equals + // + stringEqualsNormal { + \programVariables { + java.lang.String s; + java.lang.Object obj; + boolean result; + } + true -> + \<{ + result = s.equals(obj); + }\>( result = TRUE <-> ( obj != null + & java.lang.String::instance(obj) = TRUE + & strContent(s) = strContent((java.lang.String)obj) )) + \modifiable empty + }; + + + // + // isEmpty + // + stringIsEmptyNormal { + \programVariables { + java.lang.String s; + boolean result; + } + true -> + \<{ + result = s.isEmpty(); + }\>( result = TRUE <-> strContent(s) = seqEmpty ) + \modifiable empty + }; + + + // + // copyValueOf + // + stringCopyValueOfNormal { + \programVariables { + java.lang.String result; + char[] data; + Heap heapAtPre; + } + (data != null) -> + {heapAtPre := heap} + \<{ + result = java.lang.String.copyValueOf(data); + }\>( seqLen(strContent(result)) = data.length + & \forall int i; ((i >= 0 & i < data.length) + -> int::seqGet(strContent(result),i) = data[i] ) + & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null ) + \modifiable empty + }; + + stringCopyValueOfExc { + \programVariables { + java.lang.String result; + char[] data; + java.lang.Throwable exc; + } + (data = null) -> + \<{ + #catchAll (exc) { + result = java.lang.String.copyValueOf(data); + }}\> ( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + stringCopyValueOfRangeNormal { + \programVariables { + java.lang.String result; + char[] data; + int offset, count; + Heap heapAtPre; + } + ( data != null + & offset >= 0 + & count >= 0 + & offset+count <= data.length) + -> + {heapAtPre := heap} + \<{ + result = java.lang.String.copyValueOf(data, offset, count); + }\>( seqLen(strContent(result)) = count + & \forall int i; ((i >= 0 & i < count) + -> int::seqGet(strContent(result), i) = data[i+offset] ) + & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null ) + \modifiable empty + }; + + stringCopyValueOfRangeExcBounds { + \programVariables { + java.lang.String result; + char[] data; + int offset, count; + java.lang.Throwable exc; + } + ( data != null + & ( offset < 0 + | count < 0 + | offset+count > data.length)) + -> + \<{ + #catchAll (exc) { + result = java.lang.String.copyValueOf (data,offset,count); + }}\>( exc != null + & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE) + \modifiable empty + }; + + stringCopyValueOfRangeExcNull { + \programVariables { + java.lang.String result; + char[] data; + int offset, count; + java.lang.Throwable exc; + } + (data = null) -> + \<{ + #catchAll (exc) { + result = java.lang.String.copyValueOf(data, offset, count); + }}\> ( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + + // + // getChars + // + stringGetCharsNormal { + \programVariables { + java.lang.String s; + char[] dst; + int srcBegin, srcEnd, dstBegin; + Heap heapAtPre; + } + ( dst != null + & srcBegin >= 0 + & srcBegin <= srcEnd + & srcEnd <= seqLen(strContent(s)) + & dstBegin >= 0 + & dstBegin + (srcEnd - srcBegin) <= dst.length ) + -> + {heapAtPre := heap} + \<{ + s.getChars(srcBegin, srcEnd, dst, dstBegin); + }\>(\forall int i; ( ((i >= 0 & i < (srcEnd - srcBegin)) + -> int::seqGet(strContent(s), srcBegin + i) = dst[dstBegin + i]) + & ((i >= 0 & i < dstBegin) + -> dst[i] = int::select(heapAtPre, dst, arr(i))) + & ((i >= dstBegin + (srcEnd - srcBegin) & i < dst.length) + -> dst[i] = int::select(heapAtPre, dst, arr(i))) )) + \modifiable allFields(dst) + }; + + stringGetCharsExcBounds { + \programVariables { + java.lang.String s; + char[] dst; + int srcBegin, srcEnd, dstBegin; + java.lang.Throwable exc; + } + ( dst != null + & ( srcBegin < 0 + | srcBegin > srcEnd + | srcEnd > seqLen(strContent(s)) + | dstBegin < 0 + | dstBegin + (srcEnd - srcBegin) > dst.length )) + -> + \<{ + #catchAll (exc) { + s.getChars(srcBegin, srcEnd, dst, dstBegin); + }}\>( exc != null + & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE) + \modifiable empty + }; + + stringGetCharsExcNull { + \programVariables { + java.lang.String s; + char[] dst; + int srcBegin, srcEnd, dstBegin; + java.lang.Throwable exc; + } + (dst = null) -> + \<{ + #catchAll (exc) { + s.getChars(srcBegin, srcEnd, dst, dstBegin); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE) + \modifiable empty + }; + + + // + // toCharArray + // + stringToCharArray { + \programVariables { + java.lang.String s; + char[] result; + Heap heapAtPre; + } + true -> + {heapAtPre := heap} + \<{ + result = s.toCharArray(); + }\>( result != null + & result.length = seqLen(strContent(s)) + & \forall int i; ((i >= 0 & i < seqLen(strContent(s))) + -> int::seqGet(strContent(s), i) = result[i]) + & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE) + \modifiable empty + }; + + + // + // valueOf + // + stringValueOfBoolean { + \programVariables { + java.lang.String result; + boolean bVal; + Heap heapAtPre; + } + true -> + {heapAtPre := heap} + \<{ + result = java.lang.String.valueOf(bVal); + }\>(strContent(result) = \if (bVal = TRUE) + \then ( "true" ) + \else ( "false" ) + & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null ) + \modifiable empty + }; + + stringValueOfChar { + \programVariables { + java.lang.String result; + char charVal; + Heap heapAtPre; + } + true -> + {heapAtPre := heap} + \<{ + result = java.lang.String.valueOf(charVal); + }\>( strContent(result) = seqSingleton(charVal) + & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null ) + \modifiable empty + }; + + stringValueOfCharArrayNormal { + \programVariables { + java.lang.String result; + char[] data; + Heap heapAtPre; + } + (data != null) -> + {heapAtPre := heap} + \<{ + result = java.lang.String.valueOf(data); + }\>( (\forall int i; ((i >= 0 & i < data.length) + -> int::seqGet(strContent(result), i) = data[i])) + & seqLen(strContent(result)) = data.length + & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null ) + \modifiable empty + }; + + stringValueOfCharArrayExc { + \programVariables { + java.lang.String result; + char[] data; + java.lang.Throwable exc; + } + (data = null) -> + \<{ + #catchAll (exc) { + result = java.lang.String.valueOf(data); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE ) + \modifiable empty + }; + + stringValueOfInt { + \programVariables { + java.lang.String result; + int iVal; + Heap heapAtPre; + } + true -> + {heapAtPre := heap} + \<{ + result = java.lang.String.valueOf(iVal); + }\>( strContent(result) = clRemoveZeros(clTranslateInt(iVal)) + & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null ) + \modifiable empty + }; + + stringValueOfLong { + \programVariables { + java.lang.String result; + long lVal; + Heap heapAtPre; + } + true -> + {heapAtPre := heap} + \<{ + result = java.lang.String.valueOf(lVal); + }\>( strContent(result) = clRemoveZeros(clTranslateInt(lVal)) + & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null ) + \modifiable empty + }; + + stringValueOfCharArrayRangeNormal { + \programVariables { + java.lang.String result; + char[] data; + int offset, count; + Heap heapAtPre; + } + ( data != null & offset >= 0 & count >= 0 + & offset + count <= data.length) + -> + {heapAtPre := heap} + \<{ + result = java.lang.String.valueOf(data, offset, count); + }\>( (\forall int i; ((i >= 0 & i < count) + -> int::seqGet(strContent(result), i) = data[offset + i])) + & seqLen(strContent(result)) = count + & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null ) + \modifiable empty + }; + + stringValueOfCharArrayRangeExcBounds { + \programVariables { + java.lang.String result; + char[] data; + int offset, count; + java.lang.Throwable exc; + } + ( data != null + & (offset < 0 | count < 0 | offset+count > data.length)) + -> + \<{ + #catchAll (exc) { + result = java.lang.String.valueOf(data, offset, count); + }}\>( exc != null + & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE ) + \modifiable empty + }; + + stringValueOfCharArrayRangeExcNull { + \programVariables { + java.lang.String result; + char[] data; + int offset, count; + java.lang.Throwable exc; + } + (data = null) -> + \<{ + #catchAll (exc) { + result = java.lang.String.valueOf(data, offset, count); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE ) + \modifiable empty + }; + + stringValueOfObjectNull { + \programVariables { + java.lang.String result; + java.lang.Object obj; + Heap heapAtPre; + } + obj = null -> + {heapAtPre := heap} + \<{ + result = java.lang.String.valueOf(obj); + }\>( strContent(result) = "null" + & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & result != null ) + \modifiable empty + }; + + stringValueOfObjectNonNull { + \programVariables { + java.lang.String result; + java.lang.Object obj; + } + obj != null -> + \<{ + result = java.lang.String.valueOf(obj); + }\>( result = obj.toString() ) + \modifiable empty + }; + + + // + // hashCode + // + stringHashCode { + \programVariables { + java.lang.String s; + int result; + } + true -> + \<{ + result = s.hashCode(); + }\>(result = clHashCode(strContent(s))) + \modifiable empty + }; + + + // + // intern + // + stringIntern { + \programVariables { + java.lang.String s; + String result; + Heap heapAtPre; + } + true -> + {heapAtPre:=heap}\<{ + result = s.intern(); + }\>(result != null & result = strPool(strContent(s)) & + boolean::select(heap, result, java.lang.Object::) = TRUE) + \modifiable false + }; + + + // + // Constructors + // + stringConstrNormal { + \programVariables { + java.lang.String s; + } + true -> + \<{ + s = new String(); + }\>(strContent(s) = seqEmpty) + \modifiable empty + }; + + stringConstrCharArrayNormal { + \programVariables { + java.lang.String s; + char[] v; + } + (v != null) -> + \<{ + s = new String(v); + }\>( seqLen ( strContent ( s ) ) = v.length + & \forall int i; ((i >= 0 & i < v.length) + -> int::seqGet(strContent(s), i) = v[i]) ) + \modifiable empty + }; + + stringConstrCharArrayExc { + \programVariables { + java.lang.String s; + char[] v; + java.lang.Throwable exc; + } + (v = null) -> + \<{ + #catchAll (exc) { + s = new String(v); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE ) + \modifiable empty + }; + + stringConstrCharArrayRangeNormal { + \programVariables { + java.lang.String s; + char[] v; + int offset, count; + } + ( v != null & offset >= 0 + & count >= 0 & offset + count <= v.length) -> + \<{ + s = new String(v, offset, count); + }\>( seqLen(strContent(s)) = count + & \forall int i; ((i >= 0 & i < count) + -> int::seqGet(strContent(s), i) = v[offset+i]) ) + \modifiable empty + }; + + stringConstrCharArrayRangeExcBounds { + \programVariables { + java.lang.String s; + char[] v; + int offset, count; + java.lang.Throwable exc; + } + (v != null & (offset < 0 | count < 0 | offset + count > v.length)) + -> + \<{ + #catchAll(exc) { + s = new String(v, offset, count); + }}\>( exc != null + & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE ) + \modifiable empty + }; + + stringConstrCharArrayRangeExcNull { + \programVariables { + java.lang.String s; + char[] v; + int offset, count; + java.lang.Throwable exc; + } + (v = null) -> + \<{ + #catchAll(exc) { + s = new String(v, offset, count); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE ) + \modifiable empty + }; + + stringConstrCopyNormal { + \programVariables { + java.lang.String s, t; + } + (t != null) -> + \<{ + s = new String(t); + }\>( strContent(s) = strContent(t) ) + \modifiable empty + }; + + stringConstrCopyExc { + \programVariables { + java.lang.String s, t; + java.lang.Throwable exc; + } + (t = null) -> + \<{ + #catchAll(exc) { + s = new String(t); + }}\>( exc != null + & java.lang.NullPointerException::instance(exc) = TRUE ) + \modifiable empty + }; +} + +/* + * Program Rules for Strings + */ +\rules { + + poolKeyIsContentOfValue { + \schemaVar \term Seq slit; + \find (strContent(strPool(slit))) + \replacewith(slit) + \heuristics (simplify) + }; + + + poolIsInjective { + \schemaVar \term Seq slit1, slit2; + \find (strPool(slit1) = strPool(slit2)) + \replacewith(slit1 = slit2) + \heuristics (simplify) + }; + + + insert_constant_string_value { + \schemaVar \program ConstantStringVariable #csv; + \assumes(wellFormed(heap) ==>) + \find(#csv) + \sameUpdateLevel + \replacewith(\if (#constantvalue(#csv) = null) \then (null) \else (strPool((Seq)#constantvalue(#csv))) ) + \heuristics(concrete) + }; + + + nullString { + \find ( strContent(null) ) + \replacewith("null") + \heuristics(concrete) + }; + + + // + // Assignment of a Literal + // + stringAssignment { + \schemaVar \modalOperator { diamond, box} #normalassign; + \schemaVar \program Variable #v; + \schemaVar \program StringLiteral #slit; + \schemaVar \formula post; + + \find (\modality{#normalassign}{.. #v = #slit; ...}\endmodality(post)) + \sameUpdateLevel + + \replacewith ({ #v := strPool(#slit) } + \modality{#normalassign}{.. ...}\endmodality(post)) + \add(strPool(#slit) != null, boolean::select(heap, strPool(#slit), java.lang.Object::) = TRUE ==>) + + \heuristics (simplify_prog, simplify_prog_subset) + }; + + + // + // The "+" operator + // + stringConcat { + \schemaVar \modalOperator { diamond, box } #normalassign; + \schemaVar \program Variable #v; + \schemaVar \program SimpleStringExpression #sstr1, #sstr2; + \schemaVar \formula post; + \schemaVar \skolemTerm java.lang.String sk; + + \find ( \modality{#normalassign} {.. + #v = #sstr1 + #sstr2; + ...}\endmodality(post)) + \sameUpdateLevel + \varcond(\newDependingOn(sk, post)) + + \replacewith ( { #v := sk } + { heap := create(heap, sk) } + \modality{#normalassign}{.. ...}\endmodality(post) ) + \add(strContent(sk) = seqConcat(strContent(#sstr1), strContent(#sstr2)) ==> sk = null) + \heuristics (simplify_prog, simplify_prog_subset) + }; + + + stringConcatIntExpLeft { + \schemaVar \modalOperator { diamond, box } #normalassign; + \schemaVar \program Variable #v; + \schemaVar \program SimpleStringExpression #sstrRight; + \schemaVar \program AnyJavaTypeExpression #seLeft; + \schemaVar \formula post; + \schemaVar \skolemTerm java.lang.String sk; + + \find ( \modality{#normalassign} + {.. #v = #seLeft + #sstrRight; ...} + \endmodality(post)) + \sameUpdateLevel + \varcond(\newDependingOn(sk, post)) + + \replacewith ( { #v := sk } + { heap := create(heap, sk) } + \modality{#normalassign}{.. ...}\endmodality(post) ) + \add(strContent(sk) = seqConcat(clTranslateInt(#seLeft), strContent(#sstrRight)) ==> sk = null) + \heuristics (simplify_prog, simplify_prog_subset) + }; + + + stringConcatIntExpRight { + \schemaVar \modalOperator { diamond, box } #normalassign; + \schemaVar \program Variable #v; + \schemaVar \program SimpleStringExpression #sstrLeft; + \schemaVar \program AnyJavaTypeExpression #seRight; + \schemaVar \formula post; + \schemaVar \skolemTerm java.lang.String sk; + + \find ( \modality{#normalassign} + {.. #v = #sstrLeft + #seRight; ...} + \endmodality(post)) + \sameUpdateLevel + \varcond(\newDependingOn(sk, post)) + + \replacewith ( { #v := sk } + { heap := create(heap, sk) } + \modality{#normalassign}{.. ...}\endmodality(post) ) + \add(strContent(sk) = seqConcat(strContent(#sstrLeft), clTranslateInt(#seRight)) ==> sk = null) + \heuristics (simplify_prog, simplify_prog_subset) + }; + + stringConcatCharExpLeft { + \schemaVar \modalOperator { diamond, box } #normalassign; + \schemaVar \program Variable #v; + \schemaVar \program SimpleStringExpression #sstrRight; + \schemaVar \program JavaCharExpression #seLeft; + \schemaVar \formula post; + \schemaVar \skolemTerm java.lang.String sk; + + \find ( \modality{#normalassign} + {.. #v = #seLeft + #sstrRight; ...} + \endmodality(post)) + \sameUpdateLevel + \varcond(\newDependingOn(sk, post)) + + \replacewith ( { #v := sk } + { heap := create(heap, sk) } + \modality{#normalassign}{.. ...}\endmodality(post) ) + \add(strContent(sk) = seqConcat(seqSingleton(#seLeft), strContent(#sstrRight)) ==> sk = null) + \heuristics (simplify_prog, simplify_prog_subset) + }; + + + stringConcatCharExpRight { + \schemaVar \modalOperator { diamond, box } #normalassign; + \schemaVar \program Variable #v; + \schemaVar \program SimpleStringExpression #sstrLeft; + \schemaVar \program JavaCharExpression #seRight; + \schemaVar \formula post; + \schemaVar \skolemTerm java.lang.String sk; + + \find ( \modality{#normalassign} + {.. #v = #sstrLeft + #seRight; ...} + \endmodality(post)) + \sameUpdateLevel + \varcond(\newDependingOn(sk, post)) + + \replacewith ( { #v := sk } + { heap := create(heap, sk) } + \modality{#normalassign}{.. ...}\endmodality(post) ) + \add(strContent(sk) = seqConcat(strContent(#sstrLeft), seqSingleton(#seRight)) ==> sk = null) + \heuristics (simplify_prog, simplify_prog_subset) + }; + + stringConcatBooleanLeft { + \schemaVar \modalOperator { diamond, box } #normalassign; + \schemaVar \program Variable #v; + \schemaVar \program SimpleStringExpression #sstrRight; + \schemaVar \program SimpleJavaBooleanExpression #seLeft; + \schemaVar \formula post; + \schemaVar \skolemTerm java.lang.String sk; + + \find ( \modality{#normalassign} + {.. #v = #seLeft + #sstrRight; ...} + \endmodality(post)) + \sameUpdateLevel + \varcond(\newDependingOn(sk, post)) + + \replacewith ( { #v := sk } + { heap := create(heap, sk) } + \modality{#normalassign}{.. ...}\endmodality(post) ) + \add(strContent(sk) = seqConcat(\if (#seLeft = TRUE) + \then ( "true" ) + \else ( "false" ), + strContent(#sstrRight)) ==> sk = null) + \heuristics (simplify_prog, simplify_prog_subset) + }; + + + stringConcatBooleanRight { + \schemaVar \modalOperator { diamond, box } #normalassign; + \schemaVar \program Variable #v; + \schemaVar \program SimpleStringExpression #sstrLeft; + \schemaVar \program SimpleJavaBooleanExpression #seRight; + \schemaVar \formula post; + \schemaVar \skolemTerm java.lang.String sk; + + \find ( \modality{#normalassign} + {.. #v = #sstrLeft + #seRight; ...} + \endmodality(post)) + \sameUpdateLevel + \varcond(\newDependingOn(sk, post)) + + \replacewith ( { #v := sk } + { heap := create(heap, sk) } + \modality{#normalassign}{.. ...}\endmodality(post) ) + \add(strContent(sk) = seqConcat(strContent(#sstrLeft), + \if (#seRight = TRUE) + \then ("true") + \else ("false") )==> sk = null) + \heuristics (simplify_prog, simplify_prog_subset) + }; + + + stringConcatObjectLeft { + \schemaVar \modalOperator { diamond, box } #normalassign; + \schemaVar \program Variable #v; + \schemaVar \program SimpleStringExpression #sstrRight; + \schemaVar \program SimpleNonStringObjectExpression #seLeft; + \schemaVar \formula post; + \schemaVar \skolemTerm java.lang.String sk; + + \find ( \modality{#normalassign} + {.. #v = #seLeft + #sstrRight; ...} + \endmodality(post)) + \sameUpdateLevel + \varcond(\newDependingOn(sk, post)) + + "#seLeft not null": + \replacewith ( + \modality{#normalassign} + {.. #v = #seLeft.toString() + #sstrRight; ...} + \endmodality(post) ) + \add(==> #seLeft = null); + + "#seLeft null": + \replacewith ( { #v := sk } + { heap := create(heap, sk) } + \modality{#normalassign}{.. ...}\endmodality(post) ) + \add(#seLeft = null, strContent(sk) = seqConcat(strContent(null), strContent(#sstrRight)) ==> sk = null) + + \heuristics (simplify_prog, simplify_prog_subset) + }; + + + stringConcatObjectRight { + \schemaVar \modalOperator { diamond, box } #normalassign; + \schemaVar \program Variable #v; + \schemaVar \program SimpleStringExpression #sstrLeft; + \schemaVar \program SimpleNonStringObjectExpression #seRight; + \schemaVar \formula post; + \schemaVar \skolemTerm java.lang.String sk; + + \find ( \modality{#normalassign} + {.. #v = #sstrLeft + #seRight; ...} + \endmodality(post)) + \sameUpdateLevel + \varcond(\newDependingOn(sk, post)) + + "#seRight not null": + \replacewith ( + \modality{#normalassign} + {.. #v = #sstrLeft + #seRight.toString(); ...} + \endmodality(post) ) + \add(==> #seRight = null); + + "#seRight null": + \replacewith ( { #v := sk } + { heap := create(heap, sk) } + \modality{#normalassign}{.. ...}\endmodality(post) ) + \add(#seRight = null, strContent(sk) = seqConcat(strContent(#sstrLeft), strContent(null)) ==> sk = null) + + \heuristics (simplify_prog, simplify_prog_subset) + }; +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/StringBuffer.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/StringBuffer.java new file mode 100644 index 00000000000..77f7a386c45 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/StringBuffer.java @@ -0,0 +1,25 @@ +package java.lang; + +public class StringBuffer extends java.lang.Object implements java.io.Serializable + //, CharSequence +{ + public StringBuffer(); + public StringBuffer(int n); + public StringBuffer(java.lang.String s); + + public StringBuffer append(boolean b); + public StringBuffer append(char c); + // public StringBuffer append(char[] str); + // public StringBuffer append(char[] str, int offset, int len); + // public StringBuffer append(double d); + // public StringBuffer append(float f); + public StringBuffer append(int i); + public StringBuffer append(long l); + public StringBuffer append(java.lang.Object obj); + public StringBuffer append(java.lang.StringBuffer sb); + + public char charAt(int index) ; + public int length(); + // public CharSequence subSequence(int start, int end); + java.lang.String toString(); + } diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/System.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/System.java new file mode 100644 index 00000000000..8f4270709fc --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/System.java @@ -0,0 +1,9 @@ +package java.lang; + +public class System { + + public static final java.io.InputStream in; + public static final java.io.PrintStream out; + public static final java.io.PrintStream err; + +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Thread.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Thread.java new file mode 100644 index 00000000000..e1731e5f730 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Thread.java @@ -0,0 +1,7 @@ +package java.lang; + +public class Thread{ + + + +} \ No newline at end of file diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Throwable.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Throwable.java new file mode 100644 index 00000000000..d9b2084784a --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/Throwable.java @@ -0,0 +1,82 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + * + * Enriched by JML specifications by MU + * + */ + +package java.lang; + +public class Throwable extends java.lang.Object implements java.io.Serializable +{ + + //@ protected nullable ghost String message = null; + //@ protected nullable ghost Throwable cause = null; + + /*@ public normal_behavior + @ requires true; + @ ensures message == null && cause == null; + @ assignable message, cause; + @*/ + public Throwable() { } + + /*@ public normal_behavior + @ requires true; + @ ensures message == arg0 && cause == null; + @ assignable message, cause; + @*/ + public Throwable(java.lang.String arg0) { + this(arg0, null); + } + + /*@ public normal_behavior + @ requires true; + @ ensures message == arg0 && cause == arg1; + @ assignable message, cause; + @*/ + public Throwable(java.lang.String arg0, java.lang.Throwable arg1) { + //@ set message = arg0; + //@ set cause = arg1; + } + + /*@ public normal_behavior + @ requires true; + @ ensures message == null && cause == arg0; + @ assignable message, cause; + @*/ + public Throwable(java.lang.Throwable arg0) { + this(null, arg0); + } + + /*@ public normal_behavior + @ ensures \result == message; + @*/ + public /*@strictly_pure*/ java.lang.String getMessage(); + + public java.lang.String getLocalizedMessage(); + + /*@ public normal_behavior + @ ensures \result == cause; + @*/ + public java.lang.Throwable getCause(); + + // TODO There should be "cause != this" as another precondition. + /*@ public normal_behavior + @ requires cause == null; + @ ensures \result == this && cause == arg0; + @ assignable cause; + @ helper // needs to be helper because called in constructor + @*/ + public java.lang.Throwable initCause(java.lang.Throwable arg0) { + //@ set cause = arg0; + return this; + } + + public java.lang.String toString(); + public void printStackTrace(); +// public void printStackTrace(java.io.PrintStream arg0); +// public void printStackTrace(java.io.PrintWriter arg0); + public java.lang.Throwable fillInStackTrace(); +// public java.lang.StackTraceElement[] getStackTrace(); +// public void setStackTrace(java.lang.StackTraceElement[] arg0); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/VirtualMachineError.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/VirtualMachineError.java new file mode 100644 index 00000000000..2901620eb3a --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/VirtualMachineError.java @@ -0,0 +1,8 @@ + + + +package java.lang; +public abstract class VirtualMachineError extends java.lang.Error { + public VirtualMachineError() {} + public VirtualMachineError(java.lang.String arg0) {} +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/annotation/Annotation.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/annotation/Annotation.java new file mode 100644 index 00000000000..ed8b65547ec --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/lang/annotation/Annotation.java @@ -0,0 +1,10 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Jan 31 13:24:50 CET 2014 + */ +package java.lang.annotation; + +public interface Annotation +{ + + public java.lang.Class annotationType(); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Collection.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Collection.java new file mode 100644 index 00000000000..eba0a4dd421 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Collection.java @@ -0,0 +1,24 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.util; + +public interface Collection extends java.lang.Iterable +{ + + public int size(); + public boolean isEmpty(); + public boolean contains(java.lang.Object arg0); + public java.util.Iterator iterator(); + public java.lang.Object[] toArray(); + public java.lang.Object[] toArray(java.lang.Object[] arg0); + public boolean add(java.lang.Object arg0); + public boolean remove(java.lang.Object arg0); + public boolean containsAll(java.util.Collection arg0); + public boolean addAll(java.util.Collection arg0); + public boolean removeAll(java.util.Collection arg0); + public boolean retainAll(java.util.Collection arg0); + public void clear(); + public boolean equals(java.lang.Object arg0); + public int hashCode(); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Iterator.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Iterator.java new file mode 100644 index 00000000000..62675536038 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Iterator.java @@ -0,0 +1,12 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.util; + +public interface Iterator +{ + + public boolean hasNext(); + public java.lang.Object next(); + public void remove(); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/List.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/List.java new file mode 100644 index 00000000000..c219a96503c --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/List.java @@ -0,0 +1,34 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.util; + +public interface List extends java.util.Collection +{ + + public int size(); + public boolean isEmpty(); + public boolean contains(java.lang.Object arg0); + public java.util.Iterator iterator(); + public java.lang.Object[] toArray(); + public java.lang.Object[] toArray(java.lang.Object[] arg0); + public boolean add(java.lang.Object arg0); + public boolean remove(java.lang.Object arg0); + public boolean containsAll(java.util.Collection arg0); + public boolean addAll(java.util.Collection arg0); + public boolean addAll(int arg0, java.util.Collection arg1); + public boolean removeAll(java.util.Collection arg0); + public boolean retainAll(java.util.Collection arg0); + public void clear(); + public boolean equals(java.lang.Object arg0); + public int hashCode(); + public java.lang.Object get(int arg0); + public java.lang.Object set(int arg0, java.lang.Object arg1); + public void add(int arg0, java.lang.Object arg1); + public java.lang.Object remove(int arg0); + public int indexOf(java.lang.Object arg0); + public int lastIndexOf(java.lang.Object arg0); + public java.util.ListIterator listIterator(); + public java.util.ListIterator listIterator(int arg0); + public java.util.List subList(int arg0, int arg1); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/ListIterator.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/ListIterator.java new file mode 100644 index 00000000000..7ddf49d4f51 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/ListIterator.java @@ -0,0 +1,18 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.util; + +public interface ListIterator extends java.util.Iterator +{ + + public boolean hasNext(); + public java.lang.Object next(); + public boolean hasPrevious(); + public java.lang.Object previous(); + public int nextIndex(); + public int previousIndex(); + public void remove(); + public void set(java.lang.Object arg0); + public void add(java.lang.Object arg0); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Map.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Map.java new file mode 100644 index 00000000000..bbabc38cc04 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Map.java @@ -0,0 +1,23 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.util; + +public interface Map +{ + + public int size(); + public boolean isEmpty(); + public boolean containsKey(java.lang.Object arg0); + public boolean containsValue(java.lang.Object arg0); + public java.lang.Object get(java.lang.Object arg0); + public java.lang.Object put(java.lang.Object arg0, java.lang.Object arg1); + public java.lang.Object remove(java.lang.Object arg0); + public void putAll(java.util.Map arg0); + public void clear(); + public java.util.Set keySet(); + public java.util.Collection values(); + public java.util.Set entrySet(); + public boolean equals(java.lang.Object arg0); + public int hashCode(); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Set.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Set.java new file mode 100644 index 00000000000..c09b759367c --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/a/util/Set.java @@ -0,0 +1,38 @@ +/* This file has been generated by Stubmaker (de.uka.ilkd.stubmaker) + * Date: Fri Mar 28 13:47:08 CET 2008 + */ +package java.util; + +public interface Set extends java.util.Collection +{ + + public int size(); + + public boolean isEmpty(); + + public boolean contains(java.lang.Object arg0); + + public java.util.Iterator iterator(); + + public java.lang.Object[] toArray(); + + public java.lang.Object[] toArray(java.lang.Object[] arg0); + + public boolean add(java.lang.Object arg0); + + public boolean remove(java.lang.Object arg0); + + public boolean containsAll(java.util.Collection arg0); + + public boolean addAll(java.util.Collection arg0); + + public boolean retainAll(java.util.Collection arg0); + + public boolean removeAll(java.util.Collection arg0); + + public void clear(); + + public boolean equals(java.lang.Object arg0); + + public int hashCode(); +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/Compressed.zip b/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/Compressed.zip new file mode 100644 index 0000000000000000000000000000000000000000..0c2d4fa578b34d78255986846d3e4a442a738a85 GIT binary patch literal 454 zcmWIWW@h1HW&nb+gc3ii;xlhVfNT(E2V!R%zazD&qfrkH%mO!(hzCkva zAx?T3$Y69DVlXa0!wd$wI1XVjGz5^%ZxE~M0XrN@!|Vz0W@Q8Uju{Ar7#SGmfjA5R DlhR)b literal 0 HcmV?d00001 diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/Compressed/C2.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/Compressed/C2.java new file mode 100644 index 00000000000..80114c77a98 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/Compressed/C2.java @@ -0,0 +1,2 @@ +public class C2 { +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/Compressed/subdir/C1.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/Compressed/subdir/C1.java new file mode 100644 index 00000000000..934e84e637f --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/Compressed/subdir/C1.java @@ -0,0 +1,2 @@ +public class C1 { +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp1/B.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp1/B.java new file mode 100644 index 00000000000..b5952d8b66a --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp1/B.java @@ -0,0 +1,3 @@ +public class B { + +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp1/subdir/A.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp1/subdir/A.java new file mode 100644 index 00000000000..f7e8cc3b903 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp1/subdir/A.java @@ -0,0 +1,2 @@ +public class A { +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp2/D.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp2/D.java new file mode 100644 index 00000000000..a50cc332bc6 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/b/cp2/D.java @@ -0,0 +1,10 @@ +public class D { + /*@ normal_behavior + @ requires true; + @ ensures \result == 5; + @ assignable \strictly_nothing; + @*/ + public int constant() { + return 5; + } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/src/Client.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/src/Client.java new file mode 100644 index 00000000000..e2ecc8319b7 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/src/Client.java @@ -0,0 +1,2 @@ +public class Client { +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/src/Test.java b/keyext.proofmanagement/proofBundle/complexBundleGeneration/src/Test.java new file mode 100644 index 00000000000..06a5b3f0778 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/src/Test.java @@ -0,0 +1,37 @@ +import java.util.List; +import java.io.InputStream; + +public class Test { + // check that all of these classes are correctly loaded: + // bootclasspath + Object o; + String str; + List l; + InputStream is; + + // classpath + A a; // *.class + B b; // *.java + C1 c1; // loading from a zip + C2 c2; // loading from a zip + D d; // *.java + + // javaSource + Client cl; + + /*@ normal_behavior + @ requires true; + @ ensures true; + @*/ + public void trivial() { + } + + /*@ normal_behavior + @ requires d != null; + @ requires \invariant_for(d); + @ ensures \result == 5; + @*/ + public int constant() { + return d.constant(); + } +} diff --git a/keyext.proofmanagement/proofBundle/complexBundleGeneration/test.key b/keyext.proofmanagement/proofBundle/complexBundleGeneration/test.key new file mode 100644 index 00000000000..d9f84c2f55e --- /dev/null +++ b/keyext.proofmanagement/proofBundle/complexBundleGeneration/test.key @@ -0,0 +1,43 @@ +\settings { +"#Proof-Settings-Config-File +#Wed Jul 17 16:49:03 UTC 2019 +[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON +[Strategy]ActiveStrategy=JavaCardDLStrategy +[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF +[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS +[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF +[Choice]DefaultChoices=assertions-assertions\:safe , initialisation-initialisation\:disableStaticInitialisation , +intRules-intRules\:arithmeticSemanticsIgnoringOF , programRules-programRules\:Java , +runtimeExceptions-runtimeExceptions\:ban , JavaCard-JavaCard\:off , Strings-Strings\:on , +modelFields-modelFields\:treatAsAxiom , bigint-bigint\:on , sequences-sequences\:on , moreSeqRules-moreSeqRules\:off , +reach-reach\:on , integerSimplificationRules-integerSimplificationRules\:full , permissions-permissions\:off , +wdOperator-wdOperator\:L , wdChecks-wdChecks\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\:off +[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT +[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE +[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE +[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON +[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF +[Strategy]MaximumNumberOfAutomaticApplications=10000 +[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT +[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE +[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE +[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF +[Strategy]Timeout=-1 +[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER +[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF +[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL +[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT +[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF +[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON +[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED +[StrategyProperty]VBT_PHASE=VBT_SYM_EX +" +} + +\bootclasspath "a/"; +\classpath "b/cp1"; +\classpath "b/cp2/"; +\classpath "b/Compressed.zip"; +\javaSource "src"; + +\chooseContract "Test[Test::constant()].JML normal_behavior operation contract.0"; diff --git a/keyext.proofmanagement/proofBundle/simpleBundleGeneration/src/Client.java b/keyext.proofmanagement/proofBundle/simpleBundleGeneration/src/Client.java new file mode 100644 index 00000000000..e2ecc8319b7 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/simpleBundleGeneration/src/Client.java @@ -0,0 +1,2 @@ +public class Client { +} diff --git a/keyext.proofmanagement/proofBundle/simpleBundleGeneration/src/Test.java b/keyext.proofmanagement/proofBundle/simpleBundleGeneration/src/Test.java new file mode 100644 index 00000000000..f6dcc3bc729 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/simpleBundleGeneration/src/Test.java @@ -0,0 +1,30 @@ +import java.util.List; +import java.io.InputStream; + +public class Test { + // check that all of these classes are correctly loaded: + // bootclasspath + Object o; + String str; + List l; + InputStream is; + + // classpath: empty + + // javaSource + Client cl; + + /*@ normal_behavior + @ requires true; + @ ensures true; + @*/ + public void trivial() { + } + + /*@ normal_behavior + @ ensures \result == 5; + @*/ + public int constant() { + return 5; + } +} diff --git a/keyext.proofmanagement/proofBundle/simpleBundleGeneration/test.key b/keyext.proofmanagement/proofBundle/simpleBundleGeneration/test.key new file mode 100644 index 00000000000..064ee9b7a32 --- /dev/null +++ b/keyext.proofmanagement/proofBundle/simpleBundleGeneration/test.key @@ -0,0 +1,38 @@ +\settings { +"#Proof-Settings-Config-File +#Wed Jul 17 16:49:03 UTC 2019 +[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON +[Strategy]ActiveStrategy=JavaCardDLStrategy +[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF +[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS +[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF +[Choice]DefaultChoices=assertions-assertions\:safe , initialisation-initialisation\:disableStaticInitialisation , +intRules-intRules\:arithmeticSemanticsIgnoringOF , programRules-programRules\:Java , +runtimeExceptions-runtimeExceptions\:ban , JavaCard-JavaCard\:off , Strings-Strings\:on , +modelFields-modelFields\:treatAsAxiom , bigint-bigint\:on , sequences-sequences\:on , moreSeqRules-moreSeqRules\:off , +reach-reach\:on , integerSimplificationRules-integerSimplificationRules\:full , permissions-permissions\:off , +wdOperator-wdOperator\:L , wdChecks-wdChecks\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\:off +[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT +[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE +[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_NONE +[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON +[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF +[Strategy]MaximumNumberOfAutomaticApplications=10000 +[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT +[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_FREE +[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE +[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF +[Strategy]Timeout=-1 +[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER +[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF +[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL +[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT +[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF +[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON +[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED +[StrategyProperty]VBT_PHASE=VBT_SYM_EX +" +} + +\javaSource "src"; +\chooseContract "Test[Test::constant()].JML normal_behavior operation contract.0"; diff --git a/keyext.proofmanagement/src/test/java/TestGenerateReport.java b/keyext.proofmanagement/src/test/java/TestGenerateReport.java deleted file mode 100644 index 8e02f1333c3..00000000000 --- a/keyext.proofmanagement/src/test/java/TestGenerateReport.java +++ /dev/null @@ -1,25 +0,0 @@ -/* This file is part of KeY - https://key-project.org - * KeY is licensed under the GNU General Public License Version 2 - * SPDX-License-Identifier: GPL-2.0-only */ -import java.io.IOException; -import java.nio.file.Files; - -import de.uka.ilkd.key.util.HelperClassForTests; - -import org.key_project.proofmanagement.Main; - -import org.junit.jupiter.api.Test; - -/** - * @author Alexander Weigl - * @version 1 (6/16/25) - */ -public class TestGenerateReport { - @Test - void test() throws IOException { - var testDir = HelperClassForTests.TESTCASE_DIRECTORY.resolve("proofBundle") - .toAbsolutePath().normalize(); - var file = Files.createTempFile("report", ".html"); - Main.check(true, true, true, true, testDir, file); - } -} From 4f082c43e1339832bcd6d67bef416128a128aedc Mon Sep 17 00:00:00 2001 From: Wolfram Pfeifer Date: Wed, 18 Jun 2025 17:29:44 +0200 Subject: [PATCH 07/22] added example bundle for testing --- ...ycleA(int)).JML operation contract.0.proof | 626 ++++++++++++++++++ ...ycleA(int)).JML operation contract.1.proof | 416 ++++++++++++ ...ycleB(int)).JML operation contract.0.proof | 265 ++++++++ ...ycleB(int)).JML operation contract.1.proof | 182 +++++ .../src/test/pmexample2/src/Example.java | 78 +++ 5 files changed, 1567 insertions(+) create mode 100755 keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleA(int)).JML operation contract.0.proof create mode 100755 keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleA(int)).JML operation contract.1.proof create mode 100755 keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleB(int)).JML operation contract.0.proof create mode 100755 keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleB(int)).JML operation contract.1.proof create mode 100755 keyext.proofmanagement/src/test/pmexample2/src/Example.java diff --git a/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleA(int)).JML operation contract.0.proof b/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleA(int)).JML operation contract.0.proof new file mode 100755 index 00000000000..a8e17a090a9 --- /dev/null +++ b/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleA(int)).JML operation contract.0.proof @@ -0,0 +1,626 @@ +\profile "Java Profile"; + +\settings { +"#Proof-Settings-Config-File +#Mon Mar 09 18:28:06 CET 2020 +[Labels]UseOriginLabels=true +[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON +[SMTSettings]invariantForall=false +[Strategy]ActiveStrategy=JavaCardDLStrategy +[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF +[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS +[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF +[Choice]DefaultChoices=assertions-assertions\\:safe , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:ban , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:treatAsAxiom , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , methodExpansion-methodExpansion\\:modularOnly +[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT +[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE +[SMTSettings]UseBuiltUniqueness=false +[SMTSettings]explicitTypeHierarchy=false +[SMTSettings]instantiateHierarchyAssumptions=true +[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_COMPLETION +[SMTSettings]SelectedTaclets= +[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON +[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF +[Strategy]MaximumNumberOfAutomaticApplications=7000 +[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT +[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_DELAYED +[SMTSettings]useConstantsForBigOrSmallIntegers=true +[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE +[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF +[Strategy]Timeout=-1 +[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER +[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_ON +[SMTSettings]useUninterpretedMultiplication=true +[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL +[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT +[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF +[SMTSettings]maxGenericSorts=2 +[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON +[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED +[SMTSettings]integersMinimum=-2147483645 +[StrategyProperty]VBT_PHASE=VBT_SYM_EX +[SMTSettings]integersMaximum=2147483645 +" +} + +\javaSource "src"; + +\proofObligation "#Proof Obligation Settings +#Mon Mar 09 18:28:06 CET 2020 +contract=Example[Example\\:\\:cycleA(int)].JML operation contract.0 +name=Example[Example\\:\\:cycleA(int)].JML operation contract.0 +class=de.uka.ilkd.key.proof.init.FunctionalOperationContractPO +"; + +\proof { +(keyLog "0" (keyUser "Banach" ) (keyVersion "9e1d8db9a5")) + +(autoModeTime "358") + +(branch "dummy ID" + (builtin "One Step Simplification" (formula "1") (newnames "param,self_51,result_43,exc_51,heapAtPre_0,o,f")) +(rule "impRight" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "3")) +(rule "andLeft" (formula "1")) +(rule "notLeft" (formula "5")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "notLeft" (formula "2")) +(rule "assignment" (formula "8") (term "1")) + (builtin "One Step Simplification" (formula "8")) +(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_cycleA,savedHeapBefore_cycleA")) + (builtin "One Step Simplification" (formula "8")) +(rule "ifElseUnfold" (formula "8") (term "1") (inst "#boolv=x")) +(rule "variableDeclaration" (formula "8") (term "1") (newnames "x")) +(rule "compound_assignment_5_nonsimple" (formula "8") (term "1")) +(rule "ifElseUnfold" (formula "8") (term "1") (inst "#boolv=x_1")) +(rule "variableDeclaration" (formula "8") (term "1") (newnames "x_1")) +(rule "equality_comparison_simple" (formula "8") (term "1")) + (builtin "One Step Simplification" (formula "8")) +(rule "ifElseSplit" (formula "8")) +(branch "if x_1 true" + (builtin "One Step Simplification" (formula "9")) + (builtin "One Step Simplification" (formula "1")) + (rule "ifElseSkipElse" (formula "9") (term "1")) + (builtin "One Step Simplification" (formula "9")) + (rule "assignment" (formula "9") (term "1")) + (builtin "One Step Simplification" (formula "9")) + (rule "applyEq" (formula "5") (term "0") (ifseqformula "1")) + (rule "applyEq" (formula "8") (term "0") (ifseqformula "1")) + (rule "less_literals" (formula "8")) + (rule "false_right" (formula "8")) + (rule "returnUnfold" (formula "8") (term "1") (inst "#v0=x")) + (rule "variableDeclarationAssign" (formula "8") (term "1")) + (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_2")) + (builtin "Use Operation Contract" (formula "8") (newnames "heapBefore_leaf,result_44,exc_52,heapAfter_leaf,anon_heap_leaf") (contract "Example[Example::leaf()].JML operation contract.0") (modality "diamond")) + (branch "Post (leaf)" + (builtin "One Step Simplification" (formula "10")) + (builtin "One Step Simplification" (formula "8")) + (rule "andLeft" (formula "8")) + (rule "andLeft" (formula "9")) + (rule "typeEqDerived" (formula "10") (term "0,1,1,1,1") (ifseqformula "9")) + (rule "typeEqDerived" (formula "10") (term "0,0,1,1,1") (ifseqformula "9")) + (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "9")) (ifInst "" (formula "9"))) + (rule "andLeft" (formula "10")) + (rule "assignment" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "applyEq" (formula "13") (term "0,1,0") (ifseqformula "10")) + (rule "methodCallReturn" (formula "13") (term "1")) + (rule "assignment" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "methodCallEmpty" (formula "13") (term "1")) + (rule "tryEmpty" (formula "13") (term "1")) + (rule "emptyModality" (formula "13") (term "1")) + (rule "andRight" (formula "13")) + (branch "Case 1" + (rule "impRight" (formula "13")) + (rule "andRight" (formula "14")) + (branch "Case 1" + (rule "impRight" (formula "14")) + (builtin "One Step Simplification" (formula "2")) + (builtin "One Step Simplification" (formula "1")) + (builtin "One Step Simplification" (formula "15")) + (rule "closeTrue" (formula "15")) + ) + (branch "Case 2" + (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12"))) + (rule "closeTrue" (formula "14")) + ) + ) + (branch "Case 2" + (rule "impRight" (formula "13")) + (rule "andRight" (formula "14")) + (branch "Case 1" + (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12"))) + (rule "closeTrue" (formula "14")) + ) + (branch "Case 2" + (rule "orRight" (formula "14")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + ) + ) + (branch "Exceptional Post (leaf)" + (builtin "One Step Simplification" (formula "8")) + (builtin "One Step Simplification" (formula "10")) + (rule "andLeft" (formula "8")) + (rule "selectCreatedOfAnonAsFormulaEQ" (formula "9") (term "1,0") (ifseqformula "8")) + (rule "andLeft" (formula "9")) + (rule "andLeft" (formula "9")) + (rule "andLeft" (formula "11")) + (rule "notLeft" (formula "9")) + (rule "replace_known_right" (formula "10") (term "0") (ifseqformula "12")) + (builtin "One Step Simplification" (formula "10")) + (rule "true_left" (formula "10")) + (rule "replace_known_right" (formula "10") (term "0,0") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "10")) + (rule "andLeft" (formula "10")) + (rule "methodCallParamThrow" (formula "14") (term "1")) + (rule "tryCatchThrow" (formula "14") (term "1")) + (rule "ifElseUnfold" (formula "14") (term "1") (inst "#boolv=x")) + (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_3")) + (rule "equality_comparison_simple" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "replace_known_right" (formula "14") (term "0,0,1,0") (ifseqformula "12")) + (builtin "One Step Simplification" (formula "14")) + (rule "ifElseSplit" (formula "14")) + (branch "if x_3 true" + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + (branch "if x_3 false" + (builtin "One Step Simplification" (formula "1")) + (builtin "One Step Simplification" (formula "15")) + (rule "true_left" (formula "1")) + (rule "ifElseSplit" (formula "14")) + (branch "if exc_52 instanceof java.lang.Throwable true" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) + (rule "true_left" (formula "1")) + (rule "variableDeclaration" (formula "14") (term "1") (newnames "e")) + (rule "delete_unnecessary_cast" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "assignment" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "emptyModality" (formula "14") (term "1")) + (rule "andRight" (formula "14")) + (branch "Case 1" + (rule "impRight" (formula "14")) + (rule "andRight" (formula "15")) + (branch "Case 1" + (rule "impRight" (formula "15")) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "14"))) + (rule "closeFalse" (formula "2")) + ) + (branch "Case 2" + (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "15")) + ) + ) + (branch "Case 2" + (rule "impRight" (formula "14")) + (rule "andRight" (formula "15")) + (branch "Case 1" + (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "15")) + ) + (branch "Case 2" + (rule "orRight" (formula "15")) + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) + (builtin "One Step Simplification" (formula "16")) + (rule "true_left" (formula "1")) + (rule "replace_known_right" (formula "11") (term "0") (ifseqformula "14")) + (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "15"))) + (rule "closeFalse" (formula "11")) + ) + ) + ) + (branch "if exc_52 instanceof java.lang.Throwable false" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) + (rule "closeFalse" (formula "1")) + ) + ) + ) + (branch "Pre (leaf)" + (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "6")) (ifInst "" (formula "2"))) + (rule "closeTrue" (formula "8")) + ) +) +(branch "if x_1 false" + (builtin "One Step Simplification" (formula "9")) + (builtin "One Step Simplification" (formula "1")) + (rule "notLeft" (formula "1")) + (rule "equality_comparison_simple" (formula "9") (term "1")) + (builtin "One Step Simplification" (formula "9")) + (rule "blockEmpty" (formula "9") (term "1")) + (rule "ifElseSplit" (formula "9")) + (branch "if x true" + (builtin "One Step Simplification" (formula "10")) + (builtin "One Step Simplification" (formula "1")) + (rule "applyEq" (formula "7") (term "0") (ifseqformula "1")) + (rule "equal_literals" (formula "7")) + (rule "false_right" (formula "7")) + (rule "applyEq" (formula "5") (term "0") (ifseqformula "1")) + (rule "applyEq" (formula "8") (term "0") (ifseqformula "1")) + (rule "less_literals" (formula "8")) + (rule "false_right" (formula "8")) + (rule "returnUnfold" (formula "8") (term "1") (inst "#v0=x")) + (rule "variableDeclarationAssign" (formula "8") (term "1")) + (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_2")) + (builtin "Use Operation Contract" (formula "8") (newnames "heapBefore_leaf,result_44,exc_52,heapAfter_leaf,anon_heap_leaf") (contract "Example[Example::leaf()].JML operation contract.0") (modality "diamond")) + (branch "Post (leaf)" + (builtin "One Step Simplification" (formula "10")) + (builtin "One Step Simplification" (formula "8")) + (rule "andLeft" (formula "8")) + (rule "andLeft" (formula "9")) + (rule "typeEqDerived" (formula "10") (term "0,1,1,1,1") (ifseqformula "9")) + (rule "typeEqDerived" (formula "10") (term "0,0,1,1,1") (ifseqformula "9")) + (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "9")) (ifInst "" (formula "9"))) + (rule "andLeft" (formula "10")) + (rule "assignment" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "applyEq" (formula "13") (term "0,1,0") (ifseqformula "10")) + (rule "methodCallReturn" (formula "13") (term "1")) + (rule "assignment" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "methodCallEmpty" (formula "13") (term "1")) + (rule "tryEmpty" (formula "13") (term "1")) + (rule "emptyModality" (formula "13") (term "1")) + (rule "andRight" (formula "13")) + (branch "Case 1" + (rule "impRight" (formula "13")) + (rule "andRight" (formula "14")) + (branch "Case 1" + (rule "impRight" (formula "14")) + (builtin "One Step Simplification" (formula "2")) + (builtin "One Step Simplification" (formula "1")) + (builtin "One Step Simplification" (formula "15")) + (rule "closeTrue" (formula "15")) + ) + (branch "Case 2" + (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12"))) + (rule "closeTrue" (formula "14")) + ) + ) + (branch "Case 2" + (rule "impRight" (formula "13")) + (rule "andRight" (formula "14")) + (branch "Case 1" + (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12"))) + (rule "closeTrue" (formula "14")) + ) + (branch "Case 2" + (rule "orRight" (formula "14")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + ) + ) + (branch "Exceptional Post (leaf)" + (builtin "One Step Simplification" (formula "8")) + (builtin "One Step Simplification" (formula "10")) + (rule "andLeft" (formula "8")) + (rule "selectCreatedOfAnonAsFormulaEQ" (formula "9") (term "1,0") (ifseqformula "8")) + (rule "andLeft" (formula "9")) + (rule "andLeft" (formula "9")) + (rule "andLeft" (formula "11")) + (rule "notLeft" (formula "9")) + (rule "replace_known_right" (formula "10") (term "0") (ifseqformula "12")) + (builtin "One Step Simplification" (formula "10")) + (rule "true_left" (formula "10")) + (rule "replace_known_right" (formula "10") (term "0,0") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "10")) + (rule "andLeft" (formula "10")) + (rule "methodCallParamThrow" (formula "14") (term "1")) + (rule "tryCatchThrow" (formula "14") (term "1")) + (rule "ifElseUnfold" (formula "14") (term "1") (inst "#boolv=x")) + (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_3")) + (rule "equality_comparison_simple" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "replace_known_right" (formula "14") (term "0,0,1,0") (ifseqformula "12")) + (builtin "One Step Simplification" (formula "14")) + (rule "ifElseSplit" (formula "14")) + (branch "if x_3 true" + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + (branch "if x_3 false" + (builtin "One Step Simplification" (formula "1")) + (builtin "One Step Simplification" (formula "15")) + (rule "true_left" (formula "1")) + (rule "ifElseSplit" (formula "14")) + (branch "if exc_52 instanceof java.lang.Throwable true" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) + (rule "true_left" (formula "1")) + (rule "variableDeclaration" (formula "14") (term "1") (newnames "e")) + (rule "delete_unnecessary_cast" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "assignment" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "emptyModality" (formula "14") (term "1")) + (rule "andRight" (formula "14")) + (branch "Case 1" + (rule "impRight" (formula "14")) + (rule "andRight" (formula "15")) + (branch "Case 1" + (rule "impRight" (formula "15")) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "14"))) + (rule "closeFalse" (formula "2")) + ) + (branch "Case 2" + (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "15")) + ) + ) + (branch "Case 2" + (rule "impRight" (formula "14")) + (rule "andRight" (formula "15")) + (branch "Case 1" + (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "15")) + ) + (branch "Case 2" + (rule "orRight" (formula "15")) + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) + (builtin "One Step Simplification" (formula "16")) + (rule "true_left" (formula "1")) + (rule "replace_known_right" (formula "11") (term "0") (ifseqformula "14")) + (builtin "One Step Simplification" (formula "11") (ifInst "" (formula "15"))) + (rule "closeFalse" (formula "11")) + ) + ) + ) + (branch "if exc_52 instanceof java.lang.Throwable false" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) + (rule "closeFalse" (formula "1")) + ) + ) + ) + (branch "Pre (leaf)" + (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "6")) (ifInst "" (formula "2"))) + (rule "closeTrue" (formula "8")) + ) + ) + (branch "if x false" + (builtin "One Step Simplification" (formula "10")) + (builtin "One Step Simplification" (formula "1")) + (rule "notLeft" (formula "1")) + (rule "returnUnfold" (formula "10") (term "1") (inst "#v0=x")) + (rule "variableDeclarationAssign" (formula "10") (term "1")) + (rule "variableDeclaration" (formula "10") (term "1") (newnames "x_2")) + (rule "methodCallWithAssignmentUnfoldArguments" (formula "10") (term "1")) + (rule "variableDeclarationAssign" (formula "10") (term "1")) + (rule "variableDeclaration" (formula "10") (term "1") (newnames "var")) + (rule "assignmentSubtractionInt" (formula "10") (term "1")) + (builtin "One Step Simplification" (formula "10")) + (rule "translateJavaSubInt" (formula "10") (term "0,1,0")) + (rule "polySimp_elimSub" (formula "10") (term "0,1,0")) + (rule "mul_literals" (formula "10") (term "1,0,1,0")) + (rule "polySimp_addComm0" (formula "10") (term "0,1,0")) + (builtin "Use Operation Contract" (formula "10") (newnames "heapBefore_cycleB,result_44,exc_52,heapAfter_cycleB,anon_heap_cycleB") (contract "Example[Example::cycleB(int)].JML operation contract.0") (modality "diamond")) + (branch "Post (cycleB)" + (builtin "One Step Simplification" (formula "7")) + (builtin "One Step Simplification" (formula "12")) + (rule "andLeft" (formula "7")) + (rule "andLeft" (formula "8")) + (rule "typeEqDerived" (formula "9") (term "0,1,1,1,1") (ifseqformula "8")) + (rule "typeEqDerived" (formula "9") (term "0,0,1,1,1") (ifseqformula "8")) + (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8")) (ifInst "" (formula "8"))) + (rule "andLeft" (formula "9")) + (rule "assignment" (formula "15") (term "1")) + (builtin "One Step Simplification" (formula "15")) + (rule "blockEmpty" (formula "15") (term "1")) + (rule "methodCallReturn" (formula "15") (term "1")) + (rule "assignment" (formula "15") (term "1")) + (builtin "One Step Simplification" (formula "15")) + (rule "methodCallEmpty" (formula "15") (term "1")) + (rule "tryEmpty" (formula "15") (term "1")) + (rule "emptyModality" (formula "15") (term "1")) + (rule "andRight" (formula "15")) + (branch "Case 1" + (rule "impRight" (formula "15")) + (rule "andRight" (formula "16")) + (branch "Case 1" + (rule "impRight" (formula "16")) + (builtin "One Step Simplification" (formula "2")) + (builtin "One Step Simplification" (formula "1")) + (builtin "One Step Simplification" (formula "17")) + (rule "true_left" (formula "2")) + (rule "replace_known_right" (formula "10") (term "1") (ifseqformula "16")) + (builtin "One Step Simplification" (formula "10")) + (rule "notLeft" (formula "10")) + (rule "inEqSimp_ltRight" (formula "15")) + (rule "times_zero_1" (formula "1") (term "0,0")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "inEqSimp_gtRight" (formula "11")) + (rule "times_zero_1" (formula "1") (term "0,0")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "inEqSimp_sepPosMonomial0" (formula "1")) + (rule "mul_literals" (formula "1") (term "1")) + (rule "inEqSimp_strengthen0" (formula "1") (ifseqformula "12")) + (rule "add_literals" (formula "1") (term "1")) + (rule "inEqSimp_contradEq3" (formula "12") (ifseqformula "1")) + (rule "add_zero_left" (formula "12") (term "0,0")) + (rule "mul_literals" (formula "12") (term "0,0")) + (rule "qeq_literals" (formula "12") (term "0")) + (builtin "One Step Simplification" (formula "12")) + (rule "false_right" (formula "12")) + (rule "inEqSimp_strengthen1" (formula "2") (ifseqformula "12")) + (rule "add_zero_right" (formula "2") (term "1")) + (rule "inEqSimp_contradEq7" (formula "12") (ifseqformula "2")) + (rule "times_zero_1" (formula "12") (term "1,0,0")) + (rule "add_zero_right" (formula "12") (term "0,0")) + (rule "leq_literals" (formula "12") (term "0")) + (builtin "One Step Simplification" (formula "12")) + (rule "false_right" (formula "12")) + (rule "inEqSimp_contradInEq0" (formula "2") (ifseqformula "1")) + (rule "qeq_literals" (formula "2") (term "0")) + (builtin "One Step Simplification" (formula "2")) + (rule "closeFalse" (formula "2")) + ) + (branch "Case 2" + (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "16")) + ) + ) + (branch "Case 2" + (rule "impRight" (formula "15")) + (rule "andRight" (formula "16")) + (branch "Case 1" + (builtin "One Step Simplification" (formula "16") (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "16")) + ) + (branch "Case 2" + (rule "orRight" (formula "16")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + ) + ) + (branch "Exceptional Post (cycleB)" + (builtin "One Step Simplification" (formula "7")) + (builtin "One Step Simplification" (formula "12")) + (rule "andLeft" (formula "7")) + (rule "selectCreatedOfAnonAsFormulaEQ" (formula "8") (term "1,0") (ifseqformula "7")) + (rule "andLeft" (formula "8")) + (rule "andLeft" (formula "9")) + (rule "andLeft" (formula "8")) + (rule "notLeft" (formula "8")) + (rule "replace_known_right" (formula "9") (term "0") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "9")) + (rule "true_left" (formula "9")) + (rule "replace_known_right" (formula "9") (term "0,0") (ifseqformula "10")) + (builtin "One Step Simplification" (formula "9")) + (rule "andLeft" (formula "9")) + (rule "blockThrow" (formula "16") (term "1")) + (rule "methodCallParamThrow" (formula "16") (term "1")) + (rule "tryCatchThrow" (formula "16") (term "1")) + (rule "ifElseUnfold" (formula "16") (term "1") (inst "#boolv=x")) + (rule "variableDeclaration" (formula "16") (term "1") (newnames "x_3")) + (rule "equality_comparison_simple" (formula "16") (term "1")) + (builtin "One Step Simplification" (formula "16")) + (rule "replace_known_right" (formula "16") (term "0,0,1,0") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "16")) + (rule "ifElseSplit" (formula "16")) + (branch "if x_3 true" + (builtin "One Step Simplification" (formula "17")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + (branch "if x_3 false" + (builtin "One Step Simplification" (formula "1")) + (builtin "One Step Simplification" (formula "17")) + (rule "true_left" (formula "1")) + (rule "ifElseSplit" (formula "16")) + (branch "if exc_52 instanceof java.lang.Throwable true" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) + (rule "true_left" (formula "1")) + (rule "variableDeclaration" (formula "16") (term "1") (newnames "e")) + (rule "delete_unnecessary_cast" (formula "16") (term "1")) + (builtin "One Step Simplification" (formula "1")) + (builtin "One Step Simplification" (formula "17")) + (rule "true_left" (formula "1")) + (rule "assignment" (formula "16") (term "1")) + (builtin "One Step Simplification" (formula "16")) + (rule "emptyModality" (formula "16") (term "1")) + (rule "andRight" (formula "16")) + (branch "Case 1" + (rule "impRight" (formula "16")) + (rule "andRight" (formula "17")) + (branch "Case 1" + (rule "impRight" (formula "17")) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "13"))) + (rule "closeFalse" (formula "2")) + ) + (branch "Case 2" + (builtin "One Step Simplification" (formula "17") (ifInst "" (formula "10"))) + (rule "closeTrue" (formula "17")) + ) + ) + (branch "Case 2" + (rule "impRight" (formula "16")) + (rule "andRight" (formula "17")) + (branch "Case 1" + (builtin "One Step Simplification" (formula "17") (ifInst "" (formula "10"))) + (rule "closeTrue" (formula "17")) + ) + (branch "Case 2" + (rule "orRight" (formula "17")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) + (builtin "One Step Simplification" (formula "18")) + (builtin "One Step Simplification" (formula "17")) + (rule "true_left" (formula "1")) + (rule "replace_known_right" (formula "10") (term "0") (ifseqformula "16")) + (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "17"))) + (rule "closeFalse" (formula "10")) + ) + ) + ) + (branch "if exc_52 instanceof java.lang.Throwable false" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) + (rule "closeFalse" (formula "1")) + ) + ) + ) + (branch "Pre (cycleB)" + (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "1")) (ifInst "" (formula "5"))) + (rule "measuredByCheck" (formula "10") (term "1") (ifseqformula "4")) + (rule "precOfInt" (formula "10") (term "1")) + (rule "inEqSimp_ltRight" (formula "9")) + (rule "times_zero_1" (formula "1") (term "0,0")) + (rule "add_zero_left" (formula "1") (term "0")) + (rule "inEqSimp_ltToLeq" (formula "10") (term "1,1")) + (rule "polySimp_mulComm0" (formula "10") (term "1,0,0,1,1")) + (rule "polySimp_addAssoc" (formula "10") (term "0,1,1")) + (rule "polySimp_addComm1" (formula "10") (term "0,0,1,1")) + (rule "add_literals" (formula "10") (term "0,0,0,1,1")) + (rule "add_zero_left" (formula "10") (term "0,0,1,1")) + (rule "polySimp_pullOutFactor2" (formula "10") (term "0,1,1")) + (rule "add_literals" (formula "10") (term "1,0,1,1")) + (rule "times_zero_1" (formula "10") (term "0,1,1")) + (rule "leq_literals" (formula "10") (term "1,1")) + (builtin "One Step Simplification" (formula "10")) + (rule "inEqSimp_homoInEq0" (formula "10") (term "1")) + (rule "times_zero_2" (formula "10") (term "1,0,1")) + (rule "add_zero_right" (formula "10") (term "0,1")) + (rule "inEqSimp_sepPosMonomial0" (formula "10") (term "0,0")) + (rule "mul_literals" (formula "10") (term "1,0,0")) + (rule "inEqSimp_sepPosMonomial1" (formula "10") (term "1")) + (rule "mul_literals" (formula "10") (term "1,1")) + (rule "inEqSimp_strengthen1" (formula "1") (ifseqformula "8")) + (rule "add_zero_right" (formula "1") (term "1")) + (rule "replace_known_left" (formula "10") (term "1") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "10")) + (rule "notRight" (formula "10")) + (rule "inEqSimp_contradEq7" (formula "9") (ifseqformula "2")) + (rule "times_zero_1" (formula "9") (term "1,0,0")) + (rule "add_zero_right" (formula "9") (term "0,0")) + (rule "leq_literals" (formula "9") (term "0")) + (builtin "One Step Simplification" (formula "9")) + (rule "false_right" (formula "9")) + (rule "inEqSimp_strengthen0" (formula "1") (ifseqformula "8")) + (rule "add_literals" (formula "1") (term "1")) + (rule "inEqSimp_contradEq3" (formula "8") (ifseqformula "1")) + (rule "add_zero_left" (formula "8") (term "0,0")) + (rule "mul_literals" (formula "8") (term "0,0")) + (rule "qeq_literals" (formula "8") (term "0")) + (builtin "One Step Simplification" (formula "8")) + (rule "false_right" (formula "8")) + (rule "inEqSimp_contradInEq1" (formula "1") (ifseqformula "2")) + (rule "qeq_literals" (formula "1") (term "0")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + ) +) +) +} diff --git a/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleA(int)).JML operation contract.1.proof b/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleA(int)).JML operation contract.1.proof new file mode 100755 index 00000000000..1826af18877 --- /dev/null +++ b/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleA(int)).JML operation contract.1.proof @@ -0,0 +1,416 @@ +\profile "Java Profile"; + +\settings { +"#Proof-Settings-Config-File +#Mon Mar 09 18:28:37 CET 2020 +[Labels]UseOriginLabels=true +[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON +[SMTSettings]invariantForall=false +[Strategy]ActiveStrategy=JavaCardDLStrategy +[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF +[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS +[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF +[Choice]DefaultChoices=assertions-assertions\\:safe , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:ban , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:treatAsAxiom , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , methodExpansion-methodExpansion\\:modularOnly +[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT +[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE +[SMTSettings]UseBuiltUniqueness=false +[SMTSettings]explicitTypeHierarchy=false +[SMTSettings]instantiateHierarchyAssumptions=true +[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_COMPLETION +[SMTSettings]SelectedTaclets= +[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON +[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF +[Strategy]MaximumNumberOfAutomaticApplications=7000 +[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT +[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_DELAYED +[SMTSettings]useConstantsForBigOrSmallIntegers=true +[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE +[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF +[Strategy]Timeout=-1 +[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER +[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_ON +[SMTSettings]useUninterpretedMultiplication=true +[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL +[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT +[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF +[SMTSettings]maxGenericSorts=2 +[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON +[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED +[SMTSettings]integersMinimum=-2147483645 +[StrategyProperty]VBT_PHASE=VBT_SYM_EX +[SMTSettings]integersMaximum=2147483645 +" +} + +\javaSource "src"; + +\proofObligation "#Proof Obligation Settings +#Mon Mar 09 18:28:37 CET 2020 +contract=Example[Example\\:\\:cycleA(int)].JML operation contract.1 +name=Example[Example\\:\\:cycleA(int)].JML operation contract.1 +class=de.uka.ilkd.key.proof.init.FunctionalOperationContractPO +"; + +\proof { +(keyLog "0" (keyUser "Banach" ) (keyVersion "9e1d8db9a5")) + +(autoModeTime "250") + +(branch "dummy ID" + (builtin "One Step Simplification" (formula "1") (newnames "param,self_129,result_109,exc_129,heapAtPre_0,o,f")) +(rule "impRight" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "notLeft" (formula "2")) +(rule "assignment" (formula "7") (term "1")) + (builtin "One Step Simplification" (formula "7")) +(rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_cycleA,savedHeapBefore_cycleA")) + (builtin "One Step Simplification" (formula "7")) +(rule "ifElseUnfold" (formula "7") (term "1") (inst "#boolv=x")) +(rule "variableDeclaration" (formula "7") (term "1") (newnames "x")) +(rule "compound_assignment_5_nonsimple" (formula "7") (term "1")) +(rule "ifElseUnfold" (formula "7") (term "1") (inst "#boolv=x_1")) +(rule "variableDeclaration" (formula "7") (term "1") (newnames "x_1")) +(rule "equality_comparison_simple" (formula "7") (term "1")) + (builtin "One Step Simplification" (formula "7")) +(rule "ifElseSplit" (formula "7")) +(branch "if x_1 true" + (builtin "One Step Simplification" (formula "8")) + (builtin "One Step Simplification" (formula "1")) + (rule "ifElseSkipElse" (formula "8") (term "1")) + (builtin "One Step Simplification" (formula "8")) + (rule "assignment" (formula "8") (term "1")) + (builtin "One Step Simplification" (formula "8")) + (rule "applyEq" (formula "5") (term "0") (ifseqformula "1")) + (rule "returnUnfold" (formula "8") (term "1") (inst "#v0=x")) + (rule "variableDeclarationAssign" (formula "8") (term "1")) + (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_2")) + (builtin "Use Operation Contract" (formula "8") (newnames "heapBefore_leaf,result_110,exc_130,heapAfter_leaf,anon_heap_leaf") (contract "Example[Example::leaf()].JML operation contract.0") (modality "box")) + (branch "Post (leaf)" + (builtin "One Step Simplification" (formula "10")) + (builtin "One Step Simplification" (formula "8")) + (rule "andLeft" (formula "8")) + (rule "andLeft" (formula "9")) + (rule "typeEqDerived" (formula "10") (term "0,1,1,1,1") (ifseqformula "9")) + (rule "typeEqDerived" (formula "10") (term "0,0,1,1,1") (ifseqformula "9")) + (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "9")) (ifInst "" (formula "9"))) + (rule "andLeft" (formula "10")) + (rule "assignment" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "applyEq" (formula "13") (term "0,1,0") (ifseqformula "10")) + (rule "methodCallReturn" (formula "13") (term "1")) + (rule "assignment" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "methodCallEmpty" (formula "13") (term "1")) + (rule "tryEmpty" (formula "13") (term "1")) + (rule "emptyModality" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "13")) + ) + (branch "Exceptional Post (leaf)" + (builtin "One Step Simplification" (formula "10")) + (builtin "One Step Simplification" (formula "8")) + (rule "andLeft" (formula "8")) + (rule "selectCreatedOfAnonAsFormulaEQ" (formula "9") (term "1,0") (ifseqformula "8")) + (rule "andLeft" (formula "9")) + (rule "andLeft" (formula "10")) + (rule "andLeft" (formula "9")) + (rule "notLeft" (formula "9")) + (rule "replace_known_right" (formula "10") (term "0") (ifseqformula "12")) + (builtin "One Step Simplification" (formula "10")) + (rule "true_left" (formula "10")) + (rule "replace_known_right" (formula "10") (term "0,0") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "10")) + (rule "andLeft" (formula "10")) + (rule "methodCallParamThrow" (formula "14") (term "1")) + (rule "tryCatchThrow" (formula "14") (term "1")) + (rule "ifElseUnfold" (formula "14") (term "1") (inst "#boolv=x")) + (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_3")) + (rule "equality_comparison_simple" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "replace_known_right" (formula "14") (term "0,0,1,0") (ifseqformula "12")) + (builtin "One Step Simplification" (formula "14")) + (rule "ifElseSplit" (formula "14")) + (branch "if x_3 true" + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + (branch "if x_3 false" + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "ifElseSplit" (formula "14")) + (branch "if exc_130 instanceof java.lang.Throwable true" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) + (rule "true_left" (formula "1")) + (rule "variableDeclaration" (formula "14") (term "1") (newnames "e")) + (rule "delete_unnecessary_cast" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "assignment" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "emptyModality" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12")) (ifInst "" (formula "12")) (ifInst "" (formula "10")) (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "14")) + ) + (branch "if exc_130 instanceof java.lang.Throwable false" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) + (rule "closeFalse" (formula "1")) + ) + ) + ) + (branch "Pre (leaf)" + (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "6")) (ifInst "" (formula "2"))) + (rule "closeTrue" (formula "8")) + ) +) +(branch "if x_1 false" + (builtin "One Step Simplification" (formula "8")) + (builtin "One Step Simplification" (formula "1")) + (rule "notLeft" (formula "1")) + (rule "equality_comparison_simple" (formula "8") (term "1")) + (builtin "One Step Simplification" (formula "8")) + (rule "blockEmpty" (formula "8") (term "1")) + (rule "ifElseSplit" (formula "8")) + (branch "if x true" + (builtin "One Step Simplification" (formula "9")) + (builtin "One Step Simplification" (formula "1")) + (rule "applyEq" (formula "5") (term "0") (ifseqformula "1")) + (rule "applyEq" (formula "7") (term "0") (ifseqformula "1")) + (rule "equal_literals" (formula "7")) + (rule "false_right" (formula "7")) + (rule "returnUnfold" (formula "8") (term "1") (inst "#v0=x")) + (rule "variableDeclarationAssign" (formula "8") (term "1")) + (rule "variableDeclaration" (formula "8") (term "1") (newnames "x_2")) + (builtin "Use Operation Contract" (formula "8") (newnames "heapBefore_leaf,result_110,exc_130,heapAfter_leaf,anon_heap_leaf") (contract "Example[Example::leaf()].JML operation contract.0") (modality "box")) + (branch "Post (leaf)" + (builtin "One Step Simplification" (formula "10")) + (builtin "One Step Simplification" (formula "8")) + (rule "andLeft" (formula "8")) + (rule "andLeft" (formula "9")) + (rule "typeEqDerived" (formula "10") (term "0,1,1,1,1") (ifseqformula "9")) + (rule "typeEqDerived" (formula "10") (term "0,0,1,1,1") (ifseqformula "9")) + (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "9")) (ifInst "" (formula "9"))) + (rule "andLeft" (formula "10")) + (rule "assignment" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "applyEq" (formula "13") (term "0,1,0") (ifseqformula "10")) + (rule "methodCallReturn" (formula "13") (term "1")) + (rule "assignment" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "methodCallEmpty" (formula "13") (term "1")) + (rule "tryEmpty" (formula "13") (term "1")) + (rule "emptyModality" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "13")) + ) + (branch "Exceptional Post (leaf)" + (builtin "One Step Simplification" (formula "10")) + (builtin "One Step Simplification" (formula "8")) + (rule "andLeft" (formula "8")) + (rule "selectCreatedOfAnonAsFormulaEQ" (formula "9") (term "1,0") (ifseqformula "8")) + (rule "andLeft" (formula "9")) + (rule "andLeft" (formula "10")) + (rule "andLeft" (formula "9")) + (rule "notLeft" (formula "9")) + (rule "replace_known_right" (formula "10") (term "0") (ifseqformula "12")) + (builtin "One Step Simplification" (formula "10")) + (rule "true_left" (formula "10")) + (rule "replace_known_right" (formula "10") (term "0,0") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "10")) + (rule "andLeft" (formula "10")) + (rule "methodCallParamThrow" (formula "14") (term "1")) + (rule "tryCatchThrow" (formula "14") (term "1")) + (rule "ifElseUnfold" (formula "14") (term "1") (inst "#boolv=x")) + (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_3")) + (rule "equality_comparison_simple" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "replace_known_right" (formula "14") (term "0,0,1,0") (ifseqformula "12")) + (builtin "One Step Simplification" (formula "14")) + (rule "ifElseSplit" (formula "14")) + (branch "if x_3 true" + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + (branch "if x_3 false" + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "ifElseSplit" (formula "14")) + (branch "if exc_130 instanceof java.lang.Throwable true" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) + (rule "true_left" (formula "1")) + (rule "variableDeclaration" (formula "14") (term "1") (newnames "e")) + (rule "delete_unnecessary_cast" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "assignment" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "emptyModality" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "12")) (ifInst "" (formula "12")) (ifInst "" (formula "10")) (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "14")) + ) + (branch "if exc_130 instanceof java.lang.Throwable false" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "13"))) + (rule "closeFalse" (formula "1")) + ) + ) + ) + (branch "Pre (leaf)" + (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "6")) (ifInst "" (formula "2"))) + (rule "closeTrue" (formula "8")) + ) + ) + (branch "if x false" + (builtin "One Step Simplification" (formula "9")) + (builtin "One Step Simplification" (formula "1")) + (rule "notLeft" (formula "1")) + (rule "returnUnfold" (formula "9") (term "1") (inst "#v0=x")) + (rule "variableDeclarationAssign" (formula "9") (term "1")) + (rule "variableDeclaration" (formula "9") (term "1") (newnames "x_2")) + (rule "methodCallWithAssignmentUnfoldArguments" (formula "9") (term "1")) + (rule "variableDeclarationAssign" (formula "9") (term "1")) + (rule "variableDeclaration" (formula "9") (term "1") (newnames "var")) + (rule "assignmentSubtractionInt" (formula "9") (term "1")) + (builtin "One Step Simplification" (formula "9")) + (rule "translateJavaSubInt" (formula "9") (term "0,1,0")) + (rule "polySimp_elimSub" (formula "9") (term "0,1,0")) + (rule "mul_literals" (formula "9") (term "1,0,1,0")) + (rule "polySimp_addComm0" (formula "9") (term "0,1,0")) + (builtin "Use Operation Contract" (formula "9") (newnames "heapBefore_cycleB,result_110,exc_130,heapAfter_cycleB,anon_heap_cycleB") (contract "Example[Example::cycleB(int)].JML operation contract.0#Example[Example::cycleB(int)].JML operation contract.1") (modality "box")) + (branch "Post (cycleB)" + (builtin "One Step Simplification" (formula "11")) + (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5")) (ifInst "" (formula "5"))) + (rule "andLeft" (formula "7")) + (rule "andLeft" (formula "8")) + (rule "typeEqDerived" (formula "9") (term "0,1,1,1,1,1") (ifseqformula "8")) + (rule "typeEqDerived" (formula "9") (term "0,0,1,1,1,1") (ifseqformula "8")) + (rule "typeEqDerived" (formula "9") (term "0,0,1,1,1,1,0") (ifseqformula "8")) + (rule "typeEqDerived" (formula "9") (term "0,1,1,1,1,1,0") (ifseqformula "8")) + (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8")) (ifInst "" (formula "8")) (ifInst "" (formula "8")) (ifInst "" (formula "8"))) + (rule "andLeft" (formula "9")) + (rule "andLeft" (formula "10")) + (rule "replace_known_left" (formula "9") (term "0,1") (ifseqformula "10")) + (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "11"))) + (rule "true_left" (formula "9")) + (rule "inEqSimp_gtToGeq" (formula "9") (term "0")) + (rule "times_zero_1" (formula "9") (term "1,0,0,0")) + (rule "add_zero_right" (formula "9") (term "0,0,0")) + (rule "polySimp_addAssoc" (formula "9") (term "0,0")) + (rule "add_literals" (formula "9") (term "0,0,0")) + (rule "assignment" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "blockEmpty" (formula "14") (term "1")) + (rule "inEqSimp_sepPosMonomial1" (formula "9") (term "0")) + (rule "mul_literals" (formula "9") (term "1,0")) + (rule "methodCallReturn" (formula "14") (term "1")) + (rule "assignment" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "methodCallEmpty" (formula "14") (term "1")) + (rule "tryEmpty" (formula "14") (term "1")) + (rule "emptyModality" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "10"))) + (rule "impRight" (formula "14")) + (rule "replace_known_right" (formula "10") (term "1") (ifseqformula "15")) + (builtin "One Step Simplification" (formula "10")) + (rule "notLeft" (formula "10")) + (rule "inEqSimp_geqRight" (formula "11")) + (rule "mul_literals" (formula "1") (term "1,0,0")) + (rule "add_literals" (formula "1") (term "0,0")) + (rule "inEqSimp_sepPosMonomial0" (formula "1")) + (rule "mul_literals" (formula "1") (term "1")) + (rule "inEqSimp_strengthen0" (formula "1") (ifseqformula "12")) + (rule "add_literals" (formula "1") (term "1")) + (rule "inEqSimp_contradEq3" (formula "12") (ifseqformula "1")) + (rule "add_zero_left" (formula "12") (term "0,0")) + (rule "mul_literals" (formula "12") (term "0,0")) + (rule "qeq_literals" (formula "12") (term "0")) + (builtin "One Step Simplification" (formula "12")) + (rule "false_right" (formula "12")) + (rule "inEqSimp_strengthen1" (formula "2") (ifseqformula "12")) + (rule "add_zero_right" (formula "2") (term "1")) + (rule "inEqSimp_contradEq7" (formula "12") (ifseqformula "2")) + (rule "times_zero_1" (formula "12") (term "1,0,0")) + (rule "add_zero_right" (formula "12") (term "0,0")) + (rule "leq_literals" (formula "12") (term "0")) + (builtin "One Step Simplification" (formula "12")) + (rule "false_right" (formula "12")) + (rule "inEqSimp_contradInEq0" (formula "2") (ifseqformula "1")) + (rule "qeq_literals" (formula "2") (term "0")) + (builtin "One Step Simplification" (formula "2")) + (rule "closeFalse" (formula "2")) + ) + (branch "Exceptional Post (cycleB)" + (builtin "One Step Simplification" (formula "11")) + (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5")) (ifInst "" (formula "5"))) + (rule "andLeft" (formula "7")) + (rule "selectCreatedOfAnonAsFormulaEQ" (formula "8") (term "1,0") (ifseqformula "7")) + (rule "andLeft" (formula "8")) + (rule "andLeft" (formula "8")) + (rule "andLeft" (formula "10")) + (rule "notLeft" (formula "8")) + (rule "andLeft" (formula "10")) + (rule "replace_known_right" (formula "10") (term "0") (ifseqformula "12")) + (builtin "One Step Simplification" (formula "10")) + (rule "true_left" (formula "10")) + (rule "replace_known_right" (formula "10") (term "0,0") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "10")) + (rule "andLeft" (formula "10")) + (rule "replace_known_right" (formula "9") (term "0,0,1") (ifseqformula "12")) + (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "10")) (ifInst "" (formula "12")) (ifInst "" (formula "10")) (ifInst "" (formula "11"))) + (rule "true_left" (formula "9")) + (rule "blockThrow" (formula "15") (term "1")) + (rule "methodCallParamThrow" (formula "15") (term "1")) + (rule "tryCatchThrow" (formula "15") (term "1")) + (rule "ifElseUnfold" (formula "15") (term "1") (inst "#boolv=x")) + (rule "variableDeclaration" (formula "15") (term "1") (newnames "x_3")) + (rule "equality_comparison_simple" (formula "15") (term "1")) + (builtin "One Step Simplification" (formula "15")) + (rule "replace_known_right" (formula "15") (term "0,0,1,0") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "15")) + (rule "ifElseSplit" (formula "15")) + (branch "if x_3 true" + (builtin "One Step Simplification" (formula "16")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + (branch "if x_3 false" + (builtin "One Step Simplification" (formula "16")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "ifElseSplit" (formula "15")) + (branch "if exc_130 instanceof java.lang.Throwable true" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) + (rule "true_left" (formula "1")) + (rule "variableDeclaration" (formula "15") (term "1") (newnames "e")) + (rule "delete_unnecessary_cast" (formula "15") (term "1")) + (builtin "One Step Simplification" (formula "16")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "assignment" (formula "15") (term "1")) + (builtin "One Step Simplification" (formula "15")) + (rule "emptyModality" (formula "15") (term "1")) + (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "11")) (ifInst "" (formula "11")) (ifInst "" (formula "9")) (ifInst "" (formula "10"))) + (rule "closeTrue" (formula "15")) + ) + (branch "if exc_130 instanceof java.lang.Throwable false" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) + (rule "closeFalse" (formula "1")) + ) + ) + ) + (branch "Pre (cycleB)" + (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "1")) (ifInst "" (formula "5"))) + (rule "closeTrue" (formula "9")) + ) + ) +) +) +} diff --git a/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleB(int)).JML operation contract.0.proof b/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleB(int)).JML operation contract.0.proof new file mode 100755 index 00000000000..e03d39c6148 --- /dev/null +++ b/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleB(int)).JML operation contract.0.proof @@ -0,0 +1,265 @@ +\profile "Java Profile"; + +\settings { +"#Proof-Settings-Config-File +#Mon Mar 09 18:27:59 CET 2020 +[Labels]UseOriginLabels=true +[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON +[SMTSettings]invariantForall=false +[Strategy]ActiveStrategy=JavaCardDLStrategy +[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF +[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS +[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF +[Choice]DefaultChoices=assertions-assertions\\:safe , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:ban , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:treatAsAxiom , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , methodExpansion-methodExpansion\\:modularOnly +[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT +[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE +[SMTSettings]UseBuiltUniqueness=false +[SMTSettings]explicitTypeHierarchy=false +[SMTSettings]instantiateHierarchyAssumptions=true +[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_COMPLETION +[SMTSettings]SelectedTaclets= +[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON +[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF +[Strategy]MaximumNumberOfAutomaticApplications=7000 +[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT +[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_DELAYED +[SMTSettings]useConstantsForBigOrSmallIntegers=true +[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE +[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF +[Strategy]Timeout=-1 +[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER +[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_ON +[SMTSettings]useUninterpretedMultiplication=true +[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL +[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT +[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF +[SMTSettings]maxGenericSorts=2 +[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON +[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED +[SMTSettings]integersMinimum=-2147483645 +[StrategyProperty]VBT_PHASE=VBT_SYM_EX +[SMTSettings]integersMaximum=2147483645 +" +} + +\javaSource "src"; + +\proofObligation "#Proof Obligation Settings +#Mon Mar 09 18:27:59 CET 2020 +contract=Example[Example\\:\\:cycleB(int)].JML operation contract.0 +name=Example[Example\\:\\:cycleB(int)].JML operation contract.0 +class=de.uka.ilkd.key.proof.init.FunctionalOperationContractPO +"; + +\proof { +(keyLog "0" (keyUser "Banach" ) (keyVersion "9e1d8db9a5")) + +(autoModeTime "98") + +(branch "dummy ID" + (builtin "One Step Simplification" (formula "1") (newnames "param,self_25,result_21,exc_25,heapAtPre_0,o,f")) +(rule "impRight" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "3")) +(rule "andLeft" (formula "1")) +(rule "notLeft" (formula "5")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "notLeft" (formula "2")) +(rule "assignment" (formula "8") (term "1")) + (builtin "One Step Simplification" (formula "8")) +(rule "methodBodyExpand" (formula "8") (term "1") (newnames "heapBefore_cycleB,savedHeapBefore_cycleB")) + (builtin "One Step Simplification" (formula "8")) +(rule "returnUnfold" (formula "8") (term "1") (inst "#v0=x")) +(rule "variableDeclarationAssign" (formula "8") (term "1")) +(rule "variableDeclaration" (formula "8") (term "1") (newnames "x")) +(rule "methodCallWithAssignmentUnfoldArguments" (formula "8") (term "1")) +(rule "variableDeclarationAssign" (formula "8") (term "1")) +(rule "variableDeclaration" (formula "8") (term "1") (newnames "var")) +(rule "assignmentSubtractionInt" (formula "8") (term "1")) + (builtin "One Step Simplification" (formula "8")) +(rule "translateJavaSubInt" (formula "8") (term "0,1,0")) +(rule "polySimp_elimSub" (formula "8") (term "0,1,0")) +(rule "mul_literals" (formula "8") (term "1,0,1,0")) +(rule "polySimp_addComm0" (formula "8") (term "0,1,0")) + (builtin "Use Operation Contract" (formula "8") (newnames "heapBefore_cycleA,result_22,exc_26,heapAfter_cycleA,anon_heap_cycleA") (contract "Example[Example::cycleA(int)].JML operation contract.0") (modality "diamond")) +(branch "Post (cycleA)" + (builtin "One Step Simplification" (formula "7")) + (builtin "One Step Simplification" (formula "10")) + (rule "andLeft" (formula "7")) + (rule "andLeft" (formula "8")) + (rule "typeEqDerived" (formula "9") (term "0,1,1,1,1") (ifseqformula "8")) + (rule "typeEqDerived" (formula "9") (term "0,0,1,1,1") (ifseqformula "8")) + (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8")) (ifInst "" (formula "8"))) + (rule "andLeft" (formula "9")) + (rule "assignment" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "blockEmpty" (formula "13") (term "1")) + (rule "methodCallReturn" (formula "13") (term "1")) + (rule "assignment" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "methodCallEmpty" (formula "13") (term "1")) + (rule "tryEmpty" (formula "13") (term "1")) + (rule "emptyModality" (formula "13") (term "1")) + (rule "andRight" (formula "13")) + (branch "Case 1" + (rule "impRight" (formula "13")) + (rule "andRight" (formula "14")) + (branch "Case 1" + (rule "impRight" (formula "14")) + (builtin "One Step Simplification" (formula "2")) + (builtin "One Step Simplification" (formula "1")) + (builtin "One Step Simplification" (formula "15")) + (rule "true_left" (formula "2")) + (rule "replace_known_right" (formula "10") (term "1") (ifseqformula "14")) + (builtin "One Step Simplification" (formula "10")) + (rule "notLeft" (formula "10")) + (rule "inEqSimp_leqRight" (formula "13")) + (rule "times_zero_1" (formula "1") (term "1,0,0")) + (rule "add_zero_right" (formula "1") (term "0,0")) + (rule "close" (formula "12") (ifseqformula "1")) + ) + (branch "Case 2" + (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "14")) + ) + ) + (branch "Case 2" + (rule "impRight" (formula "13")) + (rule "andRight" (formula "14")) + (branch "Case 1" + (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "11"))) + (rule "closeTrue" (formula "14")) + ) + (branch "Case 2" + (rule "orRight" (formula "14")) + (builtin "One Step Simplification" (formula "14")) + (rule "closeTrue" (formula "14")) + ) + ) +) +(branch "Exceptional Post (cycleA)" + (builtin "One Step Simplification" (formula "10")) + (builtin "One Step Simplification" (formula "7")) + (rule "andLeft" (formula "7")) + (rule "selectCreatedOfAnonAsFormulaEQ" (formula "8") (term "1,0") (ifseqformula "7")) + (rule "andLeft" (formula "8")) + (rule "andLeft" (formula "8")) + (rule "andLeft" (formula "10")) + (rule "notLeft" (formula "8")) + (rule "replace_known_right" (formula "9") (term "0") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "9")) + (rule "true_left" (formula "9")) + (rule "replace_known_right" (formula "9") (term "0,0") (ifseqformula "10")) + (builtin "One Step Simplification" (formula "9")) + (rule "andLeft" (formula "9")) + (rule "blockThrow" (formula "14") (term "1")) + (rule "methodCallParamThrow" (formula "14") (term "1")) + (rule "tryCatchThrow" (formula "14") (term "1")) + (rule "ifElseUnfold" (formula "14") (term "1") (inst "#boolv=x")) + (rule "variableDeclaration" (formula "14") (term "1") (newnames "x_1")) + (rule "equality_comparison_simple" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "replace_known_right" (formula "14") (term "0,0,1,0") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "14")) + (rule "ifElseSplit" (formula "14")) + (branch "if x_1 true" + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + (branch "if x_1 false" + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "ifElseSplit" (formula "14")) + (branch "if exc_26 instanceof java.lang.Throwable true" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) + (rule "true_left" (formula "1")) + (rule "variableDeclaration" (formula "14") (term "1") (newnames "e")) + (rule "delete_unnecessary_cast" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "15")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "assignment" (formula "14") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (rule "emptyModality" (formula "14") (term "1")) + (rule "andRight" (formula "14")) + (branch "Case 1" + (rule "impRight" (formula "14")) + (rule "andRight" (formula "15")) + (branch "Case 1" + (rule "impRight" (formula "15")) + (builtin "One Step Simplification" (formula "2") (ifInst "" (formula "13"))) + (rule "closeFalse" (formula "2")) + ) + (branch "Case 2" + (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "10"))) + (rule "closeTrue" (formula "15")) + ) + ) + (branch "Case 2" + (rule "impRight" (formula "14")) + (rule "andRight" (formula "15")) + (branch "Case 1" + (builtin "One Step Simplification" (formula "15") (ifInst "" (formula "10"))) + (rule "closeTrue" (formula "15")) + ) + (branch "Case 2" + (rule "orRight" (formula "15")) + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) + (builtin "One Step Simplification" (formula "16")) + (builtin "One Step Simplification" (formula "15")) + (rule "true_left" (formula "1")) + (rule "replace_known_right" (formula "10") (term "1") (ifseqformula "15")) + (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "14"))) + (rule "closeFalse" (formula "10")) + ) + ) + ) + (branch "if exc_26 instanceof java.lang.Throwable false" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) + (rule "closeFalse" (formula "1")) + ) + ) +) +(branch "Pre (cycleA)" + (builtin "One Step Simplification" (formula "8") (ifInst "" (formula "1")) (ifInst "" (formula "5"))) + (rule "measuredByCheck" (formula "8") (term "1") (ifseqformula "4")) + (rule "precOfInt" (formula "8") (term "1")) + (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 "inEqSimp_ltToLeq" (formula "8") (term "0,0")) + (rule "times_zero_1" (formula "8") (term "1,0,0,0,0")) + (rule "add_zero_right" (formula "8") (term "0,0,0,0")) + (rule "polySimp_addAssoc" (formula "8") (term "0,0,0")) + (rule "add_literals" (formula "8") (term "0,0,0,0")) + (rule "add_zero_left" (formula "8") (term "0,0,0")) + (rule "inEqSimp_ltToLeq" (formula "8") (term "1,1")) + (rule "polySimp_mulComm0" (formula "8") (term "1,0,0,1,1")) + (rule "polySimp_addAssoc" (formula "8") (term "0,1,1")) + (rule "polySimp_addComm1" (formula "8") (term "0,0,1,1")) + (rule "add_literals" (formula "8") (term "0,0,0,1,1")) + (rule "add_zero_left" (formula "8") (term "0,0,1,1")) + (rule "polySimp_pullOutFactor2" (formula "8") (term "0,1,1")) + (rule "add_literals" (formula "8") (term "1,0,1,1")) + (rule "times_zero_1" (formula "8") (term "0,1,1")) + (rule "leq_literals" (formula "8") (term "1,1")) + (builtin "One Step Simplification" (formula "8")) + (rule "inEqSimp_homoInEq0" (formula "8") (term "1")) + (rule "times_zero_2" (formula "8") (term "1,0,1")) + (rule "add_zero_right" (formula "8") (term "0,1")) + (rule "replace_known_left" (formula "8") (term "1") (ifseqformula "1")) + (builtin "One Step Simplification" (formula "8")) + (rule "notRight" (formula "8")) + (rule "inEqSimp_sepPosMonomial1" (formula "2")) + (rule "mul_literals" (formula "2") (term "1")) + (rule "inEqSimp_contradInEq0" (formula "2") (ifseqformula "1")) + (rule "qeq_literals" (formula "2") (term "0")) + (builtin "One Step Simplification" (formula "2")) + (rule "closeFalse" (formula "2")) +) +) +} diff --git a/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleB(int)).JML operation contract.1.proof b/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleB(int)).JML operation contract.1.proof new file mode 100755 index 00000000000..0d0f18980d8 --- /dev/null +++ b/keyext.proofmanagement/src/test/pmexample2/Example(Example__cycleB(int)).JML operation contract.1.proof @@ -0,0 +1,182 @@ +\profile "Java Profile"; + +\settings { +"#Proof-Settings-Config-File +#Mon Mar 09 18:28:33 CET 2020 +[Labels]UseOriginLabels=true +[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON +[SMTSettings]invariantForall=false +[Strategy]ActiveStrategy=JavaCardDLStrategy +[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF +[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS +[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF +[Choice]DefaultChoices=assertions-assertions\\:safe , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , programRules-programRules\\:Java , runtimeExceptions-runtimeExceptions\\:ban , JavaCard-JavaCard\\:off , Strings-Strings\\:on , modelFields-modelFields\\:treatAsAxiom , bigint-bigint\\:on , sequences-sequences\\:on , moreSeqRules-moreSeqRules\\:off , reach-reach\\:on , integerSimplificationRules-integerSimplificationRules\\:full , permissions-permissions\\:off , wdOperator-wdOperator\\:L , wdChecks-wdChecks\\:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , methodExpansion-methodExpansion\\:modularOnly +[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_INVARIANT +[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE +[SMTSettings]UseBuiltUniqueness=false +[SMTSettings]explicitTypeHierarchy=false +[SMTSettings]instantiateHierarchyAssumptions=true +[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_COMPLETION +[SMTSettings]SelectedTaclets= +[StrategyProperty]DEP_OPTIONS_KEY=DEP_ON +[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF +[Strategy]MaximumNumberOfAutomaticApplications=7000 +[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT +[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_DELAYED +[SMTSettings]useConstantsForBigOrSmallIntegers=true +[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE +[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF +[Strategy]Timeout=-1 +[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER +[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_ON +[SMTSettings]useUninterpretedMultiplication=true +[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL +[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT +[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF +[SMTSettings]maxGenericSorts=2 +[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON +[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED +[SMTSettings]integersMinimum=-2147483645 +[StrategyProperty]VBT_PHASE=VBT_SYM_EX +[SMTSettings]integersMaximum=2147483645 +" +} + +\javaSource "src"; + +\proofObligation "#Proof Obligation Settings +#Mon Mar 09 18:28:33 CET 2020 +contract=Example[Example\\:\\:cycleB(int)].JML operation contract.1 +name=Example[Example\\:\\:cycleB(int)].JML operation contract.1 +class=de.uka.ilkd.key.proof.init.FunctionalOperationContractPO +"; + +\proof { +(keyLog "0" (keyUser "Banach" ) (keyVersion "9e1d8db9a5")) + +(autoModeTime "94") + +(branch "dummy ID" + (builtin "One Step Simplification" (formula "1") (newnames "param,self_103,result_87,exc_103,heapAtPre_0,o,f")) +(rule "impRight" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "andLeft" (formula "1")) +(rule "notLeft" (formula "2")) +(rule "inEqSimp_gtToGeq" (formula "7") (term "0,0,1,0,0,1")) +(rule "times_zero_1" (formula "7") (term "1,0,0,0,0,1,0,0,1")) +(rule "add_literals" (formula "7") (term "0,0,0,0,1,0,0,1")) +(rule "assignment" (formula "7") (term "1")) + (builtin "One Step Simplification" (formula "7")) +(rule "inEqSimp_sepPosMonomial1" (formula "7") (term "0,0,1,0,0,1")) +(rule "mul_literals" (formula "7") (term "1,0,0,1,0,0,1")) +(rule "methodBodyExpand" (formula "7") (term "1") (newnames "heapBefore_cycleB,savedHeapBefore_cycleB")) + (builtin "One Step Simplification" (formula "7")) +(rule "returnUnfold" (formula "7") (term "1") (inst "#v0=x")) +(rule "variableDeclarationAssign" (formula "7") (term "1")) +(rule "variableDeclaration" (formula "7") (term "1") (newnames "x")) +(rule "methodCallWithAssignmentUnfoldArguments" (formula "7") (term "1")) +(rule "variableDeclarationAssign" (formula "7") (term "1")) +(rule "variableDeclaration" (formula "7") (term "1") (newnames "var")) +(rule "assignmentSubtractionInt" (formula "7") (term "1")) + (builtin "One Step Simplification" (formula "7")) +(rule "translateJavaSubInt" (formula "7") (term "0,1,0")) +(rule "polySimp_elimSub" (formula "7") (term "0,1,0")) +(rule "mul_literals" (formula "7") (term "1,0,1,0")) +(rule "polySimp_addComm0" (formula "7") (term "0,1,0")) + (builtin "Use Operation Contract" (formula "7") (newnames "heapBefore_cycleA,result_88,exc_104,heapAfter_cycleA,anon_heap_cycleA") (contract "Example[Example::cycleA(int)].JML operation contract.0#Example[Example::cycleA(int)].JML operation contract.1") (modality "box")) +(branch "Post (cycleA)" + (builtin "One Step Simplification" (formula "9")) + (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5")) (ifInst "" (formula "5"))) + (rule "andLeft" (formula "7")) + (rule "andLeft" (formula "8")) + (rule "typeEqDerived" (formula "9") (term "0,1,1,1,1,1") (ifseqformula "8")) + (rule "typeEqDerived" (formula "9") (term "0,0,1,1,1,1") (ifseqformula "8")) + (rule "typeEqDerived" (formula "9") (term "0,1,1,1,1,1,0") (ifseqformula "8")) + (rule "typeEqDerived" (formula "9") (term "0,0,1,1,1,1,0") (ifseqformula "8")) + (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "8")) (ifInst "" (formula "8")) (ifInst "" (formula "8")) (ifInst "" (formula "8"))) + (rule "andLeft" (formula "9")) + (rule "andLeft" (formula "10")) + (rule "replace_known_left" (formula "9") (term "1,1") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "10"))) + (rule "true_left" (formula "9")) + (rule "assignment" (formula "12") (term "1")) + (builtin "One Step Simplification" (formula "12")) + (rule "blockEmpty" (formula "12") (term "1")) + (rule "inEqSimp_sepPosMonomial1" (formula "9") (term "0")) + (rule "mul_literals" (formula "9") (term "1,0")) + (rule "methodCallReturn" (formula "12") (term "1")) + (rule "assignment" (formula "12") (term "1")) + (builtin "One Step Simplification" (formula "12")) + (rule "methodCallEmpty" (formula "12") (term "1")) + (rule "tryEmpty" (formula "12") (term "1")) + (rule "emptyModality" (formula "12") (term "1")) + (builtin "One Step Simplification" (formula "12") (ifInst "" (formula "9")) (ifInst "" (formula "10"))) + (rule "closeTrue" (formula "12")) +) +(branch "Exceptional Post (cycleA)" + (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5")) (ifInst "" (formula "5"))) + (builtin "One Step Simplification" (formula "9")) + (rule "andLeft" (formula "7")) + (rule "selectCreatedOfAnonAsFormulaEQ" (formula "8") (term "1,0") (ifseqformula "7")) + (rule "andLeft" (formula "8")) + (rule "andLeft" (formula "9")) + (rule "andLeft" (formula "8")) + (rule "andLeft" (formula "11")) + (rule "notLeft" (formula "8")) + (rule "replace_known_right" (formula "11") (term "0,0") (ifseqformula "12")) + (builtin "One Step Simplification" (formula "11")) + (rule "andLeft" (formula "11")) + (rule "replace_known_right" (formula "10") (term "0") (ifseqformula "13")) + (builtin "One Step Simplification" (formula "10") (ifInst "" (formula "11"))) + (rule "true_left" (formula "10")) + (rule "replace_known_left" (formula "9") (term "1,1,0,1") (ifseqformula "10")) + (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "12")) (ifInst "" (formula "12")) (ifInst "" (formula "10")) (ifInst "" (formula "11"))) + (rule "true_left" (formula "9")) + (rule "blockThrow" (formula "13") (term "1")) + (rule "methodCallParamThrow" (formula "13") (term "1")) + (rule "tryCatchThrow" (formula "13") (term "1")) + (rule "ifElseUnfold" (formula "13") (term "1") (inst "#boolv=x")) + (rule "variableDeclaration" (formula "13") (term "1") (newnames "x_1")) + (rule "equality_comparison_simple" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "replace_known_right" (formula "13") (term "0,0,1,0") (ifseqformula "11")) + (builtin "One Step Simplification" (formula "13")) + (rule "ifElseSplit" (formula "13")) + (branch "if x_1 true" + (builtin "One Step Simplification" (formula "1")) + (rule "closeFalse" (formula "1")) + ) + (branch "if x_1 false" + (builtin "One Step Simplification" (formula "14")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "ifElseSplit" (formula "13")) + (branch "if exc_104 instanceof java.lang.Throwable true" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) + (rule "true_left" (formula "1")) + (rule "variableDeclaration" (formula "13") (term "1") (newnames "e")) + (rule "delete_unnecessary_cast" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "14")) + (builtin "One Step Simplification" (formula "1")) + (rule "true_left" (formula "1")) + (rule "assignment" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13")) + (rule "emptyModality" (formula "13") (term "1")) + (builtin "One Step Simplification" (formula "13") (ifInst "" (formula "11")) (ifInst "" (formula "11")) (ifInst "" (formula "9")) (ifInst "" (formula "10"))) + (rule "closeTrue" (formula "13")) + ) + (branch "if exc_104 instanceof java.lang.Throwable false" + (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "12"))) + (rule "closeFalse" (formula "1")) + ) + ) +) +(branch "Pre (cycleA)" + (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "1")) (ifInst "" (formula "5"))) + (rule "closeTrue" (formula "7")) +) +) +} diff --git a/keyext.proofmanagement/src/test/pmexample2/src/Example.java b/keyext.proofmanagement/src/test/pmexample2/src/Example.java new file mode 100755 index 00000000000..ce1062608e0 --- /dev/null +++ b/keyext.proofmanagement/src/test/pmexample2/src/Example.java @@ -0,0 +1,78 @@ +import java.util.ArrayList; + +class Example { + /*@ ensures param != 7 && param >= 0 ==> \result == 42; + @ diverges param == 7 || param < 1; + @*/ + int root(final int param) { + new java.util.ArrayList(); + return left(param) + right(); + } + + /*@ + @ ensures \result == 21; + @*/ + int right() { + return recursive(42); + } + + /*@ ensures \result == 21; + @ measured_by i; + @*/ + int recursive(final int i) { + if (i <= 0) + return result(); + else + return recursive(i-1); + } + + /*@ + @ ensures \result == 21; + @*/ + int result() { + return 21; + } + + /*@ ensures param != 7 && param >= 0 ==> \result == 21; + @ diverges param == 7 || param < 0; + @*/ + int left(final int param) { + if (param == 7) + block(); + else + return cycleA(param); + } + + /*@ + @ diverges true; + @*/ + void block() { + block(); + } + + /*@ ensures param >= 0 ==> \result == 21; + @ measured_by param; + @ diverges param < 0; + @*/ + int cycleA(final int param) { + if (param == 0 || param == 1) + return leaf(); + else + return cycleB(param-1); + } + + /*@ ensures param > 0 ==> \result == 21; + @ measured_by param; + @ diverges param <= 0; + @*/ + int cycleB(final int param) { + return cycleA(param-1); + } + + /*@ + @ ensures \result == 21; + @*/ + int leaf() { + return 21; + } +} From b6e6b1f5c5c7ecd76f843d2b875a8195f1f66798 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Wed, 18 Jun 2025 18:25:58 +0200 Subject: [PATCH 08/22] works no, freemarker is strange with null values --- .../uka/ilkd/key/gui/actions/KeyAction.java | 9 ++++ .../de/uka/ilkd/key/util/CommandLine.java | 5 ++- keyext.proofmanagement/build.gradle | 28 ++++++++++++ .../proofmanagement/CheckConfigDialog.java | 9 ++-- .../org/key_project/proofmanagement/Main.java | 8 ++-- .../proofmanagement/check/CheckerData.java | 36 +--------------- .../check/DependencyChecker.java | 6 +-- .../proofmanagement/check/KeYFacade.java | 22 +++++----- .../check/MissingProofsChecker.java | 2 +- .../proofmanagement/check/ProofEntry.java | 43 +++++++++++++++++++ .../check/dependency/DependencyGraph.java | 15 +++---- .../dependency/DependencyGraphBuilder.java | 21 ++++----- .../check/dependency/package-info.java | 8 ++++ .../proofmanagement/check/package-info.java | 8 ++++ .../io/ProofBundleHandler.java | 3 +- .../proofmanagement/io/package-info.java | 8 ++++ .../proofmanagement/merge/FilesChecker.java | 3 +- .../proofmanagement/merge/package-info.java | 8 ++++ .../proofmanagement/package-info.java | 8 ++++ .../src/main/resources/report/html/report.ftl | 22 +++++----- 20 files changed, 184 insertions(+), 88 deletions(-) create mode 100644 keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java create mode 100644 keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/package-info.java create mode 100644 keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/package-info.java create mode 100644 keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/package-info.java create mode 100644 keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/package-info.java create mode 100644 keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/package-info.java diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeyAction.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeyAction.java index 76eca687b4b..f71bde0011f 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeyAction.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeyAction.java @@ -8,6 +8,7 @@ import javax.swing.KeyStroke; import de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeManager; +import org.checkerframework.checker.initialization.qual.UnderInitialization; import static de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeManager.SHORTCUT_KEY_MASK; @@ -58,6 +59,14 @@ public abstract class KeyAction extends AbstractAction { */ public static final String LOCAL_ACCELERATOR = "LOCAL_ACCELERATOR"; + /// {@inheritDoc} + @Override + public void putValue( + @UnderInitialization(KeyAction.class) KeyAction this, + String key, Object newValue) { + super.putValue(key, newValue); + } + public String getName() { return (String) getValue(NAME); } diff --git a/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLine.java b/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLine.java index f56c6493393..1eff1162ef4 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLine.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLine.java @@ -9,6 +9,7 @@ import java.util.*; import de.uka.ilkd.key.core.Main; +import org.jspecify.annotations.Nullable; /** * A small framework to handle command lines. @@ -77,7 +78,7 @@ private class Option extends HelpElement { private String description; private String image; private String value; - private String parameter; + private @Nullable String parameter; @Override protected void print(PrintStream stream, int descriptionCol) { @@ -257,7 +258,7 @@ public boolean subCommandUsed(String name) { * this option (e.g. {@code , time, path}, ... * @param description the description of the option */ - public void addOption(String image, String parameter, String description) { + public void addOption(String image, @Nullable String parameter, String description) { if (!image.startsWith(MINUS)) { throw new IllegalArgumentException( diff --git a/keyext.proofmanagement/build.gradle b/keyext.proofmanagement/build.gradle index 61cde1fb71a..d3221a17438 100644 --- a/keyext.proofmanagement/build.gradle +++ b/keyext.proofmanagement/build.gradle @@ -28,6 +28,16 @@ tasks.register('testIntegrationReport', JavaExec) { 'proofBundle/simpleBundleGeneration') } +tasks.register('testIntegrationReport2', JavaExec) { + group = "verification" + mainClass.set(application.mainClass) + classpath = sourceSets.main.runtimeClasspath + + args('check', '--missing', '--settings', '--report', 'proofManagementReport.html', '--replay', '--dependency', + 'src/test/pmexample2') +} + + run { // for debugging, something like this can be used: //args('check', '--missing', '--settings', '--report', 'proofManagementReport.html', '--replay', '--dependency', 'pmexample2') @@ -42,3 +52,21 @@ shadowJar { archiveClassifier = "exe" archiveBaseName = "keyext.proofmanagement" } + + + +checkerFramework { + if(System.getProperty("ENABLE_NULLNESS")) { + checkers = [ + "org.checkerframework.checker.nullness.NullnessChecker", + ] + extraJavacArgs = [ + "-AonlyDefs=^org\\.key_project\\.proofmanagement", + "-Xmaxerrs", "10000", + "-Astubs=$projectDir/src/main/checkerframework:permit-nullness-assertion-exception.astub:checker.jar/junit-assertions.astub", + "-AstubNoWarnIfNotFound", + //"-Werror", + "-Aversion", + ] + } +} diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/CheckConfigDialog.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/CheckConfigDialog.java index 4a96d0f0841..a628ac7acfd 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/CheckConfigDialog.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/CheckConfigDialog.java @@ -13,6 +13,7 @@ import de.uka.ilkd.key.gui.KeYFileChooser; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,7 +39,7 @@ class CheckConfigDialog extends JDialog { private final Component glassPane = new BlockingGlassPane(); - private transient SwingWorker checkWorker; + private transient @Nullable SwingWorker checkWorker; private class ProofManagementCheckWorker extends SwingWorker { @Override @@ -106,7 +107,9 @@ public void mouseClicked(MouseEvent e) { containerPoint.x, containerPoint.y); if (component == runButton) { - checkWorker.cancel(true); + if(checkWorker!=null) { + checkWorker.cancel(true); + } } else { e.consume(); } @@ -167,7 +170,7 @@ public void keyTyped(KeyEvent e) { } } - public CheckConfigDialog(Frame parent, String title, boolean modal) { + public CheckConfigDialog(@Nullable Frame parent, String title, boolean modal) { super(parent, title, modal); setDefaultCloseOperation(DISPOSE_ON_CLOSE); diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java index 6745745cbc2..e58b1a11657 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java @@ -14,6 +14,7 @@ import de.uka.ilkd.key.util.CommandLine; import de.uka.ilkd.key.util.CommandLineException; +import org.jspecify.annotations.Nullable; import org.key_project.proofmanagement.check.*; import org.key_project.proofmanagement.io.HTMLReport; import org.key_project.proofmanagement.io.LogLevel; @@ -49,6 +50,7 @@ * * @author Wolfram Pfeifer */ +@SuppressWarnings("CallToPrintStackTrace") public final class Main { /** resource bundle where the description strings for the CLI are stored */ private static final ResourceBundle STRINGS = ResourceBundle.getBundle("strings"); @@ -161,7 +163,7 @@ public static void main(String[] args) { * @param reportPath the output path for the HTML report (if selected) */ public static void check(boolean missing, boolean settings, boolean replay, boolean dependency, - Path bundlePath, Path reportPath) { + Path bundlePath, @Nullable Path reportPath) { // we accumulate results in this variable CheckerData globalResult = new CheckerData(LogLevel.DEBUG); @@ -229,7 +231,7 @@ private static void check(CommandLine commandLine) { reportPath = Paths.get(outFileName).toAbsolutePath(); } - String pathStr = arguments.get(0); + String pathStr = arguments.getFirst(); Path bundlePath = Paths.get(pathStr); check(commandLine.isSet("--missing"), commandLine.isSet("--settings"), commandLine.isSet("--replay"), commandLine.isSet("--dependency"), @@ -254,7 +256,7 @@ private static void merge() { for (int i = 0; i < arguments.size() - 1; i++) { inputs.add(Paths.get(arguments.get(i))); } - Path output = Paths.get(arguments.get(arguments.size() - 1)); + Path output = Paths.get(arguments.getLast()); // Usually, the merging process is cancelled if there are conflicting files in both bundles. // This option forces merging. For the conflicting files, their versions from the first diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java index 40906628347..73c13252cf0 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java @@ -3,7 +3,6 @@ * SPDX-License-Identifier: GPL-2.0-only */ package org.key_project.proofmanagement.check; -import java.net.URL; import java.nio.file.Path; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -16,11 +15,6 @@ import java.util.SortedSet; import java.util.TreeSet; -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.KeYUserProblemFile; -import de.uka.ilkd.key.proof.init.ProblemInitializer; -import de.uka.ilkd.key.proof.io.AbstractProblemLoader; -import de.uka.ilkd.key.proof.io.IntermediatePresentationProofFileParser; import de.uka.ilkd.key.settings.ChoiceSettings; import de.uka.ilkd.key.speclang.Contract; import de.uka.ilkd.key.speclang.SLEnvInput; @@ -56,9 +50,9 @@ public String getCheckDate() { private final List messages = new ArrayList<>(); // TODO: side effects: may be changed by checkers (e.g. remove paths of taclet proofs) - private List proofPaths; + private List proofPaths = new ArrayList<>(); - ////////////////////////////////// results from dependency checker + /// /////////////////////////////// results from dependency checker private DependencyGraph dependencyGraph; @@ -265,32 +259,6 @@ public String toString() { } } - public class ProofEntry { - public LoadingState loadingState = LoadingState.UNKNOWN; - public ReplayState replayState = ReplayState.UNKNOWN; - public DependencyState dependencyState = DependencyState.UNKNOWN; - public ProofState proofState = ProofState.UNKNOWN; - - public boolean replaySuccess() { - return replayState == ReplayState.SUCCESS; - } - - public Path proofFile; - public KeYUserProblemFile envInput; - public ProblemInitializer problemInitializer; - public Proof proof; - - public Contract contract; - public URL sourceFile; - public String shortSrc; - public IntermediatePresentationProofFileParser.Result parseResult; - public AbstractProblemLoader.ReplayResult replayResult; - - public Integer settingsId() { - return choices2Id.get(proof.getSettings().getChoiceSettings().getDefaultChoices()); - } - } - public ProofEntry getProofEntryByContract(Contract contract) { for (ProofEntry p : proofEntries) { if (p.contract.equals(contract)) { diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java index 2970eb97ef0..1b06faea0c8 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java @@ -120,7 +120,7 @@ private boolean hasUnprovenDependencies(DependencyGraph graph, CheckerData data) changed = false; for (DependencyNode n : graph.getNodes()) { if (!closed.contains(n)) { - CheckerData.ProofEntry entry = data.getProofEntryByContract(n.getContract()); + ProofEntry entry = data.getProofEntryByContract(n.getContract()); if (entry != null) { if (entry.proofState == CheckerData.ProofState.CLOSED && closed.containsAll(n.getDependencies().keySet())) { @@ -146,7 +146,7 @@ private boolean hasUnprovenDependencies(DependencyGraph graph, CheckerData data) // update data: all other (successfully replayed) closed proofs // have dependencies left unproven - for (CheckerData.ProofEntry entry : data.getProofEntries()) { + for (ProofEntry entry : data.getProofEntries()) { if (entry.dependencyState == CheckerData.DependencyState.UNKNOWN && entry.replayState == CheckerData.ReplayState.SUCCESS) { entry.dependencyState = CheckerData.DependencyState.UNPROVEN_DEP; @@ -177,7 +177,7 @@ private boolean hasIllegalCycles(DependencyGraph graph) { // update all nodes from SCC to illegal cycle state for (DependencyNode n : scc.getNodes()) { - CheckerData.ProofEntry entry = data.getProofEntryByContract(n.getContract()); + ProofEntry entry = data.getProofEntryByContract(n.getContract()); // TODO: entry == null can not happen // (if node has dependencies it has been parsed, // thus also a proof entry exists) diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java index 6ccf66aed57..bc794312b19 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java @@ -81,7 +81,7 @@ public static void ensureProofsLoaded(CheckerData data) throws ProofManagementEx // for (Path proofPath : proofPaths) { while (iterator.hasNext()) { Path proofPath = iterator.next(); - CheckerData.ProofEntry line = ensureProofEntryExists(proofPath, data); + ProofEntry line = ensureProofEntryExists(proofPath, data); // only load every line once if (line.loadingState == CheckerData.LoadingState.UNKNOWN) { if (!loadProofTree(proofPath, line, data)) { @@ -100,17 +100,17 @@ public static void ensureProofsLoaded(CheckerData data) throws ProofManagementEx } } - private static CheckerData.ProofEntry ensureProofEntryExists(Path proofPath, CheckerData data) { - CheckerData.ProofEntry line = findProofLine(proofPath, data); + private static ProofEntry ensureProofEntryExists(Path proofPath, CheckerData data) { + ProofEntry line = findProofLine(proofPath, data); if (line == null) { - line = data.new ProofEntry(); + line = new ProofEntry(); data.getProofEntries().add(line); } return line; } - private static CheckerData.ProofEntry findProofLine(Path proofPath, CheckerData data) { - for (CheckerData.ProofEntry line : data.getProofEntries()) { + private static ProofEntry findProofLine(Path proofPath, CheckerData data) { + for (ProofEntry line : data.getProofEntries()) { if (line.proofFile != null && line.proofFile.equals(proofPath)) { return line; } @@ -118,7 +118,7 @@ private static CheckerData.ProofEntry findProofLine(Path proofPath, CheckerData return null; } - private static boolean loadProofTree(Path path, CheckerData.ProofEntry line, Logger logger) + private static boolean loadProofTree(Path path, ProofEntry line, Logger logger) throws Exception { logger.print(LogLevel.DEBUG, "Loading proof from " + path); @@ -150,7 +150,7 @@ private static boolean loadProofTree(Path path, CheckerData.ProofEntry line, Log return true; } - private static Proof[] loadProofFile(Path path, CheckerData.ProofEntry line) + private static Proof[] loadProofFile(Path path, ProofEntry line) throws Exception { Profile profile = AbstractProfile.getDefaultProfile(); @@ -293,7 +293,7 @@ public static void ensureProofsReplayed(CheckerData data) throws ProofManagement List proofPaths = data.getProofPaths(); ensureProofsLoaded(data); - for (CheckerData.ProofEntry line : data.getProofEntries()) { + for (ProofEntry line : data.getProofEntries()) { // skip replay for proofs if not requested if (proofPaths.contains(line.proofFile)) { // skip proofs that have already been replayed @@ -317,8 +317,8 @@ public static void ensureProofsReplayed(CheckerData data) throws ProofManagement } } - private static ReplayResult replayProof(CheckerData.ProofEntry line, EnvInput envInput, - Logger logger) throws ProofInputException { + private static ReplayResult replayProof(ProofEntry line, EnvInput envInput, + Logger logger) throws ProofInputException { Proof proof = line.proof; logger.print(LogLevel.INFO, "Starting replay of proof " + proof.name()); diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java index 903ca9247dd..2e74828cd50 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java @@ -72,7 +72,7 @@ private static void removeContractsWithProof(Set contracts, CheckerDat throws ProofManagementException { // compare: Is there a proof for every contract? - for (CheckerData.ProofEntry entry : data.getProofEntries()) { + for (ProofEntry entry : data.getProofEntries()) { Proof p = entry.proof; SpecificationRepository sr = p.getServices().getSpecificationRepository(); ContractPO cpo = sr.getPOForProof(p); diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java new file mode 100644 index 00000000000..b5cc95c806d --- /dev/null +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java @@ -0,0 +1,43 @@ +package org.key_project.proofmanagement.check; + +import de.uka.ilkd.key.proof.Proof; +import de.uka.ilkd.key.proof.init.KeYUserProblemFile; +import de.uka.ilkd.key.proof.init.ProblemInitializer; +import de.uka.ilkd.key.speclang.Contract; +import org.jspecify.annotations.Nullable; + +import java.net.URL; +import java.nio.file.Path; + +import static de.uka.ilkd.key.proof.io.AbstractProblemLoader.ReplayResult; +import static de.uka.ilkd.key.proof.io.IntermediatePresentationProofFileParser.Result; + +/** + * @author Alexander Weigl + * @version 1 (6/18/25) + */ +public class ProofEntry { + public CheckerData.LoadingState loadingState = CheckerData.LoadingState.UNKNOWN; + public CheckerData.ReplayState replayState = CheckerData.ReplayState.UNKNOWN; + public CheckerData.DependencyState dependencyState = CheckerData.DependencyState.UNKNOWN; + public CheckerData.ProofState proofState = CheckerData.ProofState.UNKNOWN; + + public boolean replaySuccess() { + return replayState == CheckerData.ReplayState.SUCCESS; + } + + public @Nullable Path proofFile; + public @Nullable KeYUserProblemFile envInput; + public @Nullable ProblemInitializer problemInitializer; + public @Nullable Proof proof; + + public @Nullable Contract contract; + public @Nullable URL sourceFile; + public @Nullable String shortSrc; + public @Nullable Result parseResult; + public @Nullable ReplayResult replayResult; + + /*public Integer settingsId() { + return choices2Id.get(proof.getSettings().getChoiceSettings().getDefaultChoices()); + }*/ +} diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java index 775f6d76c66..0563fb1b6bd 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java @@ -3,14 +3,10 @@ * SPDX-License-Identifier: GPL-2.0-only */ package org.key_project.proofmanagement.check.dependency; -import java.util.ArrayDeque; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.key_project.proofmanagement.io.Logger; /** @@ -118,7 +114,7 @@ public String toString() { * null indicates that it is invalid an has to be (re-)computed by calling * {@link #recalculateSCCs()}. */ - private Set allSCCs = null; + private @Nullable Set allSCCs; /** maps each dependency node to the SCC it corresponds to */ private final Map node2SCC = new HashMap<>(); @@ -171,7 +167,7 @@ public Set getAllSCCs() { if (allSCCs == null) { recalculateSCCs(); } - return allSCCs; + return Objects.requireNonNull(allSCCs); } /** @@ -180,7 +176,7 @@ public Set getAllSCCs() { * @param contractName the contract name to search for (only exact matches will be found) * @return the DependencyNode for the given contractName or null, if none found */ - public DependencyNode getNodeByName(String contractName) { + public @Nullable DependencyNode getNodeByName(String contractName) { return name2Node.get(contractName); } @@ -235,6 +231,7 @@ private void calculateSCCForNode(DependencyNode node) { } if (node.getLowLink() == node.getIndex()) { // back to "root" of SCC? -> store SCC + assert allSCCs != null; SCC scc = new SCC(allSCCs.size()); DependencyNode w; do { diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java index 38931951162..d998f30210f 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Map; +import java.util.Objects; import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.proof.Proof; @@ -12,7 +13,7 @@ import de.uka.ilkd.key.proof.mgt.SpecificationRepository; import de.uka.ilkd.key.speclang.Contract; -import org.key_project.proofmanagement.check.CheckerData; +import org.key_project.proofmanagement.check.ProofEntry; import org.key_project.proofmanagement.io.Logger; /** @@ -28,31 +29,31 @@ public abstract class DependencyGraphBuilder { * @param logger the logger to print out error messages generated during graph creation * @return the newly created DependencyGraph */ - public static DependencyGraph buildGraph(List proofEntries, + public static DependencyGraph buildGraph(List proofEntries, Logger logger) { DependencyGraph graph = new DependencyGraph(); // first create the nodes of the graph (one for each loaded proof) - for (CheckerData.ProofEntry line : proofEntries) { + for (ProofEntry line : proofEntries) { - Proof proof = line.proof; + Proof proof = Objects.requireNonNull(line.proof); String contractName = proof.name().toString(); Services services = proof.getServices(); SpecificationRepository specRepo = services.getSpecificationRepository(); Contract contract = specRepo.getContractByName(contractName); // create fresh node for current contract - DependencyNode node = new DependencyNode(contract); + DependencyNode node = new DependencyNode(Objects.requireNonNull(contract)); graph.addNode(node); } // add dependencies between nodes - for (CheckerData.ProofEntry line : proofEntries) { + for (ProofEntry line : proofEntries) { // get current node and root of proof - Proof proof = line.proof; - DependencyNode currentNode = graph.getNodeByName(proof.name().toString()); - BranchNodeIntermediate node = line.parseResult.parsedResult(); + Proof proof = Objects.requireNonNull(line.proof); + DependencyNode currentNode = Objects.requireNonNull(graph.getNodeByName(proof.name().toString())); + BranchNodeIntermediate node = Objects.requireNonNull(line.parseResult).parsedResult(); // collect all contracts the current proof refers to Services services = proof.getServices(); @@ -69,7 +70,7 @@ public static DependencyGraph buildGraph(List proofEntri // This is the case for contracts that have no proof in bundle, // particularly those from JavaRedux shipped with KeY. if (dependentNode == null) { - Contract contract = specRepo.getContractByName(depName); + Contract contract = Objects.requireNonNull(specRepo.getContractByName(depName)); dependentNode = new DependencyNode(contract); graph.addNode(dependentNode); } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/package-info.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/package-info.java new file mode 100644 index 00000000000..0632fca5b72 --- /dev/null +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/package-info.java @@ -0,0 +1,8 @@ +/** + * @author Alexander Weigl + * @version 1 (6/18/25) + */ +@NullMarked +package org.key_project.proofmanagement.check.dependency; + +import org.jspecify.annotations.NullMarked; \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/package-info.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/package-info.java new file mode 100644 index 00000000000..7beb7d61f75 --- /dev/null +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/package-info.java @@ -0,0 +1,8 @@ +/** + * @author Alexander Weigl + * @version 1 (6/18/25) + */ +@NullMarked +package org.key_project.proofmanagement.check; + +import org.jspecify.annotations.NullMarked; \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/ProofBundleHandler.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/ProofBundleHandler.java index 29fbab0450c..3b7ad2d5049 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/ProofBundleHandler.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/ProofBundleHandler.java @@ -14,6 +14,7 @@ import java.nio.file.attribute.BasicFileAttributes; import java.util.List; +import org.jspecify.annotations.Nullable; import org.key_project.proofmanagement.check.PathNode; import org.key_project.proofmanagement.check.ProofManagementException; @@ -115,7 +116,7 @@ public abstract class ProofBundleHandler implements Closeable { * @return the bootclasspath or null, if none is specified * @throws IOException if the bundle can not be opened/accessed */ - public abstract Path getBootclasspath() throws IOException; + public abstract @Nullable Path getBootclasspath() throws IOException; /** * Returns a tree of the complete file hierarchy inside the bundle. diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/package-info.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/package-info.java new file mode 100644 index 00000000000..cc1a89f1b49 --- /dev/null +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/package-info.java @@ -0,0 +1,8 @@ +/** + * @author Alexander Weigl + * @version 1 (6/18/25) + */ +@NullMarked +package org.key_project.proofmanagement.io; + +import org.jspecify.annotations.NullMarked; \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/FilesChecker.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/FilesChecker.java index 9cd4c19eb70..f4f9220c7ce 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/FilesChecker.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/FilesChecker.java @@ -21,6 +21,7 @@ * * @author Wolfram Pfeifer */ +@SuppressWarnings("CallToPrintStackTrace") public class FilesChecker { @FunctionalInterface public interface CheckedFunction { @@ -29,7 +30,7 @@ public interface CheckedFunction { static boolean listOfPathsConsistent(@NonNull List paths) { boolean res = true; - Path reference = paths.get(0); + Path reference = paths.getFirst(); for (int i = 1; i < paths.size(); i++) { Path p = paths.get(i); res &= sourcesConsistent(p, reference); diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/package-info.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/package-info.java new file mode 100644 index 00000000000..9692e215df8 --- /dev/null +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/package-info.java @@ -0,0 +1,8 @@ +/** + * @author Alexander Weigl + * @version 1 (6/18/25) + */ +@NullMarked +package org.key_project.proofmanagement.merge; + +import org.jspecify.annotations.NullMarked; \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/package-info.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/package-info.java new file mode 100644 index 00000000000..870662a7cc9 --- /dev/null +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/package-info.java @@ -0,0 +1,8 @@ +/** + * @author Alexander Weigl + * @version 1 (6/18/25) + */ +@NullMarked +package org.key_project.proofmanagement; + +import org.jspecify.annotations.NullMarked; \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/resources/report/html/report.ftl b/keyext.proofmanagement/src/main/resources/report/html/report.ftl index 4c9e5985eb4..309a8057c98 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/report.ftl +++ b/keyext.proofmanagement/src/main/resources/report/html/report.ftl @@ -4,7 +4,7 @@ <#-- @ftlvariable name="title" type="String" --> <#-- @ftlvariable name="bundleFileName" type="String" --> <#-- @ftlvariable name="treeRoot" type="org.key_project.proofmanagement.check.PathNode" --> -<#-- @ftlvariable name="entries" type="java.util.List" --> +<#-- @ftlvariable name="entries" type="java.util.List" --> <#-- @ftlvariable name="graph" type="org.key_project.proofmanagement.check.dependency.DependencyGraph" --> @@ -96,9 +96,7 @@ <#escape x as x?xml> ${msg} - <#if msg_has_next> -
      - + <#sep>
    @@ -219,17 +217,21 @@ ID <#list checkerData.choiceNames as names> - ${c} + ${names} - <#list checkerData.shortChoices2Id as key,value> + <#list checkerData.shortChoices2Id as choices , value> - ${value} format="%02d"$ - <#list checkerData.choiceNames as name > - ${key.get(name)} - + ${value} + <#list checkerData.choiceNames as name> + ${choices[name]???string('yes','no')} + + From 7329a67c6788114129de2727a8a3a35d14b83853 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Thu, 19 Jun 2025 02:58:36 +0200 Subject: [PATCH 09/22] Reformat + add integration to Github --- .../uka/ilkd/key/gui/actions/KeyAction.java | 1 + .../de/uka/ilkd/key/util/CommandLine.java | 1 + keyext.proofmanagement/build.gradle | 6 +-- .../proofmanagement/CheckConfigDialog.java | 29 +++++++----- .../org/key_project/proofmanagement/Main.java | 3 +- .../proofmanagement/ProofManagementExt.java | 3 +- .../proofmanagement/check/CheckerData.java | 47 +++++++++---------- .../check/DependencyChecker.java | 4 +- .../proofmanagement/check/KeYFacade.java | 2 +- .../check/MissingProofsChecker.java | 5 +- .../proofmanagement/check/Node.java | 8 ++-- .../proofmanagement/check/PathNode.java | 6 ++- .../proofmanagement/check/ProofEntry.java | 18 ++++--- .../check/SettingsChecker.java | 2 +- .../dependency/ContractAppCollector.java | 10 ++-- .../check/dependency/DependencyGraph.java | 5 +- .../dependency/DependencyGraphBuilder.java | 3 +- .../dependency/NodeIntermediateWalker.java | 2 +- .../check/dependency/package-info.java | 2 +- .../proofmanagement/check/package-info.java | 2 +- .../proofmanagement/io/HTMLReport.java | 15 ++++-- .../io/ProofBundleHandler.java | 3 +- .../proofmanagement/io/package-info.java | 2 +- .../merge/ProofBundleMerger.java | 2 + .../proofmanagement/merge/package-info.java | 2 +- .../proofmanagement/package-info.java | 2 +- 26 files changed, 106 insertions(+), 79 deletions(-) diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeyAction.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeyAction.java index f71bde0011f..af5c07b4511 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeyAction.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeyAction.java @@ -8,6 +8,7 @@ import javax.swing.KeyStroke; import de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeManager; + import org.checkerframework.checker.initialization.qual.UnderInitialization; import static de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeManager.SHORTCUT_KEY_MASK; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLine.java b/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLine.java index 1eff1162ef4..9e28bc6272e 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLine.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLine.java @@ -9,6 +9,7 @@ import java.util.*; import de.uka.ilkd.key.core.Main; + import org.jspecify.annotations.Nullable; /** diff --git a/keyext.proofmanagement/build.gradle b/keyext.proofmanagement/build.gradle index d3221a17438..4e5713a81a3 100644 --- a/keyext.proofmanagement/build.gradle +++ b/keyext.proofmanagement/build.gradle @@ -19,7 +19,7 @@ application { } -tasks.register('testIntegrationReport', JavaExec) { +def testIntegrationReport = tasks.register('testIntegrationReport', JavaExec) { group = "verification" mainClass.set(application.mainClass) classpath = sourceSets.main.runtimeClasspath @@ -28,7 +28,7 @@ tasks.register('testIntegrationReport', JavaExec) { 'proofBundle/simpleBundleGeneration') } -tasks.register('testIntegrationReport2', JavaExec) { +def testIntegrationReport2 = tasks.register('testIntegrationReport2', JavaExec) { group = "verification" mainClass.set(application.mainClass) classpath = sourceSets.main.runtimeClasspath @@ -36,7 +36,7 @@ tasks.register('testIntegrationReport2', JavaExec) { args('check', '--missing', '--settings', '--report', 'proofManagementReport.html', '--replay', '--dependency', 'src/test/pmexample2') } - +check.dependsOn(testIntegrationReport, testIntegrationReport2) run { // for debugging, something like this can be used: diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/CheckConfigDialog.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/CheckConfigDialog.java index a628ac7acfd..4e4916edbe7 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/CheckConfigDialog.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/CheckConfigDialog.java @@ -107,7 +107,7 @@ public void mouseClicked(MouseEvent e) { containerPoint.x, containerPoint.y); if (component == runButton) { - if(checkWorker!=null) { + if (checkWorker != null) { checkWorker.cancel(true); } } else { @@ -208,17 +208,7 @@ public CheckConfigDialog(@Nullable Frame parent, String title, boolean modal) { bundleBox.add(bundleFileField); bundleBox.add(Box.createHorizontalStrut(5)); runButton.setEnabled(false); - JButton chooseBundleButton = new JButton("Choose file..."); - chooseBundleButton.addActionListener(e -> { - KeYFileChooser fc = KeYFileChooser.getFileChooser("Choose file"); - fc.setFileFilter(KeYFileChooser.PROOF_BUNDLE_FILTER); - if (fc.showOpenDialog(CheckConfigDialog.this) == JFileChooser.APPROVE_OPTION) { - bundleFileField.setText(fc.getSelectedFile().toString()); - runButton.setEnabled(true); - } - }); - chooseBundleButton.setPreferredSize(buttonDim); - chooseBundleButton.setMinimumSize(buttonDim); + JButton chooseBundleButton = getChooseBundleButton(buttonDim); bundleBox.add(chooseBundleButton); centerBox.add(bundleBox); @@ -295,4 +285,19 @@ public CheckConfigDialog(@Nullable Frame parent, String title, boolean modal) { pack(); setLocationRelativeTo(parent); } + + private JButton getChooseBundleButton(Dimension buttonDim) { + JButton chooseBundleButton = new JButton("Choose file..."); + chooseBundleButton.addActionListener(e -> { + KeYFileChooser fc = KeYFileChooser.getFileChooser("Choose file"); + fc.setFileFilter(KeYFileChooser.PROOF_BUNDLE_FILTER); + if (fc.showOpenDialog(CheckConfigDialog.this) == JFileChooser.APPROVE_OPTION) { + bundleFileField.setText(fc.getSelectedFile().toString()); + runButton.setEnabled(true); + } + }); + chooseBundleButton.setPreferredSize(buttonDim); + chooseBundleButton.setMinimumSize(buttonDim); + return chooseBundleButton; + } } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java index e58b1a11657..007e70efa6f 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java @@ -14,13 +14,14 @@ import de.uka.ilkd.key.util.CommandLine; import de.uka.ilkd.key.util.CommandLineException; -import org.jspecify.annotations.Nullable; import org.key_project.proofmanagement.check.*; import org.key_project.proofmanagement.io.HTMLReport; import org.key_project.proofmanagement.io.LogLevel; import org.key_project.proofmanagement.io.ProofBundleHandler; import org.key_project.proofmanagement.merge.ProofBundleMerger; +import org.jspecify.annotations.Nullable; + /** * This is the starting class for ProofManagement. *
    diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/ProofManagementExt.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/ProofManagementExt.java index 6b856b8bac8..d449f44c343 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/ProofManagementExt.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/ProofManagementExt.java @@ -12,7 +12,6 @@ import de.uka.ilkd.key.gui.extension.api.KeYGuiExtension; import de.uka.ilkd.key.gui.help.HelpInfo; -import org.jspecify.annotations.NonNull; /** * @author Wolfram Pfeifer @@ -29,7 +28,7 @@ public class ProofManagementExt implements private static final String MENU_PM = "Proof Management"; @Override - public @NonNull List getMainMenuActions(@NonNull MainWindow mainWindow) { + public List getMainMenuActions(MainWindow mainWindow) { return List.of(new CheckAction()); } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java index 73c13252cf0..f25d1e94ea2 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java @@ -6,14 +6,7 @@ import java.nio.file.Path; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; +import java.util.*; import de.uka.ilkd.key.settings.ChoiceSettings; import de.uka.ilkd.key.speclang.Contract; @@ -24,6 +17,8 @@ import org.key_project.proofmanagement.io.Logger; import org.key_project.proofmanagement.io.ProofBundleHandler; +import org.jspecify.annotations.Nullable; + /** * This container serves for accumulating data given to checkers and results returned by them. * @@ -50,11 +45,11 @@ public String getCheckDate() { private final List messages = new ArrayList<>(); // TODO: side effects: may be changed by checkers (e.g. remove paths of taclet proofs) - private List proofPaths = new ArrayList<>(); + private @Nullable List proofPaths = null; /// /////////////////////////////// results from dependency checker - private DependencyGraph dependencyGraph; + private @Nullable DependencyGraph dependencyGraph; ////////////////////////////////// results from missing proofs checker @@ -163,16 +158,16 @@ public Map, Integer> getShortChoices2Id() { private SettingsState settingsState = SettingsState.UNKNOWN; private GlobalState globalState = GlobalState.UNKNOWN; - private ProofBundleHandler pbh; - private PathNode fileTree; + private @Nullable ProofBundleHandler pbh; + private @Nullable PathNode fileTree; private final List proofEntries = new ArrayList<>(); - private SLEnvInput slenv; + private @Nullable SLEnvInput slenv; - public SLEnvInput getSlenv() { + public @Nullable SLEnvInput getSlenv() { return slenv; } - public void setSlenv(SLEnvInput slenv) { + public void setSlenv(@Nullable SLEnvInput slenv) { this.slenv = slenv; } @@ -191,9 +186,9 @@ public enum SettingsState { } public enum ReplayState { - ERROR("\u2718"), // cross/xmark + ERROR("✘"), // cross/xmark UNKNOWN("?"), - SUCCESS("\u2714"); // checkmark + SUCCESS("✔"); // checkmark private final String shortStr; @@ -208,9 +203,9 @@ public String toString() { } public enum LoadingState { - ERROR("\u2718"), // cross/xmark + ERROR("✘"), // cross/xmark UNKNOWN("?"), - SUCCESS("\u2714"); // checkmark + SUCCESS("✔"); // checkmark private final String shortStr; @@ -228,7 +223,7 @@ public enum DependencyState { UNKNOWN("?"), ILLEGAL_CYCLE("cycle"), UNPROVEN_DEP("open dep."), - OK("\u2714"); // checkmark + OK("✔"); // checkmark private final String shortStr; @@ -259,9 +254,9 @@ public String toString() { } } - public ProofEntry getProofEntryByContract(Contract contract) { + public @Nullable ProofEntry getProofEntryByContract(Contract contract) { for (ProofEntry p : proofEntries) { - if (p.contract.equals(contract)) { + if (Objects.equals(p.contract, contract)) { return p; } } @@ -304,7 +299,7 @@ public List getMessages() { return messages; } - public PathNode getFileTree() { + public @Nullable PathNode getFileTree() { return fileTree; } @@ -316,7 +311,7 @@ public DependencyGraph getDependencyGraph() { return dependencyGraph; } - public ProofBundleHandler getPbh() { + public @Nullable ProofBundleHandler getPbh() { return pbh; } @@ -465,8 +460,8 @@ public void setPbh(ProofBundleHandler pbh) { this.pbh = pbh; } - public List getProofPaths() throws ProofManagementException { - if (proofPaths == null) { + public @Nullable List getProofPaths() throws ProofManagementException { + if (proofPaths == null && pbh != null) { proofPaths = pbh.getProofFiles(); } return proofPaths; diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java index 1b06faea0c8..4ea87af8133 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java @@ -11,6 +11,8 @@ import org.key_project.proofmanagement.io.LogLevel; import org.key_project.proofmanagement.io.ProofBundleHandler; +import org.jspecify.annotations.Nullable; + import static org.key_project.proofmanagement.check.dependency.DependencyGraph.EdgeType.TERMINATION_SENSITIVE; /** @@ -55,7 +57,7 @@ public class DependencyChecker implements Checker { * data container used to store checker result and share intermediate data * (for example proof AST, dependency graph, ...) */ - private CheckerData data; + private @Nullable CheckerData data; @Override public void check(ProofBundleHandler pbh, CheckerData checkerData) diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java index bc794312b19..334d3bf50c3 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java @@ -318,7 +318,7 @@ public static void ensureProofsReplayed(CheckerData data) throws ProofManagement } private static ReplayResult replayProof(ProofEntry line, EnvInput envInput, - Logger logger) throws ProofInputException { + Logger logger) throws ProofInputException { Proof proof = line.proof; logger.print(LogLevel.INFO, "Starting replay of proof " + proof.name()); diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java index 2e74828cd50..93175ae3e49 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java @@ -73,7 +73,7 @@ private static void removeContractsWithProof(Set contracts, CheckerDat // compare: Is there a proof for every contract? for (ProofEntry entry : data.getProofEntries()) { - Proof p = entry.proof; + Proof p = Objects.requireNonNull(entry.proof); SpecificationRepository sr = p.getServices().getSpecificationRepository(); ContractPO cpo = sr.getPOForProof(p); Contract foundContract = cpo.getContract(); @@ -104,7 +104,8 @@ private static void reportContractsWithoutProof(Set contracts, Checker if (type instanceof TypeDeclaration td) { PositionInfo positionInfo = td.getPositionInfo(); URI uri = positionInfo.getURI().orElseThrow().normalize(); - URI srcURI = data.getPbh().getPath("src").toAbsolutePath().normalize().toUri(); + URI srcURI = Objects.requireNonNull(data.getPbh()) + .getPath("src").toAbsolutePath().normalize().toUri(); // ignore contracts from files not in src path (e.g. from bootclasspath) diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Node.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Node.java index 53b2525d6c9..188df040a97 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Node.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Node.java @@ -6,6 +6,8 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.jspecify.annotations.Nullable; + /** * Represents a vertex/node of a tree. * @@ -14,7 +16,7 @@ */ public class Node> implements Comparable> { /** the parent node */ - private final Node parent; + private final @Nullable Node parent; /** the children nodes */ private final SortedSet> children = new TreeSet<>(); @@ -28,7 +30,7 @@ public class Node> implements Comparable> { * @param parent the parent node * @param element the content to store inside this node */ - public Node(Node parent, T element) { + public Node(@Nullable Node parent, T element) { this.parent = parent; this.content = element; } @@ -37,7 +39,7 @@ public T getContent() { return content; } - public Node getParent() { + public @Nullable Node getParent() { return parent; } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/PathNode.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/PathNode.java index 847590fdba0..b93ea7d53a5 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/PathNode.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/PathNode.java @@ -6,6 +6,8 @@ import java.nio.file.Files; import java.nio.file.Path; +import org.jspecify.annotations.Nullable; + /** * Represents a node in a file tree where nodes contain Path objects. * @@ -19,12 +21,12 @@ public class PathNode extends Node { * @param parent the parent of the new node * @param element the Path to store at the new PathNode */ - public PathNode(PathNode parent, Path element) { + public PathNode(@Nullable PathNode parent, Path element) { super(parent, element); } @Override - public PathNode getParent() { + public @Nullable PathNode getParent() { return (PathNode) super.getParent(); } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java index b5cc95c806d..6cd9e1971d9 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java @@ -1,13 +1,17 @@ +/* This file is part of KeY - https://key-project.org + * KeY is licensed under the GNU General Public License Version 2 + * SPDX-License-Identifier: GPL-2.0-only */ package org.key_project.proofmanagement.check; +import java.net.URL; +import java.nio.file.Path; + import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.init.KeYUserProblemFile; import de.uka.ilkd.key.proof.init.ProblemInitializer; import de.uka.ilkd.key.speclang.Contract; -import org.jspecify.annotations.Nullable; -import java.net.URL; -import java.nio.file.Path; +import org.jspecify.annotations.Nullable; import static de.uka.ilkd.key.proof.io.AbstractProblemLoader.ReplayResult; import static de.uka.ilkd.key.proof.io.IntermediatePresentationProofFileParser.Result; @@ -37,7 +41,9 @@ public boolean replaySuccess() { public @Nullable Result parseResult; public @Nullable ReplayResult replayResult; - /*public Integer settingsId() { - return choices2Id.get(proof.getSettings().getChoiceSettings().getDefaultChoices()); - }*/ + /* + * public Integer settingsId() { + * return choices2Id.get(proof.getSettings().getChoiceSettings().getDefaultChoices()); + * } + */ } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/SettingsChecker.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/SettingsChecker.java index ee09c59a8fb..f0c465e9a80 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/SettingsChecker.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/SettingsChecker.java @@ -101,7 +101,7 @@ private static boolean choicesConsistent(List choiceSettings, boolean consistent = true; // store reference settings in data with id 0 - ChoiceSettings reference = choiceSettings.get(0); + ChoiceSettings reference = choiceSettings.getFirst(); Map refChoices = reference.getDefaultChoices(); data.addReferenceChoices(refChoices); data.print(LogLevel.DEBUG, "Reference settings (id 0) are: " + refChoices); diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/ContractAppCollector.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/ContractAppCollector.java index 925c988ea14..09b1d5d094a 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/ContractAppCollector.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/ContractAppCollector.java @@ -54,13 +54,13 @@ public class ContractAppCollector extends NodeIntermediateWalker { * the proof we search for contract applications (needed to get the SpecificationRepository, * JavaInfo, ...) */ - private Proof proof; + private final Proof proof; /** the logger to print out messages */ - private Logger logger; + private final Logger logger; /** the contracts (by name) as found by this collector as well as the termination type */ - private Map result = new HashMap<>(); + private final Map result = new HashMap<>(); /** * Creates a new collector for the given proof, starting at given root node. @@ -154,7 +154,7 @@ private void extractContractFromContractTaclet(TacletAppIntermediate tacletApp) * only one model method with same name is allowed (no overloading) */ assert axiomList.size() == 1; - ClassAxiom axiom = axiomList.get(0); + ClassAxiom axiom = axiomList.getFirst(); // found axiom always is a contract axiom, target always a program (model) method! assert axiom instanceof ContractAxiom; @@ -171,7 +171,7 @@ private void extractContractFromContractTaclet(TacletAppIntermediate tacletApp) // TODO: this is not the case if multiple contracts are combined with also keyword, // however, in this case the contract axioms are completely broken anyway assert contractList.size() == 1; - Contract contract = contractList.get(0); + Contract contract = contractList.getFirst(); // model method contract application is always termination sensitive! result.putIfAbsent(contract.getName(), TERMINATION_SENSITIVE); diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java index 0563fb1b6bd..72f86fccfdf 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java @@ -6,9 +6,10 @@ import java.util.*; import java.util.stream.Collectors; -import org.jspecify.annotations.Nullable; import org.key_project.proofmanagement.io.Logger; +import org.jspecify.annotations.Nullable; + /** * Represents a graph of dependencies between contracts/proofs, i.e. which proof depends on * which contracts to be proven. @@ -17,7 +18,7 @@ */ public class DependencyGraph { /** - * indicates the type of a contract application (if termination has to be considered or not) + * indicates the type of contract application (if termination has to be considered or not) */ public enum EdgeType { /** diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java index d998f30210f..88f95048ae1 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java @@ -52,7 +52,8 @@ public static DependencyGraph buildGraph(List proofEntries, for (ProofEntry line : proofEntries) { // get current node and root of proof Proof proof = Objects.requireNonNull(line.proof); - DependencyNode currentNode = Objects.requireNonNull(graph.getNodeByName(proof.name().toString())); + DependencyNode currentNode = + Objects.requireNonNull(graph.getNodeByName(proof.name().toString())); BranchNodeIntermediate node = Objects.requireNonNull(line.parseResult).parsedResult(); // collect all contracts the current proof refers to diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/NodeIntermediateWalker.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/NodeIntermediateWalker.java index 9afa8bbd5c9..aec945ba2f9 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 @@ -13,7 +13,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 diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/package-info.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/package-info.java index 0632fca5b72..4b9a5becdeb 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/package-info.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/package-info.java @@ -5,4 +5,4 @@ @NullMarked package org.key_project.proofmanagement.check.dependency; -import org.jspecify.annotations.NullMarked; \ No newline at end of file +import org.jspecify.annotations.NullMarked; diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/package-info.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/package-info.java index 7beb7d61f75..92550b229a3 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/package-info.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/package-info.java @@ -5,4 +5,4 @@ @NullMarked package org.key_project.proofmanagement.check; -import org.jspecify.annotations.NullMarked; \ No newline at end of file +import org.jspecify.annotations.NullMarked; diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java index 58156ac1b87..c061616b132 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java @@ -4,6 +4,7 @@ package org.key_project.proofmanagement.io; import java.io.IOException; +import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.HashMap; @@ -48,10 +49,8 @@ public static void print(CheckerData data, Path target) throws IOException { // Prepare data model Map st = new HashMap<>(); - st.put("style", - IOUtil.readFrom(HTMLReport.class.getResourceAsStream("/report/html/style.css"))); - st.put("scripts", - IOUtil.readFrom(HTMLReport.class.getResourceAsStream("/report/html/scripts.js"))); + st.put("style", loadFromClasspath("/report/html/style.css")); + st.put("scripts", loadFromClasspath("/report/html/scripts.js")); st.put("title", data.getPbh() != null ? data.getPbh().getBundleName() : ""); @@ -78,4 +77,12 @@ public static void print(CheckerData data, Path target) throws IOException { } } + private static String loadFromClasspath(String name) throws IOException { + InputStream input = HTMLReport.class.getResourceAsStream(name); + if (input == null) { + return ""; + } + return IOUtil.readFrom(input); + } + } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/ProofBundleHandler.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/ProofBundleHandler.java index 3b7ad2d5049..cb70e7e9c60 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/ProofBundleHandler.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/ProofBundleHandler.java @@ -14,10 +14,11 @@ import java.nio.file.attribute.BasicFileAttributes; import java.util.List; -import org.jspecify.annotations.Nullable; import org.key_project.proofmanagement.check.PathNode; import org.key_project.proofmanagement.check.ProofManagementException; +import org.jspecify.annotations.Nullable; + /** * Provides methods to collect paths of files inside a proof bundle. * diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/package-info.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/package-info.java index cc1a89f1b49..9af3e688627 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/package-info.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/package-info.java @@ -5,4 +5,4 @@ @NullMarked package org.key_project.proofmanagement.io; -import org.jspecify.annotations.NullMarked; \ No newline at end of file +import org.jspecify.annotations.NullMarked; diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/ProofBundleMerger.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/ProofBundleMerger.java index caa02417fdb..301676a2335 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/ProofBundleMerger.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/ProofBundleMerger.java @@ -23,6 +23,8 @@ private ProofBundleMerger() { * * @param inputs the paths to the input bundles to merge * @param output the target path (will be zipped) + * @param force may the force be with you + * @param logger a logger instance to which message are reported * @throws ProofManagementException if any of the files can not be accessed */ public static void merge(List inputs, Path output, boolean force, Logger logger) diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/package-info.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/package-info.java index 9692e215df8..5bae37e00d5 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/package-info.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/merge/package-info.java @@ -5,4 +5,4 @@ @NullMarked package org.key_project.proofmanagement.merge; -import org.jspecify.annotations.NullMarked; \ No newline at end of file +import org.jspecify.annotations.NullMarked; diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/package-info.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/package-info.java index 870662a7cc9..8e536cd4033 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/package-info.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/package-info.java @@ -5,4 +5,4 @@ @NullMarked package org.key_project.proofmanagement; -import org.jspecify.annotations.NullMarked; \ No newline at end of file +import org.jspecify.annotations.NullMarked; From f78cb3a444e1f1be20536d7022a3d4901e46a4d5 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Fri, 27 Jun 2025 14:07:33 +0200 Subject: [PATCH 10/22] fix integrationtest2 in proof_management --- .../de/uka/ilkd/key/proof/Statistics.java | 73 ++++++++++++++++++- .../proofmanagement/check/ProofEntry.java | 67 +++++++++++++++-- .../check/dependency/DependencyGraph.java | 4 + .../src/main/resources/report/html/report.ftl | 31 ++++---- 4 files changed, 152 insertions(+), 23 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/Statistics.java b/key.core/src/main/java/de/uka/ilkd/key/proof/Statistics.java index b5cd2031913..63f1eed780d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/Statistics.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/Statistics.java @@ -25,7 +25,6 @@ * nodes, or the number of interactions. * * @author bruns - * */ public class Statistics { public final int nodes; @@ -447,4 +446,76 @@ private int tmpQuantificationRuleApps(final RuleApp ruleApp) { return res; } } + + public long getAutoModeTimeInMillis() { + return autoModeTimeInMillis; + } + + public int getBlockLoopContractApps() { + return blockLoopContractApps; + } + + public int getBranches() { + return branches; + } + + public int getCachedBranches() { + return cachedBranches; + } + + public int getDependencyContractApps() { + return dependencyContractApps; + } + + public int getInteractiveSteps() { + return interactiveSteps; + } + + public int getLoopInvApps() { + return loopInvApps; + } + + public int getMergeRuleApps() { + return mergeRuleApps; + } + + public int getNodes() { + return nodes; + } + + public int getOperationContractApps() { + return operationContractApps; + } + + public int getOssApps() { + return ossApps; + } + + public int getQuantifierInstantiations() { + return quantifierInstantiations; + } + + public int getSmtSolverApps() { + return smtSolverApps; + } + + public List> getSummaryList() { + return summaryList; + } + + public int getSymbExApps() { + return symbExApps; + } + + public long getTimeInMillis() { + return timeInMillis; + } + + public float getTimePerStepInMillis() { + return timePerStepInMillis; + } + + public int getTotalRuleApps() { + return totalRuleApps; + } } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java index 6cd9e1971d9..c4fac49aed7 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java @@ -41,9 +41,66 @@ public boolean replaySuccess() { public @Nullable Result parseResult; public @Nullable ReplayResult replayResult; - /* - * public Integer settingsId() { - * return choices2Id.get(proof.getSettings().getChoiceSettings().getDefaultChoices()); - * } - */ + + public int settingsId(CheckerData data) { + int val = -1; + if (proof != null) { + val = data.getChoices2Id() + .getOrDefault(proof.getSettings().getChoiceSettings().getDefaultChoices(), -1); + } + return val; + } + + + public @Nullable Contract getContract() { + return contract; + } + + public CheckerData.DependencyState getDependencyState() { + return dependencyState; + } + + public @Nullable KeYUserProblemFile getEnvInput() { + return envInput; + } + + public CheckerData.LoadingState getLoadingState() { + return loadingState; + } + + public @Nullable Result getParseResult() { + return parseResult; + } + + public @Nullable ProblemInitializer getProblemInitializer() { + return problemInitializer; + } + + public @Nullable Proof getProof() { + return proof; + } + + public @Nullable Path getProofFile() { + return proofFile; + } + + public CheckerData.ProofState getProofState() { + return proofState; + } + + public @Nullable ReplayResult getReplayResult() { + return replayResult; + } + + public CheckerData.ReplayState getReplayState() { + return replayState; + } + + public @Nullable String getShortSrc() { + return shortSrc; + } + + public @Nullable URL getSourceFile() { + return sourceFile; + } } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java index 72f86fccfdf..b4e3ff53023 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraph.java @@ -137,6 +137,10 @@ public Map getNode2SCC() { return node2SCC; } + public SCC getSCCofNode(DependencyNode node) { + return node2SCC.get(node); + } + public Set getNodes() { return nodes; } diff --git a/keyext.proofmanagement/src/main/resources/report/html/report.ftl b/keyext.proofmanagement/src/main/resources/report/html/report.ftl index 309a8057c98..e5493dcab50 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/report.ftl +++ b/keyext.proofmanagement/src/main/resources/report/html/report.ftl @@ -156,23 +156,23 @@ class: ${entry.contract.KJT.javaType.name}
    - target: ${entry.contract.target.name?xml}
    - type: ${entry.contract.displayName?xml} + target: ${entry.contract.target.name()}
    + type: ${entry.contract.getDisplayName()}
    ${entry.shortSrc}
    -
    ${entry.proofFile.toFile.name}
    +
    ${entry.proofFile.toFile().name}
    - #${entry.settingsId?string("00")} + #${entry.settingsId(checkerData)?string("00")} ${entry.loadingState} ${entry.replayState} ${entry.proofState} ${entry.dependencyState} - <#if cd.checks.replay> - <#if entry.replaySuccess> + <#if data.checks.replay??> + <#if entry.replaySuccess()> Nodes: ${entry.proof.statistics.nodes}
    Interactive Steps: ${entry.proof.statistics.interactiveSteps}
    @@ -225,10 +225,10 @@ <#list checkerData.shortChoices2Id as choices , value> ${value} - <#list checkerData.choiceNames as name> + <#list checkerData.choiceNames as name> ${choices[name]???string('yes','no')} - - @@ -252,17 +252,14 @@ <#list graph.nodes as node> + <#assign scc=graph.getSCCofNode(node) /> - + ${node.contract.name?xml} - - #${graph.node2SCC[node].id?string("00")} - <#if graph.node2SCC[node].legal> - (legal) - <#else> - (illegal) - + + #${scc.id?string("00")} + <#if scc.legal> (legal) <#else> (illegal) ⟶ From 02e3c54517b9431f06b8afcdf8b92bb045f802b7 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Sun, 29 Jun 2025 23:33:22 +0200 Subject: [PATCH 11/22] disable makeRelativeWindowsPath test. locally not reproducible --- .../src/test/java/de/uka/ilkd/key/util/TestMiscTools.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/key.core/src/test/java/de/uka/ilkd/key/util/TestMiscTools.java b/key.core/src/test/java/de/uka/ilkd/key/util/TestMiscTools.java index 23b76780998..a856c2ee279 100644 --- a/key.core/src/test/java/de/uka/ilkd/key/util/TestMiscTools.java +++ b/key.core/src/test/java/de/uka/ilkd/key/util/TestMiscTools.java @@ -21,9 +21,9 @@ import de.uka.ilkd.key.java.recoderext.URLDataLocation; +import org.junit.jupiter.api.Disabled; import org.key_project.util.java.IOUtil; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import recoder.io.ArchiveDataLocation; import recoder.io.DataFileLocation; @@ -60,7 +60,7 @@ public void testMakeFilenameRelativeUnix() { @Test @Disabled("weigl: Disabled b/c failing on Windows Server (Github Action). " + - "Failing is not reproducible on Windows.") + "Failing is not reproducible on Windows 10.") public void testMakeFilenameRelativeWindows() { // run only on Windows systems if (File.separatorChar != '\\') { From 2dda0cd7fc1a83b420d5f7b34dcafdac9eb8dc95 Mon Sep 17 00:00:00 2001 From: Wolfram Pfeifer Date: Fri, 27 Jun 2025 16:19:05 +0200 Subject: [PATCH 12/22] fixed report creation --- .../proofmanagement/check/CheckerData.java | 36 ++++++ .../check/DependencyChecker.java | 6 +- .../proofmanagement/check/KeYFacade.java | 20 ++-- .../check/MissingProofsChecker.java | 2 +- .../proofmanagement/check/ProofEntry.java | 106 ------------------ .../dependency/DependencyGraphBuilder.java | 8 +- .../proofmanagement/io/HTMLReport.java | 6 + .../src/main/resources/report/html/report.ftl | 23 ++-- 8 files changed, 74 insertions(+), 133 deletions(-) delete mode 100644 keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java index f25d1e94ea2..4d07da11f55 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java @@ -3,11 +3,17 @@ * SPDX-License-Identifier: GPL-2.0-only */ package org.key_project.proofmanagement.check; +import java.net.URL; import java.nio.file.Path; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; +import de.uka.ilkd.key.proof.Proof; +import de.uka.ilkd.key.proof.init.KeYUserProblemFile; +import de.uka.ilkd.key.proof.init.ProblemInitializer; +import de.uka.ilkd.key.proof.io.AbstractProblemLoader; +import de.uka.ilkd.key.proof.io.IntermediatePresentationProofFileParser; import de.uka.ilkd.key.settings.ChoiceSettings; import de.uka.ilkd.key.speclang.Contract; import de.uka.ilkd.key.speclang.SLEnvInput; @@ -474,4 +480,34 @@ public void setFileTree(PathNode fileTree) { public void setDependencyGraph(DependencyGraph dependencyGraph) { this.dependencyGraph = dependencyGraph; } + + /** + * @author Alexander Weigl + * @version 1 (6/18/25) + */ + public class ProofEntry { + public LoadingState loadingState = LoadingState.UNKNOWN; + public ReplayState replayState = ReplayState.UNKNOWN; + public DependencyState dependencyState = DependencyState.UNKNOWN; + public ProofState proofState = ProofState.UNKNOWN; + + public boolean replaySuccess() { + return replayState == ReplayState.SUCCESS; + } + + public @Nullable Path proofFile; + public @Nullable KeYUserProblemFile envInput; + public @Nullable ProblemInitializer problemInitializer; + public @Nullable Proof proof; + + public @Nullable Contract contract; + public @Nullable URL sourceFile; + public @Nullable String shortSrc; + public IntermediatePresentationProofFileParser.Result parseResult; + public AbstractProblemLoader.ReplayResult replayResult; + + public Integer settingsId() { + return choices2Id.get(proof.getSettings().getChoiceSettings().getDefaultChoices()); + } + } } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java index 4ea87af8133..b1a26b9b6eb 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/DependencyChecker.java @@ -122,7 +122,7 @@ private boolean hasUnprovenDependencies(DependencyGraph graph, CheckerData data) changed = false; for (DependencyNode n : graph.getNodes()) { if (!closed.contains(n)) { - ProofEntry entry = data.getProofEntryByContract(n.getContract()); + CheckerData.ProofEntry entry = data.getProofEntryByContract(n.getContract()); if (entry != null) { if (entry.proofState == CheckerData.ProofState.CLOSED && closed.containsAll(n.getDependencies().keySet())) { @@ -148,7 +148,7 @@ private boolean hasUnprovenDependencies(DependencyGraph graph, CheckerData data) // update data: all other (successfully replayed) closed proofs // have dependencies left unproven - for (ProofEntry entry : data.getProofEntries()) { + for (CheckerData.ProofEntry entry : data.getProofEntries()) { if (entry.dependencyState == CheckerData.DependencyState.UNKNOWN && entry.replayState == CheckerData.ReplayState.SUCCESS) { entry.dependencyState = CheckerData.DependencyState.UNPROVEN_DEP; @@ -179,7 +179,7 @@ private boolean hasIllegalCycles(DependencyGraph graph) { // update all nodes from SCC to illegal cycle state for (DependencyNode n : scc.getNodes()) { - ProofEntry entry = data.getProofEntryByContract(n.getContract()); + CheckerData.ProofEntry entry = data.getProofEntryByContract(n.getContract()); // TODO: entry == null can not happen // (if node has dependencies it has been parsed, // thus also a proof entry exists) diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java index 334d3bf50c3..cee0bc5ff98 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java @@ -39,6 +39,8 @@ import org.key_project.proofmanagement.io.Logger; import org.key_project.proofmanagement.io.ProofBundleHandler; +import org.key_project.proofmanagement.check.CheckerData.ProofEntry; + /** * This class provides static methods to access the prover (KeY). * @@ -81,7 +83,7 @@ public static void ensureProofsLoaded(CheckerData data) throws ProofManagementEx // for (Path proofPath : proofPaths) { while (iterator.hasNext()) { Path proofPath = iterator.next(); - ProofEntry line = ensureProofEntryExists(proofPath, data); + CheckerData.ProofEntry line = ensureProofEntryExists(proofPath, data); // only load every line once if (line.loadingState == CheckerData.LoadingState.UNKNOWN) { if (!loadProofTree(proofPath, line, data)) { @@ -103,14 +105,14 @@ public static void ensureProofsLoaded(CheckerData data) throws ProofManagementEx private static ProofEntry ensureProofEntryExists(Path proofPath, CheckerData data) { ProofEntry line = findProofLine(proofPath, data); if (line == null) { - line = new ProofEntry(); + line = data.new ProofEntry(); data.getProofEntries().add(line); } return line; } - private static ProofEntry findProofLine(Path proofPath, CheckerData data) { - for (ProofEntry line : data.getProofEntries()) { + private static CheckerData.ProofEntry findProofLine(Path proofPath, CheckerData data) { + for (CheckerData.ProofEntry line : data.getProofEntries()) { if (line.proofFile != null && line.proofFile.equals(proofPath)) { return line; } @@ -118,7 +120,7 @@ private static ProofEntry findProofLine(Path proofPath, CheckerData data) { return null; } - private static boolean loadProofTree(Path path, ProofEntry line, Logger logger) + private static boolean loadProofTree(Path path, CheckerData.ProofEntry line, Logger logger) throws Exception { logger.print(LogLevel.DEBUG, "Loading proof from " + path); @@ -150,7 +152,7 @@ private static boolean loadProofTree(Path path, ProofEntry line, Logger logger) return true; } - private static Proof[] loadProofFile(Path path, ProofEntry line) + private static Proof[] loadProofFile(Path path, CheckerData.ProofEntry line) throws Exception { Profile profile = AbstractProfile.getDefaultProfile(); @@ -293,7 +295,7 @@ public static void ensureProofsReplayed(CheckerData data) throws ProofManagement List proofPaths = data.getProofPaths(); ensureProofsLoaded(data); - for (ProofEntry line : data.getProofEntries()) { + for (CheckerData.ProofEntry line : data.getProofEntries()) { // skip replay for proofs if not requested if (proofPaths.contains(line.proofFile)) { // skip proofs that have already been replayed @@ -317,8 +319,8 @@ public static void ensureProofsReplayed(CheckerData data) throws ProofManagement } } - private static ReplayResult replayProof(ProofEntry line, EnvInput envInput, - Logger logger) throws ProofInputException { + private static ReplayResult replayProof(CheckerData.ProofEntry line, EnvInput envInput, + Logger logger) throws ProofInputException { Proof proof = line.proof; logger.print(LogLevel.INFO, "Starting replay of proof " + proof.name()); diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java index 93175ae3e49..2fb87bc1f79 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/MissingProofsChecker.java @@ -72,7 +72,7 @@ private static void removeContractsWithProof(Set contracts, CheckerDat throws ProofManagementException { // compare: Is there a proof for every contract? - for (ProofEntry entry : data.getProofEntries()) { + for (CheckerData.ProofEntry entry : data.getProofEntries()) { Proof p = Objects.requireNonNull(entry.proof); SpecificationRepository sr = p.getServices().getSpecificationRepository(); ContractPO cpo = sr.getPOForProof(p); diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java deleted file mode 100644 index c4fac49aed7..00000000000 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/ProofEntry.java +++ /dev/null @@ -1,106 +0,0 @@ -/* This file is part of KeY - https://key-project.org - * KeY is licensed under the GNU General Public License Version 2 - * SPDX-License-Identifier: GPL-2.0-only */ -package org.key_project.proofmanagement.check; - -import java.net.URL; -import java.nio.file.Path; - -import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.init.KeYUserProblemFile; -import de.uka.ilkd.key.proof.init.ProblemInitializer; -import de.uka.ilkd.key.speclang.Contract; - -import org.jspecify.annotations.Nullable; - -import static de.uka.ilkd.key.proof.io.AbstractProblemLoader.ReplayResult; -import static de.uka.ilkd.key.proof.io.IntermediatePresentationProofFileParser.Result; - -/** - * @author Alexander Weigl - * @version 1 (6/18/25) - */ -public class ProofEntry { - public CheckerData.LoadingState loadingState = CheckerData.LoadingState.UNKNOWN; - public CheckerData.ReplayState replayState = CheckerData.ReplayState.UNKNOWN; - public CheckerData.DependencyState dependencyState = CheckerData.DependencyState.UNKNOWN; - public CheckerData.ProofState proofState = CheckerData.ProofState.UNKNOWN; - - public boolean replaySuccess() { - return replayState == CheckerData.ReplayState.SUCCESS; - } - - public @Nullable Path proofFile; - public @Nullable KeYUserProblemFile envInput; - public @Nullable ProblemInitializer problemInitializer; - public @Nullable Proof proof; - - public @Nullable Contract contract; - public @Nullable URL sourceFile; - public @Nullable String shortSrc; - public @Nullable Result parseResult; - public @Nullable ReplayResult replayResult; - - - public int settingsId(CheckerData data) { - int val = -1; - if (proof != null) { - val = data.getChoices2Id() - .getOrDefault(proof.getSettings().getChoiceSettings().getDefaultChoices(), -1); - } - return val; - } - - - public @Nullable Contract getContract() { - return contract; - } - - public CheckerData.DependencyState getDependencyState() { - return dependencyState; - } - - public @Nullable KeYUserProblemFile getEnvInput() { - return envInput; - } - - public CheckerData.LoadingState getLoadingState() { - return loadingState; - } - - public @Nullable Result getParseResult() { - return parseResult; - } - - public @Nullable ProblemInitializer getProblemInitializer() { - return problemInitializer; - } - - public @Nullable Proof getProof() { - return proof; - } - - public @Nullable Path getProofFile() { - return proofFile; - } - - public CheckerData.ProofState getProofState() { - return proofState; - } - - public @Nullable ReplayResult getReplayResult() { - return replayResult; - } - - public CheckerData.ReplayState getReplayState() { - return replayState; - } - - public @Nullable String getShortSrc() { - return shortSrc; - } - - public @Nullable URL getSourceFile() { - return sourceFile; - } -} diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java index 88f95048ae1..618825cfdac 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/dependency/DependencyGraphBuilder.java @@ -13,7 +13,7 @@ import de.uka.ilkd.key.proof.mgt.SpecificationRepository; import de.uka.ilkd.key.speclang.Contract; -import org.key_project.proofmanagement.check.ProofEntry; +import org.key_project.proofmanagement.check.CheckerData; import org.key_project.proofmanagement.io.Logger; /** @@ -29,13 +29,13 @@ public abstract class DependencyGraphBuilder { * @param logger the logger to print out error messages generated during graph creation * @return the newly created DependencyGraph */ - public static DependencyGraph buildGraph(List proofEntries, + public static DependencyGraph buildGraph(List proofEntries, Logger logger) { DependencyGraph graph = new DependencyGraph(); // first create the nodes of the graph (one for each loaded proof) - for (ProofEntry line : proofEntries) { + for (CheckerData.ProofEntry line : proofEntries) { Proof proof = Objects.requireNonNull(line.proof); String contractName = proof.name().toString(); @@ -49,7 +49,7 @@ public static DependencyGraph buildGraph(List proofEntries, } // add dependencies between nodes - for (ProofEntry line : proofEntries) { + for (CheckerData.ProofEntry line : proofEntries) { // get current node and root of proof Proof proof = Objects.requireNonNull(line.proof); DependencyNode currentNode = diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java index c061616b132..093a0dd5e6b 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java @@ -10,6 +10,7 @@ import java.util.HashMap; import java.util.Map; +import freemarker.template.DefaultObjectWrapper; import org.key_project.proofmanagement.check.CheckerData; import org.key_project.proofmanagement.check.PathNode; import org.key_project.util.java.IOUtil; @@ -43,6 +44,11 @@ public static void print(CheckerData data, Path target) throws IOException { cfg.setClassLoaderForTemplateLoading(HTMLReport.class.getClassLoader(), "/report/html"); cfg.setDefaultEncoding("UTF-8"); + // Use DefaultObjectWrapper to expose fields of objects in the data model + DefaultObjectWrapper wrapper = new DefaultObjectWrapper(Configuration.VERSION_2_3_32); + wrapper.setExposeFields(true); + cfg.setObjectWrapper(wrapper); + // Load template Template template = cfg.getTemplate("report.ftl"); diff --git a/keyext.proofmanagement/src/main/resources/report/html/report.ftl b/keyext.proofmanagement/src/main/resources/report/html/report.ftl index e5493dcab50..4aeed60022a 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/report.ftl +++ b/keyext.proofmanagement/src/main/resources/report/html/report.ftl @@ -4,7 +4,7 @@ <#-- @ftlvariable name="title" type="String" --> <#-- @ftlvariable name="bundleFileName" type="String" --> <#-- @ftlvariable name="treeRoot" type="org.key_project.proofmanagement.check.PathNode" --> -<#-- @ftlvariable name="entries" type="java.util.List" --> +<#-- @ftlvariable name="entries" type="java.util.List" --> <#-- @ftlvariable name="graph" type="org.key_project.proofmanagement.check.dependency.DependencyGraph" --> @@ -93,7 +93,7 @@ width:max-content; padding:10px"> <#list checkerData.messages as msg> - <#escape x as x?xml> + <#escape x as x> ${msg} <#sep>
    @@ -157,7 +157,7 @@ class: ${entry.contract.KJT.javaType.name}
    target: ${entry.contract.target.name()}
    - type: ${entry.contract.getDisplayName()} + type: ${entry.contract.displayName}
    ${entry.shortSrc}
    @@ -171,7 +171,7 @@ ${entry.proofState} ${entry.dependencyState} - <#if data.checks.replay??> + <#if checkerData.checks.replay??> <#if entry.replaySuccess()> Nodes: ${entry.proof.statistics.nodes}
    @@ -251,20 +251,23 @@ - <#list graph.nodes as node> - <#assign scc=graph.getSCCofNode(node) /> + <#list graph.node2SCC as node, scc> - ${node.contract.name?xml} + ${node.contract.name} #${scc.id?string("00")} - <#if scc.legal> (legal) <#else> (illegal) + <#if scc.legal> + (legal) + <#else> + (illegal) + ⟶ <#list node.dependencies?keys as d> - ${d.contract.name?xml}
    + ${d.contract.name}
    @@ -292,4 +295,4 @@ } - \ No newline at end of file + From 2ef3ab3ec55695ed73019b34c63cdf0c7880a689 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Sun, 29 Jun 2025 23:45:11 +0200 Subject: [PATCH 13/22] spotless, add integration tests to :test goal --- keyext.proofmanagement/build.gradle | 2 +- .../org/key_project/proofmanagement/check/CheckerData.java | 2 +- .../org/key_project/proofmanagement/check/KeYFacade.java | 5 ++--- .../java/org/key_project/proofmanagement/io/HTMLReport.java | 2 +- .../src/main/resources/report/html/report.ftl | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/keyext.proofmanagement/build.gradle b/keyext.proofmanagement/build.gradle index 4e5713a81a3..4c06fb5bc66 100644 --- a/keyext.proofmanagement/build.gradle +++ b/keyext.proofmanagement/build.gradle @@ -36,7 +36,7 @@ def testIntegrationReport2 = tasks.register('testIntegrationReport2', JavaExec) args('check', '--missing', '--settings', '--report', 'proofManagementReport.html', '--replay', '--dependency', 'src/test/pmexample2') } -check.dependsOn(testIntegrationReport, testIntegrationReport2) +test.dependsOn(testIntegrationReport, testIntegrationReport2) run { // for debugging, something like this can be used: diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java index 4d07da11f55..545fba1f982 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java @@ -507,7 +507,7 @@ public boolean replaySuccess() { public AbstractProblemLoader.ReplayResult replayResult; public Integer settingsId() { - return choices2Id.get(proof.getSettings().getChoiceSettings().getDefaultChoices()); + return choices2Id.get(proof.getSettings().getChoiceSettings().getDefaultChoices()); } } } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java index cee0bc5ff98..895597c1c47 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java @@ -33,14 +33,13 @@ import de.uka.ilkd.key.strategy.StrategyProperties; import de.uka.ilkd.key.util.ProgressMonitor; +import org.key_project.proofmanagement.check.CheckerData.ProofEntry; import org.key_project.proofmanagement.check.dependency.DependencyGraph; import org.key_project.proofmanagement.check.dependency.DependencyGraphBuilder; import org.key_project.proofmanagement.io.LogLevel; import org.key_project.proofmanagement.io.Logger; import org.key_project.proofmanagement.io.ProofBundleHandler; -import org.key_project.proofmanagement.check.CheckerData.ProofEntry; - /** * This class provides static methods to access the prover (KeY). * @@ -320,7 +319,7 @@ public static void ensureProofsReplayed(CheckerData data) throws ProofManagement } private static ReplayResult replayProof(CheckerData.ProofEntry line, EnvInput envInput, - Logger logger) throws ProofInputException { + Logger logger) throws ProofInputException { Proof proof = line.proof; logger.print(LogLevel.INFO, "Starting replay of proof " + proof.name()); diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java index 093a0dd5e6b..893c2c6e5a1 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/io/HTMLReport.java @@ -10,12 +10,12 @@ import java.util.HashMap; import java.util.Map; -import freemarker.template.DefaultObjectWrapper; import org.key_project.proofmanagement.check.CheckerData; import org.key_project.proofmanagement.check.PathNode; import org.key_project.util.java.IOUtil; import freemarker.template.Configuration; +import freemarker.template.DefaultObjectWrapper; import freemarker.template.Template; import freemarker.template.TemplateException; diff --git a/keyext.proofmanagement/src/main/resources/report/html/report.ftl b/keyext.proofmanagement/src/main/resources/report/html/report.ftl index 4aeed60022a..b81b920eab4 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/report.ftl +++ b/keyext.proofmanagement/src/main/resources/report/html/report.ftl @@ -165,7 +165,7 @@
    ${entry.proofFile.toFile().name}
    - #${entry.settingsId(checkerData)?string("00")} + #${entry.settingsId()?string("00")} ${entry.loadingState} ${entry.replayState} ${entry.proofState} From 17133a7941c21c4d430bcbb244a4a603aeb1b64d Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Wed, 2 Jul 2025 20:48:49 +0200 Subject: [PATCH 14/22] fixes in html, js and css --- .../proofmanagement/check/CheckerData.java | 60 ++++--- .../proofmanagement/check/Logline.java | 15 ++ .../src/main/resources/report/html/report.ftl | 142 ++++++++-------- .../src/main/resources/report/html/scripts.js | 157 ++++++++++-------- .../src/main/resources/report/html/style.css | 78 +++++++-- 5 files changed, 266 insertions(+), 186 deletions(-) create mode 100644 keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Logline.java diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java index 545fba1f982..d6f2a3a6ea3 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java @@ -3,12 +3,6 @@ * SPDX-License-Identifier: GPL-2.0-only */ package org.key_project.proofmanagement.check; -import java.net.URL; -import java.nio.file.Path; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.*; - import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.init.KeYUserProblemFile; import de.uka.ilkd.key.proof.init.ProblemInitializer; @@ -17,13 +11,17 @@ import de.uka.ilkd.key.settings.ChoiceSettings; import de.uka.ilkd.key.speclang.Contract; import de.uka.ilkd.key.speclang.SLEnvInput; - +import org.jspecify.annotations.Nullable; import org.key_project.proofmanagement.check.dependency.DependencyGraph; import org.key_project.proofmanagement.io.LogLevel; import org.key_project.proofmanagement.io.Logger; import org.key_project.proofmanagement.io.ProofBundleHandler; -import org.jspecify.annotations.Nullable; +import java.net.URL; +import java.nio.file.Path; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; /** * This container serves for accumulating data given to checkers and results returned by them. @@ -45,10 +43,12 @@ public String getCheckDate() { private final Map checks = new HashMap<>(); - /** minimum log level: all messages with a smaller LogLevel will be suppressed */ + /** + * minimum log level: all messages with a smaller LogLevel will be suppressed + */ private final LogLevel minLogLevel; - private final List messages = new ArrayList<>(); + private final List messages = new ArrayList<>(); // TODO: side effects: may be changed by checkers (e.g. remove paths of taclet proofs) private @Nullable List proofPaths = null; @@ -57,16 +57,20 @@ public String getCheckDate() { private @Nullable DependencyGraph dependencyGraph; - ////////////////////////////////// results from missing proofs checker + /// /////////////////////////////// results from missing proofs checker public Set getContractsWithoutProof() { return contractsWithoutProof; } - /** user provided contracts for which no proof exists */ + /** + * user provided contracts for which no proof exists + */ private final Set contractsWithoutProof = new HashSet<>(); - /** internal contracts (from classes shipped with KeY) without a proof */ + /** + * internal contracts (from classes shipped with KeY) without a proof + */ private final Set internalContractsWithoutProof = new HashSet<>(); public void addContractWithoutProof(Contract c, boolean internal) { @@ -84,17 +88,23 @@ public void addContractWithoutProof(Contract c, boolean internal) { ////////////////////////////////// results from settings checker - /** all choice names that occur in at least one settings object of a proof */ + /** + * all choice names that occur in at least one settings object of a proof + */ private final SortedSet choiceNames = new TreeSet<>(); public SortedSet getChoiceNames() { return choiceNames; } - /** choices used as reference (mapped to their corresponding id) */ + /** + * choices used as reference (mapped to their corresponding id) + */ private final Map, Integer> referenceChoices = new HashMap<>(); - /** mapping from choices to the reference id */ + /** + * mapping from choices to the reference id + */ private final Map, Integer> choices2Id = new HashMap<>(); /** @@ -154,7 +164,7 @@ public Map, Integer> getShortChoices2Id() { return res; } - ////////////////////////////////// + /// /////////////////////////////// private LoadingState srcLoadingState = LoadingState.UNKNOWN; // we use methods to determine these states on the fly @@ -295,13 +305,14 @@ public void print(LogLevel level, String message) { // for multiline strings, every line should have correct prefix String[] lines = message.split("\\r?\\n"); for (String l : lines) { - messages.add(level + l); - System.out.println(level + l); + var ll = new Logline(level, l); + messages.add(ll); + System.out.println(ll); } } } - public List getMessages() { + public List getMessages() { return messages; } @@ -481,10 +492,6 @@ public void setDependencyGraph(DependencyGraph dependencyGraph) { this.dependencyGraph = dependencyGraph; } - /** - * @author Alexander Weigl - * @version 1 (6/18/25) - */ public class ProofEntry { public LoadingState loadingState = LoadingState.UNKNOWN; public ReplayState replayState = ReplayState.UNKNOWN; @@ -503,11 +510,12 @@ public boolean replaySuccess() { public @Nullable Contract contract; public @Nullable URL sourceFile; public @Nullable String shortSrc; - public IntermediatePresentationProofFileParser.Result parseResult; - public AbstractProblemLoader.ReplayResult replayResult; + public IntermediatePresentationProofFileParser.@Nullable Result parseResult; + public AbstractProblemLoader.@Nullable ReplayResult replayResult; public Integer settingsId() { return choices2Id.get(proof.getSettings().getChoiceSettings().getDefaultChoices()); } } + } diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Logline.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Logline.java new file mode 100644 index 00000000000..5b3e7332679 --- /dev/null +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Logline.java @@ -0,0 +1,15 @@ +package org.key_project.proofmanagement.check; + +import org.key_project.proofmanagement.io.LogLevel; + +/** + * A record representing a line in the output log. + * @param level the {@link LogLevel} of the line + * @param message the content + */ +public record Logline(LogLevel level, String message) { + @Override + public String toString() { + return level + message; + } +} diff --git a/keyext.proofmanagement/src/main/resources/report/html/report.ftl b/keyext.proofmanagement/src/main/resources/report/html/report.ftl index b81b920eab4..1cbcd245c2e 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/report.ftl +++ b/keyext.proofmanagement/src/main/resources/report/html/report.ftl @@ -14,9 +14,6 @@ - @@ -29,78 +26,74 @@
    -
      -
    • Bundle: ${checkerData.pbh.bundleName!"n/a"}
    • -
    • Checks run: - <#list checkerData.checks as key, c> - ${c}<#sep>, - -
    • -
    • Date: ${checkerData.checkDate}
    • -
    • Overall Status: ${checkerData.globalState}
    • -
    • Contracts: - <#assign total=checkerData.bundleProofCount() - proven=checkerData.provenCount() - lemmaLeft=checkerData.lemmaLeftCount() - unproven=checkerData.unprovenCount() - data=checkerData> -
      - <#if data.hasProvenContracts()> -
      proven
      - - <#if data.hasLemmaLeftContracts()> -
      dependencies left -
      - - <#if data.hasUnprovenContracts()> -
      unproven
      - -
      +
      + Bundle: ${checkerData.pbh.bundleName!"n/a"} +
      -
      - <#if data.hasProvenContracts()> -
      ${proven}
      - - <#if data.hasLemmaLeftContracts()> -
      ${lemmaLeft}
      - - <#if data.hasUnprovenContracts()> -
      ${unproven}
      - + +
      + Checks run: + <#list checkerData.checks as key, c> + ${c}<#sep>, + +
      + +
      Date of report: ${checkerData.checkDate}
      + +
      Overall Status: ${checkerData.globalState}
      + +
      +

      Contracts Overview

      + <#assign total=checkerData.bundleProofCount() + proven=checkerData.provenCount() + lemmaLeft=checkerData.lemmaLeftCount() + unproven=checkerData.unprovenCount() + data=checkerData > + +
      +
      + proven + + ${proven} (${proven/total*100}%) +
      +
      + dependencies left + + ${lemmaLeft} (${lemmaLeft/total*100}%) +
      +
      + unproven + + ${unproven} (${unproven/total*100}%)
      +
      +
      -
    • -
    • Standard output: -
      -
      - - - - - - - - -
      +
      +

      Log messages

      +
      +
      + + + + + + + +
      -
      - <#list checkerData.messages as msg> - <#escape x as x> +
      +
      + <#list checkerData.messages as msg> + <#escape x as x> +
      ${msg} - - <#sep>
      - -
      -
    • -
    +
    + + +
    +
    @@ -284,15 +277,10 @@
    + + diff --git a/keyext.proofmanagement/src/main/resources/report/html/scripts.js b/keyext.proofmanagement/src/main/resources/report/html/scripts.js index 33fc33aaed0..5caa886c4e8 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/scripts.js +++ b/keyext.proofmanagement/src/main/resources/report/html/scripts.js @@ -2,60 +2,60 @@ // column: index of column for sortint (starting at index 0) // headerSize: count of static headers at the top to skip function sortTable(id, column, headerSize) { - var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0; - table = document.getElementById(id); - switching = true; - - // Set the sorting direction to ascending: - dir = "asc"; - - // Make a loop that will continue until no switching has been done - while (switching) { - //start by saying: no switching is done: - switching = false; - rows = table.rows; - - // Loop through all table rows (skip table headers) - for (i = headerSize; i < (rows.length - 1); i++) { - shouldSwitch = false; - - /*Get the two elements you want to compare, - one from current row and one from the next:*/ - x = rows[i].getElementsByTagName("TD")[column]; - y = rows[i + 1].getElementsByTagName("TD")[column]; - - /*check if the two rows should switch place, - based on the direction, asc or desc:*/ - if (dir == "asc") { - if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) { - //if so, mark as a switch and break the loop: - shouldSwitch= true; - break; + var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0; + table = document.getElementById(id); + switching = true; + + // Set the sorting direction to ascending: + dir = "asc"; + + // Make a loop that will continue until no switching has been done + while (switching) { + //start by saying: no switching is done: + switching = false; + rows = table.rows; + + // Loop through all table rows (skip table headers) + for (i = headerSize; i < (rows.length - 1); i++) { + shouldSwitch = false; + + /*Get the two elements you want to compare, + one from current row and one from the next:*/ + x = rows[i].getElementsByTagName("TD")[column]; + y = rows[i + 1].getElementsByTagName("TD")[column]; + + /*check if the two rows should switch place, + based on the direction, asc or desc:*/ + if (dir == "asc") { + if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) { + //if so, mark as a switch and break the loop: + shouldSwitch = true; + break; + } + } else if (dir == "desc") { + if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) { + //if so, mark as a switch and break the loop: + shouldSwitch = true; + break; + } + } } - } else if (dir == "desc") { - if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) { - //if so, mark as a switch and break the loop: - shouldSwitch = true; - break; + if (shouldSwitch) { + /*If a switch has been marked, make the switch + and mark that a switch has been done:*/ + rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); + switching = true; + //Each time a switch is done, increase this count by 1: + switchcount++; + } else { + /*If no switching has been done AND the direction is "asc", + set the direction to "desc" and run the while loop again.*/ + if (switchcount == 0 && dir == "asc") { + dir = "desc"; + switching = true; + } } - } } - if (shouldSwitch) { - /*If a switch has been marked, make the switch - and mark that a switch has been done:*/ - rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); - switching = true; - //Each time a switch is done, increase this count by 1: - switchcount ++; - } else { - /*If no switching has been done AND the direction is "asc", - set the direction to "desc" and run the while loop again.*/ - if (switchcount == 0 && dir == "asc") { - dir = "desc"; - switching = true; - } - } - } } function openTab(evt, tabName) { @@ -75,19 +75,44 @@ function openTab(evt, tabName) { evt.currentTarget.className += " active"; } -function handleClick(source) { - var messages = document.getElementById("messages"); - var spans = messages.getElementsByTagName("span"); - var filter = source.value; - console.log(filter); - for (const s of spans) { - var str = s.textContent; - if (str.startsWith(filter)) { - if (source.checked) { - s.style.display = "block"; - } else { - s.style.display = "none"; - } - } - } + +//region Toggle the visibility of log-lines using checkboxes +let chkError = document.getElementById("errors"); +let chkWarning = document.getElementById("warnings"); +let chkDebug = document.getElementById("debug"); +let chkInformation = document.getElementById("info"); + +const LOGLINE_CHECKBOXES = [chkError, chkWarning, chkInformation, chkDebug]; + +function updateLoglineVisibility() { + document.getElementById("messages"); + for (const chk of LOGLINE_CHECKBOXES) { + let value = chk.checked ? "block" : "none"; + + let className = "loglevel-" + chk.value; + let lines = document.getElementsByClassName(className); + for (let it of lines) { + it.style.display = value; + } + } } +//endregion + +document.addEventListener("DOMContentLoaded", () => { + for (let it of LOGLINE_CHECKBOXES) { + it.addEventListener("change", updateLoglineVisibility); + } + updateLoglineVisibility(); +}); + + +// region make FileTree toggle by keyboard +document.addEventListener("DOMContentLoaded", () => { + for (let toggler of document.getElementsByClassName("caret")) { + toggler.addEventListener("click", () => { + this.parentElement.querySelector(".nested").classList.toggle("active"); + this.classList.toggle("caret-down"); + }); + } +}); +//endregion \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/resources/report/html/style.css b/keyext.proofmanagement/src/main/resources/report/html/style.css index 3e634fde0f1..8694e360495 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/style.css +++ b/keyext.proofmanagement/src/main/resources/report/html/style.css @@ -5,29 +5,33 @@ body, html { div.tabcontent { overflow: hidden; - background-color: #f1f1f1; - display:none; /* Hide all tabs */ + display: none; /* Hide all tabs */ } div.tabcontent:target, /*show tabs if targeted */ -:root:not(:has(:target)) div.tabcontent.default /*if nothing targeted at all, show the default tab*/ { +:root:not(:has(:target)) div.tabcontent.default /*if nothing targeted at all, show the default tab*/ +{ display: block } +.nav { + background-color: #ccc; + padding: 1em; + margin-bottom: 2em; + border-bottom: 1px solid lightblue; -.nav a { - background-color: inherit; - padding: 14px 16px; - transition: 0.3s; - font-size: 20px; -} + a { + padding: 1ex; + font-size: 120%; + } -.tab a:hover { - background-color: #ddd; -} + a:hover { + background-color: #ddd; + } -.tab a.active { - background-color: #ccc + a.active { + background-color: #ccc + } } .tabcontent { @@ -112,7 +116,47 @@ thead.tableHead { padding-right: 4px; } -#messages span { - display: block; - white-space: pre; + +#bundleTable { + font-weight: bold; + font-size: 110%; } + + +.legend { + display: inline-block; + text-align: right; + width: 20%; +} + +.bar { + display: inline-block; + height: 1em; +} + +div#messages { + background-color: #002b36; + color: #93a1a1; + font-family: monospace; + font-size: 10pt; + padding: 10px; + .loglevel-4 /*error line*/ { + color: hsla(10 100% 50%); + } + + .loglevel-3 /*warning line*/ { + color: hsla(40 100% 50%); + } + + .loglevel-2 /*info*/ { + color: hsla(170 100% 50%); + } + + .loglevel-1 /*normal line*/ { + color:yellow; + } + + .loglevel-0t /*error line*/ { + color: #ccc; + } +} \ No newline at end of file From 6d318d746d3e48628f69fb855ae055957ebd7a9f Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Wed, 30 Jul 2025 16:57:40 +0200 Subject: [PATCH 15/22] svg chart + spotless --- .../proofmanagement/check/CheckerData.java | 14 ++++--- .../proofmanagement/check/Logline.java | 4 ++ .../src/main/resources/report/html/report.ftl | 37 +++++++++++++++++++ 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java index d6f2a3a6ea3..88bb0cf02c2 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/CheckerData.java @@ -3,6 +3,12 @@ * SPDX-License-Identifier: GPL-2.0-only */ package org.key_project.proofmanagement.check; +import java.net.URL; +import java.nio.file.Path; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; + import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.init.KeYUserProblemFile; import de.uka.ilkd.key.proof.init.ProblemInitializer; @@ -11,17 +17,13 @@ import de.uka.ilkd.key.settings.ChoiceSettings; import de.uka.ilkd.key.speclang.Contract; import de.uka.ilkd.key.speclang.SLEnvInput; -import org.jspecify.annotations.Nullable; + import org.key_project.proofmanagement.check.dependency.DependencyGraph; import org.key_project.proofmanagement.io.LogLevel; import org.key_project.proofmanagement.io.Logger; import org.key_project.proofmanagement.io.ProofBundleHandler; -import java.net.URL; -import java.nio.file.Path; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.*; +import org.jspecify.annotations.Nullable; /** * This container serves for accumulating data given to checkers and results returned by them. diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Logline.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Logline.java index 5b3e7332679..d25998f89e6 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Logline.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/Logline.java @@ -1,9 +1,13 @@ +/* This file is part of KeY - https://key-project.org + * KeY is licensed under the GNU General Public License Version 2 + * SPDX-License-Identifier: GPL-2.0-only */ package org.key_project.proofmanagement.check; import org.key_project.proofmanagement.io.LogLevel; /** * A record representing a line in the output log. + * * @param level the {@link LogLevel} of the line * @param message the content */ diff --git a/keyext.proofmanagement/src/main/resources/report/html/report.ftl b/keyext.proofmanagement/src/main/resources/report/html/report.ftl index 1cbcd245c2e..b7dbfe23f82 100644 --- a/keyext.proofmanagement/src/main/resources/report/html/report.ftl +++ b/keyext.proofmanagement/src/main/resources/report/html/report.ftl @@ -51,6 +51,40 @@ unproven=checkerData.unprovenCount() data=checkerData > + <#assign provenPercent=proven/total*100 + depsLeftPercent=lemmaLeft/total*100 + unprovenPercent=unproven/total*100 > + + + + + + + + + + + + + + proven (${proven}) + + + + dependencies left (${lemmaLeft}) + + + + unproven (${unproven}) + + + + + + + +
    From aa2369572b0a8ab601e529bf92cd5525926bfa1f Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Sun, 31 Mar 2024 23:03:43 +0200 Subject: [PATCH 16/22] add module-info.java --- .../src/main/java/module-info.java | 7 + .../src/main/java/module-info.java | 10 ++ key.core.rifl/src/main/java/module-info.java | 13 ++ .../src/main/java/module-info.java | 11 ++ .../src/main/java/module-info.java | 26 ++++ key.core/src/main/java/module-info.java | 146 ++++++++++++++++++ .../src/main/java/module-info.java | 9 ++ key.ui/src/main/java/module-info.java | 34 ++++ keyext.caching/src/main/java/module-info.java | 7 + .../src/main/java/module-info.java | 7 + .../src/main/java/module-info.java | 7 + keyext.slicing/src/main/java/module-info.java | 7 + .../src/main/java/module-info.java | 7 + recoder/src/main/java/module-info.java | 27 ++++ 14 files changed, 318 insertions(+) create mode 100644 key.core.example/src/main/java/module-info.java create mode 100644 key.core.proof_references/src/main/java/module-info.java create mode 100644 key.core.rifl/src/main/java/module-info.java create mode 100644 key.core.symbolic_execution.example/src/main/java/module-info.java create mode 100644 key.core.symbolic_execution/src/main/java/module-info.java create mode 100644 key.core/src/main/java/module-info.java create mode 100644 key.removegenerics/src/main/java/module-info.java create mode 100644 key.ui/src/main/java/module-info.java create mode 100644 keyext.caching/src/main/java/module-info.java create mode 100644 keyext.exploration/src/main/java/module-info.java create mode 100644 keyext.proofmanagement/src/main/java/module-info.java create mode 100644 keyext.slicing/src/main/java/module-info.java create mode 100644 keyext.ui.testgen/src/main/java/module-info.java create mode 100644 recoder/src/main/java/module-info.java diff --git a/key.core.example/src/main/java/module-info.java b/key.core.example/src/main/java/module-info.java new file mode 100644 index 00000000000..1589f3563f6 --- /dev/null +++ b/key.core.example/src/main/java/module-info.java @@ -0,0 +1,7 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module org.key_project.core.example { +} \ No newline at end of file diff --git a/key.core.proof_references/src/main/java/module-info.java b/key.core.proof_references/src/main/java/module-info.java new file mode 100644 index 00000000000..0eb1124f190 --- /dev/null +++ b/key.core.proof_references/src/main/java/module-info.java @@ -0,0 +1,10 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module org.key_project.proof_references { + requires org.key_project.core; + requires org.key_project.ncore; + requires org.key_project.util; +} \ No newline at end of file diff --git a/key.core.rifl/src/main/java/module-info.java b/key.core.rifl/src/main/java/module-info.java new file mode 100644 index 00000000000..db958b87368 --- /dev/null +++ b/key.core.rifl/src/main/java/module-info.java @@ -0,0 +1,13 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module org.key_project.core.rifl { + exports de.uka.ilkd.key.util.rifl; + requires org.key_project.core; + requires key.recoder; + requires java.xml; + requires org.slf4j; + requires org.key_project.util; +} \ No newline at end of file diff --git a/key.core.symbolic_execution.example/src/main/java/module-info.java b/key.core.symbolic_execution.example/src/main/java/module-info.java new file mode 100644 index 00000000000..7d5f55b3703 --- /dev/null +++ b/key.core.symbolic_execution.example/src/main/java/module-info.java @@ -0,0 +1,11 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module key.core.symbolic_execution.example { + requires transitive org.key_project.symbolic_execution; + requires org.key_project.core; + requires org.key_project.util; + requires org.slf4j; +} \ No newline at end of file diff --git a/key.core.symbolic_execution/src/main/java/module-info.java b/key.core.symbolic_execution/src/main/java/module-info.java new file mode 100644 index 00000000000..31786bf48f9 --- /dev/null +++ b/key.core.symbolic_execution/src/main/java/module-info.java @@ -0,0 +1,26 @@ +import de.uka.ilkd.key.proof.init.POExtension; +import de.uka.ilkd.key.symbex.po.TruthValuePOExtension; + +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module org.key_project.symbolic_execution { + exports de.uka.ilkd.key.symbex; + exports de.uka.ilkd.key.symbex.model; + exports de.uka.ilkd.key.symbex.po; + exports de.uka.ilkd.key.symbex.profile; + exports de.uka.ilkd.key.symbex.strategy; + exports de.uka.ilkd.key.symbex.strategy.breakpoint; + exports de.uka.ilkd.key.symbex.util; + requires java.xml; + requires org.key_project.core; + requires org.key_project.ncore; + requires org.key_project.util; + requires java.desktop; + requires org.slf4j; + requires org.jspecify; + + provides POExtension with TruthValuePOExtension; +} \ No newline at end of file diff --git a/key.core/src/main/java/module-info.java b/key.core/src/main/java/module-info.java new file mode 100644 index 00000000000..ab61a1fe083 --- /dev/null +++ b/key.core/src/main/java/module-info.java @@ -0,0 +1,146 @@ +import de.uka.ilkd.key.macros.ProofMacro; +import de.uka.ilkd.key.macros.scripts.ProofScriptCommand; +import de.uka.ilkd.key.proof.init.DefaultProfileResolver; + +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module org.key_project.core { + exports de.uka.ilkd.key.java; + exports de.uka.ilkd.key.java.abstraction; + exports de.uka.ilkd.key.logic.op; + exports de.uka.ilkd.key.proof; + exports de.uka.ilkd.key.proof.init; + exports de.uka.ilkd.key.rule; + exports de.uka.ilkd.key.speclang; + exports de.uka.ilkd.key.util; + exports de.uka.ilkd.key.java.statement; + exports de.uka.ilkd.key.java.expression; + exports de.uka.ilkd.key.java.reference; + exports de.uka.ilkd.key.logic; + exports de.uka.ilkd.key.java.expression.operator; + exports de.uka.ilkd.key.proof.mgt; + exports de.uka.ilkd.key.rule.inst; + exports de.uka.ilkd.key.java.recoderext; + exports de.uka.ilkd.key.logic.label; + exports de.uka.ilkd.key.prover.impl; + exports de.uka.ilkd.key.strategy; + exports de.uka.ilkd.key.pp; + exports de.uka.ilkd.key.speclang.jml.translation; + exports de.uka.ilkd.key.speclang.njml; + exports de.uka.ilkd.key.java.visitor; + exports de.uka.ilkd.key.control; + exports de.uka.ilkd.key.ldt; + exports de.uka.ilkd.key.rule.tacletbuilder; + exports de.uka.ilkd.key.settings; + exports de.uka.ilkd.key.rule.merge; + exports de.uka.ilkd.key.java.declaration; + exports de.uka.ilkd.key.logic.sort; + exports de.uka.ilkd.key.proof.io; + exports de.uka.ilkd.key.logic.equality; + exports de.uka.ilkd.key.rule.label; + exports de.uka.ilkd.key.macros; + exports de.uka.ilkd.key.macros.scripts; + exports de.uka.ilkd.key.prover; + exports de.uka.ilkd.key.strategy.feature; + exports de.uka.ilkd.key.strategy.definition; + exports de.uka.ilkd.key.speclang.translation; + exports de.uka.ilkd.key.proof.rulefilter; + exports de.uka.ilkd.key.strategy.feature.instantiator; + exports de.uka.ilkd.key.strategy.termProjection; + exports de.uka.ilkd.key.strategy.termfeature; + exports de.uka.ilkd.key.strategy.termgenerator; + exports de.uka.ilkd.key.control.instantiation_model; + exports de.uka.ilkd.key.parser; + exports de.uka.ilkd.key.proof.event; + exports de.uka.ilkd.key.proof.join; + exports org.key_project.proof; + exports de.uka.ilkd.key.util.mergerule; + exports de.uka.ilkd.key.proof.reference; + exports de.uka.ilkd.key.smt; + exports de.uka.ilkd.key.smt.solvertypes; + exports de.uka.ilkd.key.taclettranslation.assumptions; + exports de.uka.ilkd.key.smt.model; + exports de.uka.ilkd.key.rule.merge.procedures; + exports de.uka.ilkd.key.axiom_abstraction.predicateabstraction; + exports de.uka.ilkd.key.control.event; + exports de.uka.ilkd.key.informationflow.macros; + exports de.uka.ilkd.key.proof.io.consistency; + exports de.uka.ilkd.key.taclettranslation.lemma; + exports de.uka.ilkd.key.nparser; + exports de.uka.ilkd.key.proof.delayedcut; + exports de.uka.ilkd.key.speclang.jml; + exports de.uka.ilkd.key.smt.newsmt2; + exports de.uka.ilkd.key.util.pp; + exports de.uka.ilkd.key.axiom_abstraction; + requires org.slf4j; + requires key.recoder; + requires org.key_project.ncore; + requires org.key_project.util; + requires java.desktop; + requires org.jspecify; + requires org.antlr.antlr4.runtime; + requires java.scripting; + + provides ProofMacro with + de.uka.ilkd.key.informationflow.macros.FullInformationFlowAutoPilotMacro, + de.uka.ilkd.key.informationflow.macros.AuxiliaryComputationAutoPilotMacro, + de.uka.ilkd.key.informationflow.macros.StartAuxiliaryComputationMacro, + de.uka.ilkd.key.informationflow.macros.FinishAuxiliaryComputationMacro, + de.uka.ilkd.key.macros.FullAutoPilotProofMacro, + de.uka.ilkd.key.macros.AutoPilotPrepareProofMacro, + de.uka.ilkd.key.macros.SMTPreparationMacro, + de.uka.ilkd.key.informationflow.macros.StateExpansionAndInfFlowContractApplicationMacro, + de.uka.ilkd.key.informationflow.macros.SelfcompositionStateExpansionMacro, + de.uka.ilkd.key.informationflow.macros.FullUseInformationFlowContractMacro, + de.uka.ilkd.key.macros.PropositionalExpansionMacro, + de.uka.ilkd.key.macros.FullPropositionalExpansionMacro, + de.uka.ilkd.key.macros.TryCloseMacro, + de.uka.ilkd.key.macros.FinishSymbolicExecutionMacro, + de.uka.ilkd.key.macros.AutoMacro, + de.uka.ilkd.key.macros.HeapSimplificationMacro, + de.uka.ilkd.key.macros.IntegerSimplificationMacro, + de.uka.ilkd.key.macros.OneStepProofMacro, + de.uka.ilkd.key.macros.WellDefinednessMacro, + de.uka.ilkd.key.macros.UpdateSimplificationMacro, + de.uka.ilkd.key.macros.TranscendentalFloatSMTMacro; + + provides ProofScriptCommand with + de.uka.ilkd.key.macros.scripts.EchoCommand, + de.uka.ilkd.key.macros.scripts.MacroCommand, + de.uka.ilkd.key.macros.scripts.FocusCommand, + de.uka.ilkd.key.macros.scripts.AutoCommand, + de.uka.ilkd.key.macros.scripts.CutCommand, + de.uka.ilkd.key.macros.scripts.SetCommand, + de.uka.ilkd.key.macros.scripts.SetEchoCommand, + de.uka.ilkd.key.macros.scripts.SetFailOnClosedCommand, + de.uka.ilkd.key.macros.scripts.SMTCommand, + de.uka.ilkd.key.macros.scripts.RuleCommand, + de.uka.ilkd.key.macros.scripts.ActivateCommand, + de.uka.ilkd.key.macros.scripts.LeaveCommand, + de.uka.ilkd.key.macros.scripts.TryCloseCommand, + de.uka.ilkd.key.macros.scripts.ExitCommand, + de.uka.ilkd.key.macros.scripts.InstantiateCommand, + de.uka.ilkd.key.macros.scripts.SelectCommand, + de.uka.ilkd.key.macros.scripts.ScriptCommand, + de.uka.ilkd.key.macros.scripts.LetCommand, + de.uka.ilkd.key.macros.scripts.SaveInstCommand, + de.uka.ilkd.key.macros.scripts.SaveNewNameCommand, + de.uka.ilkd.key.macros.scripts.SchemaVarCommand, + de.uka.ilkd.key.macros.scripts.JavascriptCommand, + de.uka.ilkd.key.macros.scripts.SkipCommand, + de.uka.ilkd.key.macros.scripts.AxiomCommand, + de.uka.ilkd.key.macros.scripts.AssumeCommand, + de.uka.ilkd.key.macros.scripts.AssertCommand, + de.uka.ilkd.key.macros.scripts.RewriteCommand, + de.uka.ilkd.key.macros.scripts.AllCommand, + de.uka.ilkd.key.macros.scripts.HideCommand, + de.uka.ilkd.key.macros.scripts.UnhideCommand; + + provides DefaultProfileResolver with + de.uka.ilkd.key.proof.init.JavaProfileDefaultProfileResolver, + de.uka.ilkd.key.proof.init.JavaProfileWithPermissionsDefaultProfileResolver; + +} \ No newline at end of file diff --git a/key.removegenerics/src/main/java/module-info.java b/key.removegenerics/src/main/java/module-info.java new file mode 100644 index 00000000000..5a183a653c3 --- /dev/null +++ b/key.removegenerics/src/main/java/module-info.java @@ -0,0 +1,9 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module org.key_project.removegenerics { + requires key.recoder; + requires org.slf4j; +} \ No newline at end of file diff --git a/key.ui/src/main/java/module-info.java b/key.ui/src/main/java/module-info.java new file mode 100644 index 00000000000..627806cab58 --- /dev/null +++ b/key.ui/src/main/java/module-info.java @@ -0,0 +1,34 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module org.key_project.ui { + requires org.slf4j; + requires java.desktop; + requires org.key_project.core; + requires java.prefs; + requires org.jspecify; + requires org.key_project.util; + requires org.key_project.ncore; + requires com.miglayout.core; + requires com.miglayout.swing; + requires ch.qos.logback.core; + requires ch.qos.logback.classic; + requires key.recoder; + requires org.key_project.core.rifl; + requires java.compiler; + + provides de.uka.ilkd.key.gui.extension.api.KeYGuiExtension with + de.uka.ilkd.key.gui.originlabels.OriginTermLabelsExt, + de.uka.ilkd.key.gui.extension.impl.HeatmapExt, + de.uka.ilkd.key.gui.extension.impl.TestExtension, + de.uka.ilkd.key.gui.docking.DockingLayout, + de.uka.ilkd.key.gui.KeyboardTacletExtension, + de.uka.ilkd.key.gui.nodeviews.ShowHashcodesExtension, + de.uka.ilkd.key.gui.LogView, + de.uka.ilkd.key.gui.plugins.javac.JavacExtension, + de.uka.ilkd.key.gui.utilities.HeapStatusExt, + de.uka.ilkd.key.gui.JmlEnabledKeysIndicator; + +} \ No newline at end of file diff --git a/keyext.caching/src/main/java/module-info.java b/keyext.caching/src/main/java/module-info.java new file mode 100644 index 00000000000..fd9b38ea05c --- /dev/null +++ b/keyext.caching/src/main/java/module-info.java @@ -0,0 +1,7 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module keyext.caching { +} \ No newline at end of file diff --git a/keyext.exploration/src/main/java/module-info.java b/keyext.exploration/src/main/java/module-info.java new file mode 100644 index 00000000000..08fd3443676 --- /dev/null +++ b/keyext.exploration/src/main/java/module-info.java @@ -0,0 +1,7 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module keyext.exploration { +} \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/java/module-info.java b/keyext.proofmanagement/src/main/java/module-info.java new file mode 100644 index 00000000000..39e27dede8f --- /dev/null +++ b/keyext.proofmanagement/src/main/java/module-info.java @@ -0,0 +1,7 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module keyext.proofmanagement { +} \ No newline at end of file diff --git a/keyext.slicing/src/main/java/module-info.java b/keyext.slicing/src/main/java/module-info.java new file mode 100644 index 00000000000..d05ecbc927f --- /dev/null +++ b/keyext.slicing/src/main/java/module-info.java @@ -0,0 +1,7 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module keyext.slicing { +} \ No newline at end of file diff --git a/keyext.ui.testgen/src/main/java/module-info.java b/keyext.ui.testgen/src/main/java/module-info.java new file mode 100644 index 00000000000..97aedec13a5 --- /dev/null +++ b/keyext.ui.testgen/src/main/java/module-info.java @@ -0,0 +1,7 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module keyext.ui.testgen { +} \ No newline at end of file diff --git a/recoder/src/main/java/module-info.java b/recoder/src/main/java/module-info.java new file mode 100644 index 00000000000..21f69e729ff --- /dev/null +++ b/recoder/src/main/java/module-info.java @@ -0,0 +1,27 @@ +/** + * + * @author Alexander Weigl + * @version 1 (31.03.24) + */ +module key.recoder { + exports recoder; + exports recoder.abstraction; + exports recoder.convenience; + exports recoder.java.declaration; + exports recoder.java; + exports recoder.java.reference; + exports recoder.java.statement; + exports recoder.list.generic; + exports recoder.service; + exports recoder.parser; + exports recoder.io; + exports recoder.java.expression; + exports recoder.bytecode; + exports recoder.java.expression.operator; + exports recoder.util; + exports recoder.java.declaration.modifier; + exports recoder.kit; + exports recoder.java.expression.literal; + requires java.desktop; + requires org.slf4j; +} \ No newline at end of file From 2a68e3c3b7cdbf080f653ac1d3e5d204eb820c11 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Wed, 18 Jun 2025 16:59:07 +0200 Subject: [PATCH 17/22] fixing import and exports --- build.gradle | 2 - .../src/main/java/module-info.java | 1 + .../BlockContractValidityTermLabelUpdate.java | 3 +- .../label/FormulaTermLabelMerger.java | 3 +- .../label/FormulaTermLabelRefactoring.java | 4 +- .../label/FormulaTermLabelUpdate.java | 3 +- .../label/LoopBodyTermLabelUpdate.java | 3 +- ...nvariantNormalBehaviorTermLabelUpdate.java | 3 +- ...veInCheckBranchesTermLabelRefactoring.java | 3 +- .../label/StayOnFormulaTermLabelPolicy.java | 3 +- .../SymbolicExecutionTermLabelUpdate.java | 3 +- .../profile/SymbolicExecutionJavaProfile.java | 10 +-- ...torKeepUpdatesForBreakpointconditions.java | 5 +- .../strategy/BreakpointStopCondition.java | 2 +- .../strategy/IBreakpointStopCondition.java | 2 +- ...bolicExecutionBreakpointStopCondition.java | 2 +- .../src/main/java/module-info.java | 18 ++--- .../AbstractionPredicate.java | 15 ++-- .../java}/KeYCrossReferenceSourceInfo.java | 6 +- .../de/uka/ilkd/key/java/Recoder2KeY.java | 1 - .../ClassFileDeclarationManager.java | 2 +- ...KeYCrossReferenceServiceConfiguration.java | 2 +- .../SchemaCrossReferenceSourceInfo.java | 2 +- .../key/java/visitor/ProgramContextAdder.java | 4 +- .../key/nparser/builder/TacletPBuilder.java | 2 + key.core/src/main/java/module-info.java | 70 ++++++++++--------- key.ui/src/main/java/module-info.java | 3 + .../service/DefaultProgramModelInfo.java | 2 +- 28 files changed, 92 insertions(+), 87 deletions(-) rename key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/{rule => symbolic_execution}/label/BlockContractValidityTermLabelUpdate.java (95%) rename key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/{rule => symbolic_execution}/label/FormulaTermLabelMerger.java (94%) rename key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/{rule => symbolic_execution}/label/FormulaTermLabelRefactoring.java (99%) rename key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/{rule => symbolic_execution}/label/FormulaTermLabelUpdate.java (98%) rename key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/{rule => symbolic_execution}/label/LoopBodyTermLabelUpdate.java (94%) rename key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/{rule => symbolic_execution}/label/LoopInvariantNormalBehaviorTermLabelUpdate.java (94%) rename key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/{rule => symbolic_execution}/label/RemoveInCheckBranchesTermLabelRefactoring.java (97%) rename key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/{rule => symbolic_execution}/label/StayOnFormulaTermLabelPolicy.java (98%) rename key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/{rule => symbolic_execution}/label/SymbolicExecutionTermLabelUpdate.java (96%) rename key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/{ => symbolic_execution}/proof/TermProgramVariableCollectorKeepUpdatesForBreakpointconditions.java (91%) rename key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/{ => symbolic_execution}/strategy/IBreakpointStopCondition.java (95%) rename key.core/src/main/java/{recoder/service => de/uka/ilkd/key/java}/KeYCrossReferenceSourceInfo.java (99%) diff --git a/build.gradle b/build.gradle index 005cb76fea3..e3de12eb01f 100644 --- a/build.gradle +++ b/build.gradle @@ -513,8 +513,6 @@ tasks.register('alldoc', Javadoc){ bottom = "Copyright © 2003-2023 The KeY-Project." use = true links += "https://docs.oracle.com/en/java/javase/17/docs/api/" - links += "http://www.antlr2.org/javadoc/" - links += "http://www.antlr3.org/api/Java/" links += "https://www.antlr.org/api/Java/" } } diff --git a/key.core.proof_references/src/main/java/module-info.java b/key.core.proof_references/src/main/java/module-info.java index 0eb1124f190..d702a824ed0 100644 --- a/key.core.proof_references/src/main/java/module-info.java +++ b/key.core.proof_references/src/main/java/module-info.java @@ -7,4 +7,5 @@ requires org.key_project.core; requires org.key_project.ncore; requires org.key_project.util; + requires org.key_project.prover; } \ No newline at end of file diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/BlockContractValidityTermLabelUpdate.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/BlockContractValidityTermLabelUpdate.java similarity index 95% rename from key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/BlockContractValidityTermLabelUpdate.java rename to key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/BlockContractValidityTermLabelUpdate.java index fed1258a105..14e4dfa4c10 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/BlockContractValidityTermLabelUpdate.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/BlockContractValidityTermLabelUpdate.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.rule.label; +package de.uka.ilkd.key.symbolic_execution.label; import java.util.Set; @@ -12,6 +12,7 @@ import de.uka.ilkd.key.logic.label.TermLabelState; import de.uka.ilkd.key.rule.BlockContractInternalRule; import de.uka.ilkd.key.rule.LoopContractInternalRule; +import de.uka.ilkd.key.rule.label.TermLabelUpdate; import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; import org.key_project.logic.Name; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelMerger.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelMerger.java similarity index 94% rename from key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelMerger.java rename to key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelMerger.java index edabc1a3c90..fd63851a1fb 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelMerger.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelMerger.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.rule.label; +package de.uka.ilkd.key.symbolic_execution.label; import java.util.ArrayList; import java.util.Arrays; @@ -11,6 +11,7 @@ import de.uka.ilkd.key.logic.label.FormulaTermLabel; import de.uka.ilkd.key.logic.label.TermLabel; +import de.uka.ilkd.key.rule.label.TermLabelMerger; import org.key_project.prover.sequent.SequentFormula; /** diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelRefactoring.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelRefactoring.java similarity index 99% rename from key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelRefactoring.java rename to key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelRefactoring.java index c9607d88c29..fdbb8f8664c 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelRefactoring.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelRefactoring.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.rule.label; +package de.uka.ilkd.key.symbolic_execution.label; import java.util.*; @@ -14,6 +14,8 @@ import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.rule.SyntacticalReplaceVisitor; +import de.uka.ilkd.key.rule.label.StayOnOperatorTermLabelPolicy; +import de.uka.ilkd.key.rule.label.TermLabelRefactoring; import de.uka.ilkd.key.rule.merge.CloseAfterMerge; import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelUpdate.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelUpdate.java similarity index 98% rename from key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelUpdate.java rename to key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelUpdate.java index d80e5fe0a9f..40d7c1a728c 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/FormulaTermLabelUpdate.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelUpdate.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.rule.label; +package de.uka.ilkd.key.symbolic_execution.label; import java.util.Collections; import java.util.LinkedHashMap; @@ -18,6 +18,7 @@ import de.uka.ilkd.key.rule.Taclet.TacletLabelHint; import de.uka.ilkd.key.rule.Taclet.TacletLabelHint.TacletOperation; import de.uka.ilkd.key.rule.TacletApp; +import de.uka.ilkd.key.rule.label.TermLabelUpdate; import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil; import org.key_project.logic.Name; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopBodyTermLabelUpdate.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/LoopBodyTermLabelUpdate.java similarity index 94% rename from key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopBodyTermLabelUpdate.java rename to key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/LoopBodyTermLabelUpdate.java index 4e3bb78f1c1..398817fbe25 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopBodyTermLabelUpdate.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/LoopBodyTermLabelUpdate.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.rule.label; +package de.uka.ilkd.key.symbolic_execution.label; import java.util.Set; @@ -10,6 +10,7 @@ import de.uka.ilkd.key.logic.label.TermLabel; import de.uka.ilkd.key.logic.label.TermLabelState; import de.uka.ilkd.key.rule.WhileInvariantRule; +import de.uka.ilkd.key.rule.label.TermLabelUpdate; import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; import org.key_project.logic.Name; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopInvariantNormalBehaviorTermLabelUpdate.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/LoopInvariantNormalBehaviorTermLabelUpdate.java similarity index 94% rename from key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopInvariantNormalBehaviorTermLabelUpdate.java rename to key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/LoopInvariantNormalBehaviorTermLabelUpdate.java index 151298779af..e7b0b2799e3 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/LoopInvariantNormalBehaviorTermLabelUpdate.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/LoopInvariantNormalBehaviorTermLabelUpdate.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.rule.label; +package de.uka.ilkd.key.symbolic_execution.label; import java.util.Set; @@ -10,6 +10,7 @@ import de.uka.ilkd.key.logic.label.TermLabel; import de.uka.ilkd.key.logic.label.TermLabelState; import de.uka.ilkd.key.rule.WhileInvariantRule; +import de.uka.ilkd.key.rule.label.TermLabelUpdate; import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; import org.key_project.logic.Name; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/RemoveInCheckBranchesTermLabelRefactoring.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/RemoveInCheckBranchesTermLabelRefactoring.java similarity index 97% rename from key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/RemoveInCheckBranchesTermLabelRefactoring.java rename to key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/RemoveInCheckBranchesTermLabelRefactoring.java index 937931502ee..b2dfa4f9335 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/RemoveInCheckBranchesTermLabelRefactoring.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/RemoveInCheckBranchesTermLabelRefactoring.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.rule.label; +package de.uka.ilkd.key.symbolic_execution.label; import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.logic.JTerm; @@ -17,6 +17,7 @@ import de.uka.ilkd.key.rule.UseOperationContractRule; import de.uka.ilkd.key.rule.WhileInvariantRule; +import de.uka.ilkd.key.rule.label.TermLabelRefactoring; import org.key_project.logic.Name; import org.key_project.prover.rules.Rule; import org.key_project.prover.sequent.PosInOccurrence; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/StayOnFormulaTermLabelPolicy.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/StayOnFormulaTermLabelPolicy.java similarity index 98% rename from key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/StayOnFormulaTermLabelPolicy.java rename to key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/StayOnFormulaTermLabelPolicy.java index 58c2c392fb2..f28fc4d07a8 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/StayOnFormulaTermLabelPolicy.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/StayOnFormulaTermLabelPolicy.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.rule.label; +package de.uka.ilkd.key.symbolic_execution.label; import java.util.Deque; import java.util.LinkedHashSet; @@ -16,6 +16,7 @@ import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.rule.Taclet.TacletLabelHint; import de.uka.ilkd.key.rule.Taclet.TacletLabelHint.TacletOperation; +import de.uka.ilkd.key.rule.label.TermLabelPolicy; import de.uka.ilkd.key.symbolic_execution.TruthValueTracingUtil; import org.key_project.prover.rules.Rule; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/SymbolicExecutionTermLabelUpdate.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/SymbolicExecutionTermLabelUpdate.java similarity index 96% rename from key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/SymbolicExecutionTermLabelUpdate.java rename to key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/SymbolicExecutionTermLabelUpdate.java index 2646ea307d6..523caa8702a 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/rule/label/SymbolicExecutionTermLabelUpdate.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/SymbolicExecutionTermLabelUpdate.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.rule.label; +package de.uka.ilkd.key.symbolic_execution.label; import java.util.Set; @@ -12,6 +12,7 @@ import de.uka.ilkd.key.logic.label.TermLabelState; import de.uka.ilkd.key.rule.*; +import de.uka.ilkd.key.rule.label.TermLabelUpdate; import org.key_project.logic.Name; import org.key_project.prover.rules.Rule; import org.key_project.prover.rules.RuleApp; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SymbolicExecutionJavaProfile.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SymbolicExecutionJavaProfile.java index 4ab02a16076..95c4e67b8ba 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SymbolicExecutionJavaProfile.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/profile/SymbolicExecutionJavaProfile.java @@ -18,20 +18,12 @@ import de.uka.ilkd.key.proof.init.JavaProfile; import de.uka.ilkd.key.proof.init.Profile; import de.uka.ilkd.key.rule.BuiltInRule; -import de.uka.ilkd.key.rule.label.BlockContractValidityTermLabelUpdate; -import de.uka.ilkd.key.rule.label.FormulaTermLabelMerger; -import de.uka.ilkd.key.rule.label.FormulaTermLabelRefactoring; -import de.uka.ilkd.key.rule.label.FormulaTermLabelUpdate; -import de.uka.ilkd.key.rule.label.LoopBodyTermLabelUpdate; -import de.uka.ilkd.key.rule.label.LoopInvariantNormalBehaviorTermLabelUpdate; -import de.uka.ilkd.key.rule.label.RemoveInCheckBranchesTermLabelRefactoring; -import de.uka.ilkd.key.rule.label.StayOnFormulaTermLabelPolicy; import de.uka.ilkd.key.rule.label.StayOnOperatorTermLabelPolicy; -import de.uka.ilkd.key.rule.label.SymbolicExecutionTermLabelUpdate; import de.uka.ilkd.key.rule.label.TermLabelPolicy; import de.uka.ilkd.key.rule.label.TermLabelRefactoring; import de.uka.ilkd.key.rule.label.TermLabelUpdate; import de.uka.ilkd.key.strategy.StrategyFactory; +import de.uka.ilkd.key.symbolic_execution.label.*; import de.uka.ilkd.key.symbolic_execution.rule.ModalitySideProofRule; import de.uka.ilkd.key.symbolic_execution.rule.QuerySideProofRule; import de.uka.ilkd.key.symbolic_execution.strategy.SymbolicExecutionGoalChooserFactory; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/proof/TermProgramVariableCollectorKeepUpdatesForBreakpointconditions.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/proof/TermProgramVariableCollectorKeepUpdatesForBreakpointconditions.java similarity index 91% rename from key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/proof/TermProgramVariableCollectorKeepUpdatesForBreakpointconditions.java rename to key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/proof/TermProgramVariableCollectorKeepUpdatesForBreakpointconditions.java index 743ce07fdd5..049ac36653e 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/proof/TermProgramVariableCollectorKeepUpdatesForBreakpointconditions.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/proof/TermProgramVariableCollectorKeepUpdatesForBreakpointconditions.java @@ -1,11 +1,12 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.proof; +package de.uka.ilkd.key.symbolic_execution.proof; import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.logic.op.LocationVariable; -import de.uka.ilkd.key.strategy.IBreakpointStopCondition; +import de.uka.ilkd.key.proof.TermProgramVariableCollector; +import de.uka.ilkd.key.symbolic_execution.strategy.*; import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.AbstractConditionalBreakpoint; import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.IBreakpoint; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/BreakpointStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/BreakpointStopCondition.java index a3331771244..7b202b5363c 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/BreakpointStopCondition.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/BreakpointStopCondition.java @@ -12,7 +12,7 @@ import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.strategy.IBreakpointStopCondition; +import de.uka.ilkd.key.symbolic_execution.strategy.IBreakpointStopCondition; import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.IBreakpoint; import org.key_project.prover.engine.SingleRuleApplicationInfo; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/strategy/IBreakpointStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/IBreakpointStopCondition.java similarity index 95% rename from key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/strategy/IBreakpointStopCondition.java rename to key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/IBreakpointStopCondition.java index 50c7de51935..be68b45a270 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/strategy/IBreakpointStopCondition.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/IBreakpointStopCondition.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.strategy; +package de.uka.ilkd.key.symbolic_execution.strategy; import java.util.Set; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionBreakpointStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionBreakpointStopCondition.java index e79911c6917..0e447026e2a 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionBreakpointStopCondition.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionBreakpointStopCondition.java @@ -13,7 +13,7 @@ import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.NodeInfo; import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.strategy.IBreakpointStopCondition; +import de.uka.ilkd.key.symbolic_execution.strategy.IBreakpointStopCondition; import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.IBreakpoint; import org.key_project.prover.rules.RuleApp; diff --git a/key.core.symbolic_execution/src/main/java/module-info.java b/key.core.symbolic_execution/src/main/java/module-info.java index 31786bf48f9..56f321aadb8 100644 --- a/key.core.symbolic_execution/src/main/java/module-info.java +++ b/key.core.symbolic_execution/src/main/java/module-info.java @@ -1,5 +1,5 @@ import de.uka.ilkd.key.proof.init.POExtension; -import de.uka.ilkd.key.symbex.po.TruthValuePOExtension; +import de.uka.ilkd.key.symbolic_execution.po.TruthValuePOExtension; /** * @@ -7,13 +7,13 @@ * @version 1 (31.03.24) */ module org.key_project.symbolic_execution { - exports de.uka.ilkd.key.symbex; - exports de.uka.ilkd.key.symbex.model; - exports de.uka.ilkd.key.symbex.po; - exports de.uka.ilkd.key.symbex.profile; - exports de.uka.ilkd.key.symbex.strategy; - exports de.uka.ilkd.key.symbex.strategy.breakpoint; - exports de.uka.ilkd.key.symbex.util; + exports de.uka.ilkd.key.symbolic_execution; + exports de.uka.ilkd.key.symbolic_execution.model; + exports de.uka.ilkd.key.symbolic_execution.po; + exports de.uka.ilkd.key.symbolic_execution.profile; + exports de.uka.ilkd.key.symbolic_execution.strategy; + exports de.uka.ilkd.key.symbolic_execution.strategy.breakpoint; + exports de.uka.ilkd.key.symbolic_execution.util; requires java.xml; requires org.key_project.core; requires org.key_project.ncore; @@ -21,6 +21,8 @@ requires java.desktop; requires org.slf4j; requires org.jspecify; + requires org.key_project.prover; + requires org.checkerframework.checker.qual; provides POExtension with TruthValuePOExtension; } \ No newline at end of file diff --git a/key.core/src/main/java/de/uka/ilkd/key/axiom_abstraction/predicateabstraction/AbstractionPredicate.java b/key.core/src/main/java/de/uka/ilkd/key/axiom_abstraction/predicateabstraction/AbstractionPredicate.java index 67a83059784..b076835f68f 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/axiom_abstraction/predicateabstraction/AbstractionPredicate.java +++ b/key.core/src/main/java/de/uka/ilkd/key/axiom_abstraction/predicateabstraction/AbstractionPredicate.java @@ -3,13 +3,6 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.axiom_abstraction.predicateabstraction; -import java.util.ArrayList; -import java.util.List; -import java.util.function.Function; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import javax.naming.NameAlreadyBoundException; - import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.logic.*; import de.uka.ilkd.key.logic.op.IProgramVariable; @@ -18,13 +11,18 @@ import de.uka.ilkd.key.proof.OpReplacer; import de.uka.ilkd.key.proof.io.OutputStreamProofSaver; import de.uka.ilkd.key.util.mergerule.MergeRuleUtils; - import org.key_project.logic.Name; import org.key_project.logic.Named; import org.key_project.logic.Namespace; import org.key_project.logic.sort.Sort; import org.key_project.util.collection.Pair; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * Interface for predicates used for predicate abstraction. An abstraction predicate is a mapping * from program variables or constants to formulae instantiated for the respective variable. @@ -204,7 +202,6 @@ public String toParseableString(final Services services) { * @param localNamespaces The local {@link NamespaceSet}. * @return The parsed {@link String}. * @throws ParserException If there is a syntax error. - * @throws NameAlreadyBoundException If the given placeholder is already known to the system. */ public static List fromString(final String s, final Services services, NamespaceSet localNamespaces) throws ParserException { diff --git a/key.core/src/main/java/recoder/service/KeYCrossReferenceSourceInfo.java b/key.core/src/main/java/de/uka/ilkd/key/java/KeYCrossReferenceSourceInfo.java similarity index 99% rename from key.core/src/main/java/recoder/service/KeYCrossReferenceSourceInfo.java rename to key.core/src/main/java/de/uka/ilkd/key/java/KeYCrossReferenceSourceInfo.java index 29f62876c08..8eab862b10c 100644 --- a/key.core/src/main/java/recoder/service/KeYCrossReferenceSourceInfo.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/KeYCrossReferenceSourceInfo.java @@ -1,7 +1,7 @@ /* 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 recoder.service; +package de.uka.ilkd.key.java; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -12,7 +12,6 @@ import java.util.List; import java.util.Map; -import de.uka.ilkd.key.java.ConvertException; import de.uka.ilkd.key.java.recoderext.ClassFileDeclarationBuilder; import de.uka.ilkd.key.java.recoderext.EnumClassDeclaration; import de.uka.ilkd.key.java.recoderext.EscapeExpression; @@ -65,6 +64,7 @@ import recoder.java.reference.VariableReference; import recoder.java.statement.Case; import recoder.list.generic.ASTList; +import recoder.service.*; public class KeYCrossReferenceSourceInfo extends DefaultCrossReferenceSourceInfo { @@ -225,7 +225,7 @@ public void modelChanged(ChangeHistoryEvent event) { } } - void registerSubtype(ClassType c1, ClassType c2) { + public void registerSubtype(ClassType c1, ClassType c2) { try { super.registerSubtype(c1, c2); 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 5a0b5c602e6..cbd5dd949ae 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 @@ -60,7 +60,6 @@ import recoder.list.generic.ASTList; import recoder.service.ChangeHistory; import recoder.service.CrossReferenceSourceInfo; -import recoder.service.KeYCrossReferenceSourceInfo; import recoder.service.UnresolvedReferenceException; /** diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/ClassFileDeclarationManager.java b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/ClassFileDeclarationManager.java index 59d9befc4f5..5a16536a2fa 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/ClassFileDeclarationManager.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/ClassFileDeclarationManager.java @@ -16,6 +16,7 @@ import java.util.Map; import de.uka.ilkd.key.java.ConvertException; +import de.uka.ilkd.key.java.KeYCrossReferenceSourceInfo; import de.uka.ilkd.key.util.DirectoryFileCollection; import de.uka.ilkd.key.util.FileCollection; import de.uka.ilkd.key.util.FileCollection.Walker; @@ -30,7 +31,6 @@ import recoder.io.DataLocation; import recoder.java.CompilationUnit; import recoder.java.JavaProgramFactory; -import recoder.service.KeYCrossReferenceSourceInfo; /** * This class provides an infrastructure to read in multiple class files and to manufacture diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/KeYCrossReferenceServiceConfiguration.java b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/KeYCrossReferenceServiceConfiguration.java index 372a2ae8edd..06be748e251 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/KeYCrossReferenceServiceConfiguration.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/KeYCrossReferenceServiceConfiguration.java @@ -3,13 +3,13 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.java.recoderext; +import de.uka.ilkd.key.java.KeYCrossReferenceSourceInfo; import de.uka.ilkd.key.java.KeYProgModelInfo; import de.uka.ilkd.key.util.KeYRecoderExcHandler; import recoder.CrossReferenceServiceConfiguration; import recoder.ProgramFactory; import recoder.io.SourceFileRepository; -import recoder.service.KeYCrossReferenceSourceInfo; import recoder.service.NameInfo; import recoder.service.SourceInfo; diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaCrossReferenceSourceInfo.java b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaCrossReferenceSourceInfo.java index 896fa816974..2f5d5501100 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaCrossReferenceSourceInfo.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaCrossReferenceSourceInfo.java @@ -3,6 +3,7 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.java.recoderext; +import de.uka.ilkd.key.java.KeYCrossReferenceSourceInfo; import recoder.ServiceConfiguration; import recoder.abstraction.PrimitiveType; import recoder.abstraction.Type; @@ -10,7 +11,6 @@ import recoder.java.declaration.VariableSpecification; import recoder.java.reference.TypeReference; import recoder.java.reference.UncollatedReferenceQualifier; -import recoder.service.KeYCrossReferenceSourceInfo; public class SchemaCrossReferenceSourceInfo extends KeYCrossReferenceSourceInfo { diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/visitor/ProgramContextAdder.java b/key.core/src/main/java/de/uka/ilkd/key/java/visitor/ProgramContextAdder.java index 106d3bca3ed..ca6a997d0fa 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/visitor/ProgramContextAdder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/visitor/ProgramContextAdder.java @@ -3,8 +3,6 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.java.visitor; -import java.rmi.UnexpectedException; - import de.uka.ilkd.key.java.JavaNonTerminalProgramElement; import de.uka.ilkd.key.java.ProgramElement; import de.uka.ilkd.key.java.Statement; @@ -85,7 +83,7 @@ protected JavaNonTerminalProgramElement wrap(JavaNonTerminalProgramElement conte return createExecStatementWrapper((StatementBlock) body, (Exec) context); } else { throw new RuntimeException( - new UnexpectedException("Unexpected block type: " + context.getClass())); + new RuntimeException("Unexpected block type: " + context.getClass())); } } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java index a72c2a7279c..bdd47597931 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java @@ -41,6 +41,7 @@ import org.key_project.prover.sequent.SequentFormula; import org.key_project.util.collection.*; +import antlr.RecognitionException; import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.RuleContext; import org.antlr.v4.runtime.Token; @@ -819,6 +820,7 @@ private void addGoalTemplate(String id, Object rwObj, Sequent addSeq, gt = new TacletGoalTemplate(addSeq, addRList, pvs); } else { if (b instanceof NoFindTacletBuilder) { + // there is a replacewith without a find. throw new BuildingException(ctx, "there is a replacewith without a find"); } else if (b instanceof SuccTacletBuilder || b instanceof AntecTacletBuilder) { if (rwObj instanceof Sequent rwSeq) { diff --git a/key.core/src/main/java/module-info.java b/key.core/src/main/java/module-info.java index ab61a1fe083..391a840927e 100644 --- a/key.core/src/main/java/module-info.java +++ b/key.core/src/main/java/module-info.java @@ -1,6 +1,6 @@ import de.uka.ilkd.key.macros.ProofMacro; -import de.uka.ilkd.key.macros.scripts.ProofScriptCommand; import de.uka.ilkd.key.proof.init.DefaultProfileResolver; +import de.uka.ilkd.key.scripts.ProofScriptCommand; /** * @@ -42,12 +42,10 @@ exports de.uka.ilkd.key.logic.equality; exports de.uka.ilkd.key.rule.label; exports de.uka.ilkd.key.macros; - exports de.uka.ilkd.key.macros.scripts; - exports de.uka.ilkd.key.prover; + exports de.uka.ilkd.key.scripts; exports de.uka.ilkd.key.strategy.feature; exports de.uka.ilkd.key.strategy.definition; exports de.uka.ilkd.key.speclang.translation; - exports de.uka.ilkd.key.proof.rulefilter; exports de.uka.ilkd.key.strategy.feature.instantiator; exports de.uka.ilkd.key.strategy.termProjection; exports de.uka.ilkd.key.strategy.termfeature; @@ -75,6 +73,8 @@ exports de.uka.ilkd.key.smt.newsmt2; exports de.uka.ilkd.key.util.pp; exports de.uka.ilkd.key.axiom_abstraction; + exports de.uka.ilkd.key.proof.calculus; + exports de.uka.ilkd.key.proof.init.loader; requires org.slf4j; requires key.recoder; requires org.key_project.ncore; @@ -83,6 +83,8 @@ requires org.jspecify; requires org.antlr.antlr4.runtime; requires java.scripting; + requires org.key_project.prover; + requires org.checkerframework.checker.qual; provides ProofMacro with de.uka.ilkd.key.informationflow.macros.FullInformationFlowAutoPilotMacro, @@ -108,36 +110,36 @@ de.uka.ilkd.key.macros.TranscendentalFloatSMTMacro; provides ProofScriptCommand with - de.uka.ilkd.key.macros.scripts.EchoCommand, - de.uka.ilkd.key.macros.scripts.MacroCommand, - de.uka.ilkd.key.macros.scripts.FocusCommand, - de.uka.ilkd.key.macros.scripts.AutoCommand, - de.uka.ilkd.key.macros.scripts.CutCommand, - de.uka.ilkd.key.macros.scripts.SetCommand, - de.uka.ilkd.key.macros.scripts.SetEchoCommand, - de.uka.ilkd.key.macros.scripts.SetFailOnClosedCommand, - de.uka.ilkd.key.macros.scripts.SMTCommand, - de.uka.ilkd.key.macros.scripts.RuleCommand, - de.uka.ilkd.key.macros.scripts.ActivateCommand, - de.uka.ilkd.key.macros.scripts.LeaveCommand, - de.uka.ilkd.key.macros.scripts.TryCloseCommand, - de.uka.ilkd.key.macros.scripts.ExitCommand, - de.uka.ilkd.key.macros.scripts.InstantiateCommand, - de.uka.ilkd.key.macros.scripts.SelectCommand, - de.uka.ilkd.key.macros.scripts.ScriptCommand, - de.uka.ilkd.key.macros.scripts.LetCommand, - de.uka.ilkd.key.macros.scripts.SaveInstCommand, - de.uka.ilkd.key.macros.scripts.SaveNewNameCommand, - de.uka.ilkd.key.macros.scripts.SchemaVarCommand, - de.uka.ilkd.key.macros.scripts.JavascriptCommand, - de.uka.ilkd.key.macros.scripts.SkipCommand, - de.uka.ilkd.key.macros.scripts.AxiomCommand, - de.uka.ilkd.key.macros.scripts.AssumeCommand, - de.uka.ilkd.key.macros.scripts.AssertCommand, - de.uka.ilkd.key.macros.scripts.RewriteCommand, - de.uka.ilkd.key.macros.scripts.AllCommand, - de.uka.ilkd.key.macros.scripts.HideCommand, - de.uka.ilkd.key.macros.scripts.UnhideCommand; + de.uka.ilkd.key.scripts.EchoCommand, + de.uka.ilkd.key.scripts.MacroCommand, + de.uka.ilkd.key.scripts.FocusCommand, + de.uka.ilkd.key.scripts.AutoCommand, + de.uka.ilkd.key.scripts.CutCommand, + de.uka.ilkd.key.scripts.SetCommand, + de.uka.ilkd.key.scripts.SetEchoCommand, + de.uka.ilkd.key.scripts.SetFailOnClosedCommand, + de.uka.ilkd.key.scripts.SMTCommand, + de.uka.ilkd.key.scripts.RuleCommand, + de.uka.ilkd.key.scripts.ActivateCommand, + de.uka.ilkd.key.scripts.LeaveCommand, + de.uka.ilkd.key.scripts.TryCloseCommand, + de.uka.ilkd.key.scripts.ExitCommand, + de.uka.ilkd.key.scripts.InstantiateCommand, + de.uka.ilkd.key.scripts.SelectCommand, + de.uka.ilkd.key.scripts.ScriptCommand, + de.uka.ilkd.key.scripts.LetCommand, + de.uka.ilkd.key.scripts.SaveInstCommand, + de.uka.ilkd.key.scripts.SaveNewNameCommand, + de.uka.ilkd.key.scripts.SchemaVarCommand, + de.uka.ilkd.key.scripts.JavascriptCommand, + de.uka.ilkd.key.scripts.SkipCommand, + de.uka.ilkd.key.scripts.AxiomCommand, + de.uka.ilkd.key.scripts.AssumeCommand, + de.uka.ilkd.key.scripts.AssertCommand, + de.uka.ilkd.key.scripts.RewriteCommand, + de.uka.ilkd.key.scripts.AllCommand, + de.uka.ilkd.key.scripts.HideCommand, + de.uka.ilkd.key.scripts.UnhideCommand; provides DefaultProfileResolver with de.uka.ilkd.key.proof.init.JavaProfileDefaultProfileResolver, diff --git a/key.ui/src/main/java/module-info.java b/key.ui/src/main/java/module-info.java index 627806cab58..453899ab0a9 100644 --- a/key.ui/src/main/java/module-info.java +++ b/key.ui/src/main/java/module-info.java @@ -18,6 +18,9 @@ requires key.recoder; requires org.key_project.core.rifl; requires java.compiler; + requires docking.frames.core; + requires docking.frames.common; + requires org.key_project.prover; provides de.uka.ilkd.key.gui.extension.api.KeYGuiExtension with de.uka.ilkd.key.gui.originlabels.OriginTermLabelsExt, diff --git a/recoder/src/main/java/recoder/service/DefaultProgramModelInfo.java b/recoder/src/main/java/recoder/service/DefaultProgramModelInfo.java index 245712d57ec..2d7dff62e4a 100644 --- a/recoder/src/main/java/recoder/service/DefaultProgramModelInfo.java +++ b/recoder/src/main/java/recoder/service/DefaultProgramModelInfo.java @@ -63,7 +63,7 @@ protected final void updateModel() { /** * Internally used to register a subtype link. */ - void registerSubtype(ClassType subtype, ClassType supertype) { + protected void registerSubtype(ClassType subtype, ClassType supertype) { ProgramModelInfo pmi = supertype.getProgramModelInfo(); if (pmi != this) { ((DefaultProgramModelInfo) pmi).registerSubtype(subtype, supertype); From 4e515b323f835f74c07f94df9ddb68f77d28a7cc Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Wed, 18 Jun 2025 17:33:01 +0200 Subject: [PATCH 18/22] wip --- key.core/src/main/java/module-info.java | 5 ++++ .../src/main/java/module-info.java | 30 +++++++++++++++++++ key.ncore/src/main/java/module-info.java | 13 ++++++++ key.ui/build.gradle | 4 +-- .../de/uka/ilkd/key/core/KeYMediator.java | 2 +- .../main/java/de/uka/ilkd/key/core/Main.java | 4 +-- .../java/de/uka/ilkd/key/core/Watchdog.java | 2 +- .../de/uka/ilkd/key/gui/InfoTreeModel.java | 2 +- .../java/de/uka/ilkd/key/gui/InfoView.java | 4 +-- .../java/de/uka/ilkd/key/gui/IssueDialog.java | 2 +- .../ilkd/key/gui/KeyboardTacletExtension.java | 4 +-- .../java/de/uka/ilkd/key/gui/MainWindow.java | 10 ++++++- .../java/de/uka/ilkd/key/gui/TaskTree.java | 5 +--- .../key/gui/WindowUserInterfaceControl.java | 5 ++-- .../gui/actions/KeYProjectHomepageAction.java | 2 +- .../gui/actions/OpenSingleJavaFileAction.java | 2 +- .../key/gui/actions/RunAllProofsAction.java | 2 +- .../ilkd/key/gui/docking/DockingHelper.java | 21 ++++++------- .../ilkd/key/gui/docking/DockingLayout.java | 6 ++-- .../ilkd/key/gui/docking/DynamicCMenu.java | 25 ++++++++-------- .../ilkd/key/gui/extension/api/TabPanel.java | 4 +-- .../de/uka/ilkd/key/gui/help/HelpFacade.java | 6 ++-- .../LemmataAutoModeOptions.java | 4 +-- .../ilkd/key/gui/nodeviews/SequentView.java | 2 +- .../key/gui/nodeviews/SequentViewDock.java | 6 ++-- .../OriginTermLabelVisualizer.java | 2 +- .../ProofTreeSettingsMenuFactory.java | 8 ++--- .../ilkd/key/gui/prooftree/ProofTreeView.java | 4 +-- .../uka/ilkd/key/gui/smt/ProgressDialog.java | 2 +- .../AbstractMediatorUserInterfaceControl.java | 4 +-- .../key/ui/ConsoleUserInterfaceControl.java | 2 +- .../key/{ => ui}/proof/io/ProblemLoader.java | 4 ++- .../key/{ => ui}/proof/mgt/BasicTask.java | 4 ++- .../ilkd/key/{ => ui}/proof/mgt/EnvNode.java | 4 ++- .../proof/mgt/ProofAggregateTask.java | 4 ++- .../key/{ => ui}/proof/mgt/TaskTreeModel.java | 3 +- .../key/{ => ui}/proof/mgt/TaskTreeNode.java | 4 ++- .../key/ui/util}/CheckedProcessBuilder.java | 2 +- .../ilkd/key/{ => ui}/util/CommandLine.java | 2 +- .../{ => ui}/util/CommandLineException.java | 2 +- .../key/{ => ui}/util/DoNothingCaret.java | 2 +- .../key/{ => ui}/util/PreferenceSaver.java | 2 +- .../uka/ilkd/key/ui/util}/SwingUtil.java | 4 +-- .../key/{ => ui}/util/ThreadUtilities.java | 2 +- .../ilkd/key/{ => ui}/util/XMLResources.java | 2 +- key.ui/src/main/java/module-info.java | 18 +++++++++-- .../java/de/uka/ilkd/key/gui/ChaosMonkey.java | 2 +- key.util/src/main/java/module-info.java | 18 +++++++++++ .../plugins/caching/CachedProofBranch.java | 2 +- .../gui/plugins/caching/CachingException.java | 2 +- .../gui/plugins/caching/CachingExtension.java | 18 +++++------ .../plugins/caching/CachingPruneHandler.java | 6 ++-- .../DefaultReferenceSearchDialogListener.java | 2 +- .../caching/ReferenceSearchButton.java | 4 +-- .../caching/ReferenceSearchDialog.java | 12 ++++---- .../ReferenceSearchDialogListener.java | 2 +- .../plugins/caching/ReferenceSearchTable.java | 2 +- .../caching/actions/CloseAllByReference.java | 6 ++-- .../caching/actions/CloseByReference.java | 4 ++- .../caching/actions/CopyReferencedProof.java | 2 +- .../caching/actions/GotoReferenceAction.java | 2 +- .../RemoveCachingInformationAction.java | 2 +- .../settings/CachingSettingsProvider.java | 2 +- .../settings/ProofCachingSettings.java | 2 +- .../caching/toolbar/CachingToggleAction.java | 2 +- .../proof/reference/ProgramMethodFinder.java | 2 +- .../proof/reference/ReferenceSearcher.java | 5 ++-- keyext.caching/src/main/java/module-info.java | 9 ++++++ .../gui/IsabelleProgressDialog.java | 2 +- keyext.slicing/src/main/java/module-info.java | 12 ++++++++ .../java/org/key_project/slicing/Main.java | 6 ++-- .../slicing/ui/SlicingLeftPanel.java | 12 ++++---- .../src/main/java/module-info.java | 4 +++ 73 files changed, 259 insertions(+), 138 deletions(-) create mode 100644 key.ncore.calculus/src/main/java/module-info.java create mode 100644 key.ncore/src/main/java/module-info.java rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/proof/io/ProblemLoader.java (97%) rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/proof/mgt/BasicTask.java (94%) rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/proof/mgt/EnvNode.java (91%) rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/proof/mgt/ProofAggregateTask.java (94%) rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/proof/mgt/TaskTreeModel.java (97%) rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/proof/mgt/TaskTreeNode.java (83%) rename key.ui/src/main/java/{org/key_project/util/java => de/uka/ilkd/key/ui/util}/CheckedProcessBuilder.java (98%) rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/util/CommandLine.java (99%) rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/util/CommandLineException.java (97%) rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/util/DoNothingCaret.java (98%) rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/util/PreferenceSaver.java (99%) rename key.ui/src/main/java/{org/key_project/util/java => de/uka/ilkd/key/ui/util}/SwingUtil.java (98%) rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/util/ThreadUtilities.java (98%) rename key.ui/src/main/java/de/uka/ilkd/key/{ => ui}/util/XMLResources.java (98%) create mode 100644 key.util/src/main/java/module-info.java rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/CachedProofBranch.java (95%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/CachingException.java (94%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/CachingExtension.java (94%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/CachingPruneHandler.java (93%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/DefaultReferenceSearchDialogListener.java (97%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/ReferenceSearchButton.java (96%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/ReferenceSearchDialog.java (90%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/ReferenceSearchDialogListener.java (92%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/ReferenceSearchTable.java (98%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/actions/CloseAllByReference.java (92%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/actions/CloseByReference.java (93%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/actions/CopyReferencedProof.java (97%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/actions/GotoReferenceAction.java (95%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/actions/RemoveCachingInformationAction.java (95%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/settings/CachingSettingsProvider.java (98%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/settings/ProofCachingSettings.java (97%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/gui/plugins/caching/toolbar/CachingToggleAction.java (95%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/proof/reference/ProgramMethodFinder.java (95%) rename keyext.caching/src/main/java/de/uka/ilkd/key/{ => caching}/proof/reference/ReferenceSearcher.java (97%) diff --git a/key.core/src/main/java/module-info.java b/key.core/src/main/java/module-info.java index 391a840927e..84e934b9b78 100644 --- a/key.core/src/main/java/module-info.java +++ b/key.core/src/main/java/module-info.java @@ -1,14 +1,17 @@ import de.uka.ilkd.key.macros.ProofMacro; import de.uka.ilkd.key.proof.init.DefaultProfileResolver; import de.uka.ilkd.key.scripts.ProofScriptCommand; +import org.jspecify.annotations.NullMarked; /** * * @author Alexander Weigl * @version 1 (31.03.24) */ +@NullMarked module org.key_project.core { exports de.uka.ilkd.key.java; + exports de.uka.ilkd.key.smt.communication; exports de.uka.ilkd.key.java.abstraction; exports de.uka.ilkd.key.logic.op; exports de.uka.ilkd.key.proof; @@ -75,6 +78,8 @@ exports de.uka.ilkd.key.axiom_abstraction; exports de.uka.ilkd.key.proof.calculus; exports de.uka.ilkd.key.proof.init.loader; + exports de.uka.ilkd.key.proof.proofevent; + exports de.uka.ilkd.key.proof.replay; requires org.slf4j; requires key.recoder; requires org.key_project.ncore; diff --git a/key.ncore.calculus/src/main/java/module-info.java b/key.ncore.calculus/src/main/java/module-info.java new file mode 100644 index 00000000000..94346de55e5 --- /dev/null +++ b/key.ncore.calculus/src/main/java/module-info.java @@ -0,0 +1,30 @@ +/** + * @author Alexander Weigl + * @version 1 (6/18/25) + */ +module org.key_project.prover { + exports org.key_project.prover.sequent; + exports org.key_project.prover.rules; + exports org.key_project.prover.proof; + exports org.key_project.prover.proof.rulefilter; + exports org.key_project.prover.strategy; + exports org.key_project.prover.engine; + exports org.key_project.prover.rules.conditions; + exports org.key_project.prover.rules.tacletbuilder; + exports org.key_project.prover.strategy.costbased; + exports org.key_project.prover.engine.impl; + exports org.key_project.prover.strategy.costbased.feature; + exports org.key_project.prover.rules.instantiation; + exports org.key_project.prover.rules.instantiation.caches; + exports org.key_project.prover.rules.matcher.vm.instruction; + exports org.key_project.prover.strategy.costbased.termProjection; + exports org.key_project.prover.strategy.costbased.termfeature; + exports org.key_project.prover.strategy.costbased.termgenerator; + exports org.key_project.prover.strategy.costbased.feature.instantiator; + exports org.key_project.prover.rules.matcher.vm; + requires org.key_project.ncore; + requires org.key_project.util; + requires org.jspecify; + requires org.checkerframework.checker.qual; + requires org.slf4j; +} \ No newline at end of file diff --git a/key.ncore/src/main/java/module-info.java b/key.ncore/src/main/java/module-info.java new file mode 100644 index 00000000000..fbfa4da6a0f --- /dev/null +++ b/key.ncore/src/main/java/module-info.java @@ -0,0 +1,13 @@ +/** + * @author Alexander Weigl + * @version 1 (6/18/25) + */ +module org.key_project.ncore { + requires org.jspecify; + requires org.key_project.util; + requires org.slf4j; + exports org.key_project.logic; + exports org.key_project.logic.op; + exports org.key_project.logic.op.sv; + exports org.key_project.logic.sort; +} \ No newline at end of file diff --git a/key.ui/build.gradle b/key.ui/build.gradle index 3694bb387e6..942983671f3 100644 --- a/key.ui/build.gradle +++ b/key.ui/build.gradle @@ -27,8 +27,8 @@ dependencies { //logging implementation used by the slf4j implementation 'ch.qos.logback:logback-classic:1.5.18' - api 'org.key-project:docking-frames-common:1.1.3p1' - api 'org.key-project:docking-frames-core:1.1.3p1' + api 'org.key-project:docking-frames-common:1.1.3p4-SNAPSHOT' + api 'org.key-project:docking-frames-core:1.1.3p4-SNAPSHOT' runtimeOnly project(":keyext.ui.testgen") runtimeOnly project(":keyext.caching") diff --git a/key.ui/src/main/java/de/uka/ilkd/key/core/KeYMediator.java b/key.ui/src/main/java/de/uka/ilkd/key/core/KeYMediator.java index 993f4ef0d08..257a86eb605 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/core/KeYMediator.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/core/KeYMediator.java @@ -31,7 +31,7 @@ import de.uka.ilkd.key.rule.OneStepSimplifier; import de.uka.ilkd.key.settings.ProofSettings; import de.uka.ilkd.key.ui.AbstractMediatorUserInterfaceControl; -import de.uka.ilkd.key.util.ThreadUtilities; +import de.uka.ilkd.key.ui.util.ThreadUtilities; import org.key_project.proof.LocationVariableTracker; import org.key_project.prover.engine.TaskFinishedInfo; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/core/Main.java b/key.ui/src/main/java/de/uka/ilkd/key/core/Main.java index 642d7b04b8e..e2cdae29e03 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/core/Main.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/core/Main.java @@ -34,8 +34,8 @@ import de.uka.ilkd.key.ui.AbstractMediatorUserInterfaceControl; import de.uka.ilkd.key.ui.ConsoleUserInterfaceControl; import de.uka.ilkd.key.ui.Verbosity; -import de.uka.ilkd.key.util.CommandLine; -import de.uka.ilkd.key.util.CommandLineException; +import de.uka.ilkd.key.ui.util.CommandLine; +import de.uka.ilkd.key.ui.util.CommandLineException; import de.uka.ilkd.key.util.Debug; import de.uka.ilkd.key.util.KeYConstants; import de.uka.ilkd.key.util.rifl.RIFLTransformer; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/core/Watchdog.java b/key.ui/src/main/java/de/uka/ilkd/key/core/Watchdog.java index e113980483a..cc3d1bfcdf2 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/core/Watchdog.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/core/Watchdog.java @@ -6,7 +6,7 @@ import java.awt.*; import java.util.Set; -import de.uka.ilkd.key.util.ThreadUtilities; +import de.uka.ilkd.key.ui.util.ThreadUtilities; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoTreeModel.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoTreeModel.java index e5c2656b37e..169d6cb6f40 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoTreeModel.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoTreeModel.java @@ -13,7 +13,7 @@ import de.uka.ilkd.key.rule.OneStepSimplifier; import de.uka.ilkd.key.rule.Taclet; import de.uka.ilkd.key.util.MiscTools; -import de.uka.ilkd.key.util.XMLResources; +import de.uka.ilkd.key.ui.util.XMLResources; import org.key_project.logic.Name; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoView.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoView.java index 27200a52ac8..6b1914696bd 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoView.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoView.java @@ -26,8 +26,8 @@ import de.uka.ilkd.key.proof.event.ProofDisposedEvent; import de.uka.ilkd.key.proof.event.ProofDisposedListener; import de.uka.ilkd.key.rule.Rule; -import de.uka.ilkd.key.util.ThreadUtilities; -import de.uka.ilkd.key.util.XMLResources; +import de.uka.ilkd.key.ui.util.ThreadUtilities; +import de.uka.ilkd.key.ui.util.XMLResources; /** * Class for info contents displayed in {@link MainWindow}. diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/IssueDialog.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/IssueDialog.java index a882eb57afd..4cc849fe61c 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/IssueDialog.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/IssueDialog.java @@ -41,7 +41,7 @@ import org.key_project.util.collection.ImmutableSet; import org.key_project.util.java.IOUtil; import org.key_project.util.java.StringUtil; -import org.key_project.util.java.SwingUtil; +import de.uka.ilkd.key.ui.util.SwingUtil; import org.antlr.v4.runtime.InputMismatchException; import org.antlr.v4.runtime.NoViableAltException; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/KeyboardTacletExtension.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/KeyboardTacletExtension.java index c4e0f344c75..23eaaf74d20 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/KeyboardTacletExtension.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/KeyboardTacletExtension.java @@ -32,14 +32,14 @@ import de.uka.ilkd.key.rule.TacletApp; import de.uka.ilkd.key.ui.MediatorProofControl; +import org.key_project.dockingframes.common.common.action.CAction; +import org.key_project.dockingframes.common.common.action.CDropDownButton; import org.key_project.prover.proof.rulefilter.TacletFilter; import org.key_project.prover.rules.RuleApp; import org.key_project.prover.rules.Taclet; import org.key_project.util.collection.ImmutableList; import org.key_project.util.collection.ImmutableSet; -import bibliothek.gui.dock.common.action.CAction; -import bibliothek.gui.dock.common.action.CDropDownButton; import net.miginfocom.layout.CC; import net.miginfocom.swing.MigLayout; import org.jspecify.annotations.NonNull; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java index 956ae344de9..c7bfacb93d2 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java @@ -26,6 +26,7 @@ import javax.swing.event.MenuListener; import javax.swing.event.MouseInputAdapter; +import com.formdev.flatlaf.FlatLightLaf; import de.uka.ilkd.key.control.AutoModeListener; import de.uka.ilkd.key.control.TermLabelVisibilityManager; import de.uka.ilkd.key.core.KeYMediator; @@ -65,11 +66,18 @@ import de.uka.ilkd.key.smt.SolverTypeCollection; import de.uka.ilkd.key.smt.solvertypes.SolverType; import de.uka.ilkd.key.ui.AbstractMediatorUserInterfaceControl; +import de.uka.ilkd.key.ui.util.PreferenceSaver; +import de.uka.ilkd.key.ui.util.ThreadUtilities; import de.uka.ilkd.key.util.KeYConstants; import de.uka.ilkd.key.util.KeYResourceManager; import de.uka.ilkd.key.util.PreferenceSaver; import de.uka.ilkd.key.util.ThreadUtilities; +import org.key_project.dockingframes.common.common.CControl; +import org.key_project.dockingframes.common.common.SingleCDockable; +import org.key_project.dockingframes.common.common.intern.CDockable; +import org.key_project.dockingframes.core.gui.dock.StackDockStation; +import org.key_project.dockingframes.core.gui.dock.station.stack.tab.layouting.TabPlacement; import org.key_project.logic.Name; import org.key_project.prover.rules.RuleApp; import org.key_project.prover.sequent.Sequent; @@ -433,7 +441,7 @@ private static void updateLookAndFeel() { UIManager.setLookAndFeel(laf); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) { - FlatLightLaf.setup(); + com.formdev.flatlaf.FlatLightLaf.setup(); } if (SystemInfo.isLinux) { diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/TaskTree.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/TaskTree.java index 88849097d66..e99f25d42a0 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/TaskTree.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/TaskTree.java @@ -27,13 +27,10 @@ import de.uka.ilkd.key.gui.fonticons.IconFactory; import de.uka.ilkd.key.gui.notification.events.AbandonTaskEvent; import de.uka.ilkd.key.proof.*; -import de.uka.ilkd.key.proof.mgt.BasicTask; -import de.uka.ilkd.key.proof.mgt.EnvNode; import de.uka.ilkd.key.proof.mgt.ProofEnvironment; import de.uka.ilkd.key.proof.mgt.ProofStatus; -import de.uka.ilkd.key.proof.mgt.TaskTreeModel; -import de.uka.ilkd.key.proof.mgt.TaskTreeNode; +import de.uka.ilkd.key.ui.proof.mgt.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/WindowUserInterfaceControl.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/WindowUserInterfaceControl.java index 8f738947e82..f7c5b26951b 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/WindowUserInterfaceControl.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/WindowUserInterfaceControl.java @@ -40,9 +40,10 @@ import de.uka.ilkd.key.strategy.StrategyProperties; import de.uka.ilkd.key.ui.AbstractMediatorUserInterfaceControl; import de.uka.ilkd.key.ui.MediatorProofControl; +import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import de.uka.ilkd.key.util.KeYConstants; import de.uka.ilkd.key.util.MiscTools; -import de.uka.ilkd.key.util.ThreadUtilities; +import de.uka.ilkd.key.ui.util.ThreadUtilities; import org.key_project.prover.engine.ProverCore; import org.key_project.prover.engine.TaskFinishedInfo; @@ -50,7 +51,7 @@ import org.key_project.prover.engine.impl.ApplyStrategyInfo; import org.key_project.util.collection.ImmutableSet; import org.key_project.util.collection.Pair; -import org.key_project.util.java.SwingUtil; +import de.uka.ilkd.key.ui.util.SwingUtil; import org.antlr.v4.runtime.misc.ParseCancellationException; import org.slf4j.Logger; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeYProjectHomepageAction.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeYProjectHomepageAction.java index 925fc578acc..a4f62ab75be 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeYProjectHomepageAction.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeYProjectHomepageAction.java @@ -13,7 +13,7 @@ import de.uka.ilkd.key.gui.MainWindow; import de.uka.ilkd.key.gui.fonticons.IconFactory; -import org.key_project.util.java.SwingUtil; +import de.uka.ilkd.key.ui.util.SwingUtil; /** * Open the KeY project homepage in the system default browser. May be inactive if Java 6 Desktop diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/OpenSingleJavaFileAction.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/OpenSingleJavaFileAction.java index c97ab4b2aed..fa44839ae1a 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/OpenSingleJavaFileAction.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/OpenSingleJavaFileAction.java @@ -11,7 +11,7 @@ import de.uka.ilkd.key.gui.KeYFileChooser; import de.uka.ilkd.key.gui.MainWindow; import de.uka.ilkd.key.gui.WindowUserInterfaceControl; -import de.uka.ilkd.key.proof.io.ProblemLoader; +import de.uka.ilkd.key.ui.proof.io.ProblemLoader; /** * Offers a loading of a single Java file, without considering the folder as part of a classpath. diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/RunAllProofsAction.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/RunAllProofsAction.java index 798ce7bcdbd..6c4b294415b 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/RunAllProofsAction.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/RunAllProofsAction.java @@ -17,7 +17,7 @@ import de.uka.ilkd.key.gui.MainWindow; import de.uka.ilkd.key.gui.WindowUserInterfaceControl; import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.io.ProblemLoader; +import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import de.uka.ilkd.key.ui.MediatorProofControl; import org.jspecify.annotations.Nullable; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingHelper.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingHelper.java index 5c76e148649..2a9cb2c5bf8 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingHelper.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingHelper.java @@ -20,19 +20,16 @@ import de.uka.ilkd.key.gui.prooftree.ProofTreeView; import de.uka.ilkd.key.gui.sourceview.SourceViewFrame; -import bibliothek.gui.dock.common.CGrid; -import bibliothek.gui.dock.common.DefaultSingleCDockable; -import bibliothek.gui.dock.common.MultipleCDockable; -import bibliothek.gui.dock.common.SingleCDockable; -import bibliothek.gui.dock.common.action.CAction; -import bibliothek.gui.dock.common.action.CButton; -import bibliothek.gui.dock.common.action.CCheckBox; -import bibliothek.gui.dock.common.action.core.CommonDecoratableDockAction; -import bibliothek.gui.dock.common.intern.CDockable; -import bibliothek.gui.dock.common.intern.action.CDecorateableAction; -import bibliothek.gui.dock.control.focus.DefaultFocusRequest; -import bibliothek.gui.dock.control.focus.FocusRequest; import org.jspecify.annotations.NonNull; +import org.key_project.dockingframes.common.common.*; +import org.key_project.dockingframes.common.common.action.CAction; +import org.key_project.dockingframes.common.common.action.CButton; +import org.key_project.dockingframes.common.common.action.CCheckBox; +import org.key_project.dockingframes.common.common.action.core.CommonDecoratableDockAction; +import org.key_project.dockingframes.common.common.intern.*; +import org.key_project.dockingframes.common.common.intern.action.CDecorateableAction; +import org.key_project.dockingframes.core.gui.dock.control.focus.DefaultFocusRequest; +import org.key_project.dockingframes.core.gui.dock.control.focus.FocusRequest; public class DockingHelper { public final static List LEFT_TOP_PANEL = new LinkedList<>(); diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingLayout.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingLayout.java index 3c13e2fc612..1cc2f1501b0 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingLayout.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingLayout.java @@ -25,10 +25,10 @@ import de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeManager; import de.uka.ilkd.key.settings.PathConfig; -import bibliothek.gui.dock.common.CControl; -import bibliothek.gui.dock.util.IconManager; -import bibliothek.gui.dock.util.Priority; import org.jspecify.annotations.NonNull; +import org.key_project.dockingframes.common.common.CControl; +import org.key_project.dockingframes.core.gui.dock.util.IconManager; +import org.key_project.dockingframes.core.gui.dock.util.Priority; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DynamicCMenu.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DynamicCMenu.java index c57dcedd03e..255e52f8e70 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DynamicCMenu.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DynamicCMenu.java @@ -3,20 +3,21 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.gui.docking; +import org.key_project.dockingframes.common.common.action.CAction; +import org.key_project.dockingframes.common.common.action.CMenu; +import org.key_project.dockingframes.common.common.action.core.CommonDecoratableDockAction; +import org.key_project.dockingframes.common.common.intern.action.CDecorateableAction; +import org.key_project.dockingframes.core.gui.Dockable; +import org.key_project.dockingframes.core.gui.dock.action.ActionType; +import org.key_project.dockingframes.core.gui.dock.action.DockActionSource; +import org.key_project.dockingframes.core.gui.dock.action.MenuDockAction; +import org.key_project.dockingframes.core.gui.dock.action.actions.SimpleDockAction; +import org.key_project.dockingframes.core.gui.dock.action.view.ActionViewConverter; +import org.key_project.dockingframes.core.gui.dock.action.view.ViewTarget; + import java.util.function.Supplier; import javax.swing.*; -import bibliothek.gui.Dockable; -import bibliothek.gui.dock.action.ActionType; -import bibliothek.gui.dock.action.DockActionSource; -import bibliothek.gui.dock.action.MenuDockAction; -import bibliothek.gui.dock.action.actions.SimpleDockAction; -import bibliothek.gui.dock.action.view.ActionViewConverter; -import bibliothek.gui.dock.action.view.ViewTarget; -import bibliothek.gui.dock.common.action.CAction; -import bibliothek.gui.dock.common.action.CMenu; -import bibliothek.gui.dock.common.action.core.CommonDecoratableDockAction; -import bibliothek.gui.dock.common.intern.action.CDecorateableAction; /** * CMenu that gets (re-)generated when the action gets fired using the provided supplier. @@ -75,7 +76,7 @@ public DockActionSource getMenu(Dockable dockable) { } public V createView(ViewTarget target, ActionViewConverter converter, - Dockable dockable) { + Dockable dockable) { return converter.createView(ActionType.MENU, this, target, dockable); } diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/extension/api/TabPanel.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/extension/api/TabPanel.java index dcd7a8ab8d2..9f6a5d57b1b 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/extension/api/TabPanel.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/extension/api/TabPanel.java @@ -7,10 +7,10 @@ import java.util.Collections; import javax.swing.*; -import bibliothek.gui.dock.common.action.CAction; -import bibliothek.gui.dock.common.intern.DefaultCDockable; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; +import org.key_project.dockingframes.common.common.action.CAction; +import org.key_project.dockingframes.common.common.intern.DefaultCDockable; /** * @author Alexander Weigl diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/help/HelpFacade.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/help/HelpFacade.java index 5553d9d6d7c..be81e337d02 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/help/HelpFacade.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/help/HelpFacade.java @@ -14,10 +14,10 @@ import de.uka.ilkd.key.gui.actions.KeyAction; import de.uka.ilkd.key.gui.fonticons.IconFactory; -import org.key_project.util.java.SwingUtil; +import de.uka.ilkd.key.ui.util.SwingUtil; -import bibliothek.gui.dock.common.action.CAction; -import bibliothek.gui.dock.common.action.CButton; +import org.key_project.dockingframes.common.common.action.CAction; +import org.key_project.dockingframes.common.common.action.CButton; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/lemmatagenerator/LemmataAutoModeOptions.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/lemmatagenerator/LemmataAutoModeOptions.java index b8f3a450684..cade32c509a 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/lemmatagenerator/LemmataAutoModeOptions.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/lemmatagenerator/LemmataAutoModeOptions.java @@ -9,8 +9,8 @@ import de.uka.ilkd.key.core.Main; import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.util.CommandLine; -import de.uka.ilkd.key.util.CommandLineException; +import de.uka.ilkd.key.ui.util.CommandLine; +import de.uka.ilkd.key.ui.util.CommandLineException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentView.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentView.java index ac3779a9475..ceb2e0498bc 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentView.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentView.java @@ -28,7 +28,7 @@ import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.settings.ProofIndependentSettings; import de.uka.ilkd.key.settings.ViewSettings; -import de.uka.ilkd.key.util.DoNothingCaret; +import de.uka.ilkd.key.ui.util.DoNothingCaret; import org.key_project.logic.PosInTerm; import org.key_project.prover.sequent.FormulaChangeInfo; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentViewDock.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentViewDock.java index 626bbb9e309..c640c7a7b33 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentViewDock.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentViewDock.java @@ -15,10 +15,10 @@ import de.uka.ilkd.key.gui.fonticons.IconFactory; import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.Proof; +import org.key_project.dockingframes.common.common.CLocation; +import org.key_project.dockingframes.common.common.DefaultMultipleCDockable; +import org.key_project.dockingframes.common.common.NullMultipleCDockableFactory; -import bibliothek.gui.dock.common.CLocation; -import bibliothek.gui.dock.common.DefaultMultipleCDockable; -import bibliothek.gui.dock.common.NullMultipleCDockableFactory; /** * @author Alexander Weigl diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/originlabels/OriginTermLabelVisualizer.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/originlabels/OriginTermLabelVisualizer.java index 4a03a6caa76..2173ec27e04 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/originlabels/OriginTermLabelVisualizer.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/originlabels/OriginTermLabelVisualizer.java @@ -31,6 +31,7 @@ import de.uka.ilkd.key.proof.event.ProofDisposedListener; import de.uka.ilkd.key.util.pp.UnbalancedBlocksException; +import org.key_project.dockingframes.common.common.DefaultSingleCDockable; import org.key_project.logic.PosInTerm; import org.key_project.prover.sequent.PosInOccurrence; import org.key_project.prover.sequent.Sequent; @@ -38,7 +39,6 @@ import org.key_project.util.collection.ImmutableList; import org.key_project.util.collection.ImmutableSLList; -import bibliothek.gui.dock.common.DefaultSingleCDockable; /** * This UI component visualizes the {@link OriginTermLabel}s of a term and its sub-terms. diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeSettingsMenuFactory.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeSettingsMenuFactory.java index 057bf1fc44c..3f9afa8f304 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeSettingsMenuFactory.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeSettingsMenuFactory.java @@ -11,11 +11,11 @@ import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.settings.ProofIndependentSettings; +import org.key_project.dockingframes.common.common.action.CAction; +import org.key_project.dockingframes.common.common.action.CButton; +import org.key_project.dockingframes.common.common.action.CCheckBox; +import org.key_project.dockingframes.common.common.action.CMenu; -import bibliothek.gui.dock.common.action.CAction; -import bibliothek.gui.dock.common.action.CButton; -import bibliothek.gui.dock.common.action.CCheckBox; -import bibliothek.gui.dock.common.action.CMenu; import static de.uka.ilkd.key.gui.prooftree.ProofTreePopupFactory.ICON_SIZE; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeView.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeView.java index 9d80b6198f2..7d465e20165 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeView.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeView.java @@ -37,13 +37,13 @@ import de.uka.ilkd.key.proof.*; import de.uka.ilkd.key.proof.reference.ClosedBy; import de.uka.ilkd.key.settings.ProofIndependentSettings; -import de.uka.ilkd.key.util.ThreadUtilities; +import de.uka.ilkd.key.ui.util.ThreadUtilities; +import org.key_project.dockingframes.common.common.action.CAction; import org.key_project.prover.rules.RuleApp; import org.key_project.prover.sequent.PosInOccurrence; import org.key_project.util.collection.ImmutableList; -import bibliothek.gui.dock.common.action.CAction; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; import org.slf4j.Logger; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/smt/ProgressDialog.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/smt/ProgressDialog.java index 5a9a092ac29..db61f612942 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/smt/ProgressDialog.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/smt/ProgressDialog.java @@ -18,7 +18,7 @@ import de.uka.ilkd.key.gui.smt.ProgressTable.ProgressTableListener; import de.uka.ilkd.key.smt.SMTFocusResults; -import org.key_project.util.java.SwingUtil; +import de.uka.ilkd.key.ui.util.SwingUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/ui/AbstractMediatorUserInterfaceControl.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/AbstractMediatorUserInterfaceControl.java index bf2a9af1aeb..ba01f5bfb9a 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/ui/AbstractMediatorUserInterfaceControl.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/AbstractMediatorUserInterfaceControl.java @@ -24,7 +24,7 @@ import de.uka.ilkd.key.proof.init.AbstractProfile; import de.uka.ilkd.key.proof.init.InitConfig; import de.uka.ilkd.key.proof.init.ProofOblInput; -import de.uka.ilkd.key.proof.io.ProblemLoader; +import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import de.uka.ilkd.key.proof.io.ProofSaver; import de.uka.ilkd.key.proof.mgt.ProofEnvironment; import de.uka.ilkd.key.proof.mgt.ProofEnvironmentEvent; @@ -32,7 +32,7 @@ import de.uka.ilkd.key.prover.impl.DefaultTaskStartedInfo; import de.uka.ilkd.key.util.KeYResourceManager; import de.uka.ilkd.key.util.MiscTools; -import de.uka.ilkd.key.util.ThreadUtilities; +import de.uka.ilkd.key.ui.util.ThreadUtilities; import org.key_project.prover.engine.ProverTaskListener; import org.key_project.prover.engine.TaskStartedInfo; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/ui/ConsoleUserInterfaceControl.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/ConsoleUserInterfaceControl.java index 4b33d65c79b..0c43fc15bb4 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/ui/ConsoleUserInterfaceControl.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/ConsoleUserInterfaceControl.java @@ -30,7 +30,7 @@ import de.uka.ilkd.key.proof.init.ProblemInitializer; import de.uka.ilkd.key.proof.init.Profile; import de.uka.ilkd.key.proof.init.ProofOblInput; -import de.uka.ilkd.key.proof.io.ProblemLoader; +import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import de.uka.ilkd.key.proof.io.ProofSaver; import de.uka.ilkd.key.prover.impl.DefaultTaskStartedInfo; import de.uka.ilkd.key.rule.IBuiltInRuleApp; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/proof/io/ProblemLoader.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/io/ProblemLoader.java similarity index 97% rename from key.ui/src/main/java/de/uka/ilkd/key/proof/io/ProblemLoader.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/proof/io/ProblemLoader.java index cae184c5ce2..2ed7f24bf5d 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/proof/io/ProblemLoader.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/io/ProblemLoader.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.proof.io; +package de.uka.ilkd.key.ui.proof.io; import java.nio.file.Path; import java.util.List; @@ -12,6 +12,8 @@ import de.uka.ilkd.key.gui.notification.events.ExceptionFailureEvent; import de.uka.ilkd.key.proof.init.InitConfig; import de.uka.ilkd.key.proof.init.Profile; +import de.uka.ilkd.key.proof.io.AbstractProblemLoader; +import de.uka.ilkd.key.proof.io.ProblemLoaderControl; import de.uka.ilkd.key.prover.impl.DefaultTaskFinishedInfo; import de.uka.ilkd.key.prover.impl.DefaultTaskStartedInfo; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/BasicTask.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/BasicTask.java similarity index 94% rename from key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/BasicTask.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/BasicTask.java index ba2680a9cf4..4e58f657fd9 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/BasicTask.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/BasicTask.java @@ -1,13 +1,15 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.proof.mgt; +package de.uka.ilkd.key.ui.proof.mgt; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.MutableTreeNode; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.ProofAggregate; +import de.uka.ilkd.key.proof.mgt.ProofEnvironment; +import de.uka.ilkd.key.proof.mgt.ProofStatus; /** diff --git a/key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/EnvNode.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/EnvNode.java similarity index 91% rename from key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/EnvNode.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/EnvNode.java index bbfde9855fd..135a89f32a4 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/EnvNode.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/EnvNode.java @@ -1,12 +1,14 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.proof.mgt; +package de.uka.ilkd.key.ui.proof.mgt; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.MutableTreeNode; import de.uka.ilkd.key.proof.Proof; +import de.uka.ilkd.key.proof.mgt.ProofEnvironment; +import de.uka.ilkd.key.proof.mgt.ProofStatus; public class EnvNode extends DefaultMutableTreeNode implements TaskTreeNode { diff --git a/key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/ProofAggregateTask.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/ProofAggregateTask.java similarity index 94% rename from key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/ProofAggregateTask.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/ProofAggregateTask.java index 6f336253747..280eaa923bc 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/ProofAggregateTask.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/ProofAggregateTask.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.proof.mgt; +package de.uka.ilkd.key.ui.proof.mgt; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.MutableTreeNode; @@ -9,6 +9,8 @@ import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.ProofAggregate; import de.uka.ilkd.key.proof.SingleProof; +import de.uka.ilkd.key.proof.mgt.ProofEnvironment; +import de.uka.ilkd.key.proof.mgt.ProofStatus; public class ProofAggregateTask extends DefaultMutableTreeNode implements TaskTreeNode { diff --git a/key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/TaskTreeModel.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/TaskTreeModel.java similarity index 97% rename from key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/TaskTreeModel.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/TaskTreeModel.java index 355768da45c..342c5b0311c 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/TaskTreeModel.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/TaskTreeModel.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.proof.mgt; +package de.uka.ilkd.key.ui.proof.mgt; import java.util.LinkedHashMap; import java.util.Map; @@ -11,6 +11,7 @@ import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.ProofAggregate; +import de.uka.ilkd.key.proof.mgt.ProofEnvironment; public class TaskTreeModel extends DefaultTreeModel { diff --git a/key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/TaskTreeNode.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/TaskTreeNode.java similarity index 83% rename from key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/TaskTreeNode.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/TaskTreeNode.java index 6508357dac6..0c06c6cb08b 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/proof/mgt/TaskTreeNode.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/proof/mgt/TaskTreeNode.java @@ -1,12 +1,14 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.proof.mgt; +package de.uka.ilkd.key.ui.proof.mgt; import javax.swing.tree.MutableTreeNode; import javax.swing.tree.TreeNode; import de.uka.ilkd.key.proof.Proof; +import de.uka.ilkd.key.proof.mgt.ProofEnvironment; +import de.uka.ilkd.key.proof.mgt.ProofStatus; public interface TaskTreeNode extends MutableTreeNode { diff --git a/key.ui/src/main/java/org/key_project/util/java/CheckedProcessBuilder.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CheckedProcessBuilder.java similarity index 98% rename from key.ui/src/main/java/org/key_project/util/java/CheckedProcessBuilder.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/util/CheckedProcessBuilder.java index 08b37eec378..b7676be260d 100644 --- a/key.ui/src/main/java/org/key_project/util/java/CheckedProcessBuilder.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CheckedProcessBuilder.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package org.key_project.util.java; +package de.uka.ilkd.key.ui.util; import java.io.IOException; import java.util.Arrays; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLine.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java similarity index 99% rename from key.ui/src/main/java/de/uka/ilkd/key/util/CommandLine.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java index 9e28bc6272e..f71bc3b19c3 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLine.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java @@ -1,7 +1,7 @@ /* 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.util; +package de.uka.ilkd.key.ui.util; import java.io.File; import java.io.PrintStream; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLineException.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLineException.java similarity index 97% rename from key.ui/src/main/java/de/uka/ilkd/key/util/CommandLineException.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLineException.java index 3607fee1684..720c1a4ec04 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/util/CommandLineException.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLineException.java @@ -1,7 +1,7 @@ /* 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.util; +package de.uka.ilkd.key.ui.util; /** * Exception used by {@link CommandLine}. diff --git a/key.ui/src/main/java/de/uka/ilkd/key/util/DoNothingCaret.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/DoNothingCaret.java similarity index 98% rename from key.ui/src/main/java/de/uka/ilkd/key/util/DoNothingCaret.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/util/DoNothingCaret.java index 426019a923d..b08380acc1b 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/util/DoNothingCaret.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/DoNothingCaret.java @@ -1,7 +1,7 @@ /* 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.util; +package de.uka.ilkd.key.ui.util; import java.awt.*; import javax.swing.event.ChangeListener; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/util/PreferenceSaver.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/PreferenceSaver.java similarity index 99% rename from key.ui/src/main/java/de/uka/ilkd/key/util/PreferenceSaver.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/util/PreferenceSaver.java index 6a56b8bf20c..e0dd060c4c1 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/util/PreferenceSaver.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/PreferenceSaver.java @@ -1,7 +1,7 @@ /* 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.util; +package de.uka.ilkd.key.ui.util; import java.awt.*; import java.util.prefs.BackingStoreException; diff --git a/key.ui/src/main/java/org/key_project/util/java/SwingUtil.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/SwingUtil.java similarity index 98% rename from key.ui/src/main/java/org/key_project/util/java/SwingUtil.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/util/SwingUtil.java index 8285a9b99da..23b26af02f6 100644 --- a/key.ui/src/main/java/org/key_project/util/java/SwingUtil.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/SwingUtil.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package org.key_project.util.java; +package de.uka.ilkd.key.ui.util; import java.awt.*; @@ -17,7 +17,7 @@ import de.uka.ilkd.key.gui.fonticons.IconFactory; -import bibliothek.gui.dock.themes.basic.BasicDockableDisplayer; +import org.key_project.dockingframes.core.gui.dock.themes.basic.BasicDockableDisplayer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/util/ThreadUtilities.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/ThreadUtilities.java similarity index 98% rename from key.ui/src/main/java/de/uka/ilkd/key/util/ThreadUtilities.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/util/ThreadUtilities.java index 2588529aefd..631c1f7ab30 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/util/ThreadUtilities.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/ThreadUtilities.java @@ -1,7 +1,7 @@ /* 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.util; +package de.uka.ilkd.key.ui.util; import java.awt.EventQueue; import java.lang.reflect.InvocationTargetException; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/util/XMLResources.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/XMLResources.java similarity index 98% rename from key.ui/src/main/java/de/uka/ilkd/key/util/XMLResources.java rename to key.ui/src/main/java/de/uka/ilkd/key/ui/util/XMLResources.java index 3c50b745530..9ad1a7981fd 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/util/XMLResources.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/XMLResources.java @@ -1,7 +1,7 @@ /* 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.util; +package de.uka.ilkd.key.ui.util; import java.io.FileNotFoundException; import java.io.IOException; diff --git a/key.ui/src/main/java/module-info.java b/key.ui/src/main/java/module-info.java index 453899ab0a9..0a80240eebc 100644 --- a/key.ui/src/main/java/module-info.java +++ b/key.ui/src/main/java/module-info.java @@ -4,6 +4,18 @@ * @version 1 (31.03.24) */ module org.key_project.ui { + exports de.uka.ilkd.key.gui.extension.api; + exports de.uka.ilkd.key.gui; + exports de.uka.ilkd.key.gui.actions; + exports de.uka.ilkd.key.gui.configuration; + exports de.uka.ilkd.key.core; + exports de.uka.ilkd.key.gui.fonticons; + exports de.uka.ilkd.key.gui.help; + exports de.uka.ilkd.key.ui.proof.io; + exports de.uka.ilkd.key.gui.settings; + exports de.uka.ilkd.key.ui.util; + exports de.uka.ilkd.key.ui; + requires org.slf4j; requires java.desktop; requires org.key_project.core; @@ -18,9 +30,11 @@ requires key.recoder; requires org.key_project.core.rifl; requires java.compiler; - requires docking.frames.core; - requires docking.frames.common; + requires dockingframes.core; + requires dockingframes.common; requires org.key_project.prover; + requires org.antlr.antlr4.runtime; + requires java.management; provides de.uka.ilkd.key.gui.extension.api.KeYGuiExtension with de.uka.ilkd.key.gui.originlabels.OriginTermLabelsExt, diff --git a/key.ui/src/test/java/de/uka/ilkd/key/gui/ChaosMonkey.java b/key.ui/src/test/java/de/uka/ilkd/key/gui/ChaosMonkey.java index 99421e83e57..141428f9332 100644 --- a/key.ui/src/test/java/de/uka/ilkd/key/gui/ChaosMonkey.java +++ b/key.ui/src/test/java/de/uka/ilkd/key/gui/ChaosMonkey.java @@ -21,7 +21,7 @@ import de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeManager; import de.uka.ilkd.key.settings.ProofIndependentSettings; -import org.key_project.util.java.SwingUtil; +import de.uka.ilkd.key.ui.util.SwingUtil; import bibliothek.gui.dock.dockable.AbstractDockable; import org.junit.jupiter.api.*; diff --git a/key.util/src/main/java/module-info.java b/key.util/src/main/java/module-info.java new file mode 100644 index 00000000000..a68778b326f --- /dev/null +++ b/key.util/src/main/java/module-info.java @@ -0,0 +1,18 @@ +/** + * @author Alexander Weigl + * @version 1 (6/18/25) + */ +module org.key_project.util { + exports org.key_project.util.collection; + exports org.key_project.util; + exports org.key_project.util.java; + exports org.key_project.util.lookup; + exports org.key_project.util.bitops; + exports org.key_project.util.reflection; + exports org.key_project.util.helper; + requires java.desktop; + requires org.jspecify; + requires org.checkerframework.checker.qual; + requires org.slf4j; + requires org.checkerframework.checker.util; +} \ No newline at end of file diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachedProofBranch.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachedProofBranch.java similarity index 95% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachedProofBranch.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachedProofBranch.java index e55f9522710..cbad170289c 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachedProofBranch.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachedProofBranch.java @@ -1,7 +1,7 @@ /* 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.caching; +package de.uka.ilkd.key.caching.gui.plugins.caching; import java.io.File; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachingException.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingException.java similarity index 94% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachingException.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingException.java index f40de84378d..fc437442486 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachingException.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingException.java @@ -1,7 +1,7 @@ /* 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.caching; +package de.uka.ilkd.key.caching.gui.plugins.caching; /** * Helpful error message used when the proof cache cannot diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachingExtension.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingExtension.java similarity index 94% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachingExtension.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingExtension.java index 6a52bd25af2..08d28ef2d3f 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachingExtension.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingExtension.java @@ -1,7 +1,7 @@ /* 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.caching; +package de.uka.ilkd.key.caching.gui.plugins.caching; import java.util.ArrayList; import java.util.HashSet; @@ -9,6 +9,11 @@ import java.util.Set; import javax.swing.*; +import de.uka.ilkd.key.caching.gui.plugins.caching.actions.*; +import de.uka.ilkd.key.caching.gui.plugins.caching.settings.CachingSettingsProvider; +import de.uka.ilkd.key.caching.gui.plugins.caching.settings.ProofCachingSettings; +import de.uka.ilkd.key.caching.gui.plugins.caching.toolbar.CachingToggleAction; +import de.uka.ilkd.key.caching.proof.reference.ReferenceSearcher; import de.uka.ilkd.key.core.KeYMediator; import de.uka.ilkd.key.core.KeYSelectionEvent; import de.uka.ilkd.key.core.KeYSelectionListener; @@ -16,14 +21,6 @@ import de.uka.ilkd.key.gui.extension.api.ContextMenuKind; import de.uka.ilkd.key.gui.extension.api.KeYGuiExtension; import de.uka.ilkd.key.gui.help.HelpInfo; -import de.uka.ilkd.key.gui.plugins.caching.actions.CloseAllByReference; -import de.uka.ilkd.key.gui.plugins.caching.actions.CloseByReference; -import de.uka.ilkd.key.gui.plugins.caching.actions.CopyReferencedProof; -import de.uka.ilkd.key.gui.plugins.caching.actions.GotoReferenceAction; -import de.uka.ilkd.key.gui.plugins.caching.actions.RemoveCachingInformationAction; -import de.uka.ilkd.key.gui.plugins.caching.settings.CachingSettingsProvider; -import de.uka.ilkd.key.gui.plugins.caching.settings.ProofCachingSettings; -import de.uka.ilkd.key.gui.plugins.caching.toolbar.CachingToggleAction; import de.uka.ilkd.key.gui.settings.SettingsProvider; import de.uka.ilkd.key.macros.ProofMacro; import de.uka.ilkd.key.macros.TryCloseMacro; @@ -36,16 +33,15 @@ import de.uka.ilkd.key.proof.event.ProofDisposedListener; import de.uka.ilkd.key.proof.reference.ClosedBy; import de.uka.ilkd.key.proof.reference.CopyReferenceResolver; -import de.uka.ilkd.key.proof.reference.ReferenceSearcher; import de.uka.ilkd.key.proof.replay.CopyingProofReplayer; import de.uka.ilkd.key.prover.impl.ApplyStrategy; import org.key_project.prover.engine.ProverTaskListener; import org.key_project.prover.engine.TaskFinishedInfo; import org.key_project.prover.engine.TaskStartedInfo; -import org.key_project.util.collection.ImmutableList; import org.jspecify.annotations.NonNull; +import org.key_project.util.collection.ImmutableList; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachingPruneHandler.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingPruneHandler.java similarity index 93% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachingPruneHandler.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingPruneHandler.java index ef4cc2c269e..3f9bce61b5e 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/CachingPruneHandler.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingPruneHandler.java @@ -1,13 +1,13 @@ /* 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.caching; +package de.uka.ilkd.key.caching.gui.plugins.caching; +import de.uka.ilkd.key.caching.gui.plugins.caching.settings.CachingSettingsProvider; +import de.uka.ilkd.key.caching.gui.plugins.caching.settings.ProofCachingSettings; import de.uka.ilkd.key.core.KeYMediator; import de.uka.ilkd.key.gui.IssueDialog; import de.uka.ilkd.key.gui.MainWindow; -import de.uka.ilkd.key.gui.plugins.caching.settings.CachingSettingsProvider; -import de.uka.ilkd.key.gui.plugins.caching.settings.ProofCachingSettings; import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.ProofTreeEvent; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/DefaultReferenceSearchDialogListener.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/DefaultReferenceSearchDialogListener.java similarity index 97% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/DefaultReferenceSearchDialogListener.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/DefaultReferenceSearchDialogListener.java index 60324f307f3..8c29d6542fc 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/DefaultReferenceSearchDialogListener.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/DefaultReferenceSearchDialogListener.java @@ -1,7 +1,7 @@ /* 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.caching; +package de.uka.ilkd.key.caching.gui.plugins.caching; import java.util.function.Consumer; import javax.swing.*; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchButton.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchButton.java similarity index 96% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchButton.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchButton.java index 3503ad8f878..d1e9cc624bc 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchButton.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchButton.java @@ -1,13 +1,14 @@ /* 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.caching; +package de.uka.ilkd.key.caching.gui.plugins.caching; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; +import de.uka.ilkd.key.caching.proof.reference.ReferenceSearcher; import de.uka.ilkd.key.core.KeYMediator; import de.uka.ilkd.key.core.KeYSelectionEvent; import de.uka.ilkd.key.core.KeYSelectionListener; @@ -16,7 +17,6 @@ import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.reference.ClosedBy; -import de.uka.ilkd.key.proof.reference.ReferenceSearcher; /** * Status line button to indicate whether cached goals are present. diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchDialog.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialog.java similarity index 90% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchDialog.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialog.java index 591367ebced..dea00bb8e3e 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchDialog.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialog.java @@ -1,7 +1,7 @@ /* 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.caching; +package de.uka.ilkd.key.caching.gui.plugins.caching; import java.awt.*; import javax.swing.*; @@ -11,7 +11,7 @@ import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.reference.ClosedBy; -import org.key_project.util.java.SwingUtil; +import de.uka.ilkd.key.ui.util.SwingUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,7 +29,7 @@ public class ReferenceSearchDialog extends JDialog { /** * The table of reference search results. */ - private final ReferenceSearchTable table; + private final de.uka.ilkd.key.caching.gui.plugins.caching.ReferenceSearchTable table; /** * Button to copy the relevant proof steps. */ @@ -49,7 +49,7 @@ public class ReferenceSearchDialog extends JDialog { /** * Listener used to react to user inputs. */ - private final ReferenceSearchDialogListener listener; + private final de.uka.ilkd.key.caching.gui.plugins.caching.ReferenceSearchDialogListener listener; /** * Construct a new dialog. Use {@link #setVisible(boolean)} afterwards to show it. @@ -57,9 +57,9 @@ public class ReferenceSearchDialog extends JDialog { * @param proof the proof * @param listener control listener */ - public ReferenceSearchDialog(Proof proof, ReferenceSearchDialogListener listener) { + public ReferenceSearchDialog(Proof proof, de.uka.ilkd.key.caching.gui.plugins.caching.ReferenceSearchDialogListener listener) { super(MainWindow.getInstance()); - table = new ReferenceSearchTable(proof, MainWindow.getInstance().getMediator()); + table = new de.uka.ilkd.key.caching.gui.plugins.caching.ReferenceSearchTable(proof, MainWindow.getInstance().getMediator()); table.getTableHeader().setReorderingAllowed(false); this.setLocationByPlatform(true); this.setTitle("Proof Caching"); diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchDialogListener.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialogListener.java similarity index 92% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchDialogListener.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialogListener.java index fbbe02238ab..26e47858c67 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchDialogListener.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialogListener.java @@ -1,7 +1,7 @@ /* 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.caching; +package de.uka.ilkd.key.caching.gui.plugins.caching; /** * Interface to receive callbacks from the {@link ReferenceSearchDialog}. diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchTable.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchTable.java similarity index 98% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchTable.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchTable.java index c5dc621c7cd..e0fba5062c7 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/ReferenceSearchTable.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchTable.java @@ -1,7 +1,7 @@ /* 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.caching; +package de.uka.ilkd.key.caching.gui.plugins.caching; import java.awt.*; import java.util.Collections; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/CloseAllByReference.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseAllByReference.java similarity index 92% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/CloseAllByReference.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseAllByReference.java index b2232ecaafe..9c40f41602e 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/CloseAllByReference.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseAllByReference.java @@ -1,21 +1,21 @@ /* 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.caching.actions; +package de.uka.ilkd.key.caching.gui.plugins.caching.actions; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.List; import javax.swing.*; +import de.uka.ilkd.key.caching.gui.plugins.caching.CachingExtension; +import de.uka.ilkd.key.caching.proof.reference.ReferenceSearcher; import de.uka.ilkd.key.core.KeYMediator; import de.uka.ilkd.key.gui.MainWindow; import de.uka.ilkd.key.gui.actions.KeyAction; -import de.uka.ilkd.key.gui.plugins.caching.CachingExtension; import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.reference.ClosedBy; -import de.uka.ilkd.key.proof.reference.ReferenceSearcher; /** * Proof context menu action to perform proof caching for all open goals on that proof. diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/CloseByReference.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseByReference.java similarity index 93% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/CloseByReference.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseByReference.java index 7dcafc483f2..6a5189bf126 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/CloseByReference.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseByReference.java @@ -1,7 +1,7 @@ /* 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.caching.actions; +package de.uka.ilkd.key.caching.gui.plugins.caching.actions; import java.awt.event.ActionEvent; import java.util.ArrayList; @@ -9,6 +9,8 @@ import java.util.List; import javax.swing.*; +import de.uka.ilkd.key.caching.gui.plugins.caching.CachingExtension; +import de.uka.ilkd.key.caching.proof.reference.ReferenceSearcher; import de.uka.ilkd.key.core.KeYMediator; import de.uka.ilkd.key.gui.MainWindow; import de.uka.ilkd.key.gui.actions.KeyAction; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/CopyReferencedProof.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CopyReferencedProof.java similarity index 97% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/CopyReferencedProof.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CopyReferencedProof.java index cd818b55d8c..a5dd9c2bf3f 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/CopyReferencedProof.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CopyReferencedProof.java @@ -1,7 +1,7 @@ /* 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.caching.actions; +package de.uka.ilkd.key.caching.gui.plugins.caching.actions; import java.awt.event.ActionEvent; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/GotoReferenceAction.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/GotoReferenceAction.java similarity index 95% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/GotoReferenceAction.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/GotoReferenceAction.java index 234749e63e6..9aa836745be 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/GotoReferenceAction.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/GotoReferenceAction.java @@ -1,7 +1,7 @@ /* 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.caching.actions; +package de.uka.ilkd.key.caching.gui.plugins.caching.actions; import java.awt.event.ActionEvent; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/RemoveCachingInformationAction.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/RemoveCachingInformationAction.java similarity index 95% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/RemoveCachingInformationAction.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/RemoveCachingInformationAction.java index 7037248ea28..ff2bffef13e 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/actions/RemoveCachingInformationAction.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/RemoveCachingInformationAction.java @@ -1,7 +1,7 @@ /* 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.caching.actions; +package de.uka.ilkd.key.caching.gui.plugins.caching.actions; import java.awt.event.ActionEvent; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/settings/CachingSettingsProvider.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/CachingSettingsProvider.java similarity index 98% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/settings/CachingSettingsProvider.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/CachingSettingsProvider.java index f77b3deb6b3..9b83acaa7f8 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/settings/CachingSettingsProvider.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/CachingSettingsProvider.java @@ -1,7 +1,7 @@ /* 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.caching.settings; +package de.uka.ilkd.key.caching.gui.plugins.caching.settings; import javax.swing.*; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/settings/ProofCachingSettings.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/ProofCachingSettings.java similarity index 97% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/settings/ProofCachingSettings.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/ProofCachingSettings.java index 30d9e09f68f..fe750309d95 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/settings/ProofCachingSettings.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/ProofCachingSettings.java @@ -1,7 +1,7 @@ /* 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.caching.settings; +package de.uka.ilkd.key.caching.gui.plugins.caching.settings; import de.uka.ilkd.key.settings.AbstractPropertiesSettings; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/toolbar/CachingToggleAction.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/toolbar/CachingToggleAction.java similarity index 95% rename from keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/toolbar/CachingToggleAction.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/toolbar/CachingToggleAction.java index ac154fda945..77bc1d79c45 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/gui/plugins/caching/toolbar/CachingToggleAction.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/toolbar/CachingToggleAction.java @@ -1,7 +1,7 @@ /* 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.caching.toolbar; +package de.uka.ilkd.key.caching.gui.plugins.caching.toolbar; import java.awt.event.ActionEvent; import javax.swing.*; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/proof/reference/ProgramMethodFinder.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ProgramMethodFinder.java similarity index 95% rename from keyext.caching/src/main/java/de/uka/ilkd/key/proof/reference/ProgramMethodFinder.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ProgramMethodFinder.java index 0f0d7fee883..d90b73f6404 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/proof/reference/ProgramMethodFinder.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ProgramMethodFinder.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.proof.reference; +package de.uka.ilkd.key.caching.proof.reference; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.op.ProgramMethod; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/proof/reference/ReferenceSearcher.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ReferenceSearcher.java similarity index 97% rename from keyext.caching/src/main/java/de/uka/ilkd/key/proof/reference/ReferenceSearcher.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ReferenceSearcher.java index 3138256f05b..d2678176f28 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/proof/reference/ReferenceSearcher.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ReferenceSearcher.java @@ -1,7 +1,7 @@ /* This file is part of KeY - https://key-project.org * KeY is licensed under the GNU General Public License Version 2 * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.proof.reference; +package de.uka.ilkd.key.caching.proof.reference; import java.util.*; import java.util.stream.Collectors; @@ -9,6 +9,7 @@ import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.Proof; +import de.uka.ilkd.key.proof.reference.ClosedBy; import de.uka.ilkd.key.rule.EqualityModuloProofIrrelevancy; import de.uka.ilkd.key.rule.NoPosTacletApp; import de.uka.ilkd.key.rule.merge.CloseAfterMerge; @@ -171,7 +172,7 @@ private static boolean containedIn(Semisequent superset, Semisequent subset) { * @return whether it can be closed by reference */ public static boolean suitableForCloseByReference(Node node) { - ProgramMethodFinder f = new ProgramMethodFinder(); + de.uka.ilkd.key.caching.proof.reference.ProgramMethodFinder f = new de.uka.ilkd.key.caching.proof.reference.ProgramMethodFinder(); Sequent seq = node.sequent(); for (int i = 1; i <= seq.size(); i++) { JTerm term = (JTerm) seq.getFormulaByNr(i).formula(); diff --git a/keyext.caching/src/main/java/module-info.java b/keyext.caching/src/main/java/module-info.java index fd9b38ea05c..7d8c37cd133 100644 --- a/keyext.caching/src/main/java/module-info.java +++ b/keyext.caching/src/main/java/module-info.java @@ -4,4 +4,13 @@ * @version 1 (31.03.24) */ module keyext.caching { + requires java.desktop; + requires org.key_project.ui; + requires org.key_project.core; + requires org.key_project.ncore; + requires org.key_project.prover; + requires keyext.slicing; + requires org.slf4j; + requires org.jspecify; + requires org.key_project.util; } \ No newline at end of file diff --git a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/gui/IsabelleProgressDialog.java b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/gui/IsabelleProgressDialog.java index 7aec6c25fc0..9fb2596f408 100644 --- a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/gui/IsabelleProgressDialog.java +++ b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/gui/IsabelleProgressDialog.java @@ -16,7 +16,7 @@ import de.uka.ilkd.key.gui.MainWindow; import org.key_project.isabelletranslation.gui.IsabelleProgressModel.ProcessColumn.ProcessData; -import org.key_project.util.java.SwingUtil; +import de.uka.ilkd.key.ui.util.SwingUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/keyext.slicing/src/main/java/module-info.java b/keyext.slicing/src/main/java/module-info.java index d05ecbc927f..55d5d29dd41 100644 --- a/keyext.slicing/src/main/java/module-info.java +++ b/keyext.slicing/src/main/java/module-info.java @@ -4,4 +4,16 @@ * @version 1 (31.03.24) */ module keyext.slicing { + exports org.key_project.slicing; + exports org.key_project.slicing.analysis; + requires org.key_project.core; + requires org.key_project.ncore; + requires org.key_project.prover; + requires org.key_project.util; + requires org.slf4j; + requires java.desktop; + requires org.key_project.ui; + requires org.jspecify; + requires dockingframes.common; + requires com.miglayout.core; } \ No newline at end of file diff --git a/keyext.slicing/src/main/java/org/key_project/slicing/Main.java b/keyext.slicing/src/main/java/org/key_project/slicing/Main.java index c17bdccfa74..8d108a07788 100644 --- a/keyext.slicing/src/main/java/org/key_project/slicing/Main.java +++ b/keyext.slicing/src/main/java/org/key_project/slicing/Main.java @@ -16,9 +16,9 @@ import de.uka.ilkd.key.proof.init.JavaProfile; import de.uka.ilkd.key.proof.io.ProblemLoaderControl; import de.uka.ilkd.key.settings.GeneralSettings; -import de.uka.ilkd.key.util.CommandLine; -import de.uka.ilkd.key.util.CommandLineException; +import de.uka.ilkd.key.ui.util.CommandLine; +import de.uka.ilkd.key.ui.util.CommandLineException; import org.key_project.slicing.analysis.AnalysisResults; import org.slf4j.Logger; @@ -77,7 +77,7 @@ private static void processFileOrDir(Path path, boolean overwrite) { */ public static void main(String[] args) { try { - var cl = createCommandLine(); + CommandLine cl = createCommandLine(); cl.parse(args); Log.configureLogging(2); evaluateOptions(cl); diff --git a/keyext.slicing/src/main/java/org/key_project/slicing/ui/SlicingLeftPanel.java b/keyext.slicing/src/main/java/org/key_project/slicing/ui/SlicingLeftPanel.java index f8c408348fc..b26561a2cb9 100644 --- a/keyext.slicing/src/main/java/org/key_project/slicing/ui/SlicingLeftPanel.java +++ b/keyext.slicing/src/main/java/org/key_project/slicing/ui/SlicingLeftPanel.java @@ -33,9 +33,11 @@ import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.ProofTreeEvent; import de.uka.ilkd.key.proof.ProofTreeListener; -import de.uka.ilkd.key.proof.io.ProblemLoader; +import de.uka.ilkd.key.ui.AbstractMediatorUserInterfaceControl; +import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import de.uka.ilkd.key.proof.io.ProblemLoaderControl; +import org.key_project.dockingframes.common.common.action.CAction; import org.key_project.slicing.DependencyTracker; import org.key_project.slicing.SlicingExtension; import org.key_project.slicing.SlicingProofReplayer; @@ -44,7 +46,6 @@ import org.key_project.slicing.util.GenericWorker; import org.key_project.slicing.util.GraphvizDotExecutor; -import bibliothek.gui.dock.common.action.CAction; import org.jspecify.annotations.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -420,11 +421,12 @@ private void sliceProof() { updateUIState(); return; } + final var mediatorUI = mediator.getUI(); new GenericWorker<>(() -> { // slice proof with a headless LoaderControl to avoid countless UI redraws ProblemLoaderControl control = new DefaultUserInterfaceControl(); SlicingProofReplayer replayer = SlicingProofReplayer - .constructSlicer(control, currentProof, results, mediator.getUI()); + .constructSlicer(control, currentProof, results, mediatorUI); Path proofFile; // first slice attempt: leave aggressive de-duplicate on if (results.didDeduplicateRuleApps @@ -439,7 +441,7 @@ private void sliceProof() { .deactivateAggressiveDeduplicate(currentProof); AnalysisResults fixedResults = analyzeProof(); proofFile = SlicingProofReplayer - .constructSlicer(control, currentProof, fixedResults, mediator.getUI()) + .constructSlicer(control, currentProof, fixedResults, mediatorUI) .slice(); } } else { @@ -456,7 +458,7 @@ private void sliceProof() { }, proofFile -> { // we do not use UI.loadProblem here to avoid adding the slice to the recent files ProblemLoader problemLoader = - mediator.getUI().getProblemLoader(proofFile, null, null, null, mediator); + mediatorUI.getProblemLoader(proofFile, null, null, null, mediator); // user already knows about any warnings problemLoader.setIgnoreWarnings(true); problemLoader.runAsynchronously(); diff --git a/keyext.ui.testgen/src/main/java/module-info.java b/keyext.ui.testgen/src/main/java/module-info.java index 97aedec13a5..5b65bb08779 100644 --- a/keyext.ui.testgen/src/main/java/module-info.java +++ b/keyext.ui.testgen/src/main/java/module-info.java @@ -4,4 +4,8 @@ * @version 1 (31.03.24) */ module keyext.ui.testgen { + requires org.key_project.ui; + requires java.desktop; + requires org.slf4j; + requires org.key_project.core; } \ No newline at end of file From 217892e3a1d8223196de32c8854a066e1e94245b Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Wed, 18 Jun 2025 18:37:53 +0200 Subject: [PATCH 19/22] added module-info.java error in docking frames version, cannot find resource bundle --- .../de/uka/ilkd/key/testgen/ModelGenerator.java | 2 +- .../uka/ilkd/key/testgen/TestCaseGenerator.java | 4 ++-- .../macros/SemanticsBlastingMacro.java | 3 ++- .../key/{ => testgen}/macros/TestGenMacro.java | 7 +++++-- .../settings/TestGenerationSettings.java | 6 +++++- .../AbstractCounterExampleGenerator.java | 4 ++-- ...AbstractSideProofCounterExampleGenerator.java | 2 +- .../smt/testgen/AbstractTestGenerator.java | 8 ++++---- .../smt/testgen/MemoryTestGenerationLog.java | 2 +- .../{ => testgen}/smt/testgen/StopRequest.java | 2 +- .../smt/testgen/TestGenerationLog.java | 2 +- key.core.testgen/src/main/java/module-info.java | 16 ++++++++++++++++ key.core/src/main/java/module-info.java | 3 +++ .../de/uka/ilkd/key/ui/util/CommandLine.java | 1 + key.ui/src/main/java/module-info.java | 4 ++++ .../plugins/caching => }/CachedProofBranch.java | 2 +- .../plugins/caching => }/CachingException.java | 2 +- .../plugins/caching => }/CachingExtension.java | 10 ++++------ .../caching => }/CachingPruneHandler.java | 6 +++--- .../toolbar => }/CachingToggleAction.java | 2 +- .../DefaultReferenceSearchDialogListener.java | 2 +- .../reference => }/ProgramMethodFinder.java | 2 +- .../caching => }/ReferenceSearchButton.java | 3 +-- .../caching => }/ReferenceSearchDialog.java | 10 +++++----- .../ReferenceSearchDialogListener.java | 2 +- .../caching => }/ReferenceSearchTable.java | 2 +- .../{proof/reference => }/ReferenceSearcher.java | 4 ++-- .../actions/CloseAllByReference.java | 6 +++--- .../caching => }/actions/CloseByReference.java | 10 ++++------ .../actions/CopyReferencedProof.java | 2 +- .../actions/GotoReferenceAction.java | 2 +- .../actions/RemoveCachingInformationAction.java | 2 +- .../settings/CachingSettingsProvider.java | 7 ++----- .../settings/ProofCachingSettings.java | 2 +- keyext.caching/src/main/java/module-info.java | 1 + .../src/main/java/module-info.java | 8 ++++++++ .../exploration/ui/ExplorationStepsList.java | 2 +- .../src/main/java/module-info.java | 9 +++++++++ .../org/key_project/proofmanagement/Main.java | 4 ++-- .../key/gui/testgen/CounterExampleAction.java | 6 +++--- .../uka/ilkd/key/gui/testgen/TGInfoDialog.java | 4 ++-- .../de/uka/ilkd/key/gui/testgen/TGWorker.java | 4 ++-- .../ilkd/key/gui/testgen/TestgenExtension.java | 2 +- .../key/gui/testgen/TestgenOptionsPanel.java | 2 +- keyext.ui.testgen/src/main/java/module-info.java | 3 +++ 45 files changed, 117 insertions(+), 72 deletions(-) rename key.core.testgen/src/main/java/de/uka/ilkd/key/{ => testgen}/macros/SemanticsBlastingMacro.java (98%) rename key.core.testgen/src/main/java/de/uka/ilkd/key/{ => testgen}/macros/TestGenMacro.java (94%) rename key.core.testgen/src/main/java/de/uka/ilkd/key/{ => testgen}/settings/TestGenerationSettings.java (97%) rename key.core.testgen/src/main/java/de/uka/ilkd/key/{ => testgen}/smt/counterexample/AbstractCounterExampleGenerator.java (98%) rename key.core.testgen/src/main/java/de/uka/ilkd/key/{ => testgen}/smt/counterexample/AbstractSideProofCounterExampleGenerator.java (96%) rename key.core.testgen/src/main/java/de/uka/ilkd/key/{ => testgen}/smt/testgen/AbstractTestGenerator.java (98%) rename key.core.testgen/src/main/java/de/uka/ilkd/key/{ => testgen}/smt/testgen/MemoryTestGenerationLog.java (96%) rename key.core.testgen/src/main/java/de/uka/ilkd/key/{ => testgen}/smt/testgen/StopRequest.java (83%) rename key.core.testgen/src/main/java/de/uka/ilkd/key/{ => testgen}/smt/testgen/TestGenerationLog.java (88%) create mode 100644 key.core.testgen/src/main/java/module-info.java rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/CachedProofBranch.java (95%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/CachingException.java (94%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/CachingExtension.java (96%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/CachingPruneHandler.java (93%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching/toolbar => }/CachingToggleAction.java (95%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/DefaultReferenceSearchDialogListener.java (97%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{proof/reference => }/ProgramMethodFinder.java (95%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/ReferenceSearchButton.java (96%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/ReferenceSearchDialog.java (90%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/ReferenceSearchDialogListener.java (92%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/ReferenceSearchTable.java (98%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{proof/reference => }/ReferenceSearcher.java (97%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/actions/CloseAllByReference.java (92%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/actions/CloseByReference.java (88%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/actions/CopyReferencedProof.java (97%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/actions/GotoReferenceAction.java (95%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/actions/RemoveCachingInformationAction.java (95%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/settings/CachingSettingsProvider.java (89%) rename keyext.caching/src/main/java/de/uka/ilkd/key/caching/{gui/plugins/caching => }/settings/ProofCachingSettings.java (97%) diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/ModelGenerator.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/ModelGenerator.java index c8d3b0c1ff3..9fed4cad4d9 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/ModelGenerator.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/ModelGenerator.java @@ -18,13 +18,13 @@ import de.uka.ilkd.key.settings.ProofDependentSMTSettings; import de.uka.ilkd.key.settings.ProofIndependentSMTSettings; import de.uka.ilkd.key.settings.ProofIndependentSettings; -import de.uka.ilkd.key.settings.TestGenerationSettings; import de.uka.ilkd.key.smt.*; import de.uka.ilkd.key.smt.lang.SMTSort; import de.uka.ilkd.key.smt.model.Model; import de.uka.ilkd.key.smt.solvertypes.SolverType; import de.uka.ilkd.key.smt.solvertypes.SolverTypes; +import de.uka.ilkd.key.testgen.settings.TestGenerationSettings; import org.key_project.logic.Namespace; import org.key_project.prover.sequent.Sequent; import org.key_project.prover.sequent.SequentFormula; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/TestCaseGenerator.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/TestCaseGenerator.java index 39b5d178428..9978bcd0b56 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/TestCaseGenerator.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/TestCaseGenerator.java @@ -20,15 +20,15 @@ import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.settings.ProofIndependentSettings; -import de.uka.ilkd.key.settings.TestGenerationSettings; import de.uka.ilkd.key.smt.SMTSolver; import de.uka.ilkd.key.smt.model.Heap; import de.uka.ilkd.key.smt.model.Model; import de.uka.ilkd.key.smt.model.ObjectVal; -import de.uka.ilkd.key.smt.testgen.TestGenerationLog; import de.uka.ilkd.key.testgen.oracle.OracleGenerator; import de.uka.ilkd.key.testgen.oracle.OracleMethod; import de.uka.ilkd.key.testgen.oracle.OracleMethodCall; +import de.uka.ilkd.key.testgen.settings.TestGenerationSettings; +import de.uka.ilkd.key.testgen.smt.testgen.TestGenerationLog; import de.uka.ilkd.key.util.KeYConstants; import org.key_project.logic.Term; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/macros/SemanticsBlastingMacro.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/SemanticsBlastingMacro.java similarity index 98% rename from key.core.testgen/src/main/java/de/uka/ilkd/key/macros/SemanticsBlastingMacro.java rename to key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/SemanticsBlastingMacro.java index 61363156d72..5f35c9d993a 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/macros/SemanticsBlastingMacro.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/SemanticsBlastingMacro.java @@ -1,11 +1,12 @@ /* 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.macros; +package de.uka.ilkd.key.testgen.macros; import java.util.HashSet; import java.util.Set; +import de.uka.ilkd.key.macros.AbstractBlastingMacro; import org.key_project.prover.proof.rulefilter.RuleFilter; import org.key_project.prover.rules.Rule; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/macros/TestGenMacro.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/TestGenMacro.java similarity index 94% rename from key.core.testgen/src/main/java/de/uka/ilkd/key/macros/TestGenMacro.java rename to key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/TestGenMacro.java index e46b8af8476..e49454531ff 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/macros/TestGenMacro.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/TestGenMacro.java @@ -1,17 +1,20 @@ /* 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.macros; +package de.uka.ilkd.key.testgen.macros; import java.util.HashSet; import java.util.Set; +import de.uka.ilkd.key.macros.FilterStrategy; +import de.uka.ilkd.key.macros.ModalityCache; +import de.uka.ilkd.key.macros.StrategyProofMacro; import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.settings.TestGenerationSettings; import de.uka.ilkd.key.strategy.Strategy; +import de.uka.ilkd.key.testgen.settings.TestGenerationSettings; import org.key_project.logic.Name; import org.key_project.prover.proof.ProofGoal; import org.key_project.prover.rules.Rule; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/settings/TestGenerationSettings.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/settings/TestGenerationSettings.java similarity index 97% rename from key.core.testgen/src/main/java/de/uka/ilkd/key/settings/TestGenerationSettings.java rename to key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/settings/TestGenerationSettings.java index 00f24ad3c1f..d82c0f35697 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/settings/TestGenerationSettings.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/settings/TestGenerationSettings.java @@ -1,11 +1,15 @@ /* 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.settings; +package de.uka.ilkd.key.testgen.settings; import java.io.File; import java.util.Properties; +import de.uka.ilkd.key.settings.AbstractSettings; +import de.uka.ilkd.key.settings.Configuration; +import de.uka.ilkd.key.settings.ProofIndependentSettings; +import de.uka.ilkd.key.settings.SettingsConverter; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/counterexample/AbstractCounterExampleGenerator.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/counterexample/AbstractCounterExampleGenerator.java similarity index 98% rename from key.core.testgen/src/main/java/de/uka/ilkd/key/smt/counterexample/AbstractCounterExampleGenerator.java rename to key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/counterexample/AbstractCounterExampleGenerator.java index 9635c8a8ede..5fe089e3624 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/counterexample/AbstractCounterExampleGenerator.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/counterexample/AbstractCounterExampleGenerator.java @@ -1,14 +1,13 @@ /* 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.smt.counterexample; +package de.uka.ilkd.key.testgen.smt.counterexample; import java.util.LinkedList; import java.util.List; import de.uka.ilkd.key.control.UserInterfaceControl; import de.uka.ilkd.key.macros.ProofMacroFinishedInfo; -import de.uka.ilkd.key.macros.SemanticsBlastingMacro; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.init.ProofInputException; import de.uka.ilkd.key.prover.impl.DefaultTaskStartedInfo; @@ -18,6 +17,7 @@ import de.uka.ilkd.key.smt.solvertypes.SolverType; import de.uka.ilkd.key.smt.solvertypes.SolverTypes; +import de.uka.ilkd.key.testgen.macros.SemanticsBlastingMacro; import org.key_project.prover.engine.ProverTaskListener; import org.key_project.prover.engine.TaskFinishedInfo; import org.key_project.prover.engine.TaskStartedInfo.TaskKind; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/counterexample/AbstractSideProofCounterExampleGenerator.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/counterexample/AbstractSideProofCounterExampleGenerator.java similarity index 96% rename from key.core.testgen/src/main/java/de/uka/ilkd/key/smt/counterexample/AbstractSideProofCounterExampleGenerator.java rename to key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/counterexample/AbstractSideProofCounterExampleGenerator.java index b29d16df81e..2335c54786a 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/counterexample/AbstractSideProofCounterExampleGenerator.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/counterexample/AbstractSideProofCounterExampleGenerator.java @@ -1,7 +1,7 @@ /* 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.smt.counterexample; +package de.uka.ilkd.key.testgen.smt.counterexample; import de.uka.ilkd.key.control.UserInterfaceControl; import de.uka.ilkd.key.proof.Proof; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/AbstractTestGenerator.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/AbstractTestGenerator.java similarity index 98% rename from key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/AbstractTestGenerator.java rename to key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/AbstractTestGenerator.java index a42295d232f..c3bbaf16eae 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/AbstractTestGenerator.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/AbstractTestGenerator.java @@ -1,7 +1,7 @@ /* 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.smt.testgen; +package de.uka.ilkd.key.testgen.smt.testgen; import java.io.IOException; import java.util.*; @@ -9,8 +9,6 @@ import de.uka.ilkd.key.control.UserInterfaceControl; import de.uka.ilkd.key.logic.op.UpdateApplication; import de.uka.ilkd.key.macros.ProofMacroFinishedInfo; -import de.uka.ilkd.key.macros.SemanticsBlastingMacro; -import de.uka.ilkd.key.macros.TestGenMacro; import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.Proof; @@ -24,12 +22,14 @@ import de.uka.ilkd.key.settings.ProofDependentSMTSettings; import de.uka.ilkd.key.settings.ProofIndependentSMTSettings; import de.uka.ilkd.key.settings.ProofIndependentSettings; -import de.uka.ilkd.key.settings.TestGenerationSettings; import de.uka.ilkd.key.smt.*; import de.uka.ilkd.key.smt.model.Model; import de.uka.ilkd.key.smt.solvertypes.SolverType; import de.uka.ilkd.key.smt.solvertypes.SolverTypes; import de.uka.ilkd.key.testgen.TestCaseGenerator; +import de.uka.ilkd.key.testgen.macros.SemanticsBlastingMacro; +import de.uka.ilkd.key.testgen.macros.TestGenMacro; +import de.uka.ilkd.key.testgen.settings.TestGenerationSettings; import de.uka.ilkd.key.util.ProofStarter; import de.uka.ilkd.key.util.SideProofUtil; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/MemoryTestGenerationLog.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/MemoryTestGenerationLog.java similarity index 96% rename from key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/MemoryTestGenerationLog.java rename to key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/MemoryTestGenerationLog.java index 9edcd12b5da..26ec40fb318 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/MemoryTestGenerationLog.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/MemoryTestGenerationLog.java @@ -1,7 +1,7 @@ /* 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.smt.testgen; +package de.uka.ilkd.key.testgen.smt.testgen; import de.uka.ilkd.key.testgen.TestCaseGenerator; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/StopRequest.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/StopRequest.java similarity index 83% rename from key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/StopRequest.java rename to key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/StopRequest.java index 1907bae9a00..cafa74721ee 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/StopRequest.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/StopRequest.java @@ -1,7 +1,7 @@ /* 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.smt.testgen; +package de.uka.ilkd.key.testgen.smt.testgen; public interface StopRequest { boolean shouldStop(); diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/TestGenerationLog.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/TestGenerationLog.java similarity index 88% rename from key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/TestGenerationLog.java rename to key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/TestGenerationLog.java index 76a3881c74d..589c38e881e 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/smt/testgen/TestGenerationLog.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/testgen/TestGenerationLog.java @@ -1,7 +1,7 @@ /* 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.smt.testgen; +package de.uka.ilkd.key.testgen.smt.testgen; public interface TestGenerationLog { void writeln(String string); diff --git a/key.core.testgen/src/main/java/module-info.java b/key.core.testgen/src/main/java/module-info.java new file mode 100644 index 00000000000..f3e46b1e78c --- /dev/null +++ b/key.core.testgen/src/main/java/module-info.java @@ -0,0 +1,16 @@ +/** + * @author Alexander Weigl + * @version 1 (6/18/25) + */ +module org.key_project.testgen { + exports de.uka.ilkd.key.testgen.smt.counterexample; + exports de.uka.ilkd.key.testgen.macros; + exports de.uka.ilkd.key.testgen.smt.testgen; + exports de.uka.ilkd.key.testgen.settings; + requires org.slf4j; + requires org.key_project.core; + requires org.key_project.prover; + requires org.key_project.ncore; + requires org.key_project.util; + requires org.jspecify; +} \ No newline at end of file diff --git a/key.core/src/main/java/module-info.java b/key.core/src/main/java/module-info.java index 84e934b9b78..9891dcd5d6d 100644 --- a/key.core/src/main/java/module-info.java +++ b/key.core/src/main/java/module-info.java @@ -80,6 +80,9 @@ exports de.uka.ilkd.key.proof.init.loader; exports de.uka.ilkd.key.proof.proofevent; exports de.uka.ilkd.key.proof.replay; + exports de.uka.ilkd.key.util.parsing; + exports de.uka.ilkd.key.proof.io.intermediate; + exports de.uka.ilkd.key.smt.lang; requires org.slf4j; requires key.recoder; requires org.key_project.ncore; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java index f71bc3b19c3..29d656a0cf7 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java @@ -9,6 +9,7 @@ import java.util.*; import de.uka.ilkd.key.core.Main; +import org.jspecify.annotations.Nullable; import org.jspecify.annotations.Nullable; diff --git a/key.ui/src/main/java/module-info.java b/key.ui/src/main/java/module-info.java index 0a80240eebc..f872b2545ed 100644 --- a/key.ui/src/main/java/module-info.java +++ b/key.ui/src/main/java/module-info.java @@ -15,6 +15,10 @@ exports de.uka.ilkd.key.gui.settings; exports de.uka.ilkd.key.ui.util; exports de.uka.ilkd.key.ui; + exports de.uka.ilkd.key.gui.colors; + exports de.uka.ilkd.key.gui.prooftree; + exports de.uka.ilkd.key.gui.smt; + exports de.uka.ilkd.key.gui.keyshortcuts; requires org.slf4j; requires java.desktop; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachedProofBranch.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachedProofBranch.java similarity index 95% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachedProofBranch.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachedProofBranch.java index cbad170289c..4b341bc9d38 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachedProofBranch.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachedProofBranch.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching; +package de.uka.ilkd.key.caching; import java.io.File; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingException.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingException.java similarity index 94% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingException.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingException.java index fc437442486..694134c9391 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingException.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingException.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching; +package de.uka.ilkd.key.caching; /** * Helpful error message used when the proof cache cannot diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingExtension.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingExtension.java similarity index 96% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingExtension.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingExtension.java index 08d28ef2d3f..11d2c871700 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingExtension.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingExtension.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching; +package de.uka.ilkd.key.caching; import java.util.ArrayList; import java.util.HashSet; @@ -9,11 +9,9 @@ import java.util.Set; import javax.swing.*; -import de.uka.ilkd.key.caching.gui.plugins.caching.actions.*; -import de.uka.ilkd.key.caching.gui.plugins.caching.settings.CachingSettingsProvider; -import de.uka.ilkd.key.caching.gui.plugins.caching.settings.ProofCachingSettings; -import de.uka.ilkd.key.caching.gui.plugins.caching.toolbar.CachingToggleAction; -import de.uka.ilkd.key.caching.proof.reference.ReferenceSearcher; +import de.uka.ilkd.key.caching.actions.*; +import de.uka.ilkd.key.caching.settings.CachingSettingsProvider; +import de.uka.ilkd.key.caching.settings.ProofCachingSettings; import de.uka.ilkd.key.core.KeYMediator; import de.uka.ilkd.key.core.KeYSelectionEvent; import de.uka.ilkd.key.core.KeYSelectionListener; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingPruneHandler.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingPruneHandler.java similarity index 93% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingPruneHandler.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingPruneHandler.java index 3f9bce61b5e..e37b335a17f 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/CachingPruneHandler.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingPruneHandler.java @@ -1,10 +1,10 @@ /* 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.caching.gui.plugins.caching; +package de.uka.ilkd.key.caching; -import de.uka.ilkd.key.caching.gui.plugins.caching.settings.CachingSettingsProvider; -import de.uka.ilkd.key.caching.gui.plugins.caching.settings.ProofCachingSettings; +import de.uka.ilkd.key.caching.settings.CachingSettingsProvider; +import de.uka.ilkd.key.caching.settings.ProofCachingSettings; import de.uka.ilkd.key.core.KeYMediator; import de.uka.ilkd.key.gui.IssueDialog; import de.uka.ilkd.key.gui.MainWindow; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/toolbar/CachingToggleAction.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingToggleAction.java similarity index 95% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/toolbar/CachingToggleAction.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingToggleAction.java index 77bc1d79c45..c7bec38783c 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/toolbar/CachingToggleAction.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingToggleAction.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching.toolbar; +package de.uka.ilkd.key.caching; import java.awt.event.ActionEvent; import javax.swing.*; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/DefaultReferenceSearchDialogListener.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/DefaultReferenceSearchDialogListener.java similarity index 97% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/DefaultReferenceSearchDialogListener.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/DefaultReferenceSearchDialogListener.java index 8c29d6542fc..f03764c436c 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/DefaultReferenceSearchDialogListener.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/DefaultReferenceSearchDialogListener.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching; +package de.uka.ilkd.key.caching; import java.util.function.Consumer; import javax.swing.*; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ProgramMethodFinder.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ProgramMethodFinder.java similarity index 95% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ProgramMethodFinder.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/ProgramMethodFinder.java index d90b73f6404..6fc8d57088f 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ProgramMethodFinder.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ProgramMethodFinder.java @@ -1,7 +1,7 @@ /* 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.caching.proof.reference; +package de.uka.ilkd.key.caching; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.op.ProgramMethod; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchButton.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchButton.java similarity index 96% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchButton.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchButton.java index d1e9cc624bc..561dc11ff59 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchButton.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchButton.java @@ -1,14 +1,13 @@ /* 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.caching.gui.plugins.caching; +package de.uka.ilkd.key.caching; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; -import de.uka.ilkd.key.caching.proof.reference.ReferenceSearcher; import de.uka.ilkd.key.core.KeYMediator; import de.uka.ilkd.key.core.KeYSelectionEvent; import de.uka.ilkd.key.core.KeYSelectionListener; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialog.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchDialog.java similarity index 90% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialog.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchDialog.java index dea00bb8e3e..4269884e8b3 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialog.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchDialog.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching; +package de.uka.ilkd.key.caching; import java.awt.*; import javax.swing.*; @@ -29,7 +29,7 @@ public class ReferenceSearchDialog extends JDialog { /** * The table of reference search results. */ - private final de.uka.ilkd.key.caching.gui.plugins.caching.ReferenceSearchTable table; + private final ReferenceSearchTable table; /** * Button to copy the relevant proof steps. */ @@ -49,7 +49,7 @@ public class ReferenceSearchDialog extends JDialog { /** * Listener used to react to user inputs. */ - private final de.uka.ilkd.key.caching.gui.plugins.caching.ReferenceSearchDialogListener listener; + private final ReferenceSearchDialogListener listener; /** * Construct a new dialog. Use {@link #setVisible(boolean)} afterwards to show it. @@ -57,9 +57,9 @@ public class ReferenceSearchDialog extends JDialog { * @param proof the proof * @param listener control listener */ - public ReferenceSearchDialog(Proof proof, de.uka.ilkd.key.caching.gui.plugins.caching.ReferenceSearchDialogListener listener) { + public ReferenceSearchDialog(Proof proof, ReferenceSearchDialogListener listener) { super(MainWindow.getInstance()); - table = new de.uka.ilkd.key.caching.gui.plugins.caching.ReferenceSearchTable(proof, MainWindow.getInstance().getMediator()); + table = new ReferenceSearchTable(proof, MainWindow.getInstance().getMediator()); table.getTableHeader().setReorderingAllowed(false); this.setLocationByPlatform(true); this.setTitle("Proof Caching"); diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialogListener.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchDialogListener.java similarity index 92% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialogListener.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchDialogListener.java index 26e47858c67..71c5508f1dc 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchDialogListener.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchDialogListener.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching; +package de.uka.ilkd.key.caching; /** * Interface to receive callbacks from the {@link ReferenceSearchDialog}. diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchTable.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchTable.java similarity index 98% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchTable.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchTable.java index e0fba5062c7..19d407fc0e2 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/ReferenceSearchTable.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchTable.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching; +package de.uka.ilkd.key.caching; import java.awt.*; import java.util.Collections; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ReferenceSearcher.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearcher.java similarity index 97% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ReferenceSearcher.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearcher.java index d2678176f28..1d7bff6ccd5 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/proof/reference/ReferenceSearcher.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearcher.java @@ -1,7 +1,7 @@ /* 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.caching.proof.reference; +package de.uka.ilkd.key.caching; import java.util.*; import java.util.stream.Collectors; @@ -172,7 +172,7 @@ private static boolean containedIn(Semisequent superset, Semisequent subset) { * @return whether it can be closed by reference */ public static boolean suitableForCloseByReference(Node node) { - de.uka.ilkd.key.caching.proof.reference.ProgramMethodFinder f = new de.uka.ilkd.key.caching.proof.reference.ProgramMethodFinder(); + ProgramMethodFinder f = new ProgramMethodFinder(); Sequent seq = node.sequent(); for (int i = 1; i <= seq.size(); i++) { JTerm term = (JTerm) seq.getFormulaByNr(i).formula(); diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseAllByReference.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/CloseAllByReference.java similarity index 92% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseAllByReference.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/CloseAllByReference.java index 9c40f41602e..a19c023c938 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseAllByReference.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/CloseAllByReference.java @@ -1,15 +1,15 @@ /* 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.caching.gui.plugins.caching.actions; +package de.uka.ilkd.key.caching.actions; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.List; import javax.swing.*; -import de.uka.ilkd.key.caching.gui.plugins.caching.CachingExtension; -import de.uka.ilkd.key.caching.proof.reference.ReferenceSearcher; +import de.uka.ilkd.key.caching.CachingExtension; +import de.uka.ilkd.key.caching.ReferenceSearcher; import de.uka.ilkd.key.core.KeYMediator; import de.uka.ilkd.key.gui.MainWindow; import de.uka.ilkd.key.gui.actions.KeyAction; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseByReference.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/CloseByReference.java similarity index 88% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseByReference.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/CloseByReference.java index 6a5189bf126..0c7bd58c497 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CloseByReference.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/CloseByReference.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching.actions; +package de.uka.ilkd.key.caching.actions; import java.awt.event.ActionEvent; import java.util.ArrayList; @@ -9,15 +9,13 @@ import java.util.List; import javax.swing.*; -import de.uka.ilkd.key.caching.gui.plugins.caching.CachingExtension; -import de.uka.ilkd.key.caching.proof.reference.ReferenceSearcher; +import de.uka.ilkd.key.caching.CachingExtension; +import de.uka.ilkd.key.caching.ReferenceSearcher; import de.uka.ilkd.key.core.KeYMediator; import de.uka.ilkd.key.gui.MainWindow; import de.uka.ilkd.key.gui.actions.KeyAction; -import de.uka.ilkd.key.gui.plugins.caching.CachingExtension; import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.reference.ClosedBy; -import de.uka.ilkd.key.proof.reference.ReferenceSearcher; /** * Action to search for suitable references on a single node. @@ -80,7 +78,7 @@ public void actionPerformed(ActionEvent e) { } } if (!nodes.isEmpty()) { - cachingExtension.updateGUIState(nodes.get(0).proof()); + cachingExtension.updateGUIState(nodes.getFirst().proof()); } if (!mismatches.isEmpty()) { // since e.getSource() is the popup menu, it is better to use the MainWindow diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CopyReferencedProof.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/CopyReferencedProof.java similarity index 97% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CopyReferencedProof.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/CopyReferencedProof.java index a5dd9c2bf3f..bd04b6e3b0d 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/CopyReferencedProof.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/CopyReferencedProof.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching.actions; +package de.uka.ilkd.key.caching.actions; import java.awt.event.ActionEvent; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/GotoReferenceAction.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/GotoReferenceAction.java similarity index 95% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/GotoReferenceAction.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/GotoReferenceAction.java index 9aa836745be..e36b208600a 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/GotoReferenceAction.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/GotoReferenceAction.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching.actions; +package de.uka.ilkd.key.caching.actions; import java.awt.event.ActionEvent; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/RemoveCachingInformationAction.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/RemoveCachingInformationAction.java similarity index 95% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/RemoveCachingInformationAction.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/RemoveCachingInformationAction.java index ff2bffef13e..b6decb59ff8 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/actions/RemoveCachingInformationAction.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/actions/RemoveCachingInformationAction.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching.actions; +package de.uka.ilkd.key.caching.actions; import java.awt.event.ActionEvent; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/CachingSettingsProvider.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/settings/CachingSettingsProvider.java similarity index 89% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/CachingSettingsProvider.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/settings/CachingSettingsProvider.java index 9b83acaa7f8..48dc8389f58 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/CachingSettingsProvider.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/settings/CachingSettingsProvider.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching.settings; +package de.uka.ilkd.key.caching.settings; import javax.swing.*; @@ -12,10 +12,7 @@ import net.miginfocom.layout.CC; -import static de.uka.ilkd.key.gui.plugins.caching.settings.ProofCachingSettings.DISPOSE_COPY; -import static de.uka.ilkd.key.gui.plugins.caching.settings.ProofCachingSettings.DISPOSE_REOPEN; -import static de.uka.ilkd.key.gui.plugins.caching.settings.ProofCachingSettings.PRUNE_COPY; -import static de.uka.ilkd.key.gui.plugins.caching.settings.ProofCachingSettings.PRUNE_REOPEN; +import static de.uka.ilkd.key.caching.settings.ProofCachingSettings.*; /** * Settings for the proof caching extension. diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/ProofCachingSettings.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/settings/ProofCachingSettings.java similarity index 97% rename from keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/ProofCachingSettings.java rename to keyext.caching/src/main/java/de/uka/ilkd/key/caching/settings/ProofCachingSettings.java index fe750309d95..cd62ed0671f 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/gui/plugins/caching/settings/ProofCachingSettings.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/settings/ProofCachingSettings.java @@ -1,7 +1,7 @@ /* 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.caching.gui.plugins.caching.settings; +package de.uka.ilkd.key.caching.settings; import de.uka.ilkd.key.settings.AbstractPropertiesSettings; diff --git a/keyext.caching/src/main/java/module-info.java b/keyext.caching/src/main/java/module-info.java index 7d8c37cd133..75f1f72814b 100644 --- a/keyext.caching/src/main/java/module-info.java +++ b/keyext.caching/src/main/java/module-info.java @@ -13,4 +13,5 @@ requires org.slf4j; requires org.jspecify; requires org.key_project.util; + requires com.miglayout.core; } \ No newline at end of file diff --git a/keyext.exploration/src/main/java/module-info.java b/keyext.exploration/src/main/java/module-info.java index 08fd3443676..0cd2e1bbc33 100644 --- a/keyext.exploration/src/main/java/module-info.java +++ b/keyext.exploration/src/main/java/module-info.java @@ -4,4 +4,12 @@ * @version 1 (31.03.24) */ module keyext.exploration { + requires java.desktop; + requires org.key_project.ui; + requires org.key_project.core; + requires org.jspecify; + requires org.key_project.prover; + requires org.key_project.ncore; + requires org.key_project.util; + requires dockingframes.common; } \ No newline at end of file diff --git a/keyext.exploration/src/main/java/org/key_project/exploration/ui/ExplorationStepsList.java b/keyext.exploration/src/main/java/org/key_project/exploration/ui/ExplorationStepsList.java index 5e5565becd4..95baef3bf05 100644 --- a/keyext.exploration/src/main/java/org/key_project/exploration/ui/ExplorationStepsList.java +++ b/keyext.exploration/src/main/java/org/key_project/exploration/ui/ExplorationStepsList.java @@ -20,10 +20,10 @@ import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.RuleAppListener; +import org.key_project.dockingframes.common.common.action.CAction; import org.key_project.exploration.ExplorationNodeData; import org.key_project.exploration.Icons; -import bibliothek.gui.dock.common.action.CAction; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; diff --git a/keyext.proofmanagement/src/main/java/module-info.java b/keyext.proofmanagement/src/main/java/module-info.java index 39e27dede8f..6617f96e47e 100644 --- a/keyext.proofmanagement/src/main/java/module-info.java +++ b/keyext.proofmanagement/src/main/java/module-info.java @@ -4,4 +4,13 @@ * @version 1 (31.03.24) */ module keyext.proofmanagement { + requires org.key_project.core; + requires org.key_project.util; + requires org.key_project.ncore; + requires freemarker; + requires java.datatransfer; + requires java.desktop; + requires org.key_project.ui; + requires org.slf4j; + requires org.jspecify; } \ No newline at end of file diff --git a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java index 007e70efa6f..1ae07021991 100644 --- a/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java +++ b/keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/Main.java @@ -11,8 +11,8 @@ import java.util.List; import java.util.ResourceBundle; -import de.uka.ilkd.key.util.CommandLine; -import de.uka.ilkd.key.util.CommandLineException; +import de.uka.ilkd.key.ui.util.CommandLine; +import de.uka.ilkd.key.ui.util.CommandLineException; import org.key_project.proofmanagement.check.*; import org.key_project.proofmanagement.io.HTMLReport; diff --git a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/CounterExampleAction.java b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/CounterExampleAction.java index 055060d3357..e7d31e0d52f 100644 --- a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/CounterExampleAction.java +++ b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/CounterExampleAction.java @@ -17,15 +17,15 @@ import de.uka.ilkd.key.gui.actions.MainWindowAction; import de.uka.ilkd.key.gui.fonticons.IconFactory; import de.uka.ilkd.key.gui.smt.SolverListener; -import de.uka.ilkd.key.macros.SemanticsBlastingMacro; import de.uka.ilkd.key.proof.*; import de.uka.ilkd.key.settings.DefaultSMTSettings; import de.uka.ilkd.key.settings.ProofIndependentSettings; import de.uka.ilkd.key.smt.SolverLauncherListener; -import de.uka.ilkd.key.smt.counterexample.AbstractCounterExampleGenerator; -import de.uka.ilkd.key.smt.counterexample.AbstractSideProofCounterExampleGenerator; import de.uka.ilkd.key.smt.solvertypes.SolverTypes; +import de.uka.ilkd.key.testgen.macros.SemanticsBlastingMacro; +import de.uka.ilkd.key.testgen.smt.counterexample.AbstractCounterExampleGenerator; +import de.uka.ilkd.key.testgen.smt.counterexample.AbstractSideProofCounterExampleGenerator; import org.key_project.prover.sequent.Sequent; import org.slf4j.Logger; diff --git a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGInfoDialog.java b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGInfoDialog.java index 2175949cc1f..c4d44c8b97e 100644 --- a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGInfoDialog.java +++ b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGInfoDialog.java @@ -10,8 +10,8 @@ import de.uka.ilkd.key.gui.MainWindow; import de.uka.ilkd.key.gui.actions.KeyAction; -import de.uka.ilkd.key.smt.testgen.TestGenerationLog; -import de.uka.ilkd.key.util.ThreadUtilities; +import de.uka.ilkd.key.testgen.smt.testgen.TestGenerationLog; +import de.uka.ilkd.key.ui.util.ThreadUtilities; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGWorker.java b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGWorker.java index c5dad53f925..8cbd1e5f2ab 100644 --- a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGWorker.java +++ b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGWorker.java @@ -17,9 +17,9 @@ import de.uka.ilkd.key.proof.init.InitConfig; import de.uka.ilkd.key.proof.init.ProofInputException; import de.uka.ilkd.key.proof.mgt.SpecificationRepository; -import de.uka.ilkd.key.smt.testgen.AbstractTestGenerator; -import de.uka.ilkd.key.smt.testgen.StopRequest; +import de.uka.ilkd.key.testgen.smt.testgen.AbstractTestGenerator; +import de.uka.ilkd.key.testgen.smt.testgen.StopRequest; import org.key_project.prover.sequent.Sequent; /** diff --git a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenExtension.java b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenExtension.java index a870a2441d4..2528e5b20a9 100644 --- a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenExtension.java +++ b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenExtension.java @@ -16,8 +16,8 @@ import de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeManager; import de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeSettings; import de.uka.ilkd.key.gui.settings.SettingsProvider; -import de.uka.ilkd.key.macros.TestGenMacro; +import de.uka.ilkd.key.testgen.macros.TestGenMacro; import org.jspecify.annotations.NonNull; /** diff --git a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenOptionsPanel.java b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenOptionsPanel.java index 886cae40008..4e1cf214e2b 100644 --- a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenOptionsPanel.java +++ b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenOptionsPanel.java @@ -8,7 +8,7 @@ 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.TestGenerationSettings; +import de.uka.ilkd.key.testgen.settings.TestGenerationSettings; public class TestgenOptionsPanel extends SettingsPanel implements SettingsProvider { private static final long serialVersionUID = -2170118134719823425L; diff --git a/keyext.ui.testgen/src/main/java/module-info.java b/keyext.ui.testgen/src/main/java/module-info.java index 5b65bb08779..69a482f27fa 100644 --- a/keyext.ui.testgen/src/main/java/module-info.java +++ b/keyext.ui.testgen/src/main/java/module-info.java @@ -8,4 +8,7 @@ requires java.desktop; requires org.slf4j; requires org.key_project.core; + requires org.key_project.prover; + requires org.key_project.testgen; + requires org.jspecify; } \ No newline at end of file From 9a6864f2728310e72ccf211a2d29565a6dc6f3a2 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Thu, 19 Jun 2025 13:17:51 +0200 Subject: [PATCH 20/22] fix dockingframes, check naming --- build.gradle | 3 +++ key.core.example/src/main/java/module-info.java | 9 ++++++++- .../src/main/java/org/key_project/Main.java | 2 +- .../src/main/java/module-info.java | 12 ++++++++---- key.core.rifl/src/main/java/module-info.java | 8 ++++++-- .../src/main/java/module-info.java | 8 ++++++-- .../src/main/java/module-info.java | 10 ++++++---- key.core.testgen/src/main/java/module-info.java | 11 +++++++---- key.core/src/main/java/module-info.java | 6 +++--- key.ncore.calculus/src/main/java/module-info.java | 7 +++++-- key.ncore/src/main/java/module-info.java | 5 ++++- key.removegenerics/src/main/java/module-info.java | 6 +++++- key.ui/build.gradle | 4 ++-- key.ui/src/main/java/module-info.java | 13 ++++++++----- ...uka.ilkd.key.gui.extension.api.KeYGuiExtension | 1 - key.util/src/main/java/module-info.java | 3 +++ keyext.caching/src/main/java/module-info.java | 15 +++++++++++---- keyext.exploration/src/main/java/module-info.java | 11 +++++++---- .../IsabelleTranslationSettings.java | 13 +++++++------ .../src/main/java/module-info.java | 9 ++++++--- keyext.slicing/src/main/java/module-info.java | 11 +++++++---- keyext.ui.testgen/src/main/java/module-info.java | 11 +++++++---- recoder/src/main/java/module-info.java | 4 ++++ 23 files changed, 124 insertions(+), 58 deletions(-) diff --git a/build.gradle b/build.gradle index e3de12eb01f..be92842d746 100644 --- a/build.gradle +++ b/build.gradle @@ -74,6 +74,9 @@ subprojects { maven { url = 'https://git.key-project.org/api/v4/projects/35/packages/maven' } + maven { // remove if docking frames 1.1.3p5 on Maven Central + url "https://central.sonatype.com/repository/maven-snapshots" + } } dependencies { diff --git a/key.core.example/src/main/java/module-info.java b/key.core.example/src/main/java/module-info.java index 1589f3563f6..34222433fdb 100644 --- a/key.core.example/src/main/java/module-info.java +++ b/key.core.example/src/main/java/module-info.java @@ -1,7 +1,14 @@ +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ -module org.key_project.core.example { +@NullMarked +module key.core.example { + requires org.jspecify; + requires org.slf4j; + requires key.core; + requires org.key_project.util; } \ No newline at end of file diff --git a/key.core.example/src/main/java/org/key_project/Main.java b/key.core.example/src/main/java/org/key_project/Main.java index ca565fbae3b..ef754b52d0e 100644 --- a/key.core.example/src/main/java/org/key_project/Main.java +++ b/key.core.example/src/main/java/org/key_project/Main.java @@ -57,7 +57,7 @@ public static void main(String[] args) { * * @param location the Path with the path to the source directory of the Java project * to be verified - * @return the {@KeYEnvironment} that provides the context for all following verification tasks + * @return the {@link KeYEnvironment} that provides the context for all following verification tasks * @throws ProblemLoaderException if the setup fails */ private static KeYEnvironment setupEnvironment(Path location) throws ProblemLoaderException { diff --git a/key.core.proof_references/src/main/java/module-info.java b/key.core.proof_references/src/main/java/module-info.java index d702a824ed0..07a8238b4a0 100644 --- a/key.core.proof_references/src/main/java/module-info.java +++ b/key.core.proof_references/src/main/java/module-info.java @@ -1,11 +1,15 @@ +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ -module org.key_project.proof_references { - requires org.key_project.core; - requires org.key_project.ncore; +@NullMarked +module key.core.proof_references { + requires key.core; + requires key.ncore; requires org.key_project.util; - requires org.key_project.prover; + requires key.prover; + requires org.jspecify; } \ No newline at end of file diff --git a/key.core.rifl/src/main/java/module-info.java b/key.core.rifl/src/main/java/module-info.java index db958b87368..1e4643e01e9 100644 --- a/key.core.rifl/src/main/java/module-info.java +++ b/key.core.rifl/src/main/java/module-info.java @@ -1,13 +1,17 @@ +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ -module org.key_project.core.rifl { +@NullMarked +module key.core.rifl { exports de.uka.ilkd.key.util.rifl; - requires org.key_project.core; + requires key.core; requires key.recoder; requires java.xml; requires org.slf4j; requires org.key_project.util; + requires org.jspecify; } \ No newline at end of file diff --git a/key.core.symbolic_execution.example/src/main/java/module-info.java b/key.core.symbolic_execution.example/src/main/java/module-info.java index 7d5f55b3703..3d4d862a51d 100644 --- a/key.core.symbolic_execution.example/src/main/java/module-info.java +++ b/key.core.symbolic_execution.example/src/main/java/module-info.java @@ -1,11 +1,15 @@ +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ +@NullMarked module key.core.symbolic_execution.example { - requires transitive org.key_project.symbolic_execution; - requires org.key_project.core; + requires transitive key.core.symbolic_execution; + requires key.core; requires org.key_project.util; requires org.slf4j; + requires org.jspecify; } \ No newline at end of file diff --git a/key.core.symbolic_execution/src/main/java/module-info.java b/key.core.symbolic_execution/src/main/java/module-info.java index 56f321aadb8..2ade811a4d0 100644 --- a/key.core.symbolic_execution/src/main/java/module-info.java +++ b/key.core.symbolic_execution/src/main/java/module-info.java @@ -1,12 +1,14 @@ import de.uka.ilkd.key.proof.init.POExtension; import de.uka.ilkd.key.symbolic_execution.po.TruthValuePOExtension; +import org.jspecify.annotations.NullMarked; /** * * @author Alexander Weigl * @version 1 (31.03.24) */ -module org.key_project.symbolic_execution { +@NullMarked +module key.core.symbolic_execution { exports de.uka.ilkd.key.symbolic_execution; exports de.uka.ilkd.key.symbolic_execution.model; exports de.uka.ilkd.key.symbolic_execution.po; @@ -15,13 +17,13 @@ exports de.uka.ilkd.key.symbolic_execution.strategy.breakpoint; exports de.uka.ilkd.key.symbolic_execution.util; requires java.xml; - requires org.key_project.core; - requires org.key_project.ncore; + requires key.core; + requires key.ncore; requires org.key_project.util; requires java.desktop; requires org.slf4j; requires org.jspecify; - requires org.key_project.prover; + requires key.prover; requires org.checkerframework.checker.qual; provides POExtension with TruthValuePOExtension; diff --git a/key.core.testgen/src/main/java/module-info.java b/key.core.testgen/src/main/java/module-info.java index f3e46b1e78c..72f1a67283a 100644 --- a/key.core.testgen/src/main/java/module-info.java +++ b/key.core.testgen/src/main/java/module-info.java @@ -1,16 +1,19 @@ +import org.jspecify.annotations.NullMarked; + /** * @author Alexander Weigl * @version 1 (6/18/25) */ -module org.key_project.testgen { +@NullMarked +module key.testgen { exports de.uka.ilkd.key.testgen.smt.counterexample; exports de.uka.ilkd.key.testgen.macros; exports de.uka.ilkd.key.testgen.smt.testgen; exports de.uka.ilkd.key.testgen.settings; requires org.slf4j; - requires org.key_project.core; - requires org.key_project.prover; - requires org.key_project.ncore; + requires key.core; + requires key.prover; + requires key.ncore; requires org.key_project.util; requires org.jspecify; } \ No newline at end of file diff --git a/key.core/src/main/java/module-info.java b/key.core/src/main/java/module-info.java index 9891dcd5d6d..c9efcc34317 100644 --- a/key.core/src/main/java/module-info.java +++ b/key.core/src/main/java/module-info.java @@ -9,7 +9,7 @@ * @version 1 (31.03.24) */ @NullMarked -module org.key_project.core { +module key.core { exports de.uka.ilkd.key.java; exports de.uka.ilkd.key.smt.communication; exports de.uka.ilkd.key.java.abstraction; @@ -85,13 +85,13 @@ exports de.uka.ilkd.key.smt.lang; requires org.slf4j; requires key.recoder; - requires org.key_project.ncore; + requires key.ncore; requires org.key_project.util; requires java.desktop; requires org.jspecify; requires org.antlr.antlr4.runtime; requires java.scripting; - requires org.key_project.prover; + requires key.prover; requires org.checkerframework.checker.qual; provides ProofMacro with diff --git a/key.ncore.calculus/src/main/java/module-info.java b/key.ncore.calculus/src/main/java/module-info.java index 94346de55e5..d18aba7acc5 100644 --- a/key.ncore.calculus/src/main/java/module-info.java +++ b/key.ncore.calculus/src/main/java/module-info.java @@ -1,8 +1,11 @@ +import org.jspecify.annotations.NullMarked; + /** * @author Alexander Weigl * @version 1 (6/18/25) */ -module org.key_project.prover { +@NullMarked +module key.prover { exports org.key_project.prover.sequent; exports org.key_project.prover.rules; exports org.key_project.prover.proof; @@ -22,7 +25,7 @@ exports org.key_project.prover.strategy.costbased.termgenerator; exports org.key_project.prover.strategy.costbased.feature.instantiator; exports org.key_project.prover.rules.matcher.vm; - requires org.key_project.ncore; + requires key.ncore; requires org.key_project.util; requires org.jspecify; requires org.checkerframework.checker.qual; diff --git a/key.ncore/src/main/java/module-info.java b/key.ncore/src/main/java/module-info.java index fbfa4da6a0f..a67d672b399 100644 --- a/key.ncore/src/main/java/module-info.java +++ b/key.ncore/src/main/java/module-info.java @@ -1,8 +1,11 @@ +import org.jspecify.annotations.NullMarked; + /** * @author Alexander Weigl * @version 1 (6/18/25) */ -module org.key_project.ncore { +@NullMarked +module key.ncore { requires org.jspecify; requires org.key_project.util; requires org.slf4j; diff --git a/key.removegenerics/src/main/java/module-info.java b/key.removegenerics/src/main/java/module-info.java index 5a183a653c3..aad0dfbbcb3 100644 --- a/key.removegenerics/src/main/java/module-info.java +++ b/key.removegenerics/src/main/java/module-info.java @@ -1,9 +1,13 @@ +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ -module org.key_project.removegenerics { +@NullMarked +module keyext.removegenerics { requires key.recoder; requires org.slf4j; + requires org.jspecify; } \ No newline at end of file diff --git a/key.ui/build.gradle b/key.ui/build.gradle index 942983671f3..08ba2929eb4 100644 --- a/key.ui/build.gradle +++ b/key.ui/build.gradle @@ -27,8 +27,8 @@ dependencies { //logging implementation used by the slf4j implementation 'ch.qos.logback:logback-classic:1.5.18' - api 'org.key-project:docking-frames-common:1.1.3p4-SNAPSHOT' - api 'org.key-project:docking-frames-core:1.1.3p4-SNAPSHOT' + api 'org.key-project:docking-frames-common:1.1.3p5-SNAPSHOT' + api 'org.key-project:docking-frames-core:1.1.3p5-SNAPSHOT' runtimeOnly project(":keyext.ui.testgen") runtimeOnly project(":keyext.caching") diff --git a/key.ui/src/main/java/module-info.java b/key.ui/src/main/java/module-info.java index f872b2545ed..18b6fd6a496 100644 --- a/key.ui/src/main/java/module-info.java +++ b/key.ui/src/main/java/module-info.java @@ -1,9 +1,12 @@ +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ -module org.key_project.ui { +@NullMarked +module key.ui { exports de.uka.ilkd.key.gui.extension.api; exports de.uka.ilkd.key.gui; exports de.uka.ilkd.key.gui.actions; @@ -22,21 +25,21 @@ requires org.slf4j; requires java.desktop; - requires org.key_project.core; + requires key.core; requires java.prefs; requires org.jspecify; requires org.key_project.util; - requires org.key_project.ncore; + requires key.ncore; requires com.miglayout.core; requires com.miglayout.swing; requires ch.qos.logback.core; requires ch.qos.logback.classic; requires key.recoder; - requires org.key_project.core.rifl; + requires key.core.rifl; requires java.compiler; requires dockingframes.core; requires dockingframes.common; - requires org.key_project.prover; + requires key.prover; requires org.antlr.antlr4.runtime; requires java.management; diff --git a/key.ui/src/main/resources/META-INF/services/de.uka.ilkd.key.gui.extension.api.KeYGuiExtension b/key.ui/src/main/resources/META-INF/services/de.uka.ilkd.key.gui.extension.api.KeYGuiExtension index 99b38233d0c..8cb35eaba56 100644 --- a/key.ui/src/main/resources/META-INF/services/de.uka.ilkd.key.gui.extension.api.KeYGuiExtension +++ b/key.ui/src/main/resources/META-INF/services/de.uka.ilkd.key.gui.extension.api.KeYGuiExtension @@ -6,6 +6,5 @@ de.uka.ilkd.key.gui.KeyboardTacletExtension de.uka.ilkd.key.gui.nodeviews.ShowHashcodesExtension de.uka.ilkd.key.gui.LogView de.uka.ilkd.key.gui.plugins.javac.JavacExtension -de.uka.ilkd.key.gui.plugins.caching.CachingExtension de.uka.ilkd.key.gui.utilities.HeapStatusExt de.uka.ilkd.key.gui.JmlEnabledKeysIndicator \ No newline at end of file diff --git a/key.util/src/main/java/module-info.java b/key.util/src/main/java/module-info.java index a68778b326f..19fdd006861 100644 --- a/key.util/src/main/java/module-info.java +++ b/key.util/src/main/java/module-info.java @@ -1,7 +1,10 @@ +import org.jspecify.annotations.NullMarked; + /** * @author Alexander Weigl * @version 1 (6/18/25) */ +@NullMarked module org.key_project.util { exports org.key_project.util.collection; exports org.key_project.util; diff --git a/keyext.caching/src/main/java/module-info.java b/keyext.caching/src/main/java/module-info.java index 75f1f72814b..ddd08b17707 100644 --- a/keyext.caching/src/main/java/module-info.java +++ b/keyext.caching/src/main/java/module-info.java @@ -1,17 +1,24 @@ +import de.uka.ilkd.key.caching.CachingExtension; +import de.uka.ilkd.key.gui.extension.api.KeYGuiExtension; +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ +@NullMarked module keyext.caching { requires java.desktop; - requires org.key_project.ui; - requires org.key_project.core; - requires org.key_project.ncore; - requires org.key_project.prover; + requires key.ui; + requires key.core; + requires key.ncore; + requires key.prover; requires keyext.slicing; requires org.slf4j; requires org.jspecify; requires org.key_project.util; requires com.miglayout.core; + + provides KeYGuiExtension with CachingExtension; } \ No newline at end of file diff --git a/keyext.exploration/src/main/java/module-info.java b/keyext.exploration/src/main/java/module-info.java index 0cd2e1bbc33..431a8992a76 100644 --- a/keyext.exploration/src/main/java/module-info.java +++ b/keyext.exploration/src/main/java/module-info.java @@ -1,15 +1,18 @@ +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ +@NullMarked module keyext.exploration { requires java.desktop; - requires org.key_project.ui; - requires org.key_project.core; + requires key.ui; + requires key.core; requires org.jspecify; - requires org.key_project.prover; - requires org.key_project.ncore; + requires key.prover; + requires key.ncore; requires org.key_project.util; requires dockingframes.common; } \ No newline at end of file diff --git a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/IsabelleTranslationSettings.java b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/IsabelleTranslationSettings.java index 21a0d47eb73..fe4cd4e95be 100644 --- a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/IsabelleTranslationSettings.java +++ b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/IsabelleTranslationSettings.java @@ -15,6 +15,7 @@ import de.uka.ilkd.key.settings.PathConfig; import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,7 +33,7 @@ public class IsabelleTranslationSettings extends AbstractSettings { /** * The settings instance */ - private static IsabelleTranslationSettings INSTANCE; + private static @Nullable IsabelleTranslationSettings INSTANCE; /** * Key to get Isabelle path in JSON @@ -50,11 +51,11 @@ public class IsabelleTranslationSettings extends AbstractSettings { /** * The Isabelle path */ - private Path isabellePath; + private @Nullable Path isabellePath; /** * The translation path */ - private Path translationPath; + private @Nullable Path translationPath; /** * The timeout in seconds */ @@ -171,7 +172,7 @@ public void writeSettings(Properties props) { } @Override - public void readSettings(@NonNull Configuration props) { + public void readSettings(Configuration props) { if (isabellePath == null || translationPath == null) { isabellePath = DEFAULT_ISABELLE_PATH; translationPath = DEFAULT_TRANSLATION_PATH; @@ -204,11 +205,11 @@ public String getHeader() { return "theory Translation imports Main KeYTranslations.TranslationPreamble begin"; } - public Path getIsabellePath() { + public @Nullable Path getIsabellePath() { return isabellePath; } - public Path getTranslationPath() { + public @Nullable Path getTranslationPath() { return translationPath; } diff --git a/keyext.proofmanagement/src/main/java/module-info.java b/keyext.proofmanagement/src/main/java/module-info.java index 6617f96e47e..45c1020357b 100644 --- a/keyext.proofmanagement/src/main/java/module-info.java +++ b/keyext.proofmanagement/src/main/java/module-info.java @@ -1,16 +1,19 @@ +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ +@NullMarked module keyext.proofmanagement { - requires org.key_project.core; + requires key.core; requires org.key_project.util; - requires org.key_project.ncore; + requires key.ncore; requires freemarker; requires java.datatransfer; requires java.desktop; - requires org.key_project.ui; + requires key.ui; requires org.slf4j; requires org.jspecify; } \ No newline at end of file diff --git a/keyext.slicing/src/main/java/module-info.java b/keyext.slicing/src/main/java/module-info.java index 55d5d29dd41..68b2554986b 100644 --- a/keyext.slicing/src/main/java/module-info.java +++ b/keyext.slicing/src/main/java/module-info.java @@ -1,18 +1,21 @@ +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ +@NullMarked module keyext.slicing { exports org.key_project.slicing; exports org.key_project.slicing.analysis; - requires org.key_project.core; - requires org.key_project.ncore; - requires org.key_project.prover; + requires key.core; + requires key.ncore; + requires key.prover; requires org.key_project.util; requires org.slf4j; requires java.desktop; - requires org.key_project.ui; + requires key.ui; requires org.jspecify; requires dockingframes.common; requires com.miglayout.core; diff --git a/keyext.ui.testgen/src/main/java/module-info.java b/keyext.ui.testgen/src/main/java/module-info.java index 69a482f27fa..126843e0a87 100644 --- a/keyext.ui.testgen/src/main/java/module-info.java +++ b/keyext.ui.testgen/src/main/java/module-info.java @@ -1,14 +1,17 @@ +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ +@NullMarked module keyext.ui.testgen { - requires org.key_project.ui; + requires key.ui; requires java.desktop; requires org.slf4j; - requires org.key_project.core; - requires org.key_project.prover; - requires org.key_project.testgen; + requires key.core; + requires key.prover; + requires key.testgen; requires org.jspecify; } \ No newline at end of file diff --git a/recoder/src/main/java/module-info.java b/recoder/src/main/java/module-info.java index 21f69e729ff..ea513845883 100644 --- a/recoder/src/main/java/module-info.java +++ b/recoder/src/main/java/module-info.java @@ -1,8 +1,11 @@ +import org.jspecify.annotations.NullMarked; + /** * * @author Alexander Weigl * @version 1 (31.03.24) */ +@NullMarked module key.recoder { exports recoder; exports recoder.abstraction; @@ -24,4 +27,5 @@ exports recoder.java.expression.literal; requires java.desktop; requires org.slf4j; + requires org.jspecify; } \ No newline at end of file From d6636ecb90811b9c9392f8e8fe2ce23e03610d8d Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Thu, 19 Jun 2025 13:38:00 +0200 Subject: [PATCH 21/22] spotless and fix test cases --- key.core.example/src/main/java/module-info.java | 7 +++---- .../src/main/java/org/key_project/Main.java | 3 ++- .../src/main/java/module-info.java | 7 +++---- key.core.rifl/src/main/java/module-info.java | 8 ++++---- .../src/main/java/module-info.java | 8 ++++---- .../src/main/java/org/key_project/example/Main.java | 3 ++- .../label/FormulaTermLabelMerger.java | 2 +- .../RemoveInCheckBranchesTermLabelRefactoring.java | 2 +- .../label/SymbolicExecutionTermLabelUpdate.java | 2 +- .../strategy/BreakpointStopCondition.java | 1 - .../strategy/CompoundStopCondition.java | 5 ++++- .../SymbolicExecutionBreakpointStopCondition.java | 1 - .../src/main/java/module-info.java | 9 +++++---- .../testcase/AbstractSymbolicExecutionTestCase.java | 2 +- .../de/uka/ilkd/key/testgen/ModelGenerator.java | 2 +- .../key/testgen/macros/SemanticsBlastingMacro.java | 1 + .../uka/ilkd/key/testgen/macros/TestGenMacro.java | 2 +- .../testgen/settings/TestGenerationSettings.java | 1 + .../AbstractCounterExampleGenerator.java | 2 +- key.core.testgen/src/main/java/module-info.java | 6 +++--- .../de/uka/ilkd/key/testcase/smt/ce/TestCE.java | 2 +- .../ilkd/key/testcase/smt/testgen/TestTestgen.java | 2 +- .../predicateabstraction/AbstractionPredicate.java | 13 +++++++------ .../recoderext/SchemaCrossReferenceSourceInfo.java | 1 + .../ilkd/key/nparser/builder/TacletPBuilder.java | 1 - key.core/src/main/java/module-info.java | 9 +++++---- key.ncore.calculus/src/main/java/module-info.java | 6 +++--- key.ncore/src/main/java/module-info.java | 6 +++--- key.removegenerics/src/main/java/module-info.java | 7 +++---- .../java/de/uka/ilkd/key/gui/InfoTreeModel.java | 2 +- .../main/java/de/uka/ilkd/key/gui/IssueDialog.java | 2 +- .../main/java/de/uka/ilkd/key/gui/MainWindow.java | 2 -- .../src/main/java/de/uka/ilkd/key/gui/TaskTree.java | 2 +- .../ilkd/key/gui/WindowUserInterfaceControl.java | 4 ++-- .../key/gui/actions/KeYProjectHomepageAction.java | 1 - .../ilkd/key/gui/actions/RunAllProofsAction.java | 2 +- .../de/uka/ilkd/key/gui/docking/DockingHelper.java | 3 ++- .../de/uka/ilkd/key/gui/docking/DockingLayout.java | 3 ++- .../de/uka/ilkd/key/gui/docking/DynamicCMenu.java | 8 ++++---- .../de/uka/ilkd/key/gui/extension/api/TabPanel.java | 5 +++-- .../java/de/uka/ilkd/key/gui/help/HelpFacade.java | 2 +- .../uka/ilkd/key/gui/nodeviews/SequentViewDock.java | 1 + .../gui/prooftree/ProofTreeSettingsMenuFactory.java | 2 +- .../de/uka/ilkd/key/gui/smt/ProgressDialog.java | 1 - .../ui/AbstractMediatorUserInterfaceControl.java | 4 ++-- .../ilkd/key/ui/ConsoleUserInterfaceControl.java | 2 +- .../java/de/uka/ilkd/key/ui/util/CommandLine.java | 1 + .../java/de/uka/ilkd/key/ui/util/SwingUtil.java | 1 + key.ui/src/main/java/module-info.java | 7 +++---- .../test/java/de/uka/ilkd/key/gui/ChaosMonkey.java | 4 ++-- key.util/src/main/java/module-info.java | 6 +++--- .../de/uka/ilkd/key/caching/CachingExtension.java | 2 +- .../uka/ilkd/key/caching/ReferenceSearchDialog.java | 1 - keyext.caching/src/main/java/module-info.java | 8 ++++---- .../key/proof/reference/TestReferenceSearcher.java | 1 + keyext.exploration/src/main/java/module-info.java | 7 +++---- .../gui/IsabelleProgressDialog.java | 2 +- .../src/main/java/module-info.java | 7 +++---- keyext.slicing/src/main/java/module-info.java | 8 ++++---- .../src/main/java/org/key_project/slicing/Main.java | 2 +- .../key_project/slicing/ui/SlicingLeftPanel.java | 3 +-- .../ilkd/key/gui/testgen/CounterExampleAction.java | 2 +- .../java/de/uka/ilkd/key/gui/testgen/TGWorker.java | 2 +- .../uka/ilkd/key/gui/testgen/TestgenExtension.java | 2 +- keyext.ui.testgen/src/main/java/module-info.java | 7 +++---- recoder/src/main/java/module-info.java | 8 ++++---- 66 files changed, 125 insertions(+), 123 deletions(-) diff --git a/key.core.example/src/main/java/module-info.java b/key.core.example/src/main/java/module-info.java index 34222433fdb..2c5229e1e28 100644 --- a/key.core.example/src/main/java/module-info.java +++ b/key.core.example/src/main/java/module-info.java @@ -2,13 +2,12 @@ /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module key.core.example { +@NullMarked module key.core.example { requires org.jspecify; requires org.slf4j; requires key.core; requires org.key_project.util; -} \ No newline at end of file +} diff --git a/key.core.example/src/main/java/org/key_project/Main.java b/key.core.example/src/main/java/org/key_project/Main.java index ef754b52d0e..a1b583c7be3 100644 --- a/key.core.example/src/main/java/org/key_project/Main.java +++ b/key.core.example/src/main/java/org/key_project/Main.java @@ -57,7 +57,8 @@ public static void main(String[] args) { * * @param location the Path with the path to the source directory of the Java project * to be verified - * @return the {@link KeYEnvironment} that provides the context for all following verification tasks + * @return the {@link KeYEnvironment} that provides the context for all following verification + * tasks * @throws ProblemLoaderException if the setup fails */ private static KeYEnvironment setupEnvironment(Path location) throws ProblemLoaderException { diff --git a/key.core.proof_references/src/main/java/module-info.java b/key.core.proof_references/src/main/java/module-info.java index 07a8238b4a0..e334e4c20f9 100644 --- a/key.core.proof_references/src/main/java/module-info.java +++ b/key.core.proof_references/src/main/java/module-info.java @@ -2,14 +2,13 @@ /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module key.core.proof_references { +@NullMarked module key.core.proof_references { requires key.core; requires key.ncore; requires org.key_project.util; requires key.prover; requires org.jspecify; -} \ No newline at end of file +} diff --git a/key.core.rifl/src/main/java/module-info.java b/key.core.rifl/src/main/java/module-info.java index 1e4643e01e9..0151c23db94 100644 --- a/key.core.rifl/src/main/java/module-info.java +++ b/key.core.rifl/src/main/java/module-info.java @@ -2,16 +2,16 @@ /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module key.core.rifl { +@NullMarked module key.core.rifl { exports de.uka.ilkd.key.util.rifl; + requires key.core; requires key.recoder; requires java.xml; requires org.slf4j; requires org.key_project.util; requires org.jspecify; -} \ No newline at end of file +} diff --git a/key.core.symbolic_execution.example/src/main/java/module-info.java b/key.core.symbolic_execution.example/src/main/java/module-info.java index 3d4d862a51d..c71a89d9192 100644 --- a/key.core.symbolic_execution.example/src/main/java/module-info.java +++ b/key.core.symbolic_execution.example/src/main/java/module-info.java @@ -2,14 +2,14 @@ /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module key.core.symbolic_execution.example { +@NullMarked module key.core.symbolic_execution.example { requires transitive key.core.symbolic_execution; requires key.core; requires org.key_project.util; requires org.slf4j; requires org.jspecify; -} \ No newline at end of file + requires key.prover; +} diff --git a/key.core.symbolic_execution.example/src/main/java/org/key_project/example/Main.java b/key.core.symbolic_execution.example/src/main/java/org/key_project/example/Main.java index 39f907c55f1..ac0bb422354 100644 --- a/key.core.symbolic_execution.example/src/main/java/org/key_project/example/Main.java +++ b/key.core.symbolic_execution.example/src/main/java/org/key_project/example/Main.java @@ -113,7 +113,8 @@ public static void main(String[] args) { // Optionally, add a more advanced stop conditions like breakpoints CompoundStopCondition stopCondition = new CompoundStopCondition(); // Stop after 100 nodes have been explored on each branch. - stopCondition.addChildren(new ExecutedSymbolicExecutionTreeNodesStopCondition(100)); + stopCondition.addChildren( + new ExecutedSymbolicExecutionTreeNodesStopCondition(100)); // stopCondition.addChildren(new StepOverSymbolicExecutionTreeNodesStopCondition()); // // Perform only a step over // stopCondition.addChildren(new diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelMerger.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelMerger.java index fd63851a1fb..5f7db73665a 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelMerger.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/FormulaTermLabelMerger.java @@ -10,8 +10,8 @@ import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.label.FormulaTermLabel; import de.uka.ilkd.key.logic.label.TermLabel; - import de.uka.ilkd.key.rule.label.TermLabelMerger; + import org.key_project.prover.sequent.SequentFormula; /** diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/RemoveInCheckBranchesTermLabelRefactoring.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/RemoveInCheckBranchesTermLabelRefactoring.java index b2dfa4f9335..ff6f6e2a93e 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/RemoveInCheckBranchesTermLabelRefactoring.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/RemoveInCheckBranchesTermLabelRefactoring.java @@ -16,8 +16,8 @@ import de.uka.ilkd.key.rule.LoopContractInternalRule; import de.uka.ilkd.key.rule.UseOperationContractRule; import de.uka.ilkd.key.rule.WhileInvariantRule; - import de.uka.ilkd.key.rule.label.TermLabelRefactoring; + import org.key_project.logic.Name; import org.key_project.prover.rules.Rule; import org.key_project.prover.sequent.PosInOccurrence; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/SymbolicExecutionTermLabelUpdate.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/SymbolicExecutionTermLabelUpdate.java index 523caa8702a..17924e6f670 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/SymbolicExecutionTermLabelUpdate.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/label/SymbolicExecutionTermLabelUpdate.java @@ -11,8 +11,8 @@ import de.uka.ilkd.key.logic.label.TermLabel; import de.uka.ilkd.key.logic.label.TermLabelState; import de.uka.ilkd.key.rule.*; - import de.uka.ilkd.key.rule.label.TermLabelUpdate; + import org.key_project.logic.Name; import org.key_project.prover.rules.Rule; import org.key_project.prover.rules.RuleApp; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/BreakpointStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/BreakpointStopCondition.java index 7b202b5363c..51ca1cba64a 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/BreakpointStopCondition.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/BreakpointStopCondition.java @@ -12,7 +12,6 @@ import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.NodeInfo; -import de.uka.ilkd.key.symbolic_execution.strategy.IBreakpointStopCondition; import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.IBreakpoint; import org.key_project.prover.engine.SingleRuleApplicationInfo; diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CompoundStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CompoundStopCondition.java index 90ea11362c7..16ba81dc71c 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CompoundStopCondition.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/CompoundStopCondition.java @@ -10,11 +10,11 @@ import de.uka.ilkd.key.proof.Goal; +import org.jspecify.annotations.NullMarked; import org.key_project.prover.engine.SingleRuleApplicationInfo; import org.key_project.prover.engine.StopCondition; import org.jspecify.annotations.NonNull; -import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; /** @@ -44,6 +44,9 @@ public class CompoundStopCondition implements StopCondition { */ private @Nullable StopCondition lastShouldStopChild; + public CompoundStopCondition() { + } + /** * Constructor. * diff --git a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionBreakpointStopCondition.java b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionBreakpointStopCondition.java index 0e447026e2a..83b01d830f6 100644 --- a/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionBreakpointStopCondition.java +++ b/key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/SymbolicExecutionBreakpointStopCondition.java @@ -13,7 +13,6 @@ import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.NodeInfo; import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.symbolic_execution.strategy.IBreakpointStopCondition; import de.uka.ilkd.key.symbolic_execution.strategy.breakpoint.IBreakpoint; import org.key_project.prover.rules.RuleApp; diff --git a/key.core.symbolic_execution/src/main/java/module-info.java b/key.core.symbolic_execution/src/main/java/module-info.java index 2ade811a4d0..30656987834 100644 --- a/key.core.symbolic_execution/src/main/java/module-info.java +++ b/key.core.symbolic_execution/src/main/java/module-info.java @@ -1,14 +1,14 @@ import de.uka.ilkd.key.proof.init.POExtension; import de.uka.ilkd.key.symbolic_execution.po.TruthValuePOExtension; + import org.jspecify.annotations.NullMarked; /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module key.core.symbolic_execution { +@NullMarked module key.core.symbolic_execution { exports de.uka.ilkd.key.symbolic_execution; exports de.uka.ilkd.key.symbolic_execution.model; exports de.uka.ilkd.key.symbolic_execution.po; @@ -16,6 +16,7 @@ exports de.uka.ilkd.key.symbolic_execution.strategy; exports de.uka.ilkd.key.symbolic_execution.strategy.breakpoint; exports de.uka.ilkd.key.symbolic_execution.util; + requires java.xml; requires key.core; requires key.ncore; @@ -27,4 +28,4 @@ requires org.checkerframework.checker.qual; provides POExtension with TruthValuePOExtension; -} \ No newline at end of file +} diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/AbstractSymbolicExecutionTestCase.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/AbstractSymbolicExecutionTestCase.java index 56933b36ff7..c07cdc9e892 100644 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/AbstractSymbolicExecutionTestCase.java +++ b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/AbstractSymbolicExecutionTestCase.java @@ -20,7 +20,6 @@ import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.proof.TermProgramVariableCollectorKeepUpdatesForBreakpointconditions; import de.uka.ilkd.key.proof.init.FunctionalOperationContractPO; import de.uka.ilkd.key.proof.init.ProofInputException; import de.uka.ilkd.key.proof.init.ProofOblInput; @@ -39,6 +38,7 @@ import de.uka.ilkd.key.symbolic_execution.po.ProgramMethodPO; import de.uka.ilkd.key.symbolic_execution.po.ProgramMethodSubsetPO; import de.uka.ilkd.key.symbolic_execution.profile.SymbolicExecutionJavaProfile; +import de.uka.ilkd.key.symbolic_execution.proof.TermProgramVariableCollectorKeepUpdatesForBreakpointconditions; import de.uka.ilkd.key.symbolic_execution.strategy.*; import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionEnvironment; import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/ModelGenerator.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/ModelGenerator.java index 9fed4cad4d9..a12361e17b8 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/ModelGenerator.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/ModelGenerator.java @@ -23,8 +23,8 @@ import de.uka.ilkd.key.smt.model.Model; import de.uka.ilkd.key.smt.solvertypes.SolverType; import de.uka.ilkd.key.smt.solvertypes.SolverTypes; - import de.uka.ilkd.key.testgen.settings.TestGenerationSettings; + import org.key_project.logic.Namespace; import org.key_project.prover.sequent.Sequent; import org.key_project.prover.sequent.SequentFormula; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/SemanticsBlastingMacro.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/SemanticsBlastingMacro.java index 5f35c9d993a..fd18840f027 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/SemanticsBlastingMacro.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/SemanticsBlastingMacro.java @@ -7,6 +7,7 @@ import java.util.Set; import de.uka.ilkd.key.macros.AbstractBlastingMacro; + import org.key_project.prover.proof.rulefilter.RuleFilter; import org.key_project.prover.rules.Rule; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/TestGenMacro.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/TestGenMacro.java index e49454531ff..0da13adad3b 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/TestGenMacro.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/macros/TestGenMacro.java @@ -13,8 +13,8 @@ import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.strategy.Strategy; - import de.uka.ilkd.key.testgen.settings.TestGenerationSettings; + import org.key_project.logic.Name; import org.key_project.prover.proof.ProofGoal; import org.key_project.prover.rules.Rule; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/settings/TestGenerationSettings.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/settings/TestGenerationSettings.java index d82c0f35697..5c7d1c86788 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/settings/TestGenerationSettings.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/settings/TestGenerationSettings.java @@ -10,6 +10,7 @@ import de.uka.ilkd.key.settings.Configuration; import de.uka.ilkd.key.settings.ProofIndependentSettings; import de.uka.ilkd.key.settings.SettingsConverter; + import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/counterexample/AbstractCounterExampleGenerator.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/counterexample/AbstractCounterExampleGenerator.java index 5fe089e3624..7de3035eec4 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/counterexample/AbstractCounterExampleGenerator.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/smt/counterexample/AbstractCounterExampleGenerator.java @@ -16,8 +16,8 @@ import de.uka.ilkd.key.smt.*; import de.uka.ilkd.key.smt.solvertypes.SolverType; import de.uka.ilkd.key.smt.solvertypes.SolverTypes; - import de.uka.ilkd.key.testgen.macros.SemanticsBlastingMacro; + import org.key_project.prover.engine.ProverTaskListener; import org.key_project.prover.engine.TaskFinishedInfo; import org.key_project.prover.engine.TaskStartedInfo.TaskKind; diff --git a/key.core.testgen/src/main/java/module-info.java b/key.core.testgen/src/main/java/module-info.java index 72f1a67283a..04121255d59 100644 --- a/key.core.testgen/src/main/java/module-info.java +++ b/key.core.testgen/src/main/java/module-info.java @@ -4,16 +4,16 @@ * @author Alexander Weigl * @version 1 (6/18/25) */ -@NullMarked -module key.testgen { +@NullMarked module key.testgen { exports de.uka.ilkd.key.testgen.smt.counterexample; exports de.uka.ilkd.key.testgen.macros; exports de.uka.ilkd.key.testgen.smt.testgen; exports de.uka.ilkd.key.testgen.settings; + requires org.slf4j; requires key.core; requires key.prover; requires key.ncore; requires org.key_project.util; requires org.jspecify; -} \ No newline at end of file +} diff --git a/key.core.testgen/src/test/java/de/uka/ilkd/key/testcase/smt/ce/TestCE.java b/key.core.testgen/src/test/java/de/uka/ilkd/key/testcase/smt/ce/TestCE.java index 7ef53c1b9bc..587d8970f35 100644 --- a/key.core.testgen/src/test/java/de/uka/ilkd/key/testcase/smt/ce/TestCE.java +++ b/key.core.testgen/src/test/java/de/uka/ilkd/key/testcase/smt/ce/TestCE.java @@ -8,7 +8,6 @@ import de.uka.ilkd.key.control.DefaultUserInterfaceControl; import de.uka.ilkd.key.control.KeYEnvironment; import de.uka.ilkd.key.macros.FinishSymbolicExecutionMacro; -import de.uka.ilkd.key.macros.SemanticsBlastingMacro; import de.uka.ilkd.key.macros.TryCloseMacro; import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.proof.Proof; @@ -16,6 +15,7 @@ import de.uka.ilkd.key.smt.solvertypes.SolverType; import de.uka.ilkd.key.smt.solvertypes.SolverTypes; import de.uka.ilkd.key.suite.util.HelperClassForTestgenTests; +import de.uka.ilkd.key.testgen.macros.SemanticsBlastingMacro; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/key.core.testgen/src/test/java/de/uka/ilkd/key/testcase/smt/testgen/TestTestgen.java b/key.core.testgen/src/test/java/de/uka/ilkd/key/testcase/smt/testgen/TestTestgen.java index 64032f4cbe4..c59834d2101 100644 --- a/key.core.testgen/src/test/java/de/uka/ilkd/key/testcase/smt/testgen/TestTestgen.java +++ b/key.core.testgen/src/test/java/de/uka/ilkd/key/testcase/smt/testgen/TestTestgen.java @@ -8,12 +8,12 @@ import de.uka.ilkd.key.control.DefaultUserInterfaceControl; import de.uka.ilkd.key.control.KeYEnvironment; -import de.uka.ilkd.key.macros.TestGenMacro; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.smt.solvertypes.SolverType; import de.uka.ilkd.key.smt.solvertypes.SolverTypes; import de.uka.ilkd.key.suite.util.HelperClassForTestgenTests; import de.uka.ilkd.key.testcase.smt.ce.TestCommons; +import de.uka.ilkd.key.testgen.macros.TestGenMacro; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/key.core/src/main/java/de/uka/ilkd/key/axiom_abstraction/predicateabstraction/AbstractionPredicate.java b/key.core/src/main/java/de/uka/ilkd/key/axiom_abstraction/predicateabstraction/AbstractionPredicate.java index b076835f68f..5c51a9d7bed 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/axiom_abstraction/predicateabstraction/AbstractionPredicate.java +++ b/key.core/src/main/java/de/uka/ilkd/key/axiom_abstraction/predicateabstraction/AbstractionPredicate.java @@ -3,6 +3,12 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.axiom_abstraction.predicateabstraction; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.logic.*; import de.uka.ilkd.key.logic.op.IProgramVariable; @@ -11,18 +17,13 @@ import de.uka.ilkd.key.proof.OpReplacer; import de.uka.ilkd.key.proof.io.OutputStreamProofSaver; import de.uka.ilkd.key.util.mergerule.MergeRuleUtils; + import org.key_project.logic.Name; import org.key_project.logic.Named; import org.key_project.logic.Namespace; import org.key_project.logic.sort.Sort; import org.key_project.util.collection.Pair; -import java.util.ArrayList; -import java.util.List; -import java.util.function.Function; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - /** * Interface for predicates used for predicate abstraction. An abstraction predicate is a mapping * from program variables or constants to formulae instantiated for the respective variable. diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaCrossReferenceSourceInfo.java b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaCrossReferenceSourceInfo.java index 2f5d5501100..8451a02f844 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaCrossReferenceSourceInfo.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaCrossReferenceSourceInfo.java @@ -4,6 +4,7 @@ package de.uka.ilkd.key.java.recoderext; import de.uka.ilkd.key.java.KeYCrossReferenceSourceInfo; + import recoder.ServiceConfiguration; import recoder.abstraction.PrimitiveType; import recoder.abstraction.Type; diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java index bdd47597931..d24e6776a8a 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java @@ -41,7 +41,6 @@ import org.key_project.prover.sequent.SequentFormula; import org.key_project.util.collection.*; -import antlr.RecognitionException; import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.RuleContext; import org.antlr.v4.runtime.Token; diff --git a/key.core/src/main/java/module-info.java b/key.core/src/main/java/module-info.java index c9efcc34317..30b11a86df5 100644 --- a/key.core/src/main/java/module-info.java +++ b/key.core/src/main/java/module-info.java @@ -1,15 +1,15 @@ import de.uka.ilkd.key.macros.ProofMacro; import de.uka.ilkd.key.proof.init.DefaultProfileResolver; import de.uka.ilkd.key.scripts.ProofScriptCommand; + import org.jspecify.annotations.NullMarked; /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module key.core { +@NullMarked module key.core { exports de.uka.ilkd.key.java; exports de.uka.ilkd.key.smt.communication; exports de.uka.ilkd.key.java.abstraction; @@ -83,6 +83,7 @@ exports de.uka.ilkd.key.util.parsing; exports de.uka.ilkd.key.proof.io.intermediate; exports de.uka.ilkd.key.smt.lang; + requires org.slf4j; requires key.recoder; requires key.ncore; @@ -153,4 +154,4 @@ de.uka.ilkd.key.proof.init.JavaProfileDefaultProfileResolver, de.uka.ilkd.key.proof.init.JavaProfileWithPermissionsDefaultProfileResolver; -} \ No newline at end of file +} diff --git a/key.ncore.calculus/src/main/java/module-info.java b/key.ncore.calculus/src/main/java/module-info.java index d18aba7acc5..210824eb2ac 100644 --- a/key.ncore.calculus/src/main/java/module-info.java +++ b/key.ncore.calculus/src/main/java/module-info.java @@ -4,8 +4,7 @@ * @author Alexander Weigl * @version 1 (6/18/25) */ -@NullMarked -module key.prover { +@NullMarked module key.prover { exports org.key_project.prover.sequent; exports org.key_project.prover.rules; exports org.key_project.prover.proof; @@ -25,9 +24,10 @@ exports org.key_project.prover.strategy.costbased.termgenerator; exports org.key_project.prover.strategy.costbased.feature.instantiator; exports org.key_project.prover.rules.matcher.vm; + requires key.ncore; requires org.key_project.util; requires org.jspecify; requires org.checkerframework.checker.qual; requires org.slf4j; -} \ No newline at end of file +} diff --git a/key.ncore/src/main/java/module-info.java b/key.ncore/src/main/java/module-info.java index a67d672b399..6a873e2c4c9 100644 --- a/key.ncore/src/main/java/module-info.java +++ b/key.ncore/src/main/java/module-info.java @@ -4,13 +4,13 @@ * @author Alexander Weigl * @version 1 (6/18/25) */ -@NullMarked -module key.ncore { +@NullMarked module key.ncore { requires org.jspecify; requires org.key_project.util; requires org.slf4j; + exports org.key_project.logic; exports org.key_project.logic.op; exports org.key_project.logic.op.sv; exports org.key_project.logic.sort; -} \ No newline at end of file +} diff --git a/key.removegenerics/src/main/java/module-info.java b/key.removegenerics/src/main/java/module-info.java index aad0dfbbcb3..e2c6beb4552 100644 --- a/key.removegenerics/src/main/java/module-info.java +++ b/key.removegenerics/src/main/java/module-info.java @@ -2,12 +2,11 @@ /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module keyext.removegenerics { +@NullMarked module keyext.removegenerics { requires key.recoder; requires org.slf4j; requires org.jspecify; -} \ No newline at end of file +} diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoTreeModel.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoTreeModel.java index 169d6cb6f40..27a39578207 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoTreeModel.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/InfoTreeModel.java @@ -12,8 +12,8 @@ import de.uka.ilkd.key.rule.NoPosTacletApp; import de.uka.ilkd.key.rule.OneStepSimplifier; import de.uka.ilkd.key.rule.Taclet; -import de.uka.ilkd.key.util.MiscTools; import de.uka.ilkd.key.ui.util.XMLResources; +import de.uka.ilkd.key.util.MiscTools; import org.key_project.logic.Name; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/IssueDialog.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/IssueDialog.java index 4cc849fe61c..51299f77c2e 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/IssueDialog.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/IssueDialog.java @@ -36,12 +36,12 @@ import de.uka.ilkd.key.pp.LogicPrinter; import de.uka.ilkd.key.speclang.PositionedString; import de.uka.ilkd.key.speclang.SLEnvInput; +import de.uka.ilkd.key.ui.util.SwingUtil; import de.uka.ilkd.key.util.ExceptionTools; import org.key_project.util.collection.ImmutableSet; import org.key_project.util.java.IOUtil; import org.key_project.util.java.StringUtil; -import de.uka.ilkd.key.ui.util.SwingUtil; import org.antlr.v4.runtime.InputMismatchException; import org.antlr.v4.runtime.NoViableAltException; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java index c7bfacb93d2..21ea7ba192b 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java @@ -26,7 +26,6 @@ import javax.swing.event.MenuListener; import javax.swing.event.MouseInputAdapter; -import com.formdev.flatlaf.FlatLightLaf; import de.uka.ilkd.key.control.AutoModeListener; import de.uka.ilkd.key.control.TermLabelVisibilityManager; import de.uka.ilkd.key.core.KeYMediator; @@ -87,7 +86,6 @@ import bibliothek.gui.dock.common.SingleCDockable; import bibliothek.gui.dock.common.intern.CDockable; import bibliothek.gui.dock.station.stack.tab.layouting.TabPlacement; -import com.formdev.flatlaf.FlatLightLaf; import com.formdev.flatlaf.util.SystemInfo; import org.jspecify.annotations.NonNull; import org.slf4j.Logger; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/TaskTree.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/TaskTree.java index e99f25d42a0..fd8b1c02f2e 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/TaskTree.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/TaskTree.java @@ -29,8 +29,8 @@ import de.uka.ilkd.key.proof.*; import de.uka.ilkd.key.proof.mgt.ProofEnvironment; import de.uka.ilkd.key.proof.mgt.ProofStatus; - import de.uka.ilkd.key.ui.proof.mgt.*; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/WindowUserInterfaceControl.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/WindowUserInterfaceControl.java index f7c5b26951b..4b8e85a9fe8 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/WindowUserInterfaceControl.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/WindowUserInterfaceControl.java @@ -41,9 +41,10 @@ import de.uka.ilkd.key.ui.AbstractMediatorUserInterfaceControl; import de.uka.ilkd.key.ui.MediatorProofControl; import de.uka.ilkd.key.ui.proof.io.ProblemLoader; +import de.uka.ilkd.key.ui.util.SwingUtil; +import de.uka.ilkd.key.ui.util.ThreadUtilities; import de.uka.ilkd.key.util.KeYConstants; import de.uka.ilkd.key.util.MiscTools; -import de.uka.ilkd.key.ui.util.ThreadUtilities; import org.key_project.prover.engine.ProverCore; import org.key_project.prover.engine.TaskFinishedInfo; @@ -51,7 +52,6 @@ import org.key_project.prover.engine.impl.ApplyStrategyInfo; import org.key_project.util.collection.ImmutableSet; import org.key_project.util.collection.Pair; -import de.uka.ilkd.key.ui.util.SwingUtil; import org.antlr.v4.runtime.misc.ParseCancellationException; import org.slf4j.Logger; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeYProjectHomepageAction.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeYProjectHomepageAction.java index a4f62ab75be..8f4734d54f0 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeYProjectHomepageAction.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/KeYProjectHomepageAction.java @@ -12,7 +12,6 @@ import de.uka.ilkd.key.gui.MainWindow; import de.uka.ilkd.key.gui.fonticons.IconFactory; - import de.uka.ilkd.key.ui.util.SwingUtil; /** diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/RunAllProofsAction.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/RunAllProofsAction.java index 6c4b294415b..f1d498452f2 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/RunAllProofsAction.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/actions/RunAllProofsAction.java @@ -17,8 +17,8 @@ import de.uka.ilkd.key.gui.MainWindow; import de.uka.ilkd.key.gui.WindowUserInterfaceControl; import de.uka.ilkd.key.proof.Proof; -import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import de.uka.ilkd.key.ui.MediatorProofControl; +import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import org.jspecify.annotations.Nullable; import org.slf4j.Logger; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingHelper.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingHelper.java index 2a9cb2c5bf8..a6638a21a0f 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingHelper.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingHelper.java @@ -20,7 +20,6 @@ import de.uka.ilkd.key.gui.prooftree.ProofTreeView; import de.uka.ilkd.key.gui.sourceview.SourceViewFrame; -import org.jspecify.annotations.NonNull; import org.key_project.dockingframes.common.common.*; import org.key_project.dockingframes.common.common.action.CAction; import org.key_project.dockingframes.common.common.action.CButton; @@ -31,6 +30,8 @@ import org.key_project.dockingframes.core.gui.dock.control.focus.DefaultFocusRequest; import org.key_project.dockingframes.core.gui.dock.control.focus.FocusRequest; +import org.jspecify.annotations.NonNull; + public class DockingHelper { public final static List LEFT_TOP_PANEL = new LinkedList<>(); public final static List RIGHT_PANEL = new LinkedList<>(); diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingLayout.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingLayout.java index 1cc2f1501b0..a3f3f45b90b 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingLayout.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DockingLayout.java @@ -25,10 +25,11 @@ import de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeManager; import de.uka.ilkd.key.settings.PathConfig; -import org.jspecify.annotations.NonNull; import org.key_project.dockingframes.common.common.CControl; import org.key_project.dockingframes.core.gui.dock.util.IconManager; import org.key_project.dockingframes.core.gui.dock.util.Priority; + +import org.jspecify.annotations.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DynamicCMenu.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DynamicCMenu.java index 255e52f8e70..5732dcd80ea 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DynamicCMenu.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/docking/DynamicCMenu.java @@ -3,6 +3,9 @@ * SPDX-License-Identifier: GPL-2.0-only */ package de.uka.ilkd.key.gui.docking; +import java.util.function.Supplier; +import javax.swing.*; + import org.key_project.dockingframes.common.common.action.CAction; import org.key_project.dockingframes.common.common.action.CMenu; import org.key_project.dockingframes.common.common.action.core.CommonDecoratableDockAction; @@ -15,9 +18,6 @@ import org.key_project.dockingframes.core.gui.dock.action.view.ActionViewConverter; import org.key_project.dockingframes.core.gui.dock.action.view.ViewTarget; -import java.util.function.Supplier; -import javax.swing.*; - /** * CMenu that gets (re-)generated when the action gets fired using the provided supplier. @@ -76,7 +76,7 @@ public DockActionSource getMenu(Dockable dockable) { } public V createView(ViewTarget target, ActionViewConverter converter, - Dockable dockable) { + Dockable dockable) { return converter.createView(ActionType.MENU, this, target, dockable); } diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/extension/api/TabPanel.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/extension/api/TabPanel.java index 9f6a5d57b1b..79954d47716 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/extension/api/TabPanel.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/extension/api/TabPanel.java @@ -7,11 +7,12 @@ import java.util.Collections; import javax.swing.*; -import org.jspecify.annotations.NonNull; -import org.jspecify.annotations.Nullable; import org.key_project.dockingframes.common.common.action.CAction; import org.key_project.dockingframes.common.common.intern.DefaultCDockable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + /** * @author Alexander Weigl * @version 1 (23.04.19) diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/help/HelpFacade.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/help/HelpFacade.java index be81e337d02..f19467eb61b 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/help/HelpFacade.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/help/HelpFacade.java @@ -13,11 +13,11 @@ import de.uka.ilkd.key.gui.actions.KeyAction; import de.uka.ilkd.key.gui.fonticons.IconFactory; - import de.uka.ilkd.key.ui.util.SwingUtil; import org.key_project.dockingframes.common.common.action.CAction; import org.key_project.dockingframes.common.common.action.CButton; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentViewDock.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentViewDock.java index c640c7a7b33..8e98a5884c6 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentViewDock.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentViewDock.java @@ -15,6 +15,7 @@ import de.uka.ilkd.key.gui.fonticons.IconFactory; import de.uka.ilkd.key.proof.Node; import de.uka.ilkd.key.proof.Proof; + import org.key_project.dockingframes.common.common.CLocation; import org.key_project.dockingframes.common.common.DefaultMultipleCDockable; import org.key_project.dockingframes.common.common.NullMultipleCDockableFactory; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeSettingsMenuFactory.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeSettingsMenuFactory.java index 3f9afa8f304..1f32a669b14 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeSettingsMenuFactory.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/prooftree/ProofTreeSettingsMenuFactory.java @@ -11,12 +11,12 @@ import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.settings.ProofIndependentSettings; + import org.key_project.dockingframes.common.common.action.CAction; import org.key_project.dockingframes.common.common.action.CButton; import org.key_project.dockingframes.common.common.action.CCheckBox; import org.key_project.dockingframes.common.common.action.CMenu; - import static de.uka.ilkd.key.gui.prooftree.ProofTreePopupFactory.ICON_SIZE; public class ProofTreeSettingsMenuFactory { diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/smt/ProgressDialog.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/smt/ProgressDialog.java index db61f612942..5c509e02e11 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/smt/ProgressDialog.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/smt/ProgressDialog.java @@ -17,7 +17,6 @@ import de.uka.ilkd.key.gui.smt.ProgressModel.ProcessColumn.ProcessData; import de.uka.ilkd.key.gui.smt.ProgressTable.ProgressTableListener; import de.uka.ilkd.key.smt.SMTFocusResults; - import de.uka.ilkd.key.ui.util.SwingUtil; import org.slf4j.Logger; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/ui/AbstractMediatorUserInterfaceControl.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/AbstractMediatorUserInterfaceControl.java index ba01f5bfb9a..a64e9939658 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/ui/AbstractMediatorUserInterfaceControl.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/AbstractMediatorUserInterfaceControl.java @@ -24,15 +24,15 @@ import de.uka.ilkd.key.proof.init.AbstractProfile; import de.uka.ilkd.key.proof.init.InitConfig; import de.uka.ilkd.key.proof.init.ProofOblInput; -import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import de.uka.ilkd.key.proof.io.ProofSaver; import de.uka.ilkd.key.proof.mgt.ProofEnvironment; import de.uka.ilkd.key.proof.mgt.ProofEnvironmentEvent; import de.uka.ilkd.key.proof.mgt.ProofEnvironmentListener; import de.uka.ilkd.key.prover.impl.DefaultTaskStartedInfo; +import de.uka.ilkd.key.ui.proof.io.ProblemLoader; +import de.uka.ilkd.key.ui.util.ThreadUtilities; import de.uka.ilkd.key.util.KeYResourceManager; import de.uka.ilkd.key.util.MiscTools; -import de.uka.ilkd.key.ui.util.ThreadUtilities; import org.key_project.prover.engine.ProverTaskListener; import org.key_project.prover.engine.TaskStartedInfo; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/ui/ConsoleUserInterfaceControl.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/ConsoleUserInterfaceControl.java index 0c43fc15bb4..3b271a05b54 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/ui/ConsoleUserInterfaceControl.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/ConsoleUserInterfaceControl.java @@ -30,12 +30,12 @@ import de.uka.ilkd.key.proof.init.ProblemInitializer; import de.uka.ilkd.key.proof.init.Profile; import de.uka.ilkd.key.proof.init.ProofOblInput; -import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import de.uka.ilkd.key.proof.io.ProofSaver; import de.uka.ilkd.key.prover.impl.DefaultTaskStartedInfo; import de.uka.ilkd.key.rule.IBuiltInRuleApp; import de.uka.ilkd.key.scripts.ProofScriptEngine; import de.uka.ilkd.key.speclang.PositionedString; +import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import de.uka.ilkd.key.util.MiscTools; import org.key_project.prover.engine.ProverCore; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java index 29d656a0cf7..8bb24c9abcd 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java @@ -9,6 +9,7 @@ import java.util.*; import de.uka.ilkd.key.core.Main; + import org.jspecify.annotations.Nullable; import org.jspecify.annotations.Nullable; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/ui/util/SwingUtil.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/SwingUtil.java index 23b26af02f6..242ef7460c8 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/ui/util/SwingUtil.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/SwingUtil.java @@ -18,6 +18,7 @@ import de.uka.ilkd.key.gui.fonticons.IconFactory; import org.key_project.dockingframes.core.gui.dock.themes.basic.BasicDockableDisplayer; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.ui/src/main/java/module-info.java b/key.ui/src/main/java/module-info.java index 18b6fd6a496..dff59cde666 100644 --- a/key.ui/src/main/java/module-info.java +++ b/key.ui/src/main/java/module-info.java @@ -2,11 +2,10 @@ /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module key.ui { +@NullMarked module key.ui { exports de.uka.ilkd.key.gui.extension.api; exports de.uka.ilkd.key.gui; exports de.uka.ilkd.key.gui.actions; @@ -55,4 +54,4 @@ de.uka.ilkd.key.gui.utilities.HeapStatusExt, de.uka.ilkd.key.gui.JmlEnabledKeysIndicator; -} \ No newline at end of file +} diff --git a/key.ui/src/test/java/de/uka/ilkd/key/gui/ChaosMonkey.java b/key.ui/src/test/java/de/uka/ilkd/key/gui/ChaosMonkey.java index 141428f9332..1b3444783e6 100644 --- a/key.ui/src/test/java/de/uka/ilkd/key/gui/ChaosMonkey.java +++ b/key.ui/src/test/java/de/uka/ilkd/key/gui/ChaosMonkey.java @@ -20,10 +20,10 @@ import de.uka.ilkd.key.gui.actions.LemmaGenerationAction; import de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeManager; import de.uka.ilkd.key.settings.ProofIndependentSettings; - import de.uka.ilkd.key.ui.util.SwingUtil; -import bibliothek.gui.dock.dockable.AbstractDockable; +import org.key_project.dockingframes.core.gui.dock.dockable.AbstractDockable; + import org.junit.jupiter.api.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/key.util/src/main/java/module-info.java b/key.util/src/main/java/module-info.java index 19fdd006861..7e0492519b7 100644 --- a/key.util/src/main/java/module-info.java +++ b/key.util/src/main/java/module-info.java @@ -4,8 +4,7 @@ * @author Alexander Weigl * @version 1 (6/18/25) */ -@NullMarked -module org.key_project.util { +@NullMarked module org.key_project.util { exports org.key_project.util.collection; exports org.key_project.util; exports org.key_project.util.java; @@ -13,9 +12,10 @@ exports org.key_project.util.bitops; exports org.key_project.util.reflection; exports org.key_project.util.helper; + requires java.desktop; requires org.jspecify; requires org.checkerframework.checker.qual; requires org.slf4j; requires org.checkerframework.checker.util; -} \ No newline at end of file +} diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingExtension.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingExtension.java index 11d2c871700..2a492ef217e 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingExtension.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/CachingExtension.java @@ -37,9 +37,9 @@ import org.key_project.prover.engine.ProverTaskListener; import org.key_project.prover.engine.TaskFinishedInfo; import org.key_project.prover.engine.TaskStartedInfo; +import org.key_project.util.collection.ImmutableList; import org.jspecify.annotations.NonNull; -import org.key_project.util.collection.ImmutableList; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchDialog.java b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchDialog.java index 4269884e8b3..5cc2b04c451 100644 --- a/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchDialog.java +++ b/keyext.caching/src/main/java/de/uka/ilkd/key/caching/ReferenceSearchDialog.java @@ -10,7 +10,6 @@ import de.uka.ilkd.key.gui.MainWindow; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.reference.ClosedBy; - import de.uka.ilkd.key.ui.util.SwingUtil; import org.slf4j.Logger; diff --git a/keyext.caching/src/main/java/module-info.java b/keyext.caching/src/main/java/module-info.java index ddd08b17707..a14638cc2c4 100644 --- a/keyext.caching/src/main/java/module-info.java +++ b/keyext.caching/src/main/java/module-info.java @@ -1,14 +1,14 @@ import de.uka.ilkd.key.caching.CachingExtension; import de.uka.ilkd.key.gui.extension.api.KeYGuiExtension; + import org.jspecify.annotations.NullMarked; /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module keyext.caching { +@NullMarked module keyext.caching { requires java.desktop; requires key.ui; requires key.core; @@ -21,4 +21,4 @@ requires com.miglayout.core; provides KeYGuiExtension with CachingExtension; -} \ No newline at end of file +} diff --git a/keyext.caching/src/test/java/de/uka/ilkd/key/proof/reference/TestReferenceSearcher.java b/keyext.caching/src/test/java/de/uka/ilkd/key/proof/reference/TestReferenceSearcher.java index 4247cb4c5d8..05e54548851 100644 --- a/keyext.caching/src/test/java/de/uka/ilkd/key/proof/reference/TestReferenceSearcher.java +++ b/keyext.caching/src/test/java/de/uka/ilkd/key/proof/reference/TestReferenceSearcher.java @@ -8,6 +8,7 @@ import java.util.Objects; import java.util.concurrent.CopyOnWriteArrayList; +import de.uka.ilkd.key.caching.ReferenceSearcher; import de.uka.ilkd.key.control.DefaultUserInterfaceControl; import de.uka.ilkd.key.control.KeYEnvironment; import de.uka.ilkd.key.proof.Goal; diff --git a/keyext.exploration/src/main/java/module-info.java b/keyext.exploration/src/main/java/module-info.java index 431a8992a76..0bf52eb9b9e 100644 --- a/keyext.exploration/src/main/java/module-info.java +++ b/keyext.exploration/src/main/java/module-info.java @@ -2,11 +2,10 @@ /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module keyext.exploration { +@NullMarked module keyext.exploration { requires java.desktop; requires key.ui; requires key.core; @@ -15,4 +14,4 @@ requires key.ncore; requires org.key_project.util; requires dockingframes.common; -} \ No newline at end of file +} diff --git a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/gui/IsabelleProgressDialog.java b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/gui/IsabelleProgressDialog.java index 9fb2596f408..76ada331ae3 100644 --- a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/gui/IsabelleProgressDialog.java +++ b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/gui/IsabelleProgressDialog.java @@ -14,9 +14,9 @@ import de.uka.ilkd.key.gui.IssueDialog; import de.uka.ilkd.key.gui.MainWindow; +import de.uka.ilkd.key.ui.util.SwingUtil; import org.key_project.isabelletranslation.gui.IsabelleProgressModel.ProcessColumn.ProcessData; -import de.uka.ilkd.key.ui.util.SwingUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/keyext.proofmanagement/src/main/java/module-info.java b/keyext.proofmanagement/src/main/java/module-info.java index 45c1020357b..a6b70af693e 100644 --- a/keyext.proofmanagement/src/main/java/module-info.java +++ b/keyext.proofmanagement/src/main/java/module-info.java @@ -2,11 +2,10 @@ /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module keyext.proofmanagement { +@NullMarked module keyext.proofmanagement { requires key.core; requires org.key_project.util; requires key.ncore; @@ -16,4 +15,4 @@ requires key.ui; requires org.slf4j; requires org.jspecify; -} \ No newline at end of file +} diff --git a/keyext.slicing/src/main/java/module-info.java b/keyext.slicing/src/main/java/module-info.java index 68b2554986b..8e3dcf9cc21 100644 --- a/keyext.slicing/src/main/java/module-info.java +++ b/keyext.slicing/src/main/java/module-info.java @@ -2,13 +2,13 @@ /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module keyext.slicing { +@NullMarked module keyext.slicing { exports org.key_project.slicing; exports org.key_project.slicing.analysis; + requires key.core; requires key.ncore; requires key.prover; @@ -19,4 +19,4 @@ requires org.jspecify; requires dockingframes.common; requires com.miglayout.core; -} \ No newline at end of file +} diff --git a/keyext.slicing/src/main/java/org/key_project/slicing/Main.java b/keyext.slicing/src/main/java/org/key_project/slicing/Main.java index 8d108a07788..053abba3be9 100644 --- a/keyext.slicing/src/main/java/org/key_project/slicing/Main.java +++ b/keyext.slicing/src/main/java/org/key_project/slicing/Main.java @@ -16,9 +16,9 @@ import de.uka.ilkd.key.proof.init.JavaProfile; import de.uka.ilkd.key.proof.io.ProblemLoaderControl; import de.uka.ilkd.key.settings.GeneralSettings; - import de.uka.ilkd.key.ui.util.CommandLine; import de.uka.ilkd.key.ui.util.CommandLineException; + import org.key_project.slicing.analysis.AnalysisResults; import org.slf4j.Logger; diff --git a/keyext.slicing/src/main/java/org/key_project/slicing/ui/SlicingLeftPanel.java b/keyext.slicing/src/main/java/org/key_project/slicing/ui/SlicingLeftPanel.java index b26561a2cb9..bb361d3a091 100644 --- a/keyext.slicing/src/main/java/org/key_project/slicing/ui/SlicingLeftPanel.java +++ b/keyext.slicing/src/main/java/org/key_project/slicing/ui/SlicingLeftPanel.java @@ -33,9 +33,8 @@ import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.proof.ProofTreeEvent; import de.uka.ilkd.key.proof.ProofTreeListener; -import de.uka.ilkd.key.ui.AbstractMediatorUserInterfaceControl; -import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import de.uka.ilkd.key.proof.io.ProblemLoaderControl; +import de.uka.ilkd.key.ui.proof.io.ProblemLoader; import org.key_project.dockingframes.common.common.action.CAction; import org.key_project.slicing.DependencyTracker; diff --git a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/CounterExampleAction.java b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/CounterExampleAction.java index e7d31e0d52f..44f041f8ee9 100644 --- a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/CounterExampleAction.java +++ b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/CounterExampleAction.java @@ -22,10 +22,10 @@ import de.uka.ilkd.key.settings.ProofIndependentSettings; import de.uka.ilkd.key.smt.SolverLauncherListener; import de.uka.ilkd.key.smt.solvertypes.SolverTypes; - import de.uka.ilkd.key.testgen.macros.SemanticsBlastingMacro; import de.uka.ilkd.key.testgen.smt.counterexample.AbstractCounterExampleGenerator; import de.uka.ilkd.key.testgen.smt.counterexample.AbstractSideProofCounterExampleGenerator; + import org.key_project.prover.sequent.Sequent; import org.slf4j.Logger; diff --git a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGWorker.java b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGWorker.java index 8cbd1e5f2ab..d52ee2df01a 100644 --- a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGWorker.java +++ b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TGWorker.java @@ -17,9 +17,9 @@ import de.uka.ilkd.key.proof.init.InitConfig; import de.uka.ilkd.key.proof.init.ProofInputException; import de.uka.ilkd.key.proof.mgt.SpecificationRepository; - import de.uka.ilkd.key.testgen.smt.testgen.AbstractTestGenerator; import de.uka.ilkd.key.testgen.smt.testgen.StopRequest; + import org.key_project.prover.sequent.Sequent; /** diff --git a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenExtension.java b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenExtension.java index 2528e5b20a9..a2020f4b520 100644 --- a/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenExtension.java +++ b/keyext.ui.testgen/src/main/java/de/uka/ilkd/key/gui/testgen/TestgenExtension.java @@ -16,8 +16,8 @@ import de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeManager; import de.uka.ilkd.key.gui.keyshortcuts.KeyStrokeSettings; import de.uka.ilkd.key.gui.settings.SettingsProvider; - import de.uka.ilkd.key.testgen.macros.TestGenMacro; + import org.jspecify.annotations.NonNull; /** diff --git a/keyext.ui.testgen/src/main/java/module-info.java b/keyext.ui.testgen/src/main/java/module-info.java index 126843e0a87..149b54f21e2 100644 --- a/keyext.ui.testgen/src/main/java/module-info.java +++ b/keyext.ui.testgen/src/main/java/module-info.java @@ -2,11 +2,10 @@ /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module keyext.ui.testgen { +@NullMarked module keyext.ui.testgen { requires key.ui; requires java.desktop; requires org.slf4j; @@ -14,4 +13,4 @@ requires key.prover; requires key.testgen; requires org.jspecify; -} \ No newline at end of file +} diff --git a/recoder/src/main/java/module-info.java b/recoder/src/main/java/module-info.java index ea513845883..ba0f1d695e0 100644 --- a/recoder/src/main/java/module-info.java +++ b/recoder/src/main/java/module-info.java @@ -2,11 +2,10 @@ /** * - * @author Alexander Weigl + * @author Alexander Weigl * @version 1 (31.03.24) */ -@NullMarked -module key.recoder { +@NullMarked module key.recoder { exports recoder; exports recoder.abstraction; exports recoder.convenience; @@ -25,7 +24,8 @@ exports recoder.java.declaration.modifier; exports recoder.kit; exports recoder.java.expression.literal; + requires java.desktop; requires org.slf4j; requires org.jspecify; -} \ No newline at end of file +} From 31bb4e339c8f2f34a4c89bd5deeb714052e4a156 Mon Sep 17 00:00:00 2001 From: Alexander Weigl Date: Tue, 15 Jul 2025 22:10:14 +0200 Subject: [PATCH 22/22] fix require/import errors from rebasing --- key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java | 7 ------- .../src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java | 2 -- key.ui/src/main/java/module-info.java | 6 ++++-- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java index 21ea7ba192b..2aa4db4ec55 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/MainWindow.java @@ -69,8 +69,6 @@ import de.uka.ilkd.key.ui.util.ThreadUtilities; import de.uka.ilkd.key.util.KeYConstants; import de.uka.ilkd.key.util.KeYResourceManager; -import de.uka.ilkd.key.util.PreferenceSaver; -import de.uka.ilkd.key.util.ThreadUtilities; import org.key_project.dockingframes.common.common.CControl; import org.key_project.dockingframes.common.common.SingleCDockable; @@ -81,11 +79,6 @@ import org.key_project.prover.rules.RuleApp; import org.key_project.prover.sequent.Sequent; -import bibliothek.gui.dock.StackDockStation; -import bibliothek.gui.dock.common.CControl; -import bibliothek.gui.dock.common.SingleCDockable; -import bibliothek.gui.dock.common.intern.CDockable; -import bibliothek.gui.dock.station.stack.tab.layouting.TabPlacement; import com.formdev.flatlaf.util.SystemInfo; import org.jspecify.annotations.NonNull; import org.slf4j.Logger; diff --git a/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java index 8bb24c9abcd..f71bc3b19c3 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/ui/util/CommandLine.java @@ -12,8 +12,6 @@ import org.jspecify.annotations.Nullable; -import org.jspecify.annotations.Nullable; - /** * A small framework to handle command lines. * diff --git a/key.ui/src/main/java/module-info.java b/key.ui/src/main/java/module-info.java index dff59cde666..3dfaf803e47 100644 --- a/key.ui/src/main/java/module-info.java +++ b/key.ui/src/main/java/module-info.java @@ -23,9 +23,7 @@ exports de.uka.ilkd.key.gui.keyshortcuts; requires org.slf4j; - requires java.desktop; requires key.core; - requires java.prefs; requires org.jspecify; requires org.key_project.util; requires key.ncore; @@ -41,6 +39,10 @@ requires key.prover; requires org.antlr.antlr4.runtime; requires java.management; + requires org.checkerframework.checker.qual; + requires com.formdev.flatlaf; + requires java.desktop; + requires java.prefs; provides de.uka.ilkd.key.gui.extension.api.KeYGuiExtension with de.uka.ilkd.key.gui.originlabels.OriginTermLabelsExt,