SNAKES 0.9.13

SNAKES is a Python library that provides all then necessary to define and execute many sorts of Petri nets.
SNAKES is a Python library that provides all then necessary to define and execute many sorts of Petri nets, in particular those of the PBC and M-nets family. Its main aim is to be a general Petri net library, being able to cope with most Petri nets models, and providing the researcher with a tool to quickly prototype its new ideas. SNAKES should be suitable to provide the data model for editors or simulators; actually, any editor that use SNAKES may also be a simulator as SNAKES can execute any net.

A key feature of SNAKES is the ability to use arbitrary Python objects as tokens and arbitrary Python expressions in many points, for instance in transitions guards or arcs outgoing of transitions. This is what makes SNAKES that general. This relies on the capability of Python to run dynamically provided Python code (the eval function). This feature may not be efficient enough for model-checking: speed is the price to pay for the wide generality. However, in the case of a new model, SNAKES may happen to be the only available tool.
Another important feature of SNAKES is the plugin system that allows to extend the features and work with specialised classes of Petri nets. Currently, the following plugins are provided:

pos adds to nodes the capability of holding their position. Nodes can be moved or shifted, Petri nets can be shifted globally and their bounding box can be computed.

graphviz adds a method to draw a Petri net using the tool GraphViz. The layout is provided by the user that provides the coordinate of the nodes (using the plugin pos).

status extends the Petri net model by adding status to the nodes. This is similar to what is used in the models of the PBC or Mnets family. Nodes can then merged automatically according to their status.

ops this plugins defines control flow operations on Petri nets usually found in the PBC and Mnets family. Nets can be composed in parallel, sequence, choice and iteration. These operations rely on the places status.

posops combines the features of pos and ops plugins: the control flow operations are modified in order to rearrange the nodes position in order to provide well shaped nets.

lashdata allows to define data that is not handled in the places of the Petri net but stored instead in the special structures handled by the library Lash. This allows in particular to aggregate possibly infinite states into one meta-state.

last updated on:
July 18th, 2010, 0:04 GMT
license type:
LGPL (GNU Lesser General Public License) 
developed by:
Franck Pommereau
ROOT \ Science
Download Button

In a hurry? Add it to your Download Basket!

user rating 29



Rate it!
What's New in This Release:
  • added inhibitor arcs
  • added Ubuntu Lucid (10.04) package
  • fixed data.WordSet.fresh when base is used
  • fixed reduce(xor, []) in some __hash__ methods
read full changelog

Add your review!