The Pantagruel Project

Pantagruel is a visual domain-specific language that aims at writing high-level specifications of the coordination of entities in a distributed environment. We define distributed environment an environment that involves a variety of entities that interact with each other.



The area of pervasive computing has gained a strong interest in various research topics. One of them is about providing tools to end-users or novice programmers, so that they can program their own applications on pervasive environments. We call pervasive environment a distributed environment that can be deployed in various real environments, like home, hospital, museums, or any building that aim at helping their users' everyday life. Many tools have been developed to ease the programming of such environments, overcoming more and more high-level issues, from networking to service discovery or coordination logic description. Though, these tools have some limits: they are either not accessible enough, or not expressive enough.

To circumvent these limits, our high-level language aims at easing the description of coordination logic between networked entities of distributed environments. Pantagruel allows to specify pervasive computing application in two steps: the developer first definine a pervasive computing environment by means of a taxonomy of entities and their instantiation, and second, he defines a coordination logic of the entities. Pantagruel brings a high-level layer intended to complement existing tools in the development of safe coordination logics, as well as to reduce the cognitive effort required by the programming nature of these tools.

Pantagruel project continues the works done through the Visucom project, that developed a layer over SPL. Like VisuCom with respect to SPL, we have compiled Pantagruel into a target platform, namely, DiaGen.

Detailed description

The approach

Through Pantagruel, we develop an approach to define properly a rule-based scenario for a distributed environment: (1) in a formalism based on UML class diagrams, user specifies a class of entities (a taxonomy) that he intends to use into this environment. Then, he builds a concrete space arrangement by instanciating these classes. This step is the domain description. (2) Then he defines scenarios for this space arrangement, through a set of rules that can be described with this sentence: "when some state is observed in the environment, do some action". We illustrate this approach in the case study section.

First step: the domain description

The taxonomy defines the various classes of entities that are involved in an environment. A class describes a category of entities, with a set of characteristics (properties) and functionalities (method interfaces) common to these entities. Properties are an abstraction of the context in which the environment is defined. They are of three kinds: constant properties, that describe a context that does not evolve over time, volatile properties, that represent the context provided by external interactions (e.g temperature sensing), and write properties, that represent the context that changes according to internal interactions (i.e. method calls). Method interfaces are abstract representations of entity functionalities (e.g. move on a Camera). These methods have a signature, which includes the declaration of the write properties on which they have effects. Their implementation is delegated to the target platform of Pantagruel (DiaGen).


Second step: the scenario

The scenario defines the coordination logic of the entities previously defined. A scenario is a set of rules based on the sensor-controller-actuator paradigm. Each rule is a set of sensors, combined with a controller, that trigger a set of actuators. A sensor is a condition on a property of an entity, and an actuator is a method call. Controller is a logic operator (e.g OR, AND). When conditions on sensors are evaluated to true, methods in actuators are executed, following the semantics of the language.


Semantics, prototype, and a few examples

Language Status

Pantagruel design is based on a formal description of its operational semantics. A graphical editor and a compiler of Pantagruel has been implemented (authors: J.Mercadal and Z.Drey), targetting DiaGen framework and its DiaSim simulator and TLA+ for verifications.


A few screenshots (including examples that have been simulated using Diasim) are available.

TODO link to screenshot

Related work

  • Blender Game Engine (
  • Rule-based game languages
  • "Orchestration" languages
  • Ubiquitous application prototyping tools

Related Phoenix projects


  • Zoé Drey
  • Julien Mercadal
  • Charles Consel
  • Industrial partners
  • Thales DAE (Pessac)


  • OCaml
  • TLA+
  • Java



Conference papers

A Taxonomy-Driven Approach to Visually Prototyping Pervasive Computing Applications
Zoé Drey, Julien Mercadal, Charles Consel
1st IFIP Working Conference on Domain-Specific Languages, Jul 2009, Oxford, United Kingdom. pp.78-99
Accès au texte intégral et bibtex BibTex