‹Programming› 2024
Mon 11 - Fri 15 March 2024 Lund, Sweden
Wed 13 Mar 2024 15:15 - 15:45 at M:Teknodromen - Research Papers 3 Chair(s): Tijs van der Storm

A compiler consists of a sequence of phases going from lexical analysis to code generation. Ideally, the formal verification of a compiler should include the formal verification of each component of the tool-chain. An example is the Compcert project, a formally verified C compiler, that comes with associated tools and proofs that allow to formally verify most of those components.

However, some components, in particular the lexer, remain unverified. In fact, the lexer of Compcert is generated using Ocamllex, a lex-like OCaml lexer generator that produces lexers from a set of regular expressions with associated semantic actions. Even though there exist various approaches, like CakeML or Verbatim++, to write verified lexers, they all have only limited practical applicability.

In order to contribute to the end-to-end verification of compilers, we implemented a generator of verified lexers whose usage is similar to OCamllex. Our software, called Coqlex, reads a lexer specification and generates a lexer equipped with a Coq proof of its correctness. It provides a formally verified implementation of most features of standard, unverified lexer generators.

The conclusions of our work are two-fold:

  • Verified lexers gain to follow a user experience similar to lex/bison or ocamllex, with a domain-specific syntax to write lexers comfortably. This introduces a small gap between the written artifact and the verified lexer, but our design minimizes this gap and makes it practical to review the generated lexer. The user remains able to prove further properties of their lexer.

  • It is possible to combine simplicity and decent performance. Our implementation approach that uses Brzozowski derivatives is noticeably simpler than the previous work in Verbatim++ that tries to generate a deterministic finite automaton (DFA) ahead of time, and it is also noticeably faster thanks to careful design choices.

We wrote several example lexers that suggest that the convenience of using Coqlex is close to that of standard verified generators, in particular, OCamllex. We used Coqlex in an industrial project to implement a verified lexer of Ada. This lexer is part of a tool to optimize safety-critical programs, some of which are very large. This experience confirmed that Coqlex is usable in practice, and in particular that its performance is good enough. Finally, we performed detailed performance comparisons between Coqlex, OCamllex, and Verbatim++. Verbatim++ is the state-of-the-art tool for verified lexers in Coq, and the performance of its lexer was carefully optimized in previous work. Our results suggest that Coqlex is two orders of magnitude slower than OCamllex, but two orders of magnitude faster than Verbatim++.

Verified compilers and other language-processing tools are becoming important tools for safety-critical or security-critical applications. They provide trust and replace more costly approaches to certification, such as manually reading the generated code. Verified lexers are a missing piece in several Coq-based verified compilers today. Coqlex comes with safety guarantees, and thus shows that it is possible to build formally verified front-ends.

Wed 13 Mar

Displayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change

15:15 - 16:45
Research Papers 3Research Papers at M:Teknodromen
Chair(s): Tijs van der Storm CWI & University of Groningen
15:15
30m
Talk
Coqlex: Generating Formally Verified LexersVol. 8
Research Papers
Wendlasida Ouedraogo INRIA Saclay, Gabriel Scherer INRIA Saclay, Lutz Strassburger INRIA Saclay
Link to publication DOI
15:45
30m
Talk
McMini: A Programmable DPOR-based Model Checker for Multithreaded ProgramsVol. 8
Research Papers
Maxwell Pirtle Northeastern University, Luka Jovanovic Northeastern University, Gene Cooperman Northeastern University
Link to publication DOI
16:15
30m
Talk
Privacy-Respecting Type Error Telemetry at ScaleVol. 8
Research Papers
Ben Greenman University of Utah, Alan Jeffrey Roblox, Shriram Krishnamurthi Brown University, Mitesh Shah Roblox
Link to publication DOI