[TYPES/announce] research engineer (postdoc) position at MSR-Inria Joint Centre

Stephan Merz stephan.merz at loria.fr
Mon Mar 5 12:20:35 EST 2018


Although the TLA+ language is set theoretic, the development of the TLA Proof System relies on concepts from type theory, and the position would therefore be of interest of readers of this list.

Research team: Tools for Proofs, MSR-INRIA Joint Centre
=======================================================

The Microsoft Research-INRIA Joint Centre is offering a 24-month position for a
research engineer to contribute to the design and further development of the
TLA+ Proof System (TLAPS, http://msr-inria.com/projects/tools-for-proofs).


Research Context
================

TLA+ is a language for specifying and reasoning about systems, including
concurrent and distributed systems. It is based on first-order logic, set
theory, and temporal logic. TLA+ and its tools have been used in industry for
more than a decade. More recently, we have extended TLA+ by a language for
writing structured formal proofs and have developed TLAPS, a proof checker that
contains an interpreter for the proof language and interfaces with different
back-end provers, including SMT solvers, the tableau prover Zenon that supports
set-theoretic constructions, and a declarative encoding of TLA+ set theory as
an object logic in the logical framework Isabelle. TLAPS is integrated into the
TLA+ Toolbox, an IDE for TLA+ (http://lamport.azurewebsites.net/tla/tla.html).

Although it is still under active development, TLAPS is already quite powerful
and has been used for several verification projects, in particular in the realm
of distributed algorithms (e.g., http://lamport.azurewebsites.net/tla/byzpaxos.html).

The current version of TLAPS handles the "action" part of TLA+: first-order
formulas with primed and unprimed variables that represent the values of a
variable before and after a transition. It also supports the propositional
fragment of temporal logic. This fragment is enough for proving safety
properties (invariants and step simulation). We have initiated a complete
rewrite of the code base, with the aim of providing support for module
instantiation and for the full temporal logic of TLA+, which will allow us to
prove liveness and refinement properties.


Description of the activity of the research engineer
====================================================

The research engineer (post-doctoral) position is funded for 24 months by the
Microsoft Research - Inria Joint Centre. You
will work together with the members of the TLA+ project, including Damien
Doligez, Leslie Lamport, and Stephan Merz on extending the TLA+ Proof System.
Your main objective will be to complete the rewrite of the existing version of
TLAPS so that it can be released to users of the prover. You will also be able
to work on extensions of existing functionality, including the following items:

- Module instantiation. The TLA+ language contains a module system, and modules
 can have constant and variable parameters in order to make them generic and
 reusable. When a module is instantiated, parameters can be replaced by
 constant- and state-level expressions, and these instantiations must be taken
 into account when generating proof obligations for back-end provers.

- Handling temporal logic. Proofs of liveness properties need support for
 reasoning about first-order temporal logic, such as induction over
 well-founded orderings. Fairness hypotheses require reasoning over the
 enabledness of actions. New backend provers need to be set up and integrated
 into TLAPS for carrying out these proofs.

- Improved backend provers. The current backend provers provide decent support
 for proof obligations mixing first-order logic, elementary set theory,
 functions, and integer arithmetic. Reasoning about other important data
 structures such as finite sequences requires low-level user interaction. We
 are interested in exploiting advances in automatic deduction techniques, such
 as support for relevant theories in SMT solvers, for enabling a higher degree
 of automation of such proof steps.

- Rigorous validation of soundness. Computing proof obligations involves some
 subtle transformations, such as distributing the prime operator of TLA+ or
 handling instantiated ENABLED expressions. We are working on a precise
 definition of the semantics of the proof language that would help us ensure
 the soundness of these transformations and give guidelines to the
 implementation.

- Checking SMT proofs. The SMT backend handles most of the proof obligations
 that occur in practice. The current version of TLAPS assumes the external SMT
 solver to be correct, but we are interested in reconstructing proofs provided
 by SMT solvers within Isabelle/TLA+. The Zenon backend already benefits from
 proof reconstruction.

- Performance issues. Proof projects can be large, and TLAPS implements
 mechanisms, such as fingerprinting proof obligations, that are intended to
 make the tool scale. Performance bottlenecks should be monitored and avoided,
 whenever possible.

- Case studies and proof libraries. Our work on TLAPS is validated by carrying
 out case studies, and we provide libraries of lemmas that are useful for many
 proof projects.

We do not expect to be able to address all of these issues within 24 months. The
choice of items will be made jointly with the research engineer, also depending
on his or her interests and background.


Skills and profile of the candidate
===================================

You should hold a PhD degree in computer science and have solid knowledge of
mathematical logic, as well as implementation skills related to symbolic theorem
proving. TLAPS is mainly implemented in OCaml, but some Java programming will be
necessary for interfacing TLAPS with the other TLA+ tools. Experience with
temporal and modal logics, with interactive theorem provers or with Eclipse
could be valuable.

Work on TLAPS provides the opportunity to learn about issues of using deductive
verification in practice, and there are possibilities to produce publishable
research. However, the main focus is on the implementation of components of our
tool chain that are missing or need improvement.

Given the geographical distribution of the members of the team, we highly value
a good balance between the ability to work in a team and the capacity to propose
initiatives.

Details
=======

Location

The research engineer can choose between working at the Microsoft Research -
Inria Joint Centre in Paris or at the LORIA laboratory in Nancy.

Compensation

The salary will be between 2900 and 3800 euros, depending on qualifications
and experience.

Duration

The post is for a duration of 2 years, extensible to a 3rd year (depending
on funding).

Contact
=======

Candidates should send a resume and the names and e-mail addresses of two
references to Damien Doligez <damien.doligez at inria.fr>, preferably by
March 12, 2018. Please at least let us know by this date if you are interested
in the position or if you have any further questions.

We intend to hire the research engineer by June, although the exact date is
negotiable.


More information about the Types-announce mailing list