Skip to content

Improvements to F*: Brainstorm 2019

Aseem Rastogi edited this page Jan 7, 2019 · 5 revisions

Performance

Proof stability / Proof engineering

  • Context pollution

    • Using Aseem's opaqueness recipes (e.g. Style 2, hiding via indirection, from this note is already implemented in EverCrypt)
    • Canaries: Simple proofs from Sequences, Buffers, Modifies, etc. attempted in larger proof contexts
  • Interacting with top-level proofs are much easier than with proofs in some nested scope

  • Comprehensive review of SMT patterns in sequence, buffer, modifies etc.

Low*

  • The main long-range effort we have on improving Low* programming is the DSLs for stateful programming work with Zoe

  • What else could we be doing, aside from incremental library improvements etc.

Meta-F*

  • Nesting tactic splitting at arbitrary depth: e.g., synthesizing terms with an assert p by t and then discharging p by spawning a tactic process for t to solve p.

  • "where" clauses for tactics: i.e., within a nested scope, being able to say assert p by t ... and later where t = .... Would allow interacting with nested assertions at the top level.

  • How to make Meta-F* more suitable for routine use and small scale proofs?

IDE

  • Double indirection problem in symbol lookup: i.e., need to launch an F* process each time you want to follow the definition of a symbol across a module

  • "process is busy": Handling concurrent requests in the F* server?

Build

  • fstarlib vs fstartaclib packaging
  • More incrementality/parallelism in building OCaml
  • Fine-grained statistics on time spent in the typechecker, time spent in Z3, etc. to identify performance regressions
Clone this wiki locally