Rodin Platform 2.0 Release Notes

From Event-B
Jump to navigationJump to search

See also Rodin_Platform_2.0.1_Release_Notes.

See also Exporting and importing archives containing theories.

See also Sharing theories.

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.
See Mathematical extensions
Better platform's behaviour. Some cumbersome behaviours were 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
Auto-completion in wizards. It is now possible to use the auto-completion in the wizards of the modelling perspective.
  • 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.


  • 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

Rodin Update Site

Plug-in name Version Status MCV* Release Date Contact Additional info
Umlb32.gif UML-B 2.1.1 available
Event-B EMF framework 3.2.1 available Users should not need to install this framework. It will be installed automatically by other plug-ins as required.
Rose.gif Rose 1.1.0 available
Records 1.0.1 available This release includes EMF and Refactory support for records.
Teamwork 1.1.0 available
Shared Event Composition plug-in 1.2 available
Refactory plug-in 1.0.0 available email
DecompositionPlug-in logo.png Decomposition plug-in 1.1.0 available
Project diagram icon s.png Project Diagram ?? available
Relevance Filter 1.0.0 available 2.x.x email
Tasking Event-B 0.1.0 available email Implementation Specification, and Code Generation, for Multi-Tasking Systems

B Method Update Site

Plug-in name Version Status MCV* Release Date Contact Additional info
Atelier-B provers 1.2.1 available

Other Updates Sites

Plug-in name Version Status MCV* Release Date Contact Additional info
AnimB.png AnimB 0.2.1 available Christophe Métayer Use the update site
Camille 2.0.1 available Use the ProB update site. You need to add the Galileo update site (see Event-B EMF framework 3.2.0)
Mlogo big.png Modularisation 1.4.2 available Use the update site
Group refinement 0.1.1 available Use the update site
Prob eventb wiki logo.png ProB not available 1.3.1 ?? We are actively working on the release.
ProR logo.png ProR 4.4.0 available Michael Jastram

*MCV stands for the Rodin's Maximum Compatible Version

Known plug-in incompatibilities

It unfortunately exists some incompatibilities between plug-ins. This list might be non exhaustive and is updated accorded to user experiences. If you encounter some conflict while installing or using plug-ins, please send a mail to the Rodin User List or feel free to complete the following table.

Plug-in name Incompatible with

> Link to the External plug-in's page <


Download Now!

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

  • The list of the currently open bugs is given below:
  Bug 1441596: Tool conflicts caused by identically named files
  Bug 1766826: Error messages from math parser incomprehensible
  Bug 1824177: B4free prover translation for <<-> fails
  Bug 1841129: Incorrect proof status
  Bug 1949927: newPP is too sensitive to unused hyps
  Bug 1954442: Too many handles used by Edit page on Windows
  Bug 2082375: input file write-protection a problem to Rodin
  Bug 2105507: too difficult to work with explicit set expressions
  Bug 2371318: Unable to apply equality from left to right
  Bug 2531738: RODIN crash adding text to note or text box in class diagram
  Bug 2573332: Long formulas get truncated
  Bug 2630205: reasoning with "finite" clause
  Bug 2817523: No paste in root contextual menu of explorer
  Bug 2824204: Change to Rodin Elements not reflected in editor
  Bug 2835692: Text Editor exception
  Bug 2844786: Invisible icons in Proof Control coolbar
  Bug 2844813: Turnstile unicode character
  Bug 2869663: Changing the font in the pretty print view
  Bug 2871281: Bad display of marked math symbols
  Bug 2871290: Comments are still editable in a generated model
  Bug 2882318: Error while entering symbol from symbol table
  Bug 2883199: Fix "new" actions
  Bug 2886026: "Overflow" in partition rewriting
  Bug 2894645: Error on context named "axioms"
  Bug 2900427: Problems parsing complex expressions
  Bug 2916134: Atelier-B PP does not understand S /= {}
  Bug 2931450: editor extension - clause names defined in wrong element
  Bug 2934585: animB : impossible to start animation
  Bug 2937124: Symbol Table and Properties
  Bug 2937132: newPP unresponsive
  Bug 2940315: mod operator should be compatible with itself
  Bug 2940575: some fomulas are truncated
  Bug 2941496: NewPP outputs incorrect set of required Hypotheses
  Bug 2942182: unparsing then parsing gives a different expression
  Bug 2949652: Event-B editor doesn't refresh
  Bug 2952091: newPP is unsound
  Bug 2952134: conversion to mathematical symbols generates trailing spaces
  Bug 2952645: Unable to parse ||
  Bug 2952705: Progress bar running too fast
  Bug 2952758: Highlighting of bound variables
  Bug 2957980: Proof Skeleton View : \n displayed as squares
  Bug 2958877: {1 | true} --> Error Running Tool
  Bug 2968560: Dependence of Explorer & eventb.ui
  Bug 2974867: Camille text editor -  doesn't allow non alphanumeric chars 
  Bug 2987749: Axioms in classtypes not quantified
  Bug 2988294: Nested elaborated transitions produce conflicting actions
  Bug 2997510: undo behaviour
  Bug 3003164: NPE when loading a PO
  Bug 3005167: Inherited elements
  Bug 3005170: Becomes such that
  Bug 3005202: Renaming and provers
  Bug 3005204: Cumbersome popup
  Bug 3006903: Rename Bug
  Bug 3007792: Theorems in Guards - Syntax Error
  Bug 3007793: Issue with refines clauses of events 
  Bug 3009555: Search Hypothesis refresh
  Bug 3009838: Order of variables and invariants not preserved
  Bug 3014775: partition operator is not accepted by Camille 
  Bug 3019063: Error on Double Click
  Bug 3020776: Issue with indentation
  Bug 3022742: Problem with Software Sites
  Bug 3024811: Leaks in Event-B Explorer
  Bug 3027387: Proof simplification does not remove useless rules
  Bug 3048530: New Event Wizard :: NAT[tab]
  Bug 3052238: Saving failed caused by AssertionError in rebuild 
  Bug 3053410: type mismatch in an operation call observed too late
  Bug 3054228: Proof simplification too slow
  Bug 3058915: insufficiency in proof obligation generation
  Bug 3061858: invariant violated but all proof obligations discharged
  Bug 3067672: unfair requests for witnesses
  Bug 3073433: implicit actions needed but not generated
  Bug 3074011: a namespace-sensitive translation problem
  Bug 3075420: Unable to save project after renaming invariants
  Bug 3078116: Rule DERIV_SUBSETEQ_SETMINUS_L automatic
  Bug 3080950: Incorrect display of <<->  <->> <<->> and <+  in the editor


Rodin Platform up to r9964. Developer Release date : 08/10/2010. User Release date : 13/10/2010.