Contact

Email (PGP key), Homepage

Address: IBISC, 1st floor, room 16,
University of Évry
Tour Évry 2
523 place des terrasses de l'Agora
91000 Évry, France

Tel: (+33)160873718
Fax: (+33)160873789


Search

Rss Posts

Rss Comments

Login

 

SNAKES 0.9.16 released

Tuesday, June 07, 2011

This release introduces a first version of a graphical ABCD simulator. Invoking command abcd with option --simul yields a window in which you may execute your ABCD code interactively, going back and forth into the trace executed so far. The top-right panel shows the source code, with the currently executable actions highlighted. The top-left panel shows all the currently executable actions with their modes. Here, we have selected one of the modes of the odd() net action, so it is highlighted in green. The bottom-right panel shows the current state of buffers. Finally the bottom-left panel shows the current trace; clicking on an action in this trace puts the other panels into the states corresponding to when the action had just been executed. (A special action allows to observe the initial state.) Using the buttons on the middle-left, you may execute a selected action, remove the last action from the trace, or resume simulation when you are done with trace inspection (which selects the last obtained state).


Moreover, a reachability checker has been introduced also. It is still very suboptimal since it computes the reachability graph by directly using SNAKES firing, future version will improve efficiency using model compilation and introduce CTL* model-checking. Right now, to check properties, just insert assertions at the very end of your ABCD spec, for instance assert 5 not in _["buff"] allows to check that no token whose value is 5 is ever inserted into buffer buff, where _ is simply a Marking object and "buff" is a buffer name (including the instance path for buffers nested into nets, just as show in the bottom-right panel of the simulator). Then, using option --check, the state space of the Petri net corresponding to the ABCD model is computed and each assertion is checked against every reachable state. Whenever a state that violates an assertion is reached, a trace from the initial state to this error state is printed and the analysis stops immediately. If you combine --check with --simul, such an error trace is displayed in the simulator instead of on your terminal.

Finally, this release fixes several bugs, in particular a blocking bug on transitions firing that appeared with the latests releases of Python.

As usual, you may download the source code or install the Ubuntu package.

SNAKES 0.9.15 released

Tuesday, May 10, 2011

This new version successfully passes the tests under Python 3.2, only the doctests have been passed, so there is probably still undetected compatibility problems. Notice that tests fail on Python 3.1, but presumably everybody already has 3.2 considering how long 3.1 has existed. Other changes in this release include small bug fixes and a new ABCD example (dinning philosophers).
So far, SNAKES is compatible with Python 2.5 to 3.2 (except 3.1), Pypy (at least 1.5 because 1.4 has a blocking bug), Stackless and Unladen Swallow. Currently, Jython compatibility is broken (on exactly the same problem that broke Pypy 1.4).
As usual, you may download the source code or Ubuntu packages.

SNAKES roadmap

Monday, April 18, 2011

I've been asked a few times how SNAKES version are numbered. As for many software, it is major.minor.revision. But I currently stick with major=0 and reached minor=9 already, so I'm currently only incrementing the revision number. Before to move to major=1, I'll wait to have the following changes implemented:

  • PNML support replaced: a Python implementation of the PNML standard is in progress, it will fully implement and respect the standard. I will release it independently of SNAKES, and then update SNAKES to rely on this new library.
  • Full API documentation and doctests for every class, method and function. I wish I could export it into Google code wiki format to have proper on-line documentation. For hand-written parts of the doc, I should move from AsciiDoc to Sphinx.
  • Further polishing of some parts, in particular, the plugin system needs to be simplified a bit.
This is not many features but they imply many long tasks requiring to go through most if not all, of the code. Moreover, these changes are not the next ones in the pipe, only the next ones before version 1.0. Indeed, SNAKES being also an experimentation tool, other features may be developed and added in relation with my research work.

SNAKES 0.9.14 released

This new version features a complete rewrite of the ABCD compiler. The main visible changes are:

  • internal error on syntax errors should be gone!  :-) 
  • a few new keywords (task, enum, typedef, const, symbol)
  • enumerated types formerly declared as in(value, ...) should be rewritten as enum(value, ...)
  • new types can be declared using typedef name = type and reused in a buffer declaration
  • comprehensions can be used in a buffer fill access, as in buff<<(x for x in ...)
  • an Emacs mode is available (abcd-mode)
Beside these changes, the main update concerns the internals: SNAKES now features a full parser generator for Python-like languages. All parsing tasks are now handled using SNAKES' own code, thus removing the dependencies with ast module and making parsing independent from the Python version SNAKES runs on. You may have a look a snakes/lang/ directory to see more, in particular: snakes/lang/abcd/abcd.pgen declares the concrete syntax for ABCD and snakes/lang/abcd/abcd.asdl declares the abstract syntax. (Both extend the syntax defined in snakes/lang/python/ for Python.) A LL(1) parser is generated using the pgen file and a translator from concrete syntax trees to abstract syntax trees is hand-written in snakes.lang.abcd.parser. A hierarchy of classes is generated from the asdl file to mimic the content of Python ast module. Most of this code is adapted from Mython project. (Thanks!) I'll try to post something about how to generate your own parsers.

Because of these changes, there may be some new bugs. But hopefully many old ones have disappeared and the new ones should be now much easier to fix!

As usual, Ubuntu packages have been updated and the source code is available here

New home page at IBISC

Monday, November 22, 2010

My home page at LACL does not exist any more: I've moved to IBISC as a professor and built a new home page there. I've migrated most of the old content except:

  • publications that have been hosted since a few months on this blog;
  • outdated pages;
  • SNAKES API reference manual since it is distributed together with SNAKES.
I also plan to host a copy of SNAKES API on SNAKES development page (as soon as I have finished the script to convert it in wiki format).

Algebras of coloured Petri nets

Thursday, October 07, 2010

Franck Pommereau
LAP LAMBERT Academic Publishing
October 2010, ISBN: 978-3-8433-6113-2
Available for purchase here

Blurp. This book surveys more than ten years of research work about a framework of composable coloured Petri nets. This framework is organised around a core model of coloured Petri nets that can be extended with various features: control flow, synchronous communication, exceptions, threads, functions and time. Extensions are made in such a way that the underlying model of coloured Petri net is preserved and the usual analysis tools and techniques can still be used. However, specific verifications issues arise from the proposed approaches; we discuss these issues and propose solutions to enable for efficient verification. An implementation of the framework is also presented, as well as applications to the modelling and verification of security protocols, and to the modelling and analysis of biological regulatory networks in the context of developmental processes.

Note. This is my habilitation thesis, published as a book.

Qualitative modelling and analysis of regulations in multi-cellular systems using Petri nets and topological collections

Friday, August 27, 2010

Jean-Louis Giavitto, Hanna Klaudel and Franck Pommereau
Proc. of MeCBIC'10, EPTCS vol.40, 2010

Abstract. In this paper, we aim at modelling and analyzing the regulation processes in multi-cellular biological systems, in particular tissues. The modelling framework is based on interconnected logical regulatory networks (à la René Thomas) equipped with information about their spatial relationships. The semantics of such models is expressed through colored Petri nets to implement regulation rules, combined with topological collections to implement the spatial information.  Some constraints are put on the the representation of spatial information in order to preserve the possibility of an enumerative and exhaustive state space exploration. This paper presents the modelling framework, its semantics, as well as a prototype implementation that allowed preliminary experimentation on some applications.