Zulip Chat Archive

Stream: CSLib: Code Reasoning

Topic: Changes in Boole after integrating `#strata_gen`


Lydia Kondylidou (Feb 20 2026 at 07:20):

We replaced the old handwritten DDMTransform.Translate pipeline with the generated BooleDDM.* produced by #strata_gen.

Previously the pipeline was:

Strata.Program         (representation)
   translateProgram   (handwritten parser/translation)
     Boole.Program    (Boogie-style AST, handwritten)
       toCoreProgram  (handwritten translation)
         Core.Program (representation)
           Core.verify

Here, Boole.Program was essentially a copy of the Boogie AST, and translateProgram was a handwritten parser that converted Lean syntax into that AST (largely duplicating Strata/Core parsing logic).

Now it is:

Strata.Program               (representation)
   BooleDDM.Program.ofAst   (generated parser/translation)
     BooleDDM.Program       (AST generated by #strata_gen)
       toCoreProgram        (handwritten, WIP)
         Core.Program       (representation)
           Core.verify

Both translateProgram (before) and BooleDDM.Program.ofAst (now) act as parsers: they take Lean syntax and construct a Boole AST (Strata → Boole). The difference is that this step is now generated automatically. The only remaining handwritten step is toCoreProgram (BooleDDM → Core).

With this refactoring, we reuse the shared Strata generation/translation infrastructure instead of maintaining our own frontend translation logic, which reduces duplication and keeps Boole aligned with the common Strata architecture.


Last updated: Feb 28 2026 at 14:05 UTC