Due to the ongoing Covid-19 pandemic, the Tenth Summer School and Formal Techniques and the First Formal Methods in the Field Bootcamp have been postponed until further notice. Registration will be closed for now and will reopen once the event has been rescheduled. If you have already registered, we will contact you when we have a new schedule.
The first FMitF Bootcamp will cover two themes, "Building Verified JIT Compilers" and "Formally verifying low-level programs in F*". The exercises in the Bootcamp assume that the students have a working knowledge of formal techniques. The main focus of the Bootcamp is on applying this knowledge to some domain-specific challenge problems.
The goal of this bootcamp is to build a verified JIT compiler for the Linux ePBF language, targeting RISC-V. The project will build onServal, a framework for verifying low-level systems, and Rosette, a language for building verifiers. The bootcamp will start with a tutorial on Serval, Rosette, and the verified JIT challenge. The participants will then build and verify the JIT in stages, starting with arithmetic instructions, and if the time allows, adding memory instructions and peephole optimizations. Expect to learn fast, work hard, and type a lot of parentheses!
Detailed program:
The first day will cover F* basics, starting with the functional subset of F*. Students will be tasked with filling out a partial specification of our communication protocol, implementing missing operations at the spec level. We will also review how to prove properties about specifications, using various lemmas related to our messaging protocol as examples.
The second day will cover low-level programming, showing how to use the Low* subset of F* to author stateful programs that can be compiled and extracted to C. We will work on small examples and cover basic data structures, e.g. arrays, and our C-like memory model.
For the final day, students will fill out larger chunks of the application code, authoring core parts of the low-level implementation. As a bonus task, students will have to opportunity to try to prove a few properties related to cryptographic security for this toy protocol.
Postponed