Publications by François Pottier

Validating lr1 parser

This allows for richer languages where a simple rule can have different meanings depending on the lookahead context. Our proof involves solving a non-trivial recursive domain equation. Although the technical apparatus that we exploit is by now standard, its application to functional programming languages appears to be new, and we claim deserves attention. It is relatively simple, and, to the best of our knowledge, original.

We apply these mechanisms to solve two reasoning challenges that involve mutable state. This semi-abstract organization should facilitate further extensions of the system with new forms of resources. We exhibit a type-directed, type-preserving, and meaning-preserving translation of this imperative calculus into a pure calculus. It allows defining and manipulating term representations in nominal style and in de Bruijn style.

Several applications illustrate the expressive power of the new rule. It provides a safe and expressive means of programming with names and binders. The proof is entirely carried out in Agda.

The proof is carried out in Wright and Felleisen's syntactic style. Polymorphic typed defunctionalization and concretization.

Stratified type inference for generalized algebraicWorlds are at the same time

Stratified type inference for generalized algebraic data types. Worlds are at the same time more precise and more abstract than natural numbers. This is a pleasing result as well as an illustration of the new expressiveness offered by generalized algebraic data types. The left-hand side of a production is a non-terminal symbol A. Their characteristic property is to allow every branch of a case construct to be typechecked under different assumptions about the type variables in scope.

The lefthand side of a

It is implemented in imperative ocaml code, but presents a purely functional, lazy interface. It should be decided by the user, that is, it should be part of the grammar. Its nondeterministic counterpart is known as the hardest context free language. The validator is implemented and proved correct using the Coq proof assistant.

This is a pleasing result as

Publications by François Pottier