I am a recent PhD graduate working in the PARKAS team of the Computer Science department of the École normale supérieure in Paris. During my PhD, I worked on the design and implementation of a programming language for digital hardware, under the supervision of Albert Cohen, Marc Pouzet and Louis Mandel. Before that, I did a master in CS/EE in Université Pierre et Marie Curie.

My scientific interests center around the practice and theory of programming languages. I am also curious about digital synchronous circuits and static scheduling techniques. Specific subjects of inquiry include the following areas:

  • Functional programming languages and their metatheory;
  • Compiler design, including optimizations and formal correctness proofs;
  • High-level languages for circuit design;
  • Parallel execution of sequential languages such as the λ-calculus.

I will soon start a post-doc in the Deepsea project.


  • A Synchronous Functional Language with Integer Clocks [PDF]

    Adrien Guatto (PhD thesis, January 2016)

    My PhD thesis tackles the modular description of space/time tradeoffs in streaming programs at the language level. My work extends the n-synchronous framework proposed by Cohen, Mandel, Plateau, Pouzet and others. Clocks now feature arbitrary positive integers that model bursty communication between subprograms: "integer clocks". The activation conditions of Lustre, revisited in this new setting, become "local time scales" that allow subprograms to perform several reactions atomically from the point of view of the context. The thesis details the integration of these features in a clock type system for a higher-order functional language, giving full formal treatment of its metatheory and compilation to finite-state digital circuits.

  • Bursty Kahn Networks and Integer Clocks [PDF, in French]

    A. Guatto and L. Mandel (in JFLA 2014)

    Data-flow synchronous languages à la Lustre offer an high-level equational formalism dedicated to the design and implementation of real-time systems. These languages have traditionally been restricted to critical systems with low computational demand; in particular, the generated code does not usually feature loops.

    Lucy-n is a recent derivative of Lustre tailored to multimedia processing. In this paper, we propose an extension of Lucy-n's semantics where streams transport bursts of values rather than single scalars, and a type system characterizing the size of these bursts. The end goal is to adapt the code generation techniques in order to produce nested loops.

  • Correct and Efficient Bounded FIFO Queues [PDF]

    N.-M. Lê, A. Guatto, A. Cohen and A. Pop (in SBAC-PAD 2013)

    This paper gives an efficient, portable and correct implementation of bounded single-producer single-consumer first-in first-out queues in C11. This data-structure can serve as an elementary building block for high-performance data-flow language runtimes.

  • A Modular Memory Optimization for Synchronous Data-flow Languages [PDF]

    L. Gérard, A. Guatto, C. Pasteur and M. Pouzet (in LCTES 2012, Best Paper)

    Data-flow synchronous programming languages are pure functional programming languages. Modifying a value thus consists in non-destructively introducing a new version of the same value. This is a problem when handling composte data structures such as arrays: a naive impelmentation will mandate the use of costly memory copies.

    The paper proposes a two-level solution to drastically reduce the number of copies while preserving the original functional semantics. At the intra-procedural level, we use an algorithm akin to register allocation to share non-interfering local variables. At the inter-procedural level, a linear type system enables programmer-controlled modular memory sharing. These ideas have been implemented in an experimental compiler.


  • Synchronous Machines: a Traced Category [HAL-INRIA]

    M. Bagnol and A. Guatto (2012)

    This paper describes a monoidal category of automata. We show how applying a categorical construction coming from models of linear logic gives for free a category with (linear) higher-order features.

  • SCADE/Lustre to VHDL research report [PDF, in French]

    A. Guatto and M. Pouzet (2010)

    This research report describes a straightforward translation from the synchronous programming language Lustre (and its industrial variant SCADE) to digital synchronous circuits. This procedure is fully automatic and produces synthesizable VHDL.

    This is a very small step in the direction of a unified hardware/software programming language.


  • A Synchronous Functional Language with Integer Clocks [Keynote], PhD defense
  • Integer Clocks and Local Time Scales [PDF], Synchron 2014 workshop
  • Integer clocks [PDF], Synchron 2012 workshop
  • Dynamic Scheduling of Synchronous Programs in Lucid Synchrone [PDF], Synchron 2011 workshop
  • Generating Code from Lucy-n: Issues and Perspectives [PDF], PARKAS meeting, may 2012


I was a teaching assistant at University Pierre et Marie Curie (UPMC) and the Polytech'UPMC engineering school during my PhD. The courses I participated in are listed below.

  • C Programming [2011-2012] (Polytech'UPMC, CS/EE first year)
  • Electronics Project [2011-2014] (UPMC, EE third year)
  • Synchronous Programming [2013-2014] (UPMC, CS fifth year)
  • Computer Architecture [2012-2014] (Polytech'UPMC, CS/EE first year)