# Optional vendor: Souffle Upstream: https://github.com/souffle-lang/souffle Pinned ref: `2.5` Pinned commit observed: `5682a9f12e2668ecdd26348fe63cc508bc0fcf47` License: Universal Permissive License 1.0 (UPL-1.0) ## Fold role Fact engine for reachability, taint, call graph, and interprocedural data-flow relations. Souffle should consume Fold MidIR facts and emit derived facts that Z3-backed detectors can use as assumptions or prioritization hints. ## Initial integration posture - Do not link into `fold-core` yet. - Fetch to `third_party/souffle/src` with `scripts/vendor/fetch_analysis_libs.sh`. - First prototype should use standalone `.dl` + TSV facts. Move to generated C++ (`souffle -g.cpp`) only after useful relations are proven. ## External docs - C++ interface: https://souffle-lang.github.io/interface - Execution modes: https://souffle-lang.github.io/execute ## Open checks - Define stable MidIR IDs for functions, blocks, ops, values, and provenance. - Add caps/profiling before any whole-project fact generation.