Section: New Software and Platforms


Participants : Alejandro Aguirre, Danel Ahman [University of Edinburgh] , Benjamin Beurdouche, Karthikeyan Bhargavan, Antoine Delignat-Lavaud [Microsoft Research] , Cédric Fournet [Microsoft Research] , Catalin Hritcu, Chantal Keller [Université Paris-Sud] , Kenji Maillard, Guido Martínez, Gordon Plotkin, Samin Ishtiaq [Microsoft Research] , Markulf Kohlweiss [Microsoft Research] , Jonathan Protzenko [Microsoft Research] , Tahina Ramananandro [Microsoft Research] , Aseem Rastogi [Microsoft Research] , Nikhil Swamy [Microsoft Research] , Peng Wang [MIT] , Santiago Zanella-Béguelin [Microsoft Research] , Jean Karim Zinzindohoué.

F* is a new higher order, effectful programming language (like ML) designed with program verification in mind. Its type system is based on a core that resembles System Fω (hence the name), but is extended with dependent types, refined monadic effects, refinement types, and higher kinds. Together, these features allow expressing precise and compact specifications for programs, including functional correctness properties. The F* type-checker aims to prove that programs meet their specifications using an automated theorem prover (usually Z3) behind the scenes to discharge proof obligations. Programs written in F* can be translated to OCaml, F#, or JavaScript for execution.

A detailed description of F* (circa 2011) appeared in the Journal of Functional Programming  [44]. F* has evolved substantially since then. The latest version of F* is written entirely in F*, and bootstraps in OCaml and F#. It is under active development at GitHub: https://github.com/FStarLang and the official webpage is at http://fstar-lang.org.