From ac9a3597af873b85c6091fa88566df38b19930ac Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Tue, 24 Oct 2023 18:27:13 +0200 Subject: [PATCH 01/17] Remove duplicate page --- docs/devel/HowtoTaclet.md | 238 -------------------------------------- docs/devel/index.md | 1 - mkdocs.yml | 1 - 3 files changed, 240 deletions(-) delete mode 100644 docs/devel/HowtoTaclet.md diff --git a/docs/devel/HowtoTaclet.md b/docs/devel/HowtoTaclet.md deleted file mode 100644 index 5dd07dc..0000000 --- a/docs/devel/HowtoTaclet.md +++ /dev/null @@ -1,238 +0,0 @@ -# Writing Taclets - -New prover rules in KeY can be added in form of built-in rules1 written in -plain Java code and as so-called "taclets" ("schematic theory-specific -rules"). Taclets permit for an easy-readable definition of rules; when -a taclet is applied during a proof, the taclet itself as well as the -instantiation of its schematic parts are displayed to the user, making -the rule application more transparent. Almost all rules implemented -for KeY are defined as taclets (with the exception of special rules -like method contract application, loop invariant application (so far) -and one-step-simplification). For information about taclets, please -consult the [book chapter "Proof Search with -Taclets"](https://link.springer.com/chapter/10.1007/978-3-319-49812-6_4) -of the 2nd KeY book. - -This article covers the necessary basics for adding new taclets to the -KeY system. In particular, the following topics are discussed: - - -### How to add new taclets - -The standard location for `.key` files containing taclets is in the -`key.core` project, location `resources/de/uka/ilkd/key/proof/rules` -(*note*: unless stated otherwise, all locations in this article are -relative to `key.core`). The file `standardRules.key` lists all the -taclet files that are are loaded as defaults when starting KeY with -the Java profile. New taclets can be added to either of the existing -files listed there (if they fit into the scope), or can be added to a -new file which is then referred to in `standardRules.key`. - -The standard rule file can be obtained from a profile -(`de.uka.ilkd.key.proof.init.Profile`) via the method -`getStandardRules()`. The class -`de.uka.ilkd.key.proof.init.JavaProfile`, for example, sets the -standard rules to the aforementioned `standardRules.key`. If one -wishes to add taclets that are unrelated to Java, that taclet should -be referred to from the standard rules collection of an appropriate -profile. - -Taclets can be added to "rule sets" which are used, e.g., by strategy -heuristics. Default rule sets are defined in the file -`resources/de/uka/ilkd/key/proof/rules/ruleSetDeclarations.key`. - -### How to extend the taclet language - -Sometimes, especially when one wants to introduce new symbolic -execution concepts, the existing taclet language is not expressive -enough and has to be extended. There are four things one might have to -extend to support new taclet features: (1) The taclet parsers; this -includes the parser for the taclet language itself (which usually will -not have to be changed) and the parser for new program constructs, (2) -for matching different classes of statements, corresponding model -classes will have to be added to the system, which are then referred -to in factory classes and the parser(s), (3) whenever the standard -find-replace pattern of taclets is not sufficient, one can add -"transformers" performing more complex actions during taclet -execution, and (4) when taclets depend on additional input such as -specifications, one can define (automatic or interactive) completions -for the taclet. We'll discuss all those points in the following. - -It might be helpful to (additionally?) learn about the process by -examples. To get started, an example for a new program statement used -for matching is "merge_point", the keyword for a merge point -statement. A simpler one is "ForLoop", a schema variable matching for -loops. If you search for those identifiers in all files in the -"key.core" project, you'll find the entry points needed for -extensions. Note that merge points are also used in JML -specifications, which is a different topic (therefore, you might want -to ignore the corresponding parser files "KeYJMLPre{Lexer, Parser}.g, -basically everything in the `(...)/speclang/jml` directory.). An -example for a transformer is the "#for-to-while" construct which -accepts a for loop as input and transforms it to a while loop. Your -friends here are the eclipse functionalities `Search -> File` (use -`*.*` as a pattern here, and only search in the key.core project), -`Ctrl+T` for finding types, and `Ctrl+R` for finding resources. - -#### Parsing - -There are several relevant parsers you might need to know. The "main -KeY parser", `src/de/uka/ilkd/key/parser/KeY{Lexer, Parser}.g` is an -ANTLR3 parser which covers KeY's language for sorts, terms, formulas -etc., taclets, and proof files. For most extensions, this file does -not need to be touched. - -The parsers for Java extensions in taclets and proof files are -`src/de/uka/ilkd/key/parser/schemajava/SchemaJavaParser.jj` and -`src/de/uka/ilkd/key/parser/schemajava/ProofJavaParser.jj`, which are -JavaCC parsers. In the former, you also find definitions for -`#for-to-while` and `merge_point`; in the latter, only `merge_point` -occurs since it is an extension of Java and not a transformer like -`#for-to-while` which is only needed in taclets, but will never occur -in a Java program. - -So, if for your taclet the basic taclet language has to be changed, -adapt `KeYParser.g` accordingly; for creating new transformers, -`SchemaJavaParser.jj` is the relevant parser, and for additions to the -Java language accepted by KeY, `SchemaJavaParser.jj` and -`ProofJavaParser.jj` will have to be changed. The best advice here is -to have a look at the existing definitions to see how to add a new -one. Note that at the same time when extending the parser by new -transformers or statement types, you will also have to add new Java -classes and extend factories. We cover this in the next section. - -#### New Program Statement / Expression Types - -There are two categories of extensions: (1) New program schema -variable sorts, which match existing programming language fragments, -and (2) extensions to the language, e.g. by artificial constructs -needed for a proof / symbolic execution technique. - -A new "matcher sort" for taclets is added quite easily. As an example, -take the "loop init" clause of a for loop. A corresponding schema -variable for the use in taclets can be declared as `\program LoopInit #loopInit;`. -After that, `#loopInit` can be used in a taclet to match -a loop init clause. It suffices to (1) declare a new "program schema -variable sort" in `de.uka.ilkd.key.logic.sort.ProgramSVSort` (for -instance `LoopInitSort` in the example) which calls the constructor of -`ProgramSVSort` with the identifier by which it later should be -referred to in taclet definitions, and (2) to use that sort in -`SchemaJavaParser.jj`. Have a look how `ForInit` is used there to get -a feeling. - -A language extension like the merge points has to be added to several parts in the system: - -1. A parser model extension is added in - `src/de/uka/ilkd/key/java/recoderext/` (see - `MergePointStatement.java` for an example). -2. The factories - `de/uka/ilkd/key/java/recoderext/SchemaJavaProgramFactory.java` and - `(...)/ProofJavaProgramFactory.java` are extended by corresponding - factory methods. -3. A mirror of the parser extension for the logic side of KeY is added - to `de/uka/ilkd/key/java/statement/` (also here, there's a - `MergePointStatement.java`). -5. A converter for the parser model extension to the logic - representation in `de/uka/ilkd/key/java/Recoder2KeYConverter.java`. - Look what's done for the `MergePointStatement`. The methods there - are called by reflection, so the name of the new method has to be - `convert`, and it has to accept the parser model extension as only - argument. -6. Extension of Java visitor classes: Classes `Visitor.java`, - `JavaASTVisitor.java`, `CreatingASTVisitor.java`, and - `ProgVarReplaceVisitor.java` in directory - `de/uka/ilkd/key/java/visitor/`. Note that now all of these might - apply to you, e.g. if your new statement does not contain program - variables that might have to be substituted in a proof. -7. Extension of the pretty printer to nicely render your extension in - sequents: `de/uka/ilkd/key/java/PrettyPrinter.java`. - -The factory methods and parser model classes can then be used in -`{Schema, Proof}JavaParser.jj`. - -#### New Meta Constructs / Transformers - -Meta constructs give additional powers to taclets. By them, it is even -possible to create taclets which are actually built-in rules since all -the work (maybe except for some matcher preprocessing) is deferred to -a powerful transformer. Note that we discourage from using that style; -meta constructs should be used at a very small scope. If that's not -possible, directly using built-in rules is a more "honest" and better -maintainable approach. - -Our running example here is the `#for-to-while` construct (actually an -example for the bad style of delegating everything to a transformer). -For adding transformers this to the system, follow these steps: - -1. Add a model class to the directory - `src/de/uka/ilkd/key/rule/metaconstruct/` (see e.g. - `ForToWhile.java). The class should extend `ProgramTransformer` and - pass the keyword to be used to the super class, here - "#for-to-while". -2. Extend the class - `src/de/uka/ilkd/key/java/SchemaRecoder2KeYConverter` to return the - new class when appropriate. Look for `convert(RKeYMetaConstruct)` - to see what's done for `#for-to-while`. -3. Add the construct to the parser (`SchemaJavaParser.jj`). - -#### Completions - -Sometimes the input to a taclet depends on other information than that -available from a current proof situation (i.e., a sequent). In that -case, the rule has to be completed before it is applied. A good -example is the rule "cut" -(`resources/de/uka/ilkd/key/proof/rules/propRule.key`) defined as -follows: - -``` -\schemaVariables { - \formula cutFormula; -} -cut { "CUT: #cutFormula TRUE":\add (cutFormula ==>); - "CUT: #cutFormula FALSE":\add (==> cutFormula) - \heuristics(cut) }; -``` - -The formula `cutFormula` is not obtained from the sequent, it's left -as a "hole" in the definition. When applying the rule in KeY, a -standard dialog will pop up asking for an instantiation of -"curFormula". - -For certain situations, special completions are required. A classic -example are rules depending on specification, like loop invariant or -method contract rule applications. To this end, custom completions -implementing -`/key.ui/src/de/uka/ilkd/key/gui/InteractiveRuleApplicationCompletion.java` -(note: this class is the first not residing in the key.core project) -can be added and registered in -`/key.ui/src/de/uka/ilkd/key/gui/WindowUserInterfaceControl.java`. - -**NOTE/WARNING**: Obviously, interactive rule application completions -are currently only designed to handle BuiltInRules. So for taclets, -this will have to be adapted! - -Alternatively to the implementation of an interactive completion, -additional information, like for instance a specification, could be -retrieved by special meta constructs. Specifications are stored in -`de.uka.ilkd.key.proof.mgt.SpecificationRepository` and can be -retrieved via a call like -`services.getSpecificationRepository().getLoopSpec(loop)`. If the -specification repository already contains the means to store that -specification, this should be quite straightforward to accomplish. - ---- - -
  1. Built-in rules -reside in the directory src/de/uka/ilkd/key/rule/ and -implement the interface BuiltInRule. This simple -interface defines three methods only; however, when implementing -built-in rules, there are quite some things to consider, which are not -in the scope of this article. New BuiltInRules have to be registered -in the Profile they belong to, see -src/de/uka/ilkd/key/proof/init/JavaProfile.java, method -initBuiltInRules() for the place where BuiltInRules are -registered in the default Java profile.

