Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Soufflé (programming language)
Parallel logic programming language

Soufflé is an open source parallel logic programming language, influenced by Datalog. Soufflé includes both an interpreter and a compiler that targets parallel C++. Soufflé has been used to build static analyzers, disassemblers, and tools for binary reverse engineering. Soufflé is considered by academic researchers to be high-performance and "state of the art," and is often used in benchmarks in academic papers.

We don't have any images related to Soufflé (programming language) yet.
We don't have any YouTube videos related to Soufflé (programming language) yet.
We don't have any PDF documents related to Soufflé (programming language) yet.
We don't have any Books related to Soufflé (programming language) yet.
We don't have any archived web articles related to Soufflé (programming language) yet.

Programming examples

Given a set of edges in a graph, the following program computes the set of (directed) paths between any two nodes. This is also known as the transitive closure of the edge relation.

.decl edge(x:number, y:number) .input edge .decl path(x:number, y:number) .output path path(x, y) :- edge(x, y). path(x, y) :- path(x, z), edge(z, y).

Features

Related tools

In addition to a compiler and an interpreter, the Soufflé project also publishes:

Applications

Soufflé has been used to build static analyzers, including:

It has also been used to build tools for binary analysis, including reverse engineering,22 and disassemblers.23

Sources

References

  1. Ketsman, Bas; Koutris, Paraschos (2022-06-28). "Modern Datalog Engines". Foundations and Trends in Databases. 12 (1): 1–68. doi:10.1561/1900000073. ISSN 1931-7883. https://www.nowpublishers.com/article/Details/DBS-073

  2. Gilray, Thomas; Sahebolamri, Arash; Kumar, Sidharth; Micinski, Kristopher (2022-11-21). "Higher-Order, Data-Parallel Structured Deduction". arXiv:2211.11573 [cs.PL]. /wiki/ArXiv_(identifier)

  3. Sahebolamri, Arash; Gilray, Thomas; Micinski, Kristopher (2022-03-18). "Seamless deductive inference via macros". Proceedings of the 31st ACM SIGPLAN International Conference on Compiler Construction. CC 2022. New York, NY, USA: Association for Computing Machinery. pp. 77–88. doi:10.1145/3497776.3517779. ISBN 978-1-4503-9183-2. S2CID 247522107. 978-1-4503-9183-2

  4. Hu, Xiaowen; Zhao, David; Jordan, Herbert; Scholz, Bernhard (2021-06-15). "Artifact for Paper: An Efficient Interpreter for Datalog by De-specializing Relations". doi:10.1145/3410297. Retrieved 2023-02-26. {{cite journal}}: Cite journal requires |journal= (help) https://dx.doi.org/10.1145/3410297

  5. Scholz, Bernhard; Jordan, Herbert; Subotić, Pavle; Westmann, Till (2016-03-17). "On fast large-scale program analysis in Datalog". Proceedings of the 25th International Conference on Compiler Construction. CC 2016. New York, NY, USA: Association for Computing Machinery. pp. 196–206. doi:10.1145/2892208.2892226. ISBN 978-1-4503-4241-4. S2CID 7531543. 978-1-4503-4241-4

  6. Jordan, Scholz & Subotić 2016. - Jordan, Herbert; Scholz, Bernhard; Subotić, Pavle (2016). "Soufflé: On Synthesis of Program Analyzers". In Chaudhuri, Swarat; Farzan, Azadeh (eds.). Computer Aided Verification. Lecture Notes in Computer Science. Vol. 9780. Cham: Springer International Publishing. pp. 422–430. doi:10.1007/978-3-319-41540-6_23. ISBN 978-3-319-41540-6. S2CID 7428346. https://link.springer.com/chapter/10.1007/978-3-319-41540-6_23

  7. "Rules | Soufflé • A Datalog Synthesis Tool for Static Analysis". souffle-lang.github.io. Retrieved 2023-03-03. https://souffle-lang.github.io/rules

  8. "Aggregates and Generative Functors | Soufflé • A Datalog Synthesis Tool for Static Analysis". souffle-lang.github.io. Retrieved 2023-03-03. https://souffle-lang.github.io/aggregates

  9. Subotić, Pavle; Jordan, Herbert; Chang, Lijun; Fekete, Alan; Scholz, Bernhard (October 2018). "Automatic index selection for large-scale datalog computation". Proceedings of the VLDB Endowment. 12 (2): 141–153. doi:10.14778/3282495.3282500. ISSN 2150-8097. S2CID 53569679. https://dl.acm.org/doi/abs/10.14778/3282495.3282500

  10. Jordan, Herbert; Subotić, Pavle; Zhao, David; Scholz, Bernhard (2022-01-25). "Specializing parallel data structures for Datalog". Concurrency and Computation: Practice and Experience. 34 (2). doi:10.1002/cpe.5643. ISSN 1532-0626. S2CID 213103253. https://onlinelibrary.wiley.com/doi/10.1002/cpe.5643

  11. Nappa, Patrick; Zhao, David; Subotić, Pavle; Scholz, Bernhard (September 2019). "Fast Parallel Equivalence Relations in a Datalog Compiler". 2019 28th International Conference on Parallel Architectures and Compilation Techniques (PACT). pp. 82–96. doi:10.1109/PACT.2019.00015. ISBN 978-1-7281-3613-4. S2CID 204827819. 978-1-7281-3613-4

  12. Jordan, Herbert; Subotić, Pavle; Zhao, David; Scholz, Bernhard (2019-02-16). "A specialized B-tree for concurrent datalog evaluation". Proceedings of the 24th Symposium on Principles and Practice of Parallel Programming. PPoPP '19. New York, NY, USA: Association for Computing Machinery. pp. 327–339. doi:10.1145/3293883.3295719. ISBN 978-1-4503-6225-2. S2CID 59617209. 978-1-4503-6225-2

  13. Jordan, Herbert; Subotić, Pavle; Zhao, David; Scholz, Bernhard (2019-02-17). "Brie". Proceedings of the 10th International Workshop on Programming Models and Applications for Multicores and Manycores. PMAM'19. New York, NY, USA: Association for Computing Machinery. pp. 31–40. doi:10.1145/3303084.3309490. ISBN 978-1-4503-6290-0. S2CID 239258588. 978-1-4503-6290-0

  14. "Types | Soufflé • A Datalog Synthesis Tool for Static Analysis". souffle-lang.github.io. Retrieved 2023-03-03. "Soufflé is a statically typed language." https://souffle-lang.github.io/types

  15. "Types | Soufflé • A Datalog Synthesis Tool for Static Analysis". souffle-lang.github.io. Retrieved 2023-03-04. https://souffle-lang.github.io/types

  16. "User-Defined Functors | Soufflé • A Datalog Synthesis Tool for Static Analysis". souffle-lang.github.io. Retrieved 2023-03-03. https://souffle-lang.github.io/functors

  17. Zhao, David; Subotić, Pavle; Scholz, Bernhard (2020-04-17). "Debugging Large-scale Datalog: A Scalable Provenance Evaluation Strategy". ACM Transactions on Programming Languages and Systems. 42 (2): 7:1–7:35. doi:10.1145/3379446. ISSN 0164-0925. S2CID 218905148. https://doi.org/10.1145%2F3379446

  18. Arch, Samuel; Hu, Xiaowen; Zhao, David; Subotić, Pavle; Scholz, Bernhard (2022). "Building a Join Optimizer for Soufflé". In Villanueva, Alicia (ed.). Logic-Based Program Synthesis and Transformation. Lecture Notes in Computer Science. Vol. 13474. Cham: Springer International Publishing. pp. 83–102. doi:10.1007/978-3-031-16767-6_5. ISBN 978-3-031-16767-6. 978-3-031-16767-6

  19. Antoniadis, Triantafyllou & Smaragdakis 2017. - Antoniadis, Tony; Triantafyllou, Konstantinos; Smaragdakis, Yannis (2017-06-18). "Porting doop to Soufflé". Proceedings of the 6th ACM SIGPLAN International Workshop on State of the Art in Program Analysis. SOAP 2017. New York, NY, USA: Association for Computing Machinery. pp. 25–30. doi:10.1145/3088515.3088522. ISBN 978-1-4503-5072-3. S2CID 3074689. https://doi.org/10.1145/3088515.3088522

  20. Silverman, Davis Ross; Sun, Yihao; Micinski, Kristopher; Gilray, Thomas (2021-07-27). "So You Want to Analyze Scheme Programs With Datalog?". arXiv:2107.12909 [cs.PL]. /wiki/ArXiv_(identifier)

  21. Tsankov, Petar; Dan, Andrei; Drachsler-Cohen, Dana; Gervais, Arthur; Bünzli, Florian; Vechev, Martin (2018-10-15). "Securify". Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. CCS '18. New York, NY, USA: Association for Computing Machinery. pp. 67–82. doi:10.1145/3243734.3243780. hdl:10044/1/87935. ISBN 978-1-4503-5693-0. S2CID 46936025. Brent, Lexi; Jurisevic, Anton; Kong, Michael; Liu, Eric; Gauthier, Francois; Gramoli, Vincent; Holz, Ralph; Scholz, Bernhard (2018-09-11). "Vandal: A Scalable Security Analysis Framework for Smart Contracts". arXiv:1809.03981 [cs.PL]. Grech, Neville; Kong, Michael; Jurisevic, Anton; Brent, Lexi; Scholz, Bernhard; Smaragdakis, Yannis (2018-10-24). "MadMax: surviving out-of-gas conditions in Ethereum smart contracts". Proceedings of the ACM on Programming Languages. 2 (OOPSLA): 116:1–116:27. doi:10.1145/3276486. S2CID 51920261. Praitheeshan, Purathani; Pan, Lei; Yu, Jiangshan; Liu, Joseph; Doss, Robin (2020-09-16). "Security Analysis Methods on Ethereum Smart Contract Vulnerabilities: A Survey". arXiv:1908.08605 [cs.CR]. 978-1-4503-5693-0

  22. Sun, Yihao; Ching, Jeffrey; Micinski, Kristopher (2021-01-12). "Declarative Demand-Driven Reverse Engineering". arXiv:2101.04718 [cs.PL]. /wiki/ArXiv_(identifier)

  23. Flores-Montoya, Antonio; Schulte, Eric (2020-08-12). "Datalog disassembly". Proceedings of the 29th USENIX Conference on Security Symposium. SEC'20. USA: USENIX Association: 1075–1092. ISBN 978-1-939133-17-5. 978-1-939133-17-5