blob: 3976d6afb5f2836430c5692c5015691281c860ca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
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.
Features of Soufflé Efficient translation to parallel C++ of Datalog
programs (CAV'16, CC'16)
Efficient interpretation using de-specialization techniques (PLDI'21)
Specialized data structure for relations (PACT'19, PPoPP'19, PMAM'19)
with optimal index selection (VLDB'18)
Extended semantics of Datalog, e.g., permitting unbounded recursions
with numbers and terms
Simple component model for Datalog specifications
Recursively defined record types/ADTs (aka. constructors) for tuples
User-defined functors
Strongly-typed types for safety
Subsumption
Aggregation
Choice Construct (APLAS'21)
Extended I/O system for relations (including SQLITE3 interfaces)
C++/SWIG interfaces
Provenance/Debugging (TOPLAS'20)
Profiling tools
|