diff --git a/docs/devel/index.md b/docs/devel/index.md index 3e458dd..0ffba5e 100644 --- a/docs/devel/index.md +++ b/docs/devel/index.md @@ -16,7 +16,6 @@ If you wish to inspect the source code of DF classes in your IDE, you need to do ### Important topics - [GUI extensions](GUIExtensions/) - [Event listeners](Listeners/) -- [Writing Taclets](HowtoTaclet/) - [Proof loading / saving](ProofLoadSave/) ### SMT solver integration diff --git a/mkdocs.yml b/mkdocs.yml index 7b3077e..26b41cb 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -145,7 +145,6 @@ nav: - Important topics: - devel/GUIExtensions.md - devel/Listeners.md - - devel/HowtoTaclet.md - devel/ProofLoadSave.md - SMT: - devel/AddingSMTSolvers.md From 4de477820de16aa0bf3bf8b954868b0846db3e8f Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Tue, 24 Oct 2023 18:28:11 +0200 Subject: [PATCH 02/17] 2.12.1 changelog --- docs/changelog.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index db367dd..914d334 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,23 @@ # Changelog +## [2.12.1](https://github.com/KeYProject/key/releases/tag/KEY-2.12.1) (2023-10-13) + +### Bug fixes + +- SMT solvers are properly terminated on timeout +- Proof Macro statistics are kept visible and only count the newly applied rules +- Stop button is disabled after use, re-enabled after stop completes (this is to avoid double activation) +- Fully disable origin tracking if it is disabled +- Proof slicing works even if a cut introduced no new formulas in any branch +- When marking goal(s) as interactive/automatic, proof tree no longer loses expansion state +- Fix proof tree behaviour when toggling goals +- Fix branch selection in caching +- Fix gradle detection of git branch +- Fix unit test +- Fix environments not disposed in tests, keep strategy info visible after applying +- Proof macro: record statistics correctly +- Fix: KeY files with errors cannot be edited + ## [2.12.0](https://github.com/KeYProject/key/releases/tag/KeY-2.12.0) (2023-08-18) ### Breaking changes From 16113208fe92e1b83c3abadffe1b13f3338fc19a Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Tue, 24 Oct 2023 18:46:44 +0200 Subject: [PATCH 03/17] Put warning labels on outdated pages --- docs/changelog.md | 2 +- docs/devel/How2ExtRecoder.md | 6 +- docs/devel/Testing/RunAllProves.md | 4 + docs/devel/Testing/deterministicTestOrder.md | 4 + docs/devel/index.md | 1 + docs/old/How2ExtRecoder.pdf | Bin 111493 -> 0 bytes docs/old/How2ExtRecoder.tex | 375 ------------------- docs/user/HowToTaclet.md | 4 + docs/user/JavaDLinJML.md | 6 +- docs/user/UiFeatures/index.md | 4 + docs/user/index.md | 1 - mkdocs.yml | 2 +- 12 files changed, 27 insertions(+), 382 deletions(-) delete mode 100644 docs/old/How2ExtRecoder.pdf delete mode 100644 docs/old/How2ExtRecoder.tex create mode 100644 docs/user/UiFeatures/index.md delete mode 100644 docs/user/index.md diff --git a/docs/changelog.md b/docs/changelog.md index 914d334..39ae6bd 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -32,7 +32,7 @@ * [Support for floating points](https://git.key-project.org/key/key/-/merge_requests/403) * [Support for JML asserts/assumes as standalone construct (instead of transforming into blockcontracts)](https://git.key-project.org/key/key/-/merge_requests/494), [Support of \old() in JML asserts](https://git.key-project.org/key/key/-/merge_requests/533) * [Support for JML math mode specifiers (and changed default semantics to spec_bigint_math)](https://github.com/KeYProject/key/pull/3014) -* [Proof Slicing](user/ProofSlicing.md) system ([#3026](https://github.com/KeYProject/key/pull/3026)) +* [Proof Slicing](../user/ProofSlicing.md) system ([#3026](https://github.com/KeYProject/key/pull/3026)) * [Proof Caching](user/ProofCaching.md) system * [Run the Javac compiler when loading Java code](https://git.key-project.org/key/key/-/merge_requests/581) * Migration to GitHub diff --git a/docs/devel/How2ExtRecoder.md b/docs/devel/How2ExtRecoder.md index 99b3361..c7c5cb4 100644 --- a/docs/devel/How2ExtRecoder.md +++ b/docs/devel/How2ExtRecoder.md @@ -1,10 +1,10 @@ # How to extend recoder -*Schmitt, XXXX* +*Schmitt* -!!! abstract +!!! danger - Here should be a short abstract. + Recoder is planned to be removed. See [PR #3120](https://github.com/KeYProject/key/pull/3120). These notes explain the changes to the existing code of the KeY system that are necessary to add a new data type to JML. If the new data type is only used in diff --git a/docs/devel/Testing/RunAllProves.md b/docs/devel/Testing/RunAllProves.md index 7cd4228..80c4bdb 100644 --- a/docs/devel/Testing/RunAllProves.md +++ b/docs/devel/Testing/RunAllProves.md @@ -56,6 +56,10 @@ test runs. ### Syntax of the Proof Collection/Index File +!!! danger + + This section does not reflect recent KeY developments. In particular, this list is now defined in code. + There is an proof collection (or index) file containing the declaration the sets of .key files that will be tested during RunAllProofs test run. This file is currently located in KeY diff --git a/docs/devel/Testing/deterministicTestOrder.md b/docs/devel/Testing/deterministicTestOrder.md index c2732d6..da5d5f7 100644 --- a/docs/devel/Testing/deterministicTestOrder.md +++ b/docs/devel/Testing/deterministicTestOrder.md @@ -1,5 +1,9 @@ # Deterministic Order of Test Cases in KeY +!!! danger + + This section does not reflect recent KeY developments. In particular it no longer applies since the upgrade to JUnit 5. + In KeY, some test cases rely on a specific execution order. One reason for this may be for example that it is too expensive to always initialize a new ProofEnvironment and therefore the environment is shared between multiple test cases. To get rid of test cases failing due to wrong order, we implemented a solution to make the execution order of JUnit tests deterministic: A custom JUnit test runner called AutoSuite. diff --git a/docs/devel/index.md b/docs/devel/index.md index 0ffba5e..81c04e8 100644 --- a/docs/devel/index.md +++ b/docs/devel/index.md @@ -7,6 +7,7 @@ - [Formatting Conventions](SpotlessAutomaticFormatting/) - [Gradle](Gradle/) - [Logging](Logging/) +- [Documentation](howtodoc/) ### Dependencies diff --git a/docs/old/How2ExtRecoder.pdf b/docs/old/How2ExtRecoder.pdf deleted file mode 100644 index 6388067a3627adfff80ef9056b05a9358957ad25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111493 zcmb5VLx3pCx};mKRkm&0wz*LQUG;B<~MM>+cel^x_bv~o&84YdB2umhmzkXQP8JQDD5UM$#qEM6Vq>34QYyTHYLAbsJ5^TgCWPM&t-oSvZiiFedj9GI}YDI5!|`` zfXZeQGwd%SfDRthL&>uekld(l=%WxR^Wdg3Ub|4hD*PbY&n6YGr7WP@Xr;9SP(o(U zQ)?Okg?-A-3DF7*JD(m=Z1Erz4_OWf=1WxW)cSK!4ywJ$F5~V--$6L`uBrgW+2)vbbPot*E#&))X6xq7#W&+gh^p& zh9^uw0%IdQv%->voeHVk5%mFwfu$4J`sOdiGU0^mFm@E_&~yt^ik)jDaq!;CMTY

