Jump to content

Soufflé (programming language)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Siddharthist (talk | contribs) at 13:56, 26 February 2023. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.


Soufflé is an open source parallel logic programming language, influenced by Datalog.

Programming examples

Given a set of edges in a graph, the following program computes the set of (directed) edges 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).

Applications

References

Notes

Sources

  • Jordan, Herbert; Scholz, Bernhard; Subotić, Pavle (2016). Chaudhuri, Swarat; Farzan, Azadeh (eds.). "Soufflé: On Synthesis of Program Analyzers". Computer Aided Verification. Cham: Springer International Publishing: 422–430. doi:10.1007/978-3-319-41540-6_23. ISBN 978-3-319-41540-6.
  • Antoniadis, Tony; Triantafyllou, Konstantinos; Smaragdakis, Yannis (2017-06-18). "Porting doop to Soufflé: a tale of inter-engine portability for Datalog-based analyses". 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: 25–30. doi:10.1145/3088515.3088522. ISBN 978-1-4503-5072-3.