English

Meta-F*: Proof Automation with SMT, Tactics, and Metaprograms

Programming Languages 2019-03-08 v4 Logic in Computer Science

Abstract

We introduce Meta-F*, a tactics and metaprogramming framework for the F* program verifier. The main novelty of Meta-F* is allowing the use of tactics and metaprogramming to discharge assertions not solvable by SMT, or to just simplify them into well-behaved SMT fragments. Plus, Meta-F* can be used to generate verified code automatically. Meta-F* is implemented as an F* effect, which, given the powerful effect system of F*, heavily increases code reuse and even enables the lightweight verification of metaprograms. Metaprograms can be either interpreted, or compiled to efficient native code that can be dynamically loaded into the F* type-checker and can interoperate with interpreted code. Evaluation on realistic case studies shows that Meta-F* provides substantial gains in proof development, efficiency, and robustness.

Keywords

Cite

@article{arxiv.1803.06547,
  title  = {Meta-F*: Proof Automation with SMT, Tactics, and Metaprograms},
  author = {Guido Martínez and Danel Ahman and Victor Dumitrescu and Nick Giannarakis and Chris Hawblitzel and Catalin Hritcu and Monal Narasimhamurthy and Zoe Paraskevopoulou and Clément Pit-Claudel and Jonathan Protzenko and Tahina Ramananandro and Aseem Rastogi and Nikhil Swamy},
  journal= {arXiv preprint arXiv:1803.06547},
  year   = {2019}
}

Comments

Full version of ESOP'19 paper