e 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 Kg@~Le!v6yyRHnE9 diff --git a/docs/old/How2ExtRecoder.tex b/docs/old/How2ExtRecoder.tex deleted file mode 100644 index 2ac3de6..0000000 --- a/docs/old/How2ExtRecoder.tex +++ /dev/null @@ -1,375 +0,0 @@ -\documentclass[11pt]{article} - -\title{Extending JML\\By New Data Types}\date{\today} - -\author{Peter.~H.~Schmitt} - -\begin{document} -\maketitle - -These notes explain the changes to the existing code of the KeY system that are necessary to add a new data type to JML. -If the new data type is only used in JML specifications then only the changes described in Section -\ref{sect:JML} need to be done. -If you want to use ghost variables or ghost fields, in particular assignments to ghost variables and fields -of the new adt then in addition the changes described in Section -\ref{sect:Recoder} need to be done. - -These notes do not aim to provide an understanding of the existing code they just tell the user what to do by mimicking -what is already there. We take the data type $Seq$ of finite sequences as a model. - -In the following we use \verb+Basepath+ as an abbreviation for the path\\[5pt] -\verb+gitKeY/key/key/key.core/src/de/uka/ilkd/key/+ - -\section{Extension Of The JML Parser} -\label{sect:JML} - -At the moment the following instructions do not cover the addition of new variable binder symbols. - -\paragraph{Change file} \verb+KeYJMLLexer.g+ in \verb+Basepath/speclang/jml/translation+\\ -Here are some existing entries: -\begin{verbatim} - SEQ : '\\seq'; //KeY extension, not official JML - SEQCONCAT : '\\seq_concat'; //KeY extension, not official JML - SEQEMPTY : '\\seq_empty'; //KeY extension, not official JML -\end{verbatim} -that you change to fit the purpose. It is important to note that it is here that you establish -the syntax that is to be used in the code for the data type name and its operations. In the present case that is -\verb+\seq+ for the data type of finite sequences and \verb+\seq_concat+ for the concatenation operation and - \verb+\seq_empty+ for the empty sequence. Note, the addition escape character \verb+\+.\\ -At the same time you also establish a name for the corresponding nonterminal grammar symbol. - -Personal note: I am suprised that \verb+seqLen+ does not occur here. -\paragraph{Change file} \verb+KeYJMLParser.g+ \verb+Basepath/speclang/jml/translation+\\ -\paragraph{\quad Change 1} -Look for the existing grammar rule for sequences which looks roughly like this: -\begin{verbatim} -sequence returns [SLExpression ret = null] throws SLTranslationException -@init { - ImmutableList tlist = null; - KeYJavaType typ; - Term t, t2; - Token tk = null; - Pair> declVars = null; -} -@after { ret = result; } -: - SEQEMPTY - { - result=new SLExpression(tb.seqEmpty()); - } - | - . - . - . - | (tk2=SEQCONCAT{tk=tk2;} | tk3=SEQGET{tk=tk3;} | tk4=INDEXOF{tk=tk4;}) - LPAREN e1=expression COMMA e2=expression RPAREN - { - result=translator.translate(tk.getText(), - SLExpression.class, - services,e1,e2); - } -; -\end{verbatim} -Add a new rule replacing the name \verb+sequences+ and adapt what follows after the colon \verb+:+. -\paragraph{\quad Change 2} In the \verb+jmlprimary+ rule take the entry -\begin{verbatim} -| (SEQEMPTY - | - . - . - . - | SEQCONCAT - | SEQGET - | INDEXOF) - => result = sequence -\end{verbatim} -as a model. Of course you replace \verb+sequence+ in this example by the rule name you chose in the first change. -\\ -Do not forget to add an equivalent for your new data type for the line -\begin{verbatim} -| (LPAREN (SEQDEF | SEQ) quantifiedvardecls SEMI) -\end{verbatim} -This is neacessary fo parsing quantifier variables of the new data type. -\paragraph{\quad Change 3} In the \verb+builtintype + rule add a new entry for your data type mimicking -\begin{verbatim} - | SEQ - { - type = javaInfo.getKeYJavaType(PrimitiveType.JAVA_SEQ); - } -\end{verbatim} - - -\paragraph{Change file} \verb+TermBuilder.java+ in \verb+Basepath/logic+\\ -Look for the section starting with the comment lines -\begin{verbatim} -//------------------------ -//sequence operators -//----------------------- -\end{verbatim} -add a suitably adapted section for the new data type. You will notice that you have to use the -method names introduced in the public interface section in -\verb+OrdLDT+. -\paragraph{Create files} For each nonterminal \verb+NT+ for an operator as declared in \verb+KeYJMLLexer.g+ create a class file \verb+NameNT.java+ in the directory \\ -\verb+Basepath/java/expression/operator/adt+ following the examples\\ -Take \verb+SeqConcat.java+ or \verb+SeqLength.java+ as an example.\\ -It is a good idea to pick a name \verb+NameNT+ that somehwo resembles \verb+NT+. - -Constants are treated as literals, not as operators, and their corresponding files go into a different directory. See below. - -Calls to the constructors of these new classes are passed on via \verb+super+ to the -constructors of the class it extends, \verb+Operator.java+ or \verb+BinaryOperator.java+. -So here there is nothing else to do but renaming. -You should also get the \verb+getArity()+ right. \\ -I also set the result of the \verb+getPrecedence()+ method to $0$. I am not -sure if that is always correct. - -Work needs to be done for the last two methods \verb+visit(Visitor v)+ and -\verb+prettyPrint(PrettyPrinter p)+ as will be detailed in the next steps. - -\paragraph{Change file} \verb+Visitor.java+ in directory -\verb+Basepath/java/visitor+.\\[5pt] -This class is an interface. All you have to do here is to add a line that -adapts the examples you see, e.g.\\[5pt] -\verb+void performActionOnSeqConcat(SeqConcat x);+ -\paragraph{Change file} \verb+CreatingASTVisitor.java+ in -\verb+Basepath/java/visitor+.\\[5pt] -The empty method specifications from \verb+Visitor.java+ are overwritten here. -Just copy what you see, e.g. -for \verb+performActionOnSeqConcat+ and do the appropriate renaming. -\paragraph{Change file} \verb+JavaASTVisitor.java+ in directory -\verb+Basepath/java/visitor+.\\[5pt] -This is an abstract class. You need to add -a default method implementation.\\ -See \verb+performActionOnSeqConcat(SeqConcat x)+ for a model. - -Always when you edit a file check the import clauses. -You need to add an adaption of\\[5pt] -\verb+import de.uka.ilkd.key.java.expression.operator.adt.SeqConcat;+ -\\[5pt] -in all three files you edit in the last three steps. -You replace of course \verb+SeqConcat+ by the name of the file you created in step 2. - -The files for literals go into the directory \verb+Basepath/java/expression/literal+ instead. - -\paragraph{Change file} \verb+PrettyPrinter.java+ in directory -\verb+Basepath/java+.\\[5pt] -You need to add a method \verb+printnewOp+ for your operator \verb+newOp+ in the data type -\verb+newAdt+. tylke your leads e.g. from \verb+printSeqConcat+. Of course you enter here the -string you want to see printer for your operator. - -\paragraph{Create files} in directory \verb+Basepath/java/expression/literals+\\ -This parallels the creation of files like \verb+SeqConcat.java+ for the operation \verb+SeqConcat+, but now for -the literals declared in \verb+KeYJMLLexer.g+. Note, that these files go into a different directory. -The following changes also parallel those for operators except that for literals - \verb+JavaASTVisitor.java+ is not affected. - -\paragraph{Change file} \verb+Visitor.java+ in directory -\verb+Basepath/java/visitor+. -\paragraph{Change file} \verb+JavaASTVisitor.java+ in directory -\verb+Basepath/java/visitor+. -\paragraph{Change file} \verb+PrettyPrinter.java+ in directory -\verb+Basepath/java+. - -\paragraph{Create file} in directory \verb+Basepath/ldt+\\ -Look at the existing file \verb+SeqLDT.java+ as a model for the new file to be created. -You will note that for every literal and operation class created in -\verb+java.expression.literal+ and \verb+java.expression.operator.adt+ a field -of type \verb+Function+ is declared. To choose a name for this field best follow -the pattern you find in \verb+SeqLDT.java+. The link between the -classes in \verb+java.expression.operator.adt+ and the fields are effected in -method \verb+getFunctionFor+. - The link between the -classes in \verb+java.expression.literal+ and the fields are effected in -method \verb+translateTerm+. - -Also note that in the constructor \verb+SeqLDT(TermServices services)+ e.g. in the line -\begin{verbatim} -seqConcat = addFunction(services, "seqConcat"); -\end{verbatim} -the string, here \verb+ "seqConcat"+, must match the declarations in the .key file, here in -\verb+seq.key+. - -Make sure to include all the files created in the previous two create steps in -the import statements. - -This is a lot of work. -\paragraph{Change file} \verb+LDT.java+ in directory \verb+Basepath/ldt/+\\ -In the body of the method \verb+getNewLDTInstances(Services s)+ add aline for the new data type mimicking the -existing lines, e.g.\\[5pt] -\verb+ret.put(SeqLDT.NAME, new SeqLDT(s));+ -\paragraph{Change file} \verb+TypeConverter.java+ in \verb+Basepath/java+\\ -Add a line for the new data type taking the following line for the sequence data type as a model: -\begin{verbatim} - public SeqLDT getSeqLDT() { - return (SeqLDT) getLDT(SeqLDT.NAME); - } -\end{verbatim} -and, as always, do not forget the necessary import statement. -\section{Extension Of The Recoder To KeY Translation} -\label{sect:Recoder} - - -\paragraph{Change file} \verb+LDT.java+ in directory \verb+Basepath/ldt+\\[5pt] -Add a line for the new data type mimicking e.g. the existing line for the Seq data type -\begin{verbatim} - ret.put(SeqLDT.NAME, new SeqLDT(s)); -\end{verbatim} - -\paragraph{Change file } \verb+ProofJavaParser.jj+ in -\verb+Basepath/parser/proofjava/+ -\paragraph{\quad Change 1} -In section \verb+/* RESERVED WORDS AND LITERALS */+ mimick the line\\[5pt] -\verb+| < SEQ: "\\seq" >+\\[5pt] -%\verb+| < NEWADT: "\\newAdt" >+\\[5pt] -The string \verb+SEQ+ for the nonterminal of the grammar and the name -\verb+\seq+ for the new data type -are the same as in the grammar file \verb+KeYJMLLexer.g+ in \verb+Basepath/speclang/jml/translation+. -Note, the additional escape character \verb+\+. -The notation you substitute for \verb+\seq+ will be used in the annotated Java code. -\paragraph{\quad Change 2} Below \verb+TypeReference PrimitiveType() :+ add a line by adapting\\[5pt] -\verb+ | "\\seq"+ -\paragraph{\quad Change 3} -Look for \verb+ADTGetter() :+ and add all getter symbols -of the new data type -Just mimick what you see there for operators starting with \verb+\seq_+. -Here is an example: -\begin{verbatim} -| - "\\seq_concat" "(" expr=Expression() "," result=Expression()")" - { - result = new SeqConcat(expr, result) - setPrefixInfo(result); - } -| -\end{verbatim} -enclosed in the disjunctive separator symbol \verb+|+ of the grammar syntax. -The name of the operator in place of \verb+\seq_concat+ you take from the -grammar file \verb+KeYJMLLexer.g+ in \verb+Basepath/speclang/jml/translation+. -The result in the above code fragment refers to a -constructor, \verb+SeqConcat(expr,result)+, for the class -\verb+SeqConcat+. -It is your job to add these classes, one for each operator, -getter, constructor or literal. See below. -%In the directory \\ -%\verb+Basepath/java/expression/operator/adt+ -%you find a couple of examples to guide you. -\paragraph{\quad Change 4} -Look for \verb+ADTConstructor() :+ and add all constructor symbols for the new data type. -Here is a guiding example from the seq data type: -\begin{verbatim} -| - "\\seq_concat" "(" expr = Expression() "," result = Expression() ")" - { - result = new SeqConcat(expr, result) - setPrefixInfo(result); - } -| -\end{verbatim} -\paragraph{\quad Change 5} -Constants are not considered as constructors. You have to add them as literals. -Here is a simple example that suffices for the simplest case of just adding one literal. -\begin{verbatim} -EmptySeqLiteral EmptySeqLiteral() : -{ - EmptySeqLiteral result; -} -{ - "\\seq_empty" - { - result = EmptySeqLiteral.INSTANCE; - setPrefixInfo(result); - return result; - } -} -\end{verbatim} -Things get complicated if you want families of literals as e.g. in \verb+bigint+. I did not investigate this. - - -\paragraph{Change file} \verb+Recoder2KeYConverter.java+ in directory -\verb+Basepath/java+ -\\[5pt] -convert methods needs to be added. Again look for the line\\[5pt] -\verb+public SeqConcat convert(...adt.SeqConcat e)+\\[5pt] -and do the appropriate changes. - -Do not forget to add the necessary import statements. - -\paragraph{Change file} \verb+PrimitiveType.java+ in directory -\verb+Basepath/java/abstraction+\\[5pt] -Here is the entry for the data type of finite sequence that you may take as a model: -\begin{verbatim} -public static final PrimitiveType JAVA_SEQ = - new PrimitiveType("\\seq", EmptySeqLiteral.INSTANCE, SeqLDT.NAME); -\end{verbatim} -The second argument refers to the default element for the new data type. See below. -\paragraph{Create files} in the directory \verb+Basepath/java/recoderext/adt/+ -for each operator and each literal introduced in - \verb+KeYJMLLexer.g+ in directory\\ -\verb+Basepath/speclang/jml/translation+. - -Look at \verb+EmptySeqLiteral.java+, \verb+SeqLength.java+, and -\verb+SeqConcat.java+ as examples for literals, unary and binary operators. - -In these files you find a field -\verb+ private static final long serialVersionUID+ -which you can safely set to $0$. - - -%\paragraph{Create file} in the directory \verb+Basepath/java/recoderext/adt/+\\ -%for the class declared as the default in \verb+PrimitiveType.java+ -% -%??? -% -%Look at \verb+EmptySeqLiteral.java+ as an example.\\ -%In this class you find a field -%\verb+ private static final long serialVersionUID+ -%which you can safely set to $0$. - - -\paragraph{Change file} \verb+RecoderModelTransformer.java+ in -\verb+Basepath/java/recoderext+\\[5pt] -In this file the default element of the new data tpye is handled. -Mimic the line -\begin{verbatim} -} else if ("\\seq".equals(type.getName())) { - return EmptySeqLiteral.INSTANCE; -\end{verbatim} -and include the file that replaces \verb+ EmptySeqLiteral+ in the import statements. - - - \paragraph{Change file} \verb+KeYCrossReferenceSourceInfo.java+ in directory\\[5pt] -\verb+gitKeY/key/key/key.core/src/recoder/service+\\[5pt] -First include all the new files you created in the directory\\ -\verb+Basepath/java.recoderext.adt+ in the import statements. Then extend the method -\verb+ public Type getType(Expression expr)+ appropriately. -It seems that only constructor symbols need to be included. - - \paragraph{Change file} \verb+ProgramSVSort.java+ in directory\\[5pt] -\verb+Basepath/logic/sort+. \\ -This is important for the selection of applicable -taclets during proof search. It tells the matching algorithm for schema variables -to treat adt expressions as simple expressions, e.g. when used in assignments to ghost fields. - -\section{User Interface} -You may also want to add a description of the functions of your new data type to the Info -tab in the user interface. This is done by adding to the xml- file -\verb+functionExplanations.xml+ -in the directory \\ -\verb+gitKeY/key/key/key.ui/resources/de/uka/ilkd/key/gui/help+. - -\section{Find the Error} -To find the possible error when KeY fails to load I have added the following piece of code -\begin{verbatim} - System.out.println("reached reportError with message "+message); - System.out.println("throwable is "+ t); - java.io.StringWriter sw = new java.io.StringWriter(); - java.io.PrintWriter pw = new java.io.PrintWriter(sw); - t.printStackTrace(pw); - System.out.println(sw.toString()); -\end{verbatim} -at the beginning of the method body for -\verb+reportError(String message, Throwable t)+ in file -\verb+Recoder2KeY.java+ in directory \verb+Basepath/java+.\\ -This prints the error trace of the thrown exception \verb+t+ and might -give you a hint what could be the problem. -\end{document} diff --git a/docs/user/HowToTaclet.md b/docs/user/HowToTaclet.md index 9e63f1e..3feb962 100644 --- a/docs/user/HowToTaclet.md +++ b/docs/user/HowToTaclet.md @@ -39,6 +39,10 @@ heuristics. Default rule sets are defined in the file ## How to extend the taclet language +!!! danger + + This section does not reflect recent KeY developments. + Sometimes, especially when one wants to introduce new symbolic execution concepts, the existing taclet language is not expressive enough and has to be extended. There are four things one might have to extend to support new taclet diff --git a/docs/user/JavaDLinJML.md b/docs/user/JavaDLinJML.md index c6c22e6..f6575b8 100644 --- a/docs/user/JavaDLinJML.md +++ b/docs/user/JavaDLinJML.md @@ -1,7 +1,11 @@ # Embedding JavaDL expressions and functions into JML expressions *Mattias Ulbrich, 2011-08-31* - + +: !!! danger + + This page is only accurate for KeY 1.x. + Currently, JML is the standard specification for KeY (JML★ more precisely). Though it is still possible to specify JavaDL-contracts in `.key` diff --git a/docs/user/UiFeatures/index.md b/docs/user/UiFeatures/index.md new file mode 100644 index 0000000..dcc3dc6 --- /dev/null +++ b/docs/user/UiFeatures/index.md @@ -0,0 +1,4 @@ +- [Exploration](../Exploration) +- [Node Differences](../NodeDiff) +- [Proof Slicing](../ProofSlicing) +- [Proof Caching](../ProofCaching) \ No newline at end of file diff --git a/docs/user/index.md b/docs/user/index.md deleted file mode 100644 index 81c618a..0000000 --- a/docs/user/index.md +++ /dev/null @@ -1 +0,0 @@ -# Using KeY diff --git a/mkdocs.yml b/mkdocs.yml index 26b41cb..a5767fd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -95,7 +95,6 @@ nav: - quicktour/proving.md - quicktour/appendix.md - User Guide: - - user/index.md - changelog.md - user/FAQ.md - user/ADTs.md @@ -106,6 +105,7 @@ nav: - user/Polarity.md - user/JavaGrammar.md - UI Features: + - user/UiFeatures/index.md - user/Exploration.md - user/NodeDiff.md - user/ProofSlicing/index.md From 45ba8ce24a0622330800bfc804b3d1143dac5224 Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Tue, 24 Oct 2023 19:00:09 +0200 Subject: [PATCH 04/17] Fix links --- docs/changelog.md | 4 ++-- docs/devel/NewKeyParser.md | 2 +- docs/quicktour/appendix.md | 2 +- docs/user/HowToTaclet.md | 2 +- mkdocs.yml | 1 + 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 39ae6bd..cad9b43 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -32,8 +32,8 @@ * [Support for floating points](https://git.key-project.org/key/key/-/merge_requests/403) * [Support for JML asserts/assumes as standalone construct (instead of transforming into blockcontracts)](https://git.key-project.org/key/key/-/merge_requests/494), [Support of \old() in JML asserts](https://git.key-project.org/key/key/-/merge_requests/533) * [Support for JML math mode specifiers (and changed default semantics to spec_bigint_math)](https://github.com/KeYProject/key/pull/3014) -* [Proof Slicing](../user/ProofSlicing.md) system ([#3026](https://github.com/KeYProject/key/pull/3026)) -* [Proof Caching](user/ProofCaching.md) system +* [Proof Slicing](../user/ProofSlicing/) system ([#3026](https://github.com/KeYProject/key/pull/3026)) +* [Proof Caching](../user/ProofCaching/) system * [Run the Javac compiler when loading Java code](https://git.key-project.org/key/key/-/merge_requests/581) * Migration to GitHub * [Files for Github Actions](https://git.key-project.org/key/key/-/merge_requests/634) diff --git a/docs/devel/NewKeyParser.md b/docs/devel/NewKeyParser.md index 8ce7581..01c8341 100644 --- a/docs/devel/NewKeyParser.md +++ b/docs/devel/NewKeyParser.md @@ -10,7 +10,7 @@ ## Background -With the MR !278, a new lexer and parser for the KeY language is introduced. The KeY language is used to parse the `*.key` and `*.proof`, and is also used as the input language for entering terms in the user interface. +With the MR [!278](https://git.key-project.org/key/key/-/merge_requests/278), a new lexer and parser for the KeY language is introduced. The KeY language is used to parse the `*.key` and `*.proof`, and is also used as the input language for entering terms in the user interface. In general, this parser was hard to maintain and extend over the years. The old parser was a traditional ANTLR3 parser, where the grammar and the source code are mixed up. It also some lookahead were required. KeY files are interpreted on different levels: The first level are the basic notions (e.g. sorts and choice options), second level are the functions, predicates and transformers, and the third level are the axioms, contracts and rules. These parsing level are required due to the dependencies between these logical entities, e.g. a rule requires certain functions and sorts during its interpretation. In the old KeY-Parser, each file is parsed (and read) on a specific level. Hence, to interpret a KeY file, multiple parse passes are required. diff --git a/docs/quicktour/appendix.md b/docs/quicktour/appendix.md index 007d084..490f85f 100644 --- a/docs/quicktour/appendix.md +++ b/docs/quicktour/appendix.md @@ -480,7 +480,7 @@ a restricted set of signatures of classes and methods from the default standard library. The current set of classes can be found at . -For documentation on how to set up your own classpath, see [Using the classpath directives in KeY](../Classpath.md). +For documentation on how to set up your own classpath, see [Using the classpath directives in KeY](../../user/Classpath/). [^1]: Potential warnings can be safely ignored here. diff --git a/docs/user/HowToTaclet.md b/docs/user/HowToTaclet.md index 3feb962..7fffecb 100644 --- a/docs/user/HowToTaclet.md +++ b/docs/user/HowToTaclet.md @@ -41,7 +41,7 @@ heuristics. Default rule sets are defined in the file !!! danger - This section does not reflect recent KeY developments. + This section does not reflect recent KeY developments. [The parser was recently rewritten](../../devel/NewKeyParser/). Sometimes, especially when one wants to introduce new symbolic execution concepts, the existing taclet language is not expressive enough and has to be diff --git a/mkdocs.yml b/mkdocs.yml index a5767fd..c93d743 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -146,6 +146,7 @@ nav: - devel/GUIExtensions.md - devel/Listeners.md - devel/ProofLoadSave.md + - devel/NewKeyParser.md - SMT: - devel/AddingSMTSolvers.md - devel/SMTTranslation.md From 49ff0fd57ac1a978f02d81f9d356c192e00c278b Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Mon, 30 Oct 2023 17:34:02 +0100 Subject: [PATCH 05/17] Fix outdated comment about DF sources --- docs/devel/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/devel/index.md b/docs/devel/index.md index 81c04e8..f34dbec 100644 --- a/docs/devel/index.md +++ b/docs/devel/index.md @@ -12,7 +12,6 @@ ### Dependencies KeY uses the [Docking Frames](https://docking-frames.org/download.html) library to organize its UI. -If you wish to inspect the source code of DF classes in your IDE, you need to download and add the source code manually. ### Important topics - [GUI extensions](GUIExtensions/) From 6e51399fe903ede99b22490f0f4622f587d7916c Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Thu, 2 Nov 2023 10:40:50 +0100 Subject: [PATCH 06/17] Proof Caching external database --- docs/devel/ProofCaching.md | 168 +++++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 169 insertions(+) create mode 100644 docs/devel/ProofCaching.md diff --git a/docs/devel/ProofCaching.md b/docs/devel/ProofCaching.md new file mode 100644 index 0000000..1076644 --- /dev/null +++ b/docs/devel/ProofCaching.md @@ -0,0 +1,168 @@ +# Proof Caching + +See also the [end-user documentation](../../user/ProofCaching/). + +## On-disk database + +### Proofs + +When adding a proof to the database, the following is done: + +- a copy is saved in ~/.key/cachedProofs/ +- the Java source file(s) are saved +- included `.key` files are saved +- metadata is updated (see below) + +### Java source files, .key files + +When these are referenced in a proof, they will be copied into `~/.key/cachedProofs/` using a simple content-addressing scheme. + +The proof header is modified to refer to a new `~/.key/cachedProofs/javaSource123456` directory containing hardlinked copies of the source files. + +### Metadata + +Filename: `~/.key/cachedProofs.json`. + +Planned format: JSON. + +Schema: ([schema playground](https://dashjoin.github.io/#/schema)) +``` +{ + "type": "object", + "properties": { + "proofs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "file": { + "type": "string" + }, + "keyVersion": { + "type": "string" + }, + "choiceSettings": { + "type": "string" + }, + "referencedFiles": { + "type": "array", + "items": { + "type": "string" + } + }, + "cachedSequents": { + "type": "array", + "items": { + "type": "string" + } + }, + "cachedGraph": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "edges": { + "type": "array", + "items": { + "type": "object", + "properties": { + "in": { + "type": "array", + "items": { + "type": "string" + } + }, + "out": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "classpathHash": { + "type": "string" + }, + "bootclasspathHash": { + "type": "string" + } + } + } + }, + "files": { + "type": "array", + "items": { + "type": "object", + "properties": { + "file": { + "type": "string" + }, + "hash": { + "type": "string" + } + } + } + } + } +} +``` + +proof.choiceSettings should encode taclet options and other relevant properties (e.g. OSS use). + +proof.classpathHash should encode the entire classpath if it is explicitly set. Otherwise it should identify the classpath provided by the used KeY version. + +proof.keyVersion should help filter out proofs that are unlikely to load. + +Example: +``` +{ + "proofs": [ + { + "name": "sumAndMax", + "file": "proof12345.proof", + "keyVersion": "2.13.0", + "choiceSettings": "xxxx", + "referencedFiles": [ + "java123456.java" + ], + "cachedSequents": [ + "a==>b" + ], + "cachedGraph": { + "nodes": [ + "false ==>", + "Closed goal 1" + ], + "edges": [ + { + "in": [ + "false ==>" + ], + "out": [ + "Closed goal 1" + ] + } + ] + }, + "classpathHash": null, + "bootclasspathHash": null + } + ], + "files": [ + { + "file": "java123456.java", + "hash": "41847972b9c92994502c60c58b406f098ef0afae" + } + ] +} +``` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index c93d743..cbcc79a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -159,6 +159,7 @@ nav: - devel/Testing/deterministicTestOrder.md - devel/Testing/parserMessageTest.md - Write Documentation: "devel/howtodoc/index.md" + - devel/ProofCaching.md repo_name: key-docs repo_url: https://github.com/KeYProject/key-docs/ From 927ecb87c6be5666a978d4cbb4acc41ed64b6346 Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Sat, 4 Nov 2023 15:40:24 +0100 Subject: [PATCH 07/17] Fancy comparision picture for chain shortening --- .../ProofSlicingShortenedChains.png | Bin 0 -> 119818 bytes docs/user/ProofSlicing/index.md | 17 +++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 docs/user/ProofSlicing/ProofSlicingShortenedChains.png diff --git a/docs/user/ProofSlicing/ProofSlicingShortenedChains.png b/docs/user/ProofSlicing/ProofSlicingShortenedChains.png new file mode 100644 index 0000000000000000000000000000000000000000..84da7d217fd5f370758451dc4a46cbefa7544ad9 GIT binary patch literal 119818 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 literal 0 HcmV?d00001 diff --git a/docs/user/ProofSlicing/index.md b/docs/user/ProofSlicing/index.md index 9737099..0e95cbe 100644 --- a/docs/user/ProofSlicing/index.md +++ b/docs/user/ProofSlicing/index.md @@ -1,6 +1,6 @@ # Proof Slicing --- *Author: Arne Keller*, December 2022 valid for KeY-2.12.0 +-- *Author: Arne Keller*, December 2022 valid for KeY-2.12.0 (last updated: November 2023) !!! abstract @@ -46,6 +46,18 @@ You may also export the dependency graph in DOT format ("Export as DOT" button) It is not advisable to render the dependency graph of large proofs: the render process may consume excessive amounts of memory and/or CPU time. +### Chain Shortening + +When inspecting the dependency graph, you might want to see only the "big picture" of the proof. +If you don't care about the hundreds of intermediate steps it takes to normalize a polynomial (for example), +you may enable the "Shorten long chains" option before rendering the graph. +When enabled, all nodes with input and output degree equal to one are collapsed into the output edge. + +

