Event-B Examples: Difference between revisions

From Event-B
Jump to navigationJump to search
imported>WikiSysop
imported>Colin
 
(19 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{TOCright}}
{{TOCright}}
This page is for listing available example Event-B/Rodin projects.
This page is for listing available example Event-B/Rodin projects.
== Year 2011 ==
===[http://deploy-eprints.ecs.soton.ac.uk/316/ Vehicle On-Board Controller for Trains]===
By Wen Su , Jean-Raymond Abrial, Runlei Huang and Huibiao Zhu
This material describes an Event-B development of a Vehicle On-Board Controller for trains.
The purpose of the system under study is to detect the driving mode wished by the train
driver (he has some buttons at his disposal to do that) and decide accordingly whether
this mode is feasible so that the current mode of the train could be (or not be) that
wished by the driver. A paper describing the modelling methodology and a Rodin archive
are available here:
http://deploy-eprints.ecs.soton.ac.uk/316/
=== [[Development of a Heating Controller System]]===
By Abdolbaghi Rezazadeh.
This material describes an Event-B development of a simple heating controller. This is a first case study that covers the entire development process; starting from a system specification and ending up in an implementation in the Ada programing language. The overall aim of this case study is to put in practice the recommended methodological aspects of Event-B, particularly those aspects of modelling concerned with decomposition and code generation. We begin the tutorial with an overview of the [http://wiki.event-b.org/index.php/Development_of_a_Heating_Controller_System abstract development] that forms the basis for subsequent Tasking Event-B modelling. In the [http://wiki.event-b.org/index.php?title=Tasking_Event-B_Tutorial Tasking Event-B tutorial] the developer is guided, step-by-step, through the final construction stages of a partially completed model. The tutorial provides an introduction to some of the main constructs used when modelling with Tasking Event-B.
== Year 2010 ==
===[http://deploy-eprints.ecs.soton.ac.uk/227/ Modularisation Training]===
By Alexei Iliasov.
This is teaching material for those wishing to learn about the Modularisation plugin. It includes a development and detailed explanatory slides.




== Year 2009 ==
== Year 2009 ==


=== [http://deploy-eprints.ecs.soton.ac.uk/125/ Development of a flash-based filestore]===  
===[http://deploy-eprints.ecs.soton.ac.uk/150/ Code Generation - Shared Buffer Example]===
By Andrew Edmunds and Michael Butler
 
The document describes an example Event-B development of a shared buffer and reading/writing processes. An implementation is then specified using the OCB notation; and a description of the implementation refinement and Java source is shown. An archive file contains the abstract Event-B development, however the implementation refinement proof is ongoing.
 
=== [http://deploy-eprints.ecs.soton.ac.uk/138/ Well-ordering theorem]===
By Jean-Raymond Abrial.
 
The slides outline the use of Rodin in the proof of Well-ordering theorem.  The archive contains the
Rodin development.
 
 
=== [[Development of a flash-based filestore]]===  
By Kriangsak Damchom and Michael Butler.
By Kriangsak Damchom and Michael Butler.


Line 27: Line 64:


=== [http://deploy-eprints.ecs.soton.ac.uk/84/ MIDAS: A Formally Constructed Virtual Machine]===  
=== [http://deploy-eprints.ecs.soton.ac.uk/84/ MIDAS: A Formally Constructed Virtual Machine]===  
By [[Steve]].
By [[User:Steve|Steve]].


MIDAS (Microprocessor Instruction and Data Abstraction System) is a specification of an Instruction Set Architecture (ISA). It is refined to a usable Virtual Machine (VM) capable of executing binary images compiled from the C language. It was developed to demonstrate a methodology for formal construction of various ISAs in Event-B via a generic model. There are two variants: a stack-based machine and a randomly accessible register array machine. The two variants employ the same instruction codes, the differences being limited to register file behavior.
MIDAS (Microprocessor Instruction and Data Abstraction System) is a specification of an Instruction Set Architecture (ISA). It is refined to a usable Virtual Machine (VM) capable of executing binary images compiled from the C language. It was developed to demonstrate a methodology for formal construction of various ISAs in Event-B via a generic model. There are two variants: a stack-based machine and a randomly accessible register array machine. The two variants employ the same instruction codes, the differences being limited to register file behavior.


The archive supplied at the Deploy repository contains: C-coded prototypes of the MIDAS VMs, an Event-B model refinement constructing the same VMs, the B2C Event-B to C auto-generation tool, C compiler/assembler/linkers for the VMs, an example C test suite, and execution environments for running compiled C on the machines.
The archive supplied at [http://deploy-eprints.ecs.soton.ac.uk/84/ Deploy repository] contains: C-coded prototypes of the MIDAS VMs, an Event-B model refinement constructing the same VMs, the B2C Event-B to C auto-generation tool, C compiler/assembler/linkers for the VMs, an example C test suite, and execution environments for running compiled C on the machines.
 
MIDAS is described in detail in [http://deploy-eprints.ecs.soton.ac.uk/163/ Formal Construction of Instruction Set Architectures (PhD Thesis)].


=== [http://deploy-eprints.ecs.soton.ac.uk/82/ Development of a Network Topology Discovery Algorithm]===  
=== [http://deploy-eprints.ecs.soton.ac.uk/82/ Development of a Network Topology Discovery Algorithm]===  

Latest revision as of 13:58, 5 July 2017

This page is for listing available example Event-B/Rodin projects.

Year 2011

Vehicle On-Board Controller for Trains

By Wen Su , Jean-Raymond Abrial, Runlei Huang and Huibiao Zhu

This material describes an Event-B development of a Vehicle On-Board Controller for trains. The purpose of the system under study is to detect the driving mode wished by the train driver (he has some buttons at his disposal to do that) and decide accordingly whether this mode is feasible so that the current mode of the train could be (or not be) that wished by the driver. A paper describing the modelling methodology and a Rodin archive are available here: http://deploy-eprints.ecs.soton.ac.uk/316/

Development of a Heating Controller System

By Abdolbaghi Rezazadeh.

This material describes an Event-B development of a simple heating controller. This is a first case study that covers the entire development process; starting from a system specification and ending up in an implementation in the Ada programing language. The overall aim of this case study is to put in practice the recommended methodological aspects of Event-B, particularly those aspects of modelling concerned with decomposition and code generation. We begin the tutorial with an overview of the abstract development that forms the basis for subsequent Tasking Event-B modelling. In the Tasking Event-B tutorial the developer is guided, step-by-step, through the final construction stages of a partially completed model. The tutorial provides an introduction to some of the main constructs used when modelling with Tasking Event-B.

Year 2010

Modularisation Training

By Alexei Iliasov.

This is teaching material for those wishing to learn about the Modularisation plugin. It includes a development and detailed explanatory slides.


Year 2009

Code Generation - Shared Buffer Example

By Andrew Edmunds and Michael Butler

The document describes an example Event-B development of a shared buffer and reading/writing processes. An implementation is then specified using the OCB notation; and a description of the implementation refinement and Java source is shown. An archive file contains the abstract Event-B development, however the implementation refinement proof is ongoing.

Well-ordering theorem

By Jean-Raymond Abrial.

The slides outline the use of Rodin in the proof of Well-ordering theorem. The archive contains the Rodin development.


Development of a flash-based filestore

By Kriangsak Damchom and Michael Butler.

The paper outlines the use of Event-B in the development of a flash-based filestore. The archive contains the Event-B development.

Real-time controller for a water tank

By Michael Butler.

The draft paper outlines an approach to treating continuous behaviour in Event-B by a discrete approximation. An example of a water tank system is used to illustrate the proposed approach. The archive contains the Event-B development for the water tank system.

UML-B Development of an ATM

By Mar Yah Said, Michael Butler and Colin Snook.

This paper outlines support for refinement of classes and statemachines in UML-B and issustrates these with an Automated Teller Machine (ATM) example. The ATM development is contained in a Rodin archive. It consists of an abstract model focusing on bank account updates. The ATM, pin cards and messaging between ATMs and a bank server are introduced in successive refinements.

MIDAS: A Formally Constructed Virtual Machine

By Steve.

MIDAS (Microprocessor Instruction and Data Abstraction System) is a specification of an Instruction Set Architecture (ISA). It is refined to a usable Virtual Machine (VM) capable of executing binary images compiled from the C language. It was developed to demonstrate a methodology for formal construction of various ISAs in Event-B via a generic model. There are two variants: a stack-based machine and a randomly accessible register array machine. The two variants employ the same instruction codes, the differences being limited to register file behavior.

The archive supplied at Deploy repository contains: C-coded prototypes of the MIDAS VMs, an Event-B model refinement constructing the same VMs, the B2C Event-B to C auto-generation tool, C compiler/assembler/linkers for the VMs, an example C test suite, and execution environments for running compiled C on the machines.

MIDAS is described in detail in Formal Construction of Instruction Set Architectures (PhD Thesis).

Development of a Network Topology Discovery Algorithm

By Hoang, Thai Son and Basin, David and Kuruma, Hironobu and Abrial, Jean-Raymond.

This paper and this Rodin development is another version of the Link State Routing Development presented in 2008.

Year 2008

Link State Routing Development

By Hoang, Thai Son and Basin, David and Kuruma, Hironobu and Abrial, Jean-Raymond.

We present a formal development in Event-B of a distributed topology discovery algorithm. Distributed topology discovery is at the core several routing algorithms and is the problem of each node in a network discovering and maintaining information on the network topology. One of the key challenges in developing this algorithm is specifying the problem itself.We provide a specification that includes both safety properties, formalizing invariants that should hold in all system states, and liveness properties that characterize when the system reaches stable states. We specify these by appropriately combining invariants, event refinement, and proofs of event convergence and deadlock freedom. The combination of these features is novel and should be useful for formalizing and developing other kinds of semi-reactive systems, which are systems that react to, but do not modify, their environment.

Modelling and proof of a Tree-structured File System

By Damchoom, Kriangsak and Butler, Michael and Abrial, Jean-Raymond.

We present a verified model of a tree-structured file system which was carried out using Event-B and the Rodin platform. The model is focused on basic functionalities affecting the tree structure including create, copy, delete and move. This work is aimed at constructing a clear and accurate model with all proof obligations discharged. While constructing the model of a file system, we begin with an abstract model of a file system and subsequently refine it by adding more details through refinement steps. We have found that careful formulation of invariants and useful theorems that can be reused for discharging similar proof obligations make models simpler and easier to prove.

Deliverable D8 D10.1 "Teaching Materials"

By Abrial, Jean-Raymond and Hoang, Thai Son and Schmalz, Matthias.

Year 2007

Redevelopment of an Industrial Case Study Using Event-B and Rodin

From Rezazadeh, Abdolbaghi and Butler, Michael and Evans, Neil.

CDIS is a commercial air traffic information system that was developed using formal methods 15 years ago by Praxis, and it is still in operation today. This system is an example of an industrial scale system that has been developed using formal methods. In particular, the functional requirements of the system were specified using VVSL -- a variant of VDM. A subset of the original specification has been chosen to be reconstructed on the Rodin platform based on the new Event-B formalism. The goal of our reconstruction was to overcome three key difficulties of the original formalisation, namely the difficulty of comprehending the original specification, the lack of any mechanical proof of the consistency of the specification and the difficulty of dealing with distribution and atomicity refinement. In this paper we elucidate how a new formal notation and tool can help to overcome these difficulties.