Soufflé is a variant of Datalog for tool designers crafting analyses in Horn clauses. Soufflé synthesizes a native parallel C++ program from a logic specification. The Soufflé language is similar to Datalog (but has terms known as records), and is frequently used as a domain-specific language for analysis problems. WARNING: souffle is INCOMPATIBLE with CCACHE! That is, if you are using a popular trick for automatic pick-up of ccache, symlinking ccache -> /usr/local/bin/gcc, your souffle builds will FAIL. Don't do that. In your owf slackbuilds, you can set export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/opt/llvm-opt/bin:$PATH" Features of Soufflé Efficient translation to parallel C++ of Datalog programs (CAV'16, CC'16): 1. Efficient interpretation using de-specialization techniques 2. Specialized data structure for relations with optimal index selection (VLDB'18) 3. Extended semantics of Datalog, e.g., permitting unbounded recursions with numbers and terms 4. Simple component model for Datalog specifications 5. Recursively defined record types/ADTs (aka. constructors) for tuples 6. User-defined functors 7. Strongly-typed types for safety 8. Subsumption 9. Aggregation 10. Choice Construct (APLAS'21) 11. Extended I/O system for relations (including SQLITE3 interfaces) 12. C++/SWIG interfaces 13. Provenance/Debugging (TOPLAS'20) 14. Profiling tools