+ ![Side-by-side comparison of chain shortening](./ProofSlicingShortenedChains.png) +
Left graph: default settings. Right graph: chain shortening enabled.
+
+ ## Proof Analysis The extension offers two analysis algorithms. @@ -78,7 +90,7 @@ The "Slice proof to fixed point" button repeatedly executes the analysis and sli
Running the proof slicer creates a new proof
-## Dependency graph node types +## Dependency Graph node types All nodes store the branch location of the proof step that created them. In case of splitting proof steps, the branch of the new node is stored. @@ -99,6 +111,7 @@ Used if a proof step has no inputs / outputs to ensure that the outputs / inputs Specified as an output if the proof step creates a new skolem constant. Specified as an input if the proof steps uses the variable to instantiate a schema variable. +(Not implemented yet.) ### Taclet From 6dd2d39423b34f3ef0438b569b7d6691769c6f7f Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Sat, 4 Nov 2023 15:42:13 +0100 Subject: [PATCH 08/17] Remove outdated section about JavaDL in JML --- docs/user/JavaDLinJML.md | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/docs/user/JavaDLinJML.md b/docs/user/JavaDLinJML.md index f6575b8..c9b0b20 100644 --- a/docs/user/JavaDLinJML.md +++ b/docs/user/JavaDLinJML.md @@ -1,11 +1,6 @@ # Embedding JavaDL expressions and functions into JML expressions *Mattias Ulbrich, 2011-08-31* - -: !!! danger - - This page is only accurate for KeY 1.x. - Currently, JML is the standard specification for KeY (JML★ more precisely). Though it is still possible to specify JavaDL-contracts in `.key` @@ -18,30 +13,6 @@ in the code directly. An extension of the parser provides us with this possibility now. -## DL expressions in JML - -In JML declarative specifications (i.e., anywhere but in set statements), we can -write JavaDL expressions if they are embedded into `"(* *)"`. This notation is -JML-speak for a natural-language-constraint. We use it for JavaDL expressions. - -This is helpful if syntactical concepts like binding function symbols, -new sorts, ... need to be mentioned in specifications. - -Example: -``` - -class A { - int a; - int b; - /*@ invariant (* a = javaAddInt(b, 1) *); */ - /*@ invariant a == (* javaAddInt(b, 1) *); */ - /*@ invariant a == b + 1; */ -} -``` - -All three invariants have identical meaning. - - ## Escaping JavaDL function symbol names In all JML specifications (also in set statements), function symbols known in From e2dff9c3ec5efcf9181950dba36c71359b5f7d7c Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Mon, 6 Nov 2023 08:58:40 +0100 Subject: [PATCH 09/17] Hide large figure in tab --- docs/user/ProofSlicing/index.md | 20 ++++++++++++-------- mkdocs.yml | 1 + 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/docs/user/ProofSlicing/index.md b/docs/user/ProofSlicing/index.md index 0e95cbe..b536576 100644 --- a/docs/user/ProofSlicing/index.md +++ b/docs/user/ProofSlicing/index.md @@ -48,15 +48,19 @@ You may also export the dependency graph in DOT format ("Export as DOT" button) ### Chain Shortening -When inspecting the dependency graph, you might want to see only the "big picture" of the proof. -If you don't care about the hundreds of intermediate steps it takes to normalize a polynomial (for example), -you may enable the "Shorten long chains" option before rendering the graph. -When enabled, all nodes with input and output degree equal to one are collapsed into the output edge. +=== "Description" -
- ![Side-by-side comparison of chain shortening](./ProofSlicingShortenedChains.png) -
Left graph: default settings. Right graph: chain shortening enabled.
-
+ When inspecting the dependency graph, you might want to see only the "big picture" of the proof. + If you don't care about the hundreds of intermediate steps it takes to normalize a polynomial (for example), + you may enable the "Shorten long chains" option before rendering the graph. + When enabled, all nodes with input and output degree equal to one are collapsed into the output edge. + +=== "Example" + +
+ ![Side-by-side comparison of chain shortening](./ProofSlicingShortenedChains.png){ loading=lazy } +
Left graph: default settings. Right graph: chain shortening enabled.
+
## Proof Analysis diff --git a/mkdocs.yml b/mkdocs.yml index cbcc79a..4572234 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -82,6 +82,7 @@ theme: - navigation.indexes - navigation.top - content.code.annotate + - content.tabs.link icon: repo: fontawesome/brands/github From 665bcfb2ed388b99ce6fd26a5158dd2509b2a8f0 Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Mon, 6 Nov 2023 09:02:12 +0100 Subject: [PATCH 10/17] Update build dependencies --- Makefile | 2 +- README.md | 4 ++-- docs/devel/howtodoc/index.md | 4 ++-- pyproject.toml | 24 ++++++++++++++++++++++++ 4 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 pyproject.toml diff --git a/Makefile b/Makefile index 76d8e9c..171d1cf 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ prepare: - pip install --user mkdocs mkdocs-material pymdown-extensions pygments markdown-blockdiag mkdocs-bibtex markdown-aafigure==v201904.0004 mkdocs-build-plantuml-plugin 'Pillow<10' 'Markdown<3.4' + pip install --user mkdocs mkdocs-material pymdown-extensions pygments markdown-blockdiag mkdocs-bibtex markdown-aafigure==v202104.1011 mkdocs-build-plantuml-plugin Pillow Markdown serve: mkdocs serve diff --git a/README.md b/README.md index ee1f72a..abdd7da 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,8 @@ Install the necessary libraries locally: ``` $ pip install --user mkdocs mkdocs-material pymdown-extensions pygments \ - markdown-blockdiag mkdocs-bibtex markdown-aafigure==v201904.0004 \ - mkdocs-build-plantuml-plugin 'Pillow<10' 'Markdown<3.4' + markdown-blockdiag mkdocs-bibtex markdown-aafigure==v202104.1011 \ + mkdocs-build-plantuml-plugin Pillow Markdown ``` You can start development web-server, which automatically rerender and refresh diff --git a/docs/devel/howtodoc/index.md b/docs/devel/howtodoc/index.md index 580c6df..2378a5f 100644 --- a/docs/devel/howtodoc/index.md +++ b/docs/devel/howtodoc/index.md @@ -21,8 +21,8 @@ use either `make prepare` or execute the following line: ``` {.sh linenums="1"} $ pip install --user mkdocs mkdocs-material pymdown-extensions pygments \ - markdown-blockdiag mkdocs-bibtex markdown-aafigure==v201904.0004 \ - mkdocs-build-plantuml-plugin 'Pillow<10' 'Markdown<3.4' + markdown-blockdiag mkdocs-bibtex markdown-aafigure==v202104.1011 \ + mkdocs-build-plantuml-plugin Pillow Markdown ``` This install all needed packages for this webpage inside diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..e7d7081 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,24 @@ +[project] +name = "key-docs" +description = "Documentation for the KeY prover system" +readme = "README.md" +requires-python = ">=3.7" +classifiers = [ + "Operating System :: OS Independent", +] +dynamic = ["version"] +dependencies = [ + "mkdocs", + "mkdocs-material", + "pymdown-extensions", + "pygments", + "markdown-blockdiag", + "mkdocs-bibtex", + "markdown-aafigure==v202104.1011", + "mkdocs-build-plantuml-plugin", + "Pillow", + "Markdown" +] + +[tool.setuptools] +py-modules = [] \ No newline at end of file From 0bbd3204ecac84b0984d80fd65f48dc8c7fe2566 Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Sun, 12 Nov 2023 16:52:19 +0100 Subject: [PATCH 11/17] Mention one more use case --- docs/devel/Listeners.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/devel/Listeners.md b/docs/devel/Listeners.md index c7442a6..b79e7f2 100644 --- a/docs/devel/Listeners.md +++ b/docs/devel/Listeners.md @@ -47,7 +47,7 @@ When in "auto mode", the KeY interface (except for the stop button) will not res ### InteractionListener -Listener for interactions done by the user: settings changed, macro started, rule applied, ... +Listener for interactions done by the user: settings changed, macro started, rule applied, proof pruned, ... ## Proof @@ -103,4 +103,4 @@ Receives an event whenever a value in the Lookup instance changes. ### MergeRuleProgressListener -When applying a merge rule, this listener will be notified for each merged branch. \ No newline at end of file +When applying a merge rule, this listener will be notified for each merged branch. From eff7f7b7bf75259291c94a730f46a067e12111d4 Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Sun, 12 Nov 2023 16:52:28 +0100 Subject: [PATCH 12/17] Ignore build output --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 640f75b..0e9e8c2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ site/ +/public .DS_Store *.out From 730df23957b61a2fbc8c5b9fa670adb6b18e523b Mon Sep 17 00:00:00 2001 From: Arne Keller <2012gdwu+github@posteo.de> Date: Tue, 21 Nov 2023 17:23:40 +0100 Subject: [PATCH 13/17] Changelog: 2.12.2 Co-authored-by: Wolfram Pfeifer <94171076+WolframPfeifer@users.noreply.github.com> --- docs/changelog.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index cad9b43..ecc8657 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,18 @@ # Changelog +## [2.12.2](https://github.com/KeYProject/key/releases/tag/KeY-2.12.2) (2023-11-10) +This release contains bug fixes and performance enhancements. + +### Performance: + - Z3 is now configurable to use the QF (quantifier-free) theory for problems without quantifiers. + +### Bug Fixes: + - The pretty printer no longer throws a ClassCastException when printing taclets using schema variables of an array type. + - Nullable and non-null modifiers attached to model methods are no longer lost. + - Term rule indices are now always up-to-date, preventing potential prover crashes. + - The counter-example dialog no longer freezes the GUI, if the example generation fails. + - The actual proof status and proof status icon in the task overview are now consistent after pruning without requiring a manual refresh. + ## [2.12.1](https://github.com/KeYProject/key/releases/tag/KEY-2.12.1) (2023-10-13) ### Bug fixes From 7e758532d4392bbb3e49ccc2a11c6b60dddce03a Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Thu, 23 Nov 2023 10:33:20 +0100 Subject: [PATCH 14/17] Move HowToTaclet to dev section --- docs/{user => devel}/HowToTaclet.md | 0 docs/devel/index.md | 1 + mkdocs.yml | 2 +- 3 files changed, 2 insertions(+), 1 deletion(-) rename docs/{user => devel}/HowToTaclet.md (100%) diff --git a/docs/user/HowToTaclet.md b/docs/devel/HowToTaclet.md similarity index 100% rename from docs/user/HowToTaclet.md rename to docs/devel/HowToTaclet.md diff --git a/docs/devel/index.md b/docs/devel/index.md index f34dbec..a83d6e0 100644 --- a/docs/devel/index.md +++ b/docs/devel/index.md @@ -17,6 +17,7 @@ KeY uses the [Docking Frames](https://docking-frames.org/download.html) library - [GUI extensions](GUIExtensions/) - [Event listeners](Listeners/) - [Proof loading / saving](ProofLoadSave/) +- [How to write new taclets](HowToTaclet/) ### SMT solver integration - [Adding an SMT solver](AddingSMTSolvers/) diff --git a/mkdocs.yml b/mkdocs.yml index 4572234..31c9162 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -112,7 +112,6 @@ nav: - user/ProofSlicing/index.md - user/ProofCaching/index.md - Languages: - - user/HowToTaclet.md - user/JMLGrammar.md - user/KeyGrammar.md - Proof Scripts: @@ -148,6 +147,7 @@ nav: - devel/Listeners.md - devel/ProofLoadSave.md - devel/NewKeyParser.md + - devel/HowToTaclet.md - SMT: - devel/AddingSMTSolvers.md - devel/SMTTranslation.md From 002e45bf840fcc07d0937dbf11f70c03a5bbaf1e Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Thu, 23 Nov 2023 10:34:47 +0100 Subject: [PATCH 15/17] Wording --- docs/devel/HowToTaclet.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/devel/HowToTaclet.md b/docs/devel/HowToTaclet.md index 7fffecb..d7997f5 100644 --- a/docs/devel/HowToTaclet.md +++ b/docs/devel/HowToTaclet.md @@ -1,4 +1,4 @@ -# How to write a Taclet +# How to write new taclets New prover rules in KeY can be added in form of built-in rules[^1] written in plain Java code and as so-called "taclets" ("schematic theory-specific rules"). @@ -8,15 +8,14 @@ schematic parts are displayed to the user, making the rule application more transparent. Almost all rules implemented for KeY are defined as taclets (with the exception of special rules like method contract application, loop invariant application (so far) and one-step-simplification). For information about -taclets, please consult the [book chapter "Proof Search with -Taclets"](https://link.springer.com/chapter/10.1007/978-3-319-49812-6_4) of the +taclets, please consult the [book chapter "Proof Search with Taclets"](https://link.springer.com/chapter/10.1007/978-3-319-49812-6_4) of the 2nd KeY book. This article covers the necessary basics for adding new taclets to the KeY system. In particular, the following topics are discussed: -## How to add new taclets +## How to add a taclet The standard location for `.key` files containing taclets is in the `key.core` project, location `resources/de/uka/ilkd/key/proof/rules` (*note*: unless stated From 76ef4dd48190090700d5915890b47e7877c86931 Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Thu, 23 Nov 2023 10:38:08 +0100 Subject: [PATCH 16/17] Remove dev section on proof caching Will return in a future PR ... --- docs/devel/ProofCaching.md | 168 ------------------------------------- mkdocs.yml | 1 - 2 files changed, 169 deletions(-) delete mode 100644 docs/devel/ProofCaching.md diff --git a/docs/devel/ProofCaching.md b/docs/devel/ProofCaching.md deleted file mode 100644 index 1076644..0000000 --- a/docs/devel/ProofCaching.md +++ /dev/null @@ -1,168 +0,0 @@ -# Proof Caching - -See also the [end-user documentation](../../user/ProofCaching/). - -## On-disk database - -### Proofs - -When adding a proof to the database, the following is done: - -- a copy is saved in ~/.key/cachedProofs/ -- the Java source file(s) are saved -- included `.key` files are saved -- metadata is updated (see below) - -### Java source files, .key files - -When these are referenced in a proof, they will be copied into `~/.key/cachedProofs/` using a simple content-addressing scheme. - -The proof header is modified to refer to a new `~/.key/cachedProofs/javaSource123456` directory containing hardlinked copies of the source files. - -### Metadata - -Filename: `~/.key/cachedProofs.json`. - -Planned format: JSON. - -Schema: ([schema playground](https://dashjoin.github.io/#/schema)) -``` -{ - "type": "object", - "properties": { - "proofs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "file": { - "type": "string" - }, - "keyVersion": { - "type": "string" - }, - "choiceSettings": { - "type": "string" - }, - "referencedFiles": { - "type": "array", - "items": { - "type": "string" - } - }, - "cachedSequents": { - "type": "array", - "items": { - "type": "string" - } - }, - "cachedGraph": { - "type": "object", - "properties": { - "nodes": { - "type": "array", - "items": { - "type": "string" - } - }, - "edges": { - "type": "array", - "items": { - "type": "object", - "properties": { - "in": { - "type": "array", - "items": { - "type": "string" - } - }, - "out": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - }, - "classpathHash": { - "type": "string" - }, - "bootclasspathHash": { - "type": "string" - } - } - } - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "file": { - "type": "string" - }, - "hash": { - "type": "string" - } - } - } - } - } -} -``` - -proof.choiceSettings should encode taclet options and other relevant properties (e.g. OSS use). - -proof.classpathHash should encode the entire classpath if it is explicitly set. Otherwise it should identify the classpath provided by the used KeY version. - -proof.keyVersion should help filter out proofs that are unlikely to load. - -Example: -``` -{ - "proofs": [ - { - "name": "sumAndMax", - "file": "proof12345.proof", - "keyVersion": "2.13.0", - "choiceSettings": "xxxx", - "referencedFiles": [ - "java123456.java" - ], - "cachedSequents": [ - "a==>b" - ], - "cachedGraph": { - "nodes": [ - "false ==>", - "Closed goal 1" - ], - "edges": [ - { - "in": [ - "false ==>" - ], - "out": [ - "Closed goal 1" - ] - } - ] - }, - "classpathHash": null, - "bootclasspathHash": null - } - ], - "files": [ - { - "file": "java123456.java", - "hash": "41847972b9c92994502c60c58b406f098ef0afae" - } - ] -} -``` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 31c9162..deea199 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -160,7 +160,6 @@ nav: - devel/Testing/deterministicTestOrder.md - devel/Testing/parserMessageTest.md - Write Documentation: "devel/howtodoc/index.md" - - devel/ProofCaching.md repo_name: key-docs repo_url: https://github.com/KeYProject/key-docs/ From 5612389e520361422974c965558bc577020bef17 Mon Sep 17 00:00:00 2001 From: Arne Keller Date: Thu, 23 Nov 2023 10:39:14 +0100 Subject: [PATCH 17/17] Restore How2ExtRecoder docs --- docs/old/How2ExtRecoder.pdf | Bin 0 -> 111493 bytes docs/old/How2ExtRecoder.tex | 375 ++++++++++++++++++++++++++++++++++++ 2 files changed, 375 insertions(+) create mode 100644 docs/old/How2ExtRecoder.pdf create mode 100644 docs/old/How2ExtRecoder.tex diff --git a/docs/old/How2ExtRecoder.pdf b/docs/old/How2ExtRecoder.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6388067a3627adfff80ef9056b05a9358957ad25 GIT binary patch literal 111493 zcmb5VLx3pCx};mKRkm&0wz*LQUG;B<~MM>+cel^x_bv~o&84YdB2umhmzkXQP8JQDD5UM$#qEM6Vq>34QYyTHYLAbsJ5^TgCWPM&t-oSvZiiFedj9GI}YDI5!|`` zfXZeQGwd%SfDRthL&>uekld(l=%WxR^Wdg3Ub|4hD*PbY&n6YGr7WP@Xr;9SP(o(U zQ)?Okg?-A-3DF7*JD(m=Z1Erz4_OWf=1WxW)cSK!4ywJ$F5~V--$6L`uBrgW+2)vbbPot*E#&))X6xq7#W&+gh^p& zh9^uw0%IdQv%->voeHVk5%mFwfu$4J`sOdiGU0^mFm@E_&~yt^ik)jDaq!;CMTY

