(WIP) Tiny Lustre to WhyML Compiler
  • OCaml 98.4%
  • Vim Script 1.1%
  • Dune 0.5%
Find a file
2025-04-30 09:09:04 +00:00
doc feat (soutenance): update 2025-01-02 12:46:38 +01:00
exm feat: adding tset.lus 2025-01-05 21:05:34 +01:00
shr/vim/syntax feat: basic parser, parse trees and pretty-printing 2024-11-04 19:03:49 +01:00
src fix: errors with when 2025-01-05 23:50:34 +01:00
.gitignore feat: some cleanup and start of codegen 2025-01-03 17:49:38 +01:00
chandelle.opam feat: translation to whyml for cadences 2024-12-09 18:05:43 +01:00
dune-project feat: new contributor dune project 2024-12-09 16:41:50 +01:00
NOTES.md chore: cleanup 2025-01-02 14:31:41 +01:00
README.md feat: new global structure for our compiler 2025-01-01 22:52:47 +01:00
TODO.md chore: update todo 2025-04-30 09:09:04 +00:00

Chandelle ─ A Mini─Lustre to WhyML Compiler

Chandelle aims to translate core Lustre programs with assertions to WhyML code with appropriate contracts, allowing users to make use of the Why3 platform to prove properties on their Lustre programs.

Structure

Chandelle is decomposed into multiple analyses, most of them classical ones. The main addition here is the generation of function contracts from the set of assertions of each node.

               [Lustre]
                  │
            ┌─────┴─────┐            ┌───────────┐
            │ Parse AST ├──(Typing)──┤ Typed AST │
            └───────────┘            └─────┬─────┘
                                           │
                                       (Clocking)
                                           │
                                     ┌─────┴───────┐
                                     │ Clocked AST │
                                     └─────┬───────┘
                                           │
                                      (Contracts)
┌─(Initialization)─┐                       │
│   ┌──────────────┴─┐                   ┌─┴────────────┐
└───┤ Normalized AST ├──(Normalization)──┤ Contract AST │
    └────────┬───────┘                   └──────────────┘
             │
        (Causality)
             │
       ┌─────┴──────────┐             ┌───────────┐
       │ Sequential AST ├──(Codegen)──┤ WhyML AST │
       └────────────────┘             └─────┬─────┘
                                            │
                                         [WhyML]