Difference between pages "Rodin Workshop 2012" and "Strengthening the AST Library for Rodin 3.0"

From Event-B
(Difference between pages)
Jump to navigationJump to search
imported>WikiSysop
 
imported>Vinmont
 
Line 1: Line 1:
= Rodin User and Developer Workshop, 27-29 February 2012,  Fontainebleau, France =
+
A part of the Rodin 3.0 development aims to strengthen the AST library. This page explains the choices we have done during this step.
  
 +
== Type Environment ==
 +
Type environments have changed in Rodin 3.0 in order to reinforce their good use and their robustness.
 +
First of all we add a new mechanism to add given sets implicitly introduced by types when new elements are added.
 +
Then we create the inferred type environment Java type to could differentiate a classical type environment and an inferred one which now references its initial type environment. This type is now used in the type checking result. Since an inferred type environment content depends on its initial type environment it was a necessary modification to could express all possible inferred type environments.
 +
Finally we add mechanism to separate mutable and immutable type environments by creating two children interfaces of the type environment interface, {{class|ITypeEnvironmentBuilder}} and {{class|ISealedTypeEnvironment}}. This mechanism provides a strong guarantee that a type environment will not be modified if necessary and allows at the same time to be flexible when it is needed (see [[Rodin 3.0 Plug-in Migration Guide]] for more information).
  
