escet merge requestshttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests2023-09-16T13:49:39Zhttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/644#593 Add CIF annotation providers and use them to perform additional type che...2023-09-16T13:49:39ZDennis Hendriks#593 Add CIF annotation providers and use them to perform additional type checking* This one is a bit more interesting than the previous ones. I think I came up with a rather nice and versatile design.
* Annotation providers are registered using a new extension point. They must be identified by the annotation name, an...* This one is a bit more interesting than the previous ones. I think I came up with a rather nice and versatile design.
* Annotation providers are registered using a new extension point. They must be identified by the annotation name, and the implementation details (plugin/class).
* The class must implement a base class. It has documentation on the assumptions and guarantees.
* The type checker searches for a registered provider for the annotation, and then checks it using that provider.
* Best to review per commit.
Addresses #593v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/636#605 Implement edge selection heuristics for CIF data-based synthesis workset...2023-09-12T05:55:31ZDennis Hendriks#605 Implement edge selection heuristics for CIF data-based synthesis workset algorithm- This merge request provides the basic infrastructure for edge selectors.
- It also adds the edge selection as described in Fei 2014. Partially this was easy, but as I described in the issue description (#605), some of it is not clear, ...- This merge request provides the basic infrastructure for edge selectors.
- It also adds the edge selection as described in Fei 2014. Partially this was easy, but as I described in the issue description (#605), some of it is not clear, so I went with something simple for now.
- Best to review per commit.
- I'll soon add performance measurement results as a comment.
Closes #605v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/647#646 FESTO benchmark model: removed duplicate invariants.2023-09-11T06:05:48ZDennis Hendriks#646 FESTO benchmark model: removed duplicate invariants.* Changed as discussed in #646.
* Output has not changed in any meaningful way: [output.diff](/uploads/ddfb49607beea93b561b166812ee728e/output.diff) / [generated.diff](/uploads/13bd5979b8ffe9c855d84e0e7f0dfd63/generated.diff)
Closes #646* Changed as discussed in #646.
* Output has not changed in any meaningful way: [output.diff](/uploads/ddfb49607beea93b561b166812ee728e/output.diff) / [generated.diff](/uploads/13bd5979b8ffe9c855d84e0e7f0dfd63/generated.diff)
Closes #646v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/643#593 Basic type checking and pretty printing for annotations2023-09-05T15:44:38ZDennis Hendriks#593 Basic type checking and pretty printing for annotations* This is basic type checking for annotations. No annotation providers for custom type checking yet.
* Pretty printing added as well.
* Allows to load and save annotations now.
* Added some tests.
* Best to review per commit. Should be p...* This is basic type checking for annotations. No annotation providers for custom type checking yet.
* Pretty printing added as well.
* Allows to load and save annotations now.
* Added some tests.
* Best to review per commit. Should be pretty straightforward.
Addresses #593v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/625#632 multi-level: Construct multi-level synthesis node tree2023-08-30T18:19:40ZAlbert Hofkamp#632 multi-level: Construct multi-level synthesis node treeFirst 2 commits are very small improvements.
Third commit adds application files so the multi-level application can be run from the UI.
Fourth commit add building and printing the multi-level synthesis tree.
The computation happens i...First 2 commits are very small improvements.
Third commit adds application files so the multi-level application can be run from the UI.
Fourth commit add building and printing the multi-level synthesis tree.
The computation happens in `ComputeMultiLevelTree.process()`. After clustering it kicks off the recursive tree build function with `makeTreeNode()` at line 100. That function is basically algorithm 1, and it returns a `TreeNode`. The `computeGroupContents()` function implements algorithm 2. Not that both functions exist twice, once for a collection of plant nodes and once for a single plant node (the `M == 1` case in both algorithms).
Algorithm 2 the general case does a search in the plant group relations, which is encoded at lines 200 to 234. The `GroupContent` class contains the actual data that is being updated inside the search (done in the `update` function). The `GroupContent` also functions as return value for algorithm 2.
I ran it with the simple waterlock case, and the output is the same as in the paper, except that our clustering function returns a different order of the clusters.
Closes #632
Addresses #318v1.0Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/640#593 Add parsing of annotations.2023-08-30T15:10:11ZDennis Hendriks#593 Add parsing of annotations.* Add general parsing of annotations. Allow annotations only on input variables.
* Annotations are added to the parser AST. No type checking yet.
* Added test model, to test parsing of annotations. As there is no type checking or pretty ...* Add general parsing of annotations. Allow annotations only on input variables.
* Annotations are added to the parser AST. No type checking yet.
* Added test model, to test parsing of annotations. As there is no type checking or pretty printing yet, the annotations 'disappear'.
* When generating the CIF parser, also output the BNF syntax of the grammar, for easier updating of the CIF reference manual.
* Added syntax highlighting to the CIF text editor. I colored the annotation name the same color as comments, but while comments are italic, the annotation names use a normal font.
* I was initially thinking of making the highlighting the whole annotation, including its arguments. However, that is tricky, because annotations as a whole can cover multiple lines, there can be comments in between, etc.
* I did not update the CIF LaTeX syntax highlighting. I checked the documentation of the `listings` package, and none of the alternatives seems sufficiently powerful for what is needed here (coloring e.g. `@abc:def`). The syntax highlighting definition is already incomplete, as it for instance doesn't highlight `u_e` as an uncontrollable event, etc.
* Best to review per commit. I'd skip the changes to generated files (scanner, parser, hooks skeleton, etc).
Addresses #593v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/639#632 Multi-level tree computation: eliminate Algo2Data class.2023-08-30T12:34:40ZDennis Hendriks#632 Multi-level tree computation: eliminate Algo2Data class.* I set out to try to improve the current code in !625.
* We [discussed](https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/625#note_1198750) there that we don't like the `Algo2Data` class.
* I split it into 2 parts, `Algo2D...* I set out to try to improve the current code in !625.
* We [discussed](https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/625#note_1198750) there that we don't like the `Algo2Data` class.
* I split it into 2 parts, `Algo2Data` (with the P/RP matrices), and the `TreeNode`. I then set out to eliminate `Algo2Data` altogether. Then I cleaned it all up, made it consistent, etc.
* I came across a bunch of other small things, and improved them as well (in separate commits).
* I also addressed the remaining comments in !625 that were not yet (fully) addressed.
* Best reviewed per commit.
For me, this can be merged into !625 to finalize that one. @ahofkamp Let me know what you think.
Addresses #632v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/637#639 Fix performance regression in finite response checker2023-08-28T12:58:55ZDennis Hendriks#639 Fix performance regression in finite response checker- If only finite response is checked, the unneeded global guarded updates are no longer computed. This fixes the performance regression.
- The controller checker now also requires at least one enabled check. This prevents performing lots...- If only finite response is checked, the unneeded global guarded updates are no longer computed. This fixes the performance regression.
- The controller checker now also requires at least one enabled check. This prevents performing lots of calculations in preparation, that are then not used by any check.
- Best reviewed per commit.
Closes #639v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/638#593 Add AnnotatedObject to CIF metamodel and Declaration extends it2023-08-28T07:09:37ZDennis Hendriks#593 Add AnnotatedObject to CIF metamodel and Declaration extends it* `AnnotatedObject` is similar to `PositionObject`. It is a base class for all annotated objects. `AnnotatedObject` extends `PositionObject`.
* `Declaration` now extends `AnnotatedObject` instead of `PositionObject`. I wanted to do this ...* `AnnotatedObject` is similar to `PositionObject`. It is a base class for all annotated objects. `AnnotatedObject` extends `PositionObject`.
* `Declaration` now extends `AnnotatedObject` instead of `PositionObject`. I wanted to do this for `InputVariable`. Ecore supports multiple inheritance (`Declaration` and `AnnotatedObject`), but our own tooling (such as LaTeX generation) don't support it.
* Added a metamodel constraint that we only allow it for input variables, for now.
* Best to review per commit.
Addresses #593v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/604#593 Add annotations to CIF metamodel2023-08-26T12:58:51ZAlbert Hofkamp#593 Add annotations to CIF metamodel- Cleaned up the mess in the existing diagrams caused by Sirius updates.
- Added `annotations` EPackage and diagram with an `Annotation` and a `AnnotationArgument` class.
- Generated class diagram image for annotations.
- Regenerated CIF...- Cleaned up the mess in the existing diagrams caused by Sirius updates.
- Added `annotations` EPackage and diagram with an `Annotation` and a `AnnotationArgument` class.
- Generated class diagram image for annotations.
- Regenerated CIF model classes.
- Regenerated CIF model constructor and walker classes.
Addresses #593v1.0Albert HofkampDennis HendriksAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/351#145 Add confluence check to controllercheck2023-08-23T20:26:59ZAlbert Hofkamp#145 Add confluence check to controllercheckAdds confluence checking to the `controllercheck` application, as both properties should hold before a specification can be used in a PLC implementation.
Refactored computing MDD and other data into a new class, which is then made avail...Adds confluence checking to the `controllercheck` application, as both properties should hold before a specification can be used in a PLC implementation.
Refactored computing MDD and other data into a new class, which is then made available to both finite response and confluence checking.
It is likely easier to read each commit separately.v0.7Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/628#596 PLCgen: improve classification of automata roles2023-08-22T17:43:05ZDennis Hendriks#596 PLCgen: improve classification of automata roles* This merge request is an attempt to resolve this discussion: https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/619#note_1194262.
* Note that the target of the merge is the branch of !619. This merge request should thus be...* This merge request is an attempt to resolve this discussion: https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/619#note_1194262.
* Note that the target of the merge is the branch of !619. This merge request should thus be merged into that merge request, before that merge request is merged into `develop`.
* I'll explain the changes in the referred discussion.
Addresses #596v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/633#637 Rename codegen.png->cif_codegen.png (and others) for consistency.2023-08-22T16:11:34ZDennis Hendriks#637 Rename codegen.png->cif_codegen.png (and others) for consistency.* I renamed all the ones for CIF tools. There are some others, but they are about other file types, etc, so I didn't change those.
Closes #637* I renamed all the ones for CIF tools. There are some others, but they are about other file types, etc, so I didn't change those.
Closes #637v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/629#569 DEPENDENCIES.txt update.2023-08-15T08:06:37ZDennis Hendriks#569 DEPENDENCIES.txt update.Change as on Jenkins we seem to get slightly different output than I get locally.
Closes #569Change as on Jenkins we seem to get slightly different output than I get locally.
Closes #569v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/622#620 CIF to Supremica transformation now only generates at most one guard per...2023-07-06T19:51:14ZDennis Hendriks#620 CIF to Supremica transformation now only generates at most one guard per edgeCloses #620Closes #620v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/608#612 Create deprecation warning for switch with single case2023-06-24T17:25:40ZMartijn Goorden#612 Create deprecation warning for switch with single caseCloses #612.
First time playing with CIF's typechecker.Closes #612.
First time playing with CIF's typechecker.v0.10Martijn GoordenMartijn Goordenhttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/607#598 Add end-user documentation on switch statements.2023-06-23T11:14:05ZMartijn Goorden#598 Add end-user documentation on switch statements.Closes #598.
I am in doubt what a good location in the tutorial is. On the one hand, it is an expression, so it should fit into the 'values' chapter, as that contains a general discussion on the terms 'type', 'value', and 'expression'. ...Closes #598.
I am in doubt what a good location in the tutorial is. On the one hand, it is an expression, so it should fit into the 'values' chapter, as that contains a general discussion on the terms 'type', 'value', and 'expression'. But this chapter does not contain any sections on which kinds of expressions are possible.
On the other hand, the notion of the `if` expression is actually explained in the `functions` chapter. Since the `if` expression and the `switch` expression are conceptually very close together, I ended up adding the documentation under the `functions` chapter.v0.10Martijn GoordenMartijn Goordenhttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/567#523 Optimize enforcement of state plant invariants like state requirement in...2023-06-22T19:54:29ZDennis Hendriks#523 Optimize enforcement of state plant invariants like state requirement invariantsIt seems for the test models we have, the change actually makes things worse. Then again, we had something similar for state requirement invariants, if I remember correctly. The test models are simply too small and too few to reach any r...It seems for the test models we have, the change actually makes things worse. Then again, we had something similar for state requirement invariants, if I remember correctly. The test models are simply too small and too few to reach any real conclusion. And for real-world models, for state requirement invariants, it did actually improve performance, a lot. So, here we just do the same for state plant invariants. We currently don't have enough test or real-world models to conclude what is best either way.
Closes #523v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/614#526 Add controlled system state space size as statistics option2023-06-22T19:37:11ZDennis Hendriks#526 Add controlled system state space size as statistics option* Add it as a statistic. ~Enabled by default.~
* Normal output now, no longer debug output. Still separated from debug output as before though.
* No more extra indentation to match debug output. (similar to other statistics)
* Updated be...* Add it as a statistic. ~Enabled by default.~
* Normal output now, no longer debug output. Still separated from debug output as before though.
* No more extra indentation to match debug output. (similar to other statistics)
* Updated benchmark script, updated/added tests, updated/added documentation.
Best reviewed per commit.
Closes #526v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/609#610 CIF data-based synthesis BDD operation cache size/ratio improvements and...2023-06-21T21:00:58ZDennis Hendriks#610 CIF data-based synthesis BDD operation cache size/ratio improvements and fixes* Upgrade from JavaBDD 5.0.0 to 6.0.0, to fix the inverted BDD operation cache ratio bug, also improving the precision of the option.
* Improved and extended the CIF data-based synthesis performance documentation.
* Improved the documen...* Upgrade from JavaBDD 5.0.0 to 6.0.0, to fix the inverted BDD operation cache ratio bug, also improving the precision of the option.
* Improved and extended the CIF data-based synthesis performance documentation.
* Improved the documentation of the BDD operation cache size/ratio options.
Closes #610v0.10