LMNtal, a unifying language and tool

LMNtal (pronounced "elemental") is a programming and modeling language based on hierarchical graph rewriting. It was designed to be a substrate language of diverse computational models, especially those addressing concurrency, mobility and multiset rewriting, including (Colored) Petri Nets, Interaction Nets, the Pi-Calculus, Chemical Abstract Machines, Constraint Handling Rules, and Bigraphs. It features

The language has been fully implemented using Java and C. Various unique features have been integrated into LaViT (LMNtal Visual Tools; formerly called LMNtalEditor), an integrated development environment of LMNtal. LaViT comes with

The combination of the above is a unique feature of LMNtal and LaViT, which turns out to be very useful for understanding as well as debugging your models and programs.

Programming and modeling with links and membranes

The power of LMNtal comes from two structuring mechanisms,

The figure below (click to enlarge) illustrates how hierarchical graphs allow you to represent various concepts appearing in computer science.

around

State-space search and model checking with LaViT

Model checking combined with state-space visualization demonstrates that LaViT is extremely useful for understanding as well as debugging your models and programs. LaViT can be and has been used to run and visualize diverse examples taken from the fields of model checking, concurrency and AI search.

LMNtal allows extremely terse representation of some transition systems. For example, with only one rewrite rule, the state space of the Tower of Hanoi can be explored and visualized (click the image to enlarge and view the program):

around

This conciseness is thanks to the powerful symmetry reduction mechanism inherent in the hierarchical graph representation of states.

Developers

The language and the implementation has been developed since 2002 by the LMNtal team, Dept. of Computer Science and Engineering, Waseda University.

mailto: lmntal _AtSign_ ueda.info.waseda.ac.jp


Front page List of pages Search Recent changes Backup   Help   RSS of recent changes