Rodin Platform 2.0 Release Notes
From Event-B
What's New in Rodin 2.0?
- General Interface
- Improved Statistic View. The statistic view was simplified and unified, to make it clearer and easily resizable and be displayed at first click on every element.
- Modelling
- Mathematical Extensions. Rodin was extended to allow definition of basic predicates, new operators or new algebraic types.
- Better platform's behaviour. Some cumbersome behaviours where improved:
- - It is now possible to display statistics for a project without expanding it first.
- - The view on selected hypotheses is now correctly scrolled to bottom, to display freshly added ones.
- - Navigating through proof tree nodes is faster (useless refreshings of search hypotheses where removed to gain performance).
- Independent quantified variables with the same name. It is now possible to use the same name for quantified variables which are independant.
- Improved WD Lemma Generation . The WD Lemma Generation was improved to simplify unnecessarily complicated lemmas.Some old proofs could appear as undischarged, the "Proof Replay on Undischarged POs" commmand will discharge these proofs.
- See also: Improved WD Lemma Generation
- Proving
- Project Explorer's Actions now able to run in background. The "Proof Replay on Undischarged POs", "Retry Auto Provers" and "Recalculate Auto Status" commands are now able to run in background. The user is allowed to modify his models, and do interactive proving while such commands are running. Note that the "Save" action on interactively proved PO, which is concerned by such a command, might be delayed as concurrency occurs. The "Save" action will then be scheduled as a further task to be performed, and the user will have to wait or cancel the command. Those commands are accessible by right-clicking in the Event-B Explorer.
- See also: Proof Obligation Commands
- Proof details can now be displayed. It is now possible for the user to have a look at what a proof rule really did. A new view, the Rule Details View, was added to the proving perspective to show up the various operations performed by a rule on a proof tree node. It is for example possible, now, to look at instantiated hypotheses, or even, find hypotheses that where removed or hidden by a rule.
- See also: Rodin_Proving_Perspective#Rule_Details_View
- Proof Control auto-completion. It is now possible to use the auto-completion in the proof control input area.
- Changes for plugin-developers
- Rodin 2.0 is Helios based. Rodin 2.0 is based on the Eclipse 3.6 Helios release. A wiki page has been added to document main improvements that could be of interest to plug-in developpers.
- See Migration to Eclipse 3.6.
- Rodin 2.0 is Java 1.6 based.
- See Migration to Java 6.
- Simplified addition of tactic providers for the proving UI. A new attribute ("any") can now be used to describe the tactic providers that both apply on hypotheses and goal (i.e. that have the same behavior for both hypothesis predicates and goal predicate).
- A new mechanism to collect informations while traversing formulae. The IFormulaInspector<F> interface has been added and published in order to ease the aggregation of informations (of type F) computed while traversing the AST of a formula. This mechanism replace the old one, where one should retrieve positions where such informations could take place and iterate in a second time on each positions to calculate and accumulate informations.
Requirements
TODO: Inform here of some specific system requirements (version of Java, etc).
- Reusing your development workspace with 1.6 JVM and Eclipse 3.6 :
- Update the compiler settings to be compliant with level 1.6. This can be done in Window > Preferences > Java > Compiler.
- One also has to check that eclipse no longer use the old JRE and resolved the new JRE.
- It can happen after switching to JRE version 1.6, used as the execution environment, that Eclipse no longer links any JRE to be used, hence leading to compiler linking errors.
- To check this, go to Window > Preferences > Java > Installed JREs and check that the currently used JRE actually points to the JRE 1.6.
- Once this operation made, it is needed to perform a clean, build and refresh on all the worskpace.
- It is recommended to run the Rodin platform with a Java 6 Runtime Environment.
- Only a 32-bit version of the Rodin platform is provided for PCs.
- Only a 64-bit version of the Rodin platform is provided for MAC.
- In other terms, Rodin 2.0 does not support MAC PowerPC / Intel 32-bit based platforms any longer.
- Migration to Eclipse 3.6 (Helios)
- Some incompatibilities may arise while moving from Eclipse 3.5 to Eclipse 3.6.
- The following page aims to list exhaustively the items to be checked and modified in order to make a plug-in compatible with Rodin 2.0.
- See Migration to Eclipse 3.6.
- Migration to Java 6
- Plugin developers should be aware of possibly occurring issues when migrating from the JVM 1.5 to the JVM 6.
- A typical example that could produce errors or an unwanted behaviour, is to compare the inlined result of a HashMap with hard-coded values (eg. a string).
- As a consequence, it is required to set the JVM used by a plug-in to the 6 version, and then check and modify if necessary the code which produces or could potentially lead to errors.
Incompatibilities between Rodin 1.x and Rodin 2.0
For Rodin 1.x users
- No incompatibility is introduced when migrating to Rodin 2.0. In other terms, models used within Rodin 1.3 are compatible with Rodin 2.0.
For Rodin 1.x plugin developers
- This part lists the incompatibilities encountered when migrating from Rodin 1.x to Rodin 2.0.
- The "2-step" mechanism to get tactic applications from applicable positions (used by old ITacticProvider) is no longer available. In fact, the formerly called ITacticProvider2 interface now supersedes this old interface to become the "official" ITacticProvider interface. Implementors of this interface must provide a single method
List<ITacticApplication> getPossibleApplications(IProofTreeNode node, Predicate hyp, String globalInput);
which gives the list of calculated tactic applications.
- misspelling in extension org.eventb.ui/proofTactics/tactic#priorty corrected to priority (i was missing)
- the correction must be made in every extension of this point
External Plug-ins
TODO: Describe here the available plug-ins, and the supported versions for this release.
Downloading
TODO: Add here a link to download the platform.
Fixed Bugs and Implemented Feature requests
Bug 1737819: WD properties are not fully propagated Bug 2174629: No PO generated for unrefined event Bug 2510307: Proof information window empty for grd/WD Bug 2782243: BraveSansMono Bug 2893782: error when building new project with a context Bug 2964346: RBP: illegal theory directory leads to strange behaviour Bug 2964350: RBP allows to generate theory with same name as a context Bug 2964359: Rule based prover allows me to define unsound rule Bug 2974863: Camille text editor - Class cast exception when saving a sm Bug 2979365: Auto completion in wizards Bug 2979444: Matching ; Bug 2989932: SM translation flow-down buttons KO Bug 2990934: UML-B Cannot add statemachines to refined Class Bug 2991364: Project explorer jumps to first element Bug 2995930: unsound simplification Bug 2996407: NullPointer in Builder Bug 2997671: Identical SCActions causes static check failure Bug 2998051: Some spurious spaces are sometime inserted Bug 2998543: incorrect display on hypothesis window Bug 2999977: Can not save proof after functional image simplification Bug 3005211: Spaces between elements in structured editor Bug 3005226: Copy/Paste in the structured editor Bug 3005230: Combo boxes in structured editor Bug 3006807: NPE in FunOvr Bug 3007475: Plug-in startup not in UI thread Bug 3008554: Scroll bar does not refresh when adding hypotheses Bug 3008907: Bad display of instantiation boxes Bug 3008973: Indexer job still running after shutdown Bug 3009562: Search Hypothesis pattern Bug 3010324: Linebreaks not displayed in pretty printer Bug 3011601: Unexpected Error occurs Bug 3019062: Error in Context Menu Bug 3022706: Empty Goal Window on Rodin 1.3.1 Bug 3022881: NPE when recalculating Auto-Status Bug 3025480: Side effect when commenting an event Bug 3025754: Spaces in a search prevent to "find" Bug 3025836: Rodin 1.3.1 prover is still unsound Bug 3027365: Proof replay resilient to useless rules Bug 3027428: OnePointRule in post tactics makes proof save crash Bug 3028473: Rule produced by contrHyps is too weak Bug 3029910: Failed assertion in newPP Bug 3049319: Wrong action statement causes SC tool error Bug 3053075: hypothesis gets deselected unexpectedly Bug 3056815: interface theorems preferably without INV proof obligations Bug 3066966: weird translation problems with operation calls Bug 3076552: Wrong behaviour in the 'new variable wizard' on OSX
FR 1469740: Add information on the splash screen FR 1595966: Sequence types FR 1737333: Refines button FR 1793844: Decomposition Support FR 1793869: Proof Display/PrettyPrint FR 1828319: Renaming constants and variables FR 2682114: Having an extra row in "statistics view†FR 2793244: Make legibility check optional FR 2932968: (NAVIGATOR) Carrier Sets sb "higher" FR 2979367: Auto completion in Proof Control FR 3008636: Display instantiated hyp FR 3014340: Type rewrite rule for s <: T and API FR 3021293: Automatic completion in Proving perspective FR 3046951: how to instantiate quantifiers FR 3048253: "Refine" and "any" button on the new event wizard FR 3051547: inference rules table headings FR 3051570: translation between Rodin and Event-B Book FR 3051575: Event-B Books PDFs need refreshing FR 3051588: Initialization vs Initialisation FR 3052182: more support to proofs in interfaces FR 3052261: document rules that are both automatic and manual FR 3055966: Warning for INITIALIZATION FR 3067513: interface theorems to be visible to interface users FR 3067580: option for avoiding duplicated contexts
Known Issues
TODO: Add here a link to the SourceForge Bugs page, after filtering bugs (Assignee Any, Status Open, Category Any, Group 1.2).