Soufflé is a variant of Datalog for tool designers crafting static analyses. Soufflé provides the ability to rapid prototype and make deep design space explorations possible. Applications include the points-to analysis framework DOOP, security analyses for large-scale problems, parallelizing compiler framework Insieme, security analysis for cloud computing, and security analysis for smart contracts VANDAL. Soufflé commenced at Oracle Labs in Brisbane, and was open-sourced in March 2016. It is actively supported by universities and industrial research labs including The University of Sydney, the University of Innsbruck, the University College London, and the University of Athens.
One of the major challenges in logic programming is scalability. Soufflé applies advanced compilation techniques for logic programs over finite domains including semi-naïve evaluation, Futamura Projections, staged-compilation with a new abstract machine, partial evaluation, and automated parallelisation for achieving high performance.
Soufflé has been designed such that,
declarative rules are efficiently translated to imperative programs on modern computer hardware, including multi-core computers, and
the domain specific language extensions of Soufflé support the tool designer crafting static program analyses.
Why the name Soufflé?
Soufflé is short for Systematic, Ontological, Undiscovered Fact Finding Logic Engine. The EDB represents the uncooked Soufflé and the IDB causes the Soufflé to rise, i.e., monotonically increasing knowledge. When it stops rising and a fixed-point is reached, the result is a puffed-up ready-to-eat Soufflé. Big thanks to Nicholas Allen and Diane Corney from Oracle Labs/Brisbane for finding a translation.
If there are errors, and/or explanations in the documentation can be improved, please let us know.
You can either click on the
Edit me button at the top of the relevant page, and trigger a pull request for your improved documentation, or please file an issue.