Event-B is a formal method for system-level modelling and analysis. The Rodin Platform is an Eclipse-based toolset for Event-B that provides effective support for modelling and automated proof. The platform is open source and is further extendable with plug-ins. A range of plug-ins have already been developed including ones that support animation, model checking and UML-B.
+
== Type Checking ==
The [http://wiki.event-b.org/index.php/Rodin_Workshop_2009 first Rodin User and Developer Workshop was held in July 2009 at the University of Southampton] while the [http://wiki.event-b.org/index.php/Rodin_Workshop_2010 second took place at the University of Düsseldorf in September 21-23, 2010]. The 2012 workshop will be part of the [http://www.bmethod.com/php/federated-event-2012-en.php DEPLOY Federated Event] hosted by the [http://lacl.univ-paris12.fr/ LACL laboratory] at [http://www.iutsf.u-pec.fr/ IUT Sénart-Fontainebleau]. Fontainebleau is within easy reach of Paris.
+
The type checking step has been strengthened to avoid that the type checker accepts given types implicitly introducing given sets incompatibles with the type environment and thus free identifiers. It also allowed to detect and correct a new occurrence of the bug #635 (old name #3574565) that was leading on a incoherent result of the formula type checking since the formula was not correctly type checked but the result was indicating a success.
  
While much of the development and use of Rodin takes place within the [http://www.deploy-project.eu EU FP7 DEPLOY Project], there is a growing group of users and plug-in developers outside of DEPLOY. The purpose of this workshop is to bring together existing and potential users and developers of the Rodin toolset and to foster a broader community of Rodin users and developers.
+
Regarding the legibility for identifiers no modification has been done, that is to say that if the same name is used for a free and bound identifiers then the bound identifier will be renamed since it is identified by its Bruijn number.
  
For Rodin users the workshop will provide an opportunity to share tool experiences and to gain an understanding of on-going tool developments. For plug-in developers the workshop will provide an opportunity to showcase their tools and to achieve better coordination of tool development effort.
+
The modification of the type checking step introduces the following modifications:
 +
* In the ''typecheck()'' procedure of nodes, we now analyse the type of the nodes that could introduce new given sets and add those given sets to the resulting inferred type environment. It guarantees that incompatible free identifiers names or given sets are not introduced.
 +
* In the ''synthesize()'' procedure, that is executed a first time at node creation and a second time during solving types step, we now add the given sets introduced by given types as free identifiers on concerned nodes. As a consequence if a given set and a free identifier have a name conflict it will also be detected during this step. Particularly it will provide a way to detect and raise an {{class|IllegalArgumentException}} when an invalid type is provided at node creation.
 +
* If the whole type checking procedure succeeds then all free identifiers are checked and added to the inferred environment if necessary.
  
The format will be presentations together with plenty of time for discussion. On Day 1 a Developer Tutorial will be held while Days 2 and 3 will be devoted to tool usage and tool developments.  The workshop will be followed by an open  [http://www.bmethod.com/php/federated-event-2012-en.php Industry Day].
+
== AST nodes construction ==
 +
AST nodes construction is possible using {{class|FormulaFactory}} methods (direct access to constructors is now explicitly forbidden) and has been strengthened by verifying that arguments provided are valid regarding constructed node. Those verifications are documented with the exceptions raised when conditions on arguments are not respected. It allow to avoid exceptions raised later for which source is more complicated to locate.
  
If you are interested in giving a presentation at the Rodin workshop, send a short abstract (1 or 2 pages PDF) to rodin@ecs.soton.ac.uk by 16 January 2012. Indicate whether it is a tool usage or tool development presentation. Plug-in presentations may be about existing developments or planned future developments.  We will endeavour to accommodate all submissions that are relevant to Rodin and Event-B.
+
[[Category:Design]]
 
+
[[Category:Developer documentation]]
Attendance at the DEPLOY Federated Event (including the Rodin Workshop) is open to all.
 
 
 
 
 
----
 
 
 
'''Organisers'''
 
 
 
Michael Butler, University of Southampton
 
 
 
Stefan Hallerstede, University of Aarhus
 
 
 
Thierry Lecomte, ClearSy
 
 
 
Michael Leuschel, University of Düsseldorf
 
 
 
Alexander Romanovsky, University of Newcastle
 
 
 
Laurent Voisin, Systerel
 

Revision as of 10:40, 14 January 2013

A part of the Rodin 3.0 development aims to strengthen the AST library. This page explains the choices we have done during this step.

Type Environment

Type environments have changed in Rodin 3.0 in order to reinforce their good use and their robustness. First of all we add a new mechanism to add given sets implicitly introduced by types when new elements are added. Then we create the inferred type environment Java type to could differentiate a classical type environment and an inferred one which now references its initial type environment. This type is now used in the type checking result. Since an inferred type environment content depends on its initial type environment it was a necessary modification to could express all possible inferred type environments. Finally we add mechanism to separate mutable and immutable type environments by creating two children interfaces of the type environment interface, ITypeEnvironmentBuilder and ISealedTypeEnvironment. This mechanism provides a strong guarantee that a type environment will not be modified if necessary and allows at the same time to be flexible when it is needed (see Rodin 3.0 Plug-in Migration Guide for more information).

Type Checking

The type checking step has been strengthened to avoid that the type checker accepts given types implicitly introducing given sets incompatibles with the type environment and thus free identifiers. It also allowed to detect and correct a new occurrence of the bug #635 (old name #3574565) that was leading on a incoherent result of the formula type checking since the formula was not correctly type checked but the result was indicating a success.

Regarding the legibility for identifiers no modification has been done, that is to say that if the same name is used for a free and bound identifiers then the bound identifier will be renamed since it is identified by its Bruijn number.

The modification of the type checking step introduces the following modifications:

  • In the typecheck() procedure of nodes, we now analyse the type of the nodes that could introduce new given sets and add those given sets to the resulting inferred type environment. It guarantees that incompatible free identifiers names or given sets are not introduced.
  • In the synthesize() procedure, that is executed a first time at node creation and a second time during solving types step, we now add the given sets introduced by given types as free identifiers on concerned nodes. As a consequence if a given set and a free identifier have a name conflict it will also be detected during this step. Particularly it will provide a way to detect and raise an IllegalArgumentException when an invalid type is provided at node creation.
  • If the whole type checking procedure succeeds then all free identifiers are checked and added to the inferred environment if necessary.

AST nodes construction

AST nodes construction is possible using FormulaFactory methods (direct access to constructors is now explicitly forbidden) and has been strengthened by verifying that arguments provided are valid regarding constructed node. Those verifications are documented with the exceptions raised when conditions on arguments are not respected. It allow to avoid exceptions raised later for which source is more complicated to locate.