e 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 Kg@~Le!v6yyRHnE9 literal 0 HcmV?d00001 diff --git a/docs/old/How2ExtRecoder.tex b/docs/old/How2ExtRecoder.tex new file mode 100644 index 0000000..2ac3de6 --- /dev/null +++ b/docs/old/How2ExtRecoder.tex @@ -0,0 +1,375 @@ +\documentclass[11pt]{article} + +\title{Extending JML\\By New Data Types}\date{\today} + +\author{Peter.~H.~Schmitt} + +\begin{document} +\maketitle + +These notes explain the changes to the existing code of the KeY system that are necessary to add a new data type to JML. +If the new data type is only used in JML specifications then only the changes described in Section +\ref{sect:JML} need to be done. +If you want to use ghost variables or ghost fields, in particular assignments to ghost variables and fields +of the new adt then in addition the changes described in Section +\ref{sect:Recoder} need to be done. + +These notes do not aim to provide an understanding of the existing code they just tell the user what to do by mimicking +what is already there. We take the data type $Seq$ of finite sequences as a model. + +In the following we use \verb+Basepath+ as an abbreviation for the path\\[5pt] +\verb+gitKeY/key/key/key.core/src/de/uka/ilkd/key/+ + +\section{Extension Of The JML Parser} +\label{sect:JML} + +At the moment the following instructions do not cover the addition of new variable binder symbols. + +\paragraph{Change file} \verb+KeYJMLLexer.g+ in \verb+Basepath/speclang/jml/translation+\\ +Here are some existing entries: +\begin{verbatim} + SEQ : '\\seq'; //KeY extension, not official JML + SEQCONCAT : '\\seq_concat'; //KeY extension, not official JML + SEQEMPTY : '\\seq_empty'; //KeY extension, not official JML +\end{verbatim} +that you change to fit the purpose. It is important to note that it is here that you establish +the syntax that is to be used in the code for the data type name and its operations. In the present case that is +\verb+\seq+ for the data type of finite sequences and \verb+\seq_concat+ for the concatenation operation and + \verb+\seq_empty+ for the empty sequence. Note, the addition escape character \verb+\+.\\ +At the same time you also establish a name for the corresponding nonterminal grammar symbol. + +Personal note: I am suprised that \verb+seqLen+ does not occur here. +\paragraph{Change file} \verb+KeYJMLParser.g+ \verb+Basepath/speclang/jml/translation+\\ +\paragraph{\quad Change 1} +Look for the existing grammar rule for sequences which looks roughly like this: +\begin{verbatim} +sequence returns [SLExpression ret = null] throws SLTranslationException +@init { + ImmutableList tlist = null; + KeYJavaType typ; + Term t, t2; + Token tk = null; + Pair> declVars = null; +} +@after { ret = result; } +: + SEQEMPTY + { + result=new SLExpression(tb.seqEmpty()); + } + | + . + . + . + | (tk2=SEQCONCAT{tk=tk2;} | tk3=SEQGET{tk=tk3;} | tk4=INDEXOF{tk=tk4;}) + LPAREN e1=expression COMMA e2=expression RPAREN + { + result=translator.translate(tk.getText(), + SLExpression.class, + services,e1,e2); + } +; +\end{verbatim} +Add a new rule replacing the name \verb+sequences+ and adapt what follows after the colon \verb+:+. +\paragraph{\quad Change 2} In the \verb+jmlprimary+ rule take the entry +\begin{verbatim} +| (SEQEMPTY + | + . + . + . + | SEQCONCAT + | SEQGET + | INDEXOF) + => result = sequence +\end{verbatim} +as a model. Of course you replace \verb+sequence+ in this example by the rule name you chose in the first change. +\\ +Do not forget to add an equivalent for your new data type for the line +\begin{verbatim} +| (LPAREN (SEQDEF | SEQ) quantifiedvardecls SEMI) +\end{verbatim} +This is neacessary fo parsing quantifier variables of the new data type. +\paragraph{\quad Change 3} In the \verb+builtintype + rule add a new entry for your data type mimicking +\begin{verbatim} + | SEQ + { + type = javaInfo.getKeYJavaType(PrimitiveType.JAVA_SEQ); + } +\end{verbatim} + + +\paragraph{Change file} \verb+TermBuilder.java+ in \verb+Basepath/logic+\\ +Look for the section starting with the comment lines +\begin{verbatim} +//------------------------ +//sequence operators +//----------------------- +\end{verbatim} +add a suitably adapted section for the new data type. You will notice that you have to use the +method names introduced in the public interface section in +\verb+OrdLDT+. +\paragraph{Create files} For each nonterminal \verb+NT+ for an operator as declared in \verb+KeYJMLLexer.g+ create a class file \verb+NameNT.java+ in the directory \\ +\verb+Basepath/java/expression/operator/adt+ following the examples\\ +Take \verb+SeqConcat.java+ or \verb+SeqLength.java+ as an example.\\ +It is a good idea to pick a name \verb+NameNT+ that somehwo resembles \verb+NT+. + +Constants are treated as literals, not as operators, and their corresponding files go into a different directory. See below. + +Calls to the constructors of these new classes are passed on via \verb+super+ to the +constructors of the class it extends, \verb+Operator.java+ or \verb+BinaryOperator.java+. +So here there is nothing else to do but renaming. +You should also get the \verb+getArity()+ right. \\ +I also set the result of the \verb+getPrecedence()+ method to $0$. I am not +sure if that is always correct. + +Work needs to be done for the last two methods \verb+visit(Visitor v)+ and +\verb+prettyPrint(PrettyPrinter p)+ as will be detailed in the next steps. + +\paragraph{Change file} \verb+Visitor.java+ in directory +\verb+Basepath/java/visitor+.\\[5pt] +This class is an interface. All you have to do here is to add a line that +adapts the examples you see, e.g.\\[5pt] +\verb+void performActionOnSeqConcat(SeqConcat x);+ +\paragraph{Change file} \verb+CreatingASTVisitor.java+ in +\verb+Basepath/java/visitor+.\\[5pt] +The empty method specifications from \verb+Visitor.java+ are overwritten here. +Just copy what you see, e.g. +for \verb+performActionOnSeqConcat+ and do the appropriate renaming. +\paragraph{Change file} \verb+JavaASTVisitor.java+ in directory +\verb+Basepath/java/visitor+.\\[5pt] +This is an abstract class. You need to add +a default method implementation.\\ +See \verb+performActionOnSeqConcat(SeqConcat x)+ for a model. + +Always when you edit a file check the import clauses. +You need to add an adaption of\\[5pt] +\verb+import de.uka.ilkd.key.java.expression.operator.adt.SeqConcat;+ +\\[5pt] +in all three files you edit in the last three steps. +You replace of course \verb+SeqConcat+ by the name of the file you created in step 2. + +The files for literals go into the directory \verb+Basepath/java/expression/literal+ instead. + +\paragraph{Change file} \verb+PrettyPrinter.java+ in directory +\verb+Basepath/java+.\\[5pt] +You need to add a method \verb+printnewOp+ for your operator \verb+newOp+ in the data type +\verb+newAdt+. tylke your leads e.g. from \verb+printSeqConcat+. Of course you enter here the +string you want to see printer for your operator. + +\paragraph{Create files} in directory \verb+Basepath/java/expression/literals+\\ +This parallels the creation of files like \verb+SeqConcat.java+ for the operation \verb+SeqConcat+, but now for +the literals declared in \verb+KeYJMLLexer.g+. Note, that these files go into a different directory. +The following changes also parallel those for operators except that for literals + \verb+JavaASTVisitor.java+ is not affected. + +\paragraph{Change file} \verb+Visitor.java+ in directory +\verb+Basepath/java/visitor+. +\paragraph{Change file} \verb+JavaASTVisitor.java+ in directory +\verb+Basepath/java/visitor+. +\paragraph{Change file} \verb+PrettyPrinter.java+ in directory +\verb+Basepath/java+. + +\paragraph{Create file} in directory \verb+Basepath/ldt+\\ +Look at the existing file \verb+SeqLDT.java+ as a model for the new file to be created. +You will note that for every literal and operation class created in +\verb+java.expression.literal+ and \verb+java.expression.operator.adt+ a field +of type \verb+Function+ is declared. To choose a name for this field best follow +the pattern you find in \verb+SeqLDT.java+. The link between the +classes in \verb+java.expression.operator.adt+ and the fields are effected in +method \verb+getFunctionFor+. + The link between the +classes in \verb+java.expression.literal+ and the fields are effected in +method \verb+translateTerm+. + +Also note that in the constructor \verb+SeqLDT(TermServices services)+ e.g. in the line +\begin{verbatim} +seqConcat = addFunction(services, "seqConcat"); +\end{verbatim} +the string, here \verb+ "seqConcat"+, must match the declarations in the .key file, here in +\verb+seq.key+. + +Make sure to include all the files created in the previous two create steps in +the import statements. + +This is a lot of work. +\paragraph{Change file} \verb+LDT.java+ in directory \verb+Basepath/ldt/+\\ +In the body of the method \verb+getNewLDTInstances(Services s)+ add aline for the new data type mimicking the +existing lines, e.g.\\[5pt] +\verb+ret.put(SeqLDT.NAME, new SeqLDT(s));+ +\paragraph{Change file} \verb+TypeConverter.java+ in \verb+Basepath/java+\\ +Add a line for the new data type taking the following line for the sequence data type as a model: +\begin{verbatim} + public SeqLDT getSeqLDT() { + return (SeqLDT) getLDT(SeqLDT.NAME); + } +\end{verbatim} +and, as always, do not forget the necessary import statement. +\section{Extension Of The Recoder To KeY Translation} +\label{sect:Recoder} + + +\paragraph{Change file} \verb+LDT.java+ in directory \verb+Basepath/ldt+\\[5pt] +Add a line for the new data type mimicking e.g. the existing line for the Seq data type +\begin{verbatim} + ret.put(SeqLDT.NAME, new SeqLDT(s)); +\end{verbatim} + +\paragraph{Change file } \verb+ProofJavaParser.jj+ in +\verb+Basepath/parser/proofjava/+ +\paragraph{\quad Change 1} +In section \verb+/* RESERVED WORDS AND LITERALS */+ mimick the line\\[5pt] +\verb+| < SEQ: "\\seq" >+\\[5pt] +%\verb+| < NEWADT: "\\newAdt" >+\\[5pt] +The string \verb+SEQ+ for the nonterminal of the grammar and the name +\verb+\seq+ for the new data type +are the same as in the grammar file \verb+KeYJMLLexer.g+ in \verb+Basepath/speclang/jml/translation+. +Note, the additional escape character \verb+\+. +The notation you substitute for \verb+\seq+ will be used in the annotated Java code. +\paragraph{\quad Change 2} Below \verb+TypeReference PrimitiveType() :+ add a line by adapting\\[5pt] +\verb+ | "\\seq"+ +\paragraph{\quad Change 3} +Look for \verb+ADTGetter() :+ and add all getter symbols +of the new data type +Just mimick what you see there for operators starting with \verb+\seq_+. +Here is an example: +\begin{verbatim} +| + "\\seq_concat" "(" expr=Expression() "," result=Expression()")" + { + result = new SeqConcat(expr, result) + setPrefixInfo(result); + } +| +\end{verbatim} +enclosed in the disjunctive separator symbol \verb+|+ of the grammar syntax. +The name of the operator in place of \verb+\seq_concat+ you take from the +grammar file \verb+KeYJMLLexer.g+ in \verb+Basepath/speclang/jml/translation+. +The result in the above code fragment refers to a +constructor, \verb+SeqConcat(expr,result)+, for the class +\verb+SeqConcat+. +It is your job to add these classes, one for each operator, +getter, constructor or literal. See below. +%In the directory \\ +%\verb+Basepath/java/expression/operator/adt+ +%you find a couple of examples to guide you. +\paragraph{\quad Change 4} +Look for \verb+ADTConstructor() :+ and add all constructor symbols for the new data type. +Here is a guiding example from the seq data type: +\begin{verbatim} +| + "\\seq_concat" "(" expr = Expression() "," result = Expression() ")" + { + result = new SeqConcat(expr, result) + setPrefixInfo(result); + } +| +\end{verbatim} +\paragraph{\quad Change 5} +Constants are not considered as constructors. You have to add them as literals. +Here is a simple example that suffices for the simplest case of just adding one literal. +\begin{verbatim} +EmptySeqLiteral EmptySeqLiteral() : +{ + EmptySeqLiteral result; +} +{ + "\\seq_empty" + { + result = EmptySeqLiteral.INSTANCE; + setPrefixInfo(result); + return result; + } +} +\end{verbatim} +Things get complicated if you want families of literals as e.g. in \verb+bigint+. I did not investigate this. + + +\paragraph{Change file} \verb+Recoder2KeYConverter.java+ in directory +\verb+Basepath/java+ +\\[5pt] +convert methods needs to be added. Again look for the line\\[5pt] +\verb+public SeqConcat convert(...adt.SeqConcat e)+\\[5pt] +and do the appropriate changes. + +Do not forget to add the necessary import statements. + +\paragraph{Change file} \verb+PrimitiveType.java+ in directory +\verb+Basepath/java/abstraction+\\[5pt] +Here is the entry for the data type of finite sequence that you may take as a model: +\begin{verbatim} +public static final PrimitiveType JAVA_SEQ = + new PrimitiveType("\\seq", EmptySeqLiteral.INSTANCE, SeqLDT.NAME); +\end{verbatim} +The second argument refers to the default element for the new data type. See below. +\paragraph{Create files} in the directory \verb+Basepath/java/recoderext/adt/+ +for each operator and each literal introduced in + \verb+KeYJMLLexer.g+ in directory\\ +\verb+Basepath/speclang/jml/translation+. + +Look at \verb+EmptySeqLiteral.java+, \verb+SeqLength.java+, and +\verb+SeqConcat.java+ as examples for literals, unary and binary operators. + +In these files you find a field +\verb+ private static final long serialVersionUID+ +which you can safely set to $0$. + + +%\paragraph{Create file} in the directory \verb+Basepath/java/recoderext/adt/+\\ +%for the class declared as the default in \verb+PrimitiveType.java+ +% +%??? +% +%Look at \verb+EmptySeqLiteral.java+ as an example.\\ +%In this class you find a field +%\verb+ private static final long serialVersionUID+ +%which you can safely set to $0$. + + +\paragraph{Change file} \verb+RecoderModelTransformer.java+ in +\verb+Basepath/java/recoderext+\\[5pt] +In this file the default element of the new data tpye is handled. +Mimic the line +\begin{verbatim} +} else if ("\\seq".equals(type.getName())) { + return EmptySeqLiteral.INSTANCE; +\end{verbatim} +and include the file that replaces \verb+ EmptySeqLiteral+ in the import statements. + + + \paragraph{Change file} \verb+KeYCrossReferenceSourceInfo.java+ in directory\\[5pt] +\verb+gitKeY/key/key/key.core/src/recoder/service+\\[5pt] +First include all the new files you created in the directory\\ +\verb+Basepath/java.recoderext.adt+ in the import statements. Then extend the method +\verb+ public Type getType(Expression expr)+ appropriately. +It seems that only constructor symbols need to be included. + + \paragraph{Change file} \verb+ProgramSVSort.java+ in directory\\[5pt] +\verb+Basepath/logic/sort+. \\ +This is important for the selection of applicable +taclets during proof search. It tells the matching algorithm for schema variables +to treat adt expressions as simple expressions, e.g. when used in assignments to ghost fields. + +\section{User Interface} +You may also want to add a description of the functions of your new data type to the Info +tab in the user interface. This is done by adding to the xml- file +\verb+functionExplanations.xml+ +in the directory \\ +\verb+gitKeY/key/key/key.ui/resources/de/uka/ilkd/key/gui/help+. + +\section{Find the Error} +To find the possible error when KeY fails to load I have added the following piece of code +\begin{verbatim} + System.out.println("reached reportError with message "+message); + System.out.println("throwable is "+ t); + java.io.StringWriter sw = new java.io.StringWriter(); + java.io.PrintWriter pw = new java.io.PrintWriter(sw); + t.printStackTrace(pw); + System.out.println(sw.toString()); +\end{verbatim} +at the beginning of the method body for +\verb+reportError(String message, Throwable t)+ in file +\verb+Recoder2KeY.java+ in directory \verb+Basepath/java+.\\ +This prints the error trace of the thrown exception \verb+t+ and might +give you a hint what could be the problem. +\end{document}