PoSET : Programmation Structurée de l'Espace et du Temps

Homogeneous models and programming languages for
heterogeneous interactive temporal media systems

How to synchronize, mix, combine or transform temporal media streams as varied as sounds, animations, melodies, videos, controls, while abstracting from their nature? Since application designers are more often artists and less often software developpers, there is a strong need for simplifying design software interface.

A consistent and robust mathematical framework is being developed for the modeling of sequential and parallel aspects of temporal media; its development towards application and system design aims at providing simpler, safer and more powerful software tools for the creation of tomorrow's hierarchical, multi-scale and multi-modal pieces of interactive art.

Algebra, partial order and category theory, logic, domain specific languages, specialized GUIs and application experiments in art oriented embedded systems design are the current corner stones of our approach.

Research objectives

The PoSET project thus aims at gathering and developing both theoretical models and concrete applicable tools for designing, programing, experimenting and running timed reactive systems.

For such a purpose, our research efforts are structured into four complementary research axes:
  • Models : developed in two directions: frontend models (for system designer) and backend models (for formal analysis and execution):
    • Frontend models : under development and study for some years, our frontend models is based on the notion of spatio temporal tiles, where every complex behavior is defined from combining simpler behaviors via a unique composition operator (the tile composition) that allows and handles partial overlaps of behaviors both in time and in space,
    • Backend models (for system semantics) : based on preliminary experiments and proposals, our backends models are currently based on (timed) domains for denotational semantics and (updatable) timed and reactive monad state machines; the relationship between both models are to be understood in the depth, as well as the translation of the frontend model into the back end model,

  • Programing language : we are currently developing a fast evolving experimental domain specific language (DSL), presently embedded in Haskell, based on various extensions of the IO monad ; programming features derive from the algebraic and categorical properties of our models; because programs are redondant (a given model can be described by several programs), categorical properties of interest can also be weak properties (existence is guaranteed but not unicity); in our approach, programs are compiled into models, thus avoiding the schizophrenic approaches that amount to prove correctness of models that are developed independently of the programs implementing these models,

  • Static analysis tools (for designer support) : aside gathering the available modern tools (e.g. type systems), we also address two main issues that are faced by designers when developing interactive systems:
    • Causality : output values to be produced at a given time may only depends input values already received,
    • Memory usage : input values that are no longer needed must be discarded;
    adequate methods allowing the designer to identify potential causality violation and memory leaks in front end and back ends models are currently under design,

  • Usage and case study : as we also want to develop a concrete expertise in interactive system design, various experiments are conducted especially (and currently) in the field of interactive music system design and implementation; in that field, one especially interesting problem is to understand, collect and implement a series of interactive stereotypical scenarios, that may relevantly be used "on stage" with real musicians; collaboration with people from IRCAM (Paris), SCRIME (Bordeaux) and GRAME (Lyon) are especially welcome in these perspectives

Realizations, mostly on GitHub:

  • Arts and science projects:
  • Softwares and libraries:
    • The Timed Monad Stream library : an efficient reactive/timed programming language API embedded in Haskell or, to a lesser extent, also in OCaml, based on various monad extensions,
    • More on Timed Monad : an experimental encoding of Timed Monad Stream in Agda, with various proofs (shall be extended towards monad with duration types)
    • The Octopus language : a smeigroup based programing language for fast 3D Animation embedded in Haskell (shall be moved into the monad based approach)
    • The T-calculus language : a reactive/realtime programming language prototype embedded in Haskell (alpha release in 2016 -- currently droped in favor of the monad based approach)


The PoSET project, started in 2011, located at LaBRI, has been generously supported by: It is also a partner of the Studio SCRIME.

copyright D.Janin@PoSET, 2016

Last modified: Mon Feb 10 12:00:22 CET 2020