Making Formulog Fast: An Argument for Unconventional Datalog Evaluation

With its combination of Datalog, SMT solving, and functional programming, the language Formulog provides an appealing mix of features for implementing SMT-based static analyses (e.g., refinement type checking, symbolic execution) in a natural, declarative way. At the same time, the performance of it...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:Proceedings of ACM on programming languages Ročník 8; číslo OOPSLA2; s. 1219 - 1248
Hlavní autoři: Bembenek, Aaron, Greenberg, Michael, Chong, Stephen
Médium: Journal Article
Jazyk:angličtina
Vydáno: New York, NY, USA ACM 08.10.2024
Témata:
ISSN:2475-1421, 2475-1421
On-line přístup:Získat plný text
Tagy: Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
Abstract With its combination of Datalog, SMT solving, and functional programming, the language Formulog provides an appealing mix of features for implementing SMT-based static analyses (e.g., refinement type checking, symbolic execution) in a natural, declarative way. At the same time, the performance of its custom Datalog solver can be an impediment to using Formulog beyond prototyping—a common problem for Datalog variants that aspire to solve large problem instances. In this work we speed up Formulog evaluation, with some surprising results: while 2.2× speedups can be obtained by using the conventional techniques for high-performance Datalog (e.g., compilation, specialized data structures), the big wins come by abandoning the central assumption in modern performant Datalog engines, semi-naive Datalog evaluation. In the place of semi-naive evaluation, we develop eager evaluation, a concurrent Datalog evaluation algorithm that explores the logical inference space via a depth-first traversal order. In practice, eager evaluation leads to an advantageous distribution of Formulog’s SMT workload to external SMT solvers and improved SMT solving times: our eager evaluation extensions to the Formulog interpreter and Soufflé’s code generator achieve mean 5.2× and 7.6× speedups, respectively, over the optimized code generated by off-the-shelf Soufflé on SMT-heavy Formulog benchmarks. All in all, using compilation and eager evaluation (as appropriate), Formulog implementations of refinement type checking, bottom-up pointer analysis, and symbolic execution achieve speedups on 20 out of 23 benchmarks over previously published, hand-tuned analyses written in F♯, Java, and C++, providing strong evidence that Formulog can be the basis of a realistic platform for SMT-based static analysis. Moreover, our experience adds nuance to the conventional wisdom that traditional semi-naive evaluation is the one-size-fits-all best Datalog evaluation algorithm for static analysis workloads.
AbstractList With its combination of Datalog, SMT solving, and functional programming, the language Formulog provides an appealing mix of features for implementing SMT-based static analyses (e.g., refinement type checking, symbolic execution) in a natural, declarative way. At the same time, the performance of its custom Datalog solver can be an impediment to using Formulog beyond prototyping—a common problem for Datalog variants that aspire to solve large problem instances. In this work we speed up Formulog evaluation, with some surprising results: while 2.2× speedups can be obtained by using the conventional techniques for high-performance Datalog (e.g., compilation, specialized data structures), the big wins come by abandoning the central assumption in modern performant Datalog engines, semi-naive Datalog evaluation. In the place of semi-naive evaluation, we develop eager evaluation, a concurrent Datalog evaluation algorithm that explores the logical inference space via a depth-first traversal order. In practice, eager evaluation leads to an advantageous distribution of Formulog’s SMT workload to external SMT solvers and improved SMT solving times: our eager evaluation extensions to the Formulog interpreter and Soufflé’s code generator achieve mean 5.2× and 7.6× speedups, respectively, over the optimized code generated by off-the-shelf Soufflé on SMT-heavy Formulog benchmarks. All in all, using compilation and eager evaluation (as appropriate), Formulog implementations of refinement type checking, bottom-up pointer analysis, and symbolic execution achieve speedups on 20 out of 23 benchmarks over previously published, hand-tuned analyses written in F♯, Java, and C++, providing strong evidence that Formulog can be the basis of a realistic platform for SMT-based static analysis. Moreover, our experience adds nuance to the conventional wisdom that traditional semi-naive evaluation is the one-size-fits-all best Datalog evaluation algorithm for static analysis workloads.
With its combination of Datalog, SMT solving, and functional programming, the language Formulog provides an appealing mix of features for implementing SMT-based static analyses (e.g., refinement type checking, symbolic execution) in a natural, declarative way. At the same time, the performance of its custom Datalog solver can be an impediment to using Formulog beyond prototyping—a common problem for Datalog variants that aspire to solve large problem instances. In this work we speed up Formulog evaluation, with some surprising results: while 2.2× speedups can be obtained by using the conventional techniques for high-performance Datalog (e.g., compilation, specialized data structures), the big wins come by abandoning the central assumption in modern performant Datalog engines, semi-naive Datalog evaluation. In the place of semi-naive evaluation, we develop eager evaluation, a concurrent Datalog evaluation algorithm that explores the logical inference space via a depth-first traversal order. In practice, eager evaluation leads to an advantageous distribution of Formulog’s SMT workload to external SMT solvers and improved SMT solving times: our eager evaluation extensions to the Formulog interpreter and Soufflé’s code generator achieve mean 5.2× and 7.6× speedups, respectively, over the optimized code generated by off-the-shelf Soufflé on SMT-heavy Formulog benchmarks. All in all, using compilation and eager evaluation (as appropriate), Formulog implementations of refinement type checking, bottom-up pointer analysis, and symbolic execution achieve speedups on 20 out of 23 benchmarks over previously published, hand-tuned analyses written in F ♯ , Java, and C++, providing strong evidence that Formulog can be the basis of a realistic platform for SMT-based static analysis. Moreover, our experience adds nuance to the conventional wisdom that traditional semi-naive evaluation is the one-size-fits-all best Datalog evaluation algorithm for static analysis workloads.
ArticleNumber 314
Author Bembenek, Aaron
Greenberg, Michael
Chong, Stephen
Author_xml – sequence: 1
  givenname: Aaron
  orcidid: 0000-0002-3677-701X
  surname: Bembenek
  fullname: Bembenek, Aaron
  email: aaron.bembenek@unimelb.edu.au
  organization: University of Melbourne, Parkville, Australia
– sequence: 2
  givenname: Michael
  orcidid: 0000-0003-0014-7670
  surname: Greenberg
  fullname: Greenberg, Michael
  email: michael@greenberg.science
  organization: Stevens Institute of Technology, Hoboken, USA
– sequence: 3
  givenname: Stephen
  orcidid: 0000-0002-6734-5383
  surname: Chong
  fullname: Chong, Stephen
  email: chong@seas.harvard.edu
  organization: Harvard University, Cambridge, USA
BookMark eNptkM1Lw0AQxRepYK3Fu6fcPEX3M9n1FmpbhYoXew6TTbZEk13ZTQr-9ya2ioineTPz4_F452hina0QuiT4hhAublkiVSr4CZpSnoqYcEomv_QZmofwijEminHJ1BStn-Cttrto5XzbN24QELq7KLNR5nd9W9kuMs5HW6ud3Q9b7Sw00T10MMLLPTQ9jMcLdGqgCdX8OGdou1q-LB7izfP6cZFtYiCK8jghsiS8AMVkIgpBsQRJRFVoyktMVUoTSBOGCyYrzbjRgivKDKiyMEpjo9gMXR98tXch-Mrk775uwX_kBOdjBfmxgoGM_5C67r6ydh7q5h_-6sCDbn9Mv5-foldldw
CitedBy_id crossref_primary_10_1145_3729264
crossref_primary_10_1145_3689754
Cites_doi 10.1145/324133.324234
10.1145/3689754
10.1109/69.43410
10.1007/11814771_51
10.1145/78969.78972
10.1007/978-3-319-26529-2_25
10.1145/3371090
10.1016/s1571-0661(05)82542-3
10.1145/1868294.1868314
10.1145/3622840
10.14778/3311880.3311886
10.1109/FMCAD.2013.6679385
10.1016/0743-1066(91)90038-Q
10.1007/978-3-540-24730-2_15
10.1145/3243734.3243780
10.1145/3591280
10.1145/1167473.1167488
10.1145/1995376.1995394
10.1109/99.660313
10.14778/3282495.3282500
10.1016/b978-0-934613-40-8.50009-9
10.1145/3088515.3088522
10.1109/ICSE.2019.00120
10.1145/2908080.2908096
10.1007/978-1-4612-4980-1_17
10.1016/B978-0-934613-40-8.50006-3
10.1145/1142473.1142485
10.1145/3293883.3295719
10.1145/3632928
10.1145/2882903.2915229
10.1145/3497776.3517779
10.1145/3485540
10.1002/CPE.5643
10.1145/1863543.1863560
10.1145/3428209
10.1145/6012.15399
10.1145/91556.91631
10.1145/3303084.3309490
10.1007/978-3-642-02658-4_60
10.5281/zenodo.13372573
10.1007/3-540-36388-2_6
10.1007/978-3-642-24206-9_16
10.1145/3453483.3454026
10.1145/1639949.1640108
10.1145/1755913.1755937
10.1145/2892208.2892226
10.1007/978-1-4684-3384-5_11
10.1145/1251535.1251543
10.1145/3276486
10.1561/1900000073
10.1016/0743-1066(89)90032-0
10.1145/996841.996859
10.5555/645916.671834
10.1145/277651.277678
10.1561/1900000017
10.1007/978-3-540-78800-3_24
10.1007/978-3-319-41540-6_23
10.1145/3276509
10.1109/ICDE.2013.6544832
ContentType Journal Article
Copyright Owner/Author
Copyright_xml – notice: Owner/Author
DBID AAYXX
CITATION
DOI 10.1145/3689754
DatabaseName CrossRef
DatabaseTitle CrossRef
DatabaseTitleList
CrossRef
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 2475-1421
EndPage 1248
ExternalDocumentID 10_1145_3689754
3689754
GroupedDBID AAKMM
AAYFX
ACM
ADPZR
AIKLT
ALMA_UNASSIGNED_HOLDINGS
GUFHI
LHSKQ
M~E
OK1
ROL
AAYXX
AEFXT
AEJOY
AKRVB
CITATION
ID FETCH-LOGICAL-a1924-618d14ba93865b5208a815ebc24d029726a7630b38ec34fc54923fa9dbf9c0f93
ISSN 2475-1421
IngestDate Sat Nov 29 07:48:01 EST 2025
Tue Nov 18 21:02:54 EST 2025
Fri Feb 21 01:26:38 EST 2025
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Issue OOPSLA2
Keywords SMT solving
Datalog
compilation
Formulog
parallel evaluation
Language English
License This work is licensed under a Creative Commons Attribution International 4.0 License.
LinkModel OpenURL
MergedId FETCHMERGED-LOGICAL-a1924-618d14ba93865b5208a815ebc24d029726a7630b38ec34fc54923fa9dbf9c0f93
ORCID 0000-0002-6734-5383
0000-0002-3677-701X
0000-0003-0014-7670
OpenAccessLink https://dl.acm.org/doi/10.1145/3689754
PageCount 30
ParticipantIDs crossref_primary_10_1145_3689754
crossref_citationtrail_10_1145_3689754
acm_primary_3689754
PublicationCentury 2000
PublicationDate 20241008
2024-10-08
PublicationDateYYYYMMDD 2024-10-08
PublicationDate_xml – month: 10
  year: 2024
  text: 20241008
  day: 08
PublicationDecade 2020
PublicationPlace New York, NY, USA
PublicationPlace_xml – name: New York, NY, USA
PublicationTitle Proceedings of ACM on programming languages
PublicationTitleAbbrev ACM PACMPL
PublicationYear 2024
Publisher ACM
Publisher_xml – name: ACM
References Clark Barrett, Pascal Fontaine, and Cesare Tinelli. 2016. The Satisfiability Modulo Theories Library (SMT-LIB). www.SMT-LIB.org
Ziyang Li, Jiani Huang, and Mayur Naik. 2023. Scallop: A Language for Neurosymbolic Programming. Proceedings of the ACM on Programming Languages, 7, PLDI (2023), 1463–1487. https://doi.org/10.1145/3591280 10.1145/3591280
Neville Grech, Michael Kong, Anton Jurisevic, Lexi Brent, Bernhard Scholz, and Yannis Smaragdakis. 2018. Madmax: Surviving Out-of-Gas Conditions in Ethereum Smart Contracts. Proceedings of the ACM on Programming Languages, 2, OOPSLA (2018), 116:1–116:27. https://doi.org/10.1145/3276486 10.1145/3276486
Krzysztof R Apt, Howard A Blair, and Adrian Walker. 1988. Towards a Theory of Declarative Knowledge. In Foundations of Deductive Databases and Logic Programming. Elsevier, 89–148. https://doi.org/10.1016/B978-0-934613-40-8.50006-3 10.1016/B978-0-934613-40-8.50006-3
Herbert Jordan, Pavle Subotić, David Zhao, and Bernhard Scholz. 2019. Brie: A specialized trie for concurrent Datalog. In Proceedings of the 10th International Workshop on Programming Models and Applications for Multicores and Manycores. 31–40.
Nimar S Arora, Robert D Blumofe, and C Greg Plaxton. 1998. Thread Scheduling for Multiprogrammed Multiprocessors. In Proceedings of the Tenth Annual ACM Symposium on Parallel Algorithms and Architectures. 119–129.
Gavin M. Bierman, Andrew D. Gordon, Cătălin Hriţcu, and David Langworthy. 2012. Semantic Subtyping with an SMT Solver. Journal of Functional Programming, 22, 1 (2012), 31–105. https://doi.org/10.1145/1863543.1863560 10.1145/1863543.1863560
Arash Sahebolamri, Langston Barrett, Scott Moore, and Kristopher K. Micinski. 2023. Bring Your Own Data Structures to Datalog. Proceedings of the ACM on Programming Languages, 7, OOPSLA2 (2023), 1198–1223. https://doi.org/10.1145/3622840 10.1145/3622840
Leonardo Dagum and Ramesh Menon. 1998. OpenMP: an industry standard API for shared-memory programming. IEEE Computational Science & Engineering, 5, 1 (1998), 46–55.
Eric Zhang. 2020. Crepe. https://github.com/ekzhang/crepe Accessed: 2023-08-18
Michael Arntzenius and Neel Krishnaswami. 2020. Seminäive Evaluation for a Higher-Order Functional Language. Proceedings of the ACM on Programming Languages, 4, POPL (2020), 22:1–22:28. https://doi.org/10.1145/3371090 10.1145/3371090
Cristian Cadar, Daniel Dunbar, and Dawson Engler. 2008. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation. 209–224.
Jiwon Seo, Stephen Guo, and Monica S. Lam. 2013. SociaLite: Datalog Extensions for Efficient Social Network Analysis. In 29th IEEE International Conference on Data Engineering. 278–289. https://doi.org/10.1109/ICDE.2013.6544832 10.1109/ICDE.2013.6544832
Yannis Smaragdakis, Neville Grech, Sifis Lagouvardos, Konstantinos Triantafyllou, and Ilias Tsatiris. 2021. Symbolic value-flow static analysis: deep, precise, complete modeling of Ethereum smart contracts. Proceedings of the ACM on Programming Languages, 5, OOPSLA (2021), 1–30.
Herbert Jordan, Pavle Subotic, David Zhao, and Bernhard Scholz. 2019. A Specialized B-tree for Concurrent Datalog Evaluation. In Proceedings of the 24th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. 327–339. https://doi.org/10.1145/3293883.3295719 10.1145/3293883.3295719
Francois Bancilhon, David Maier, Yehoshua Sagiv, and Jeffrey D Ullman. 1985. Magic Sets and Other Strange Ways to Implement Logic Programs. In Proceedings of the 5th ACM SIGACT-SIGMOD Symposium on Principles of Database Systems. 1–15. https://doi.org/10.1145/6012.15399 10.1145/6012.15399
Leonardo de Moura and Nikolaj Bjørner. 2008. Z3: An Efficient SMT Solver. In Proceedings of the 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 337–340. https://doi.org/10.1007/978-3-540-78800-3_24 10.1007/978-3-540-78800-3_24
Tiark Rompf and Martin Odersky. 2010. Lightweight Modular Staging: A Pragmatic Approach to Runtime Code Generation and Compiled DSLs. In International Conference on Generative Programming and Component Engineering. 127–136. https://doi.org/10.1145/1868294.1868314 10.1145/1868294.1868314
Aaron Bembenek, Michael Ballantyne, Michael Greenberg, and Nada Amin. 2020. Datalog-Based Systems Can Use Incremental SMT Solving. In Proceedings of the 36th International Conference Logic Programming (Technical Communications).
Bas Ketsman and Paraschos Koutris. 2022. Modern Datalog Engines. Foundations and Trends in Databases, 12, 1 (2022), 1–68. https://doi.org/10.1561/1900000073 10.1561/1900000073
André Pacak and Sebastian Erdweg. 2022. Functional programming with Datalog. In 36th European Conference on Object-Oriented Programming. 7:1–7:28.
Pavle Subotić, Herbert Jordan, Lijun Chang, Alan Fekete, and Bernhard Scholz. 2018. Automatic Index Selection for Large-Scale Datalog Computation. Proceedings of the VLDB Endowment, 12, 2 (2018), 141–153.
Zhiwei Fan, Jianqiao Zhu, Zuyu Zhang, Aws Albarghouthi, Paraschos Koutris, and Jignesh M. Patel. 2019. Scaling-up in-Memory Datalog Processing: Observations and Techniques. Proceedings of the VLDB Endowment, 12, 6 (2019), feb, 695–708. issn:2150-8097 https://doi.org/10.14778/3311880.3311886 10.14778/3311880.3311886
1978. Logic and Data Bases, Hervé Gallaire and Jack Minker (Eds.). Plenum Press.
Inderpal Singh Mumick, Hamid Pirahesh, and Raghu Ramakrishnan. 1990. The Magic of Duplicates and Aggregates. In Proceedings of the 16th International Conference on Very Large Data Bases. 264–277.
Daniel J Dougherty, Kathi Fisler, and Shriram Krishnamurthi. 2006. Specifying and reasoning about dynamic access-control policies. In Proceedings of the 3rd International Joint Conference on Automated Reasoning. 632–646. https://doi.org/10.1007/11814771_51 10.1007/11814771_51
Tamás Szabó, Gábor Bergmann, Sebastian Erdweg, and Markus Voelter. 2018. Incrementalizing Lattice-Based Program Analyses in Datalog. Proceedings of the ACM on Programming Languages, 2, OOPSLA (2018), 139:1–139:29. https://doi.org/10.1145/3276509 10.1145/3276509
Tamás Szabó, Sebastian Erdweg, and Gábor Bergmann. 2021. Incremental whole-program analysis in Datalog with lattices. In Proceedings of the ACM SIGPLAN International Conference on Programming Language Design and Implementation. 1–15.
John Whaley, Dzintars Avots, Michael Carbin, and Monica S. Lam. 2005. Using Datalog with Binary Decision Diagrams for Program Analysis. In Proceedings of the Third Asian Symposium on Programming Languages and Systems. 97–118.
Peter Alvaro, William R Marczak, Neil Conway, Joseph M Hellerstein, David Maier, and Russell Sears. 2010. Dedalus: Datalog in Time and Space. In Datalog Reloaded - 1st International Workshop. 43–48. https://doi.org/10.1007/978-3-642-24206-9_16 10.1007/978-3-642-24206-9_16
Francois Bancilhon. 1986. Naive Evaluation of Recursively Defined Relations. In On Knowledge Base Management Systems. Springer, 165–178. https://doi.org/10.1007/978-1-4612-4980-1_17 10.1007/978-1-4612-4980-1_17
Ziyang Li, Jiani Huang, Jason Liu, Felix Zhu, Eric Zhao, William Dodds, Neelay Velingker, Rajeev Alur, and Mayur Naik. 2024. Relational Programming with Foundation Models. In AAAI Conference on Artificial Intelligence. 209–214.
Christoph M. Wintersteiger, Youssef Hamadi, and Leonardo de Moura. 2009. A Concurrent Portfolio Approach to SMT Solving. In Computer Aided Verification. 715–720. isbn:978-3-642-02658-4
Ninghui Li and John C Mitchell. 2003. Datalog with Constraints: A Foundation for Trust Management Languages. In Proceedings of the 5th International Symposium on Practical Aspects of Declarative Languages. 58–73. https://doi.org/10.1007/3-540-36388-2_6 10.1007/3-540-36388-2_6
Eric Mohr, David A Kranz, and Robert H Halstead Jr. 1990. Lazy task creation: A technique for increasing the granularity of parallel programs. In Proceedings of the 1990 ACM Conference on LISP and Functional Programming. 185–197.
Aaron Bembenek, Michael Greenberg, and Stephen Chong. 2024. Making Formulog Fast: An Argument for Unconventional Datalog Evaluation (Extended Version). arxiv:2408.14017.
Jean Gallier. 1986. Logic for Computer Science: Foundations of Automated Theorem Proving. Wiley.
Stephen M. Blackburn, Robin Garner, Chris Hoffmann, Asjad M. Khang, Kathryn S. McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z. Guyer, Martin Hirzel, Antony Hosking, Maria Jump, Han Lee, J. Eliot B. Moss, Aashish Phansalkar, Darko Stefanović, Thomas VanDrunen, Daniel von Dincklage, and Ben Wiedermann. 2006. The DaCapo Benchmarks: Java Benchmarking Development and Analysis. In Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications. 169–190. https://doi.org/10.1145/1167473.1167488 10.1145/1167473.1167488
Bernhard Scholz, Herbert Jordan, Pavle Subotić, and Till Westmann. 2016. On Fast Large-Scale Program Analysis in Datalog. In Proceedings of the 25th International Conference on Compiler Construction. 196–206. https://doi.org/10.1145/2892208.2892226 10.1145/2892208.2892226
John Whaley and Monica S. Lam. 2004. Cloning-Based Context-Sensitive Pointer Alias Analysis Using Binary Decision Diagrams. In Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation. 131–144. https://doi.org/10.1145/996841.996859 10.1145/996841.996859
Supun Abeysinghe, Anxhelo Xhebraj, and Tiark Rompf. 2024. Flan: An Expressive and Efficient Datalog Compiler for Program Analysis. Proceedings of the ACM on Programming Languages, 8, POPL (2024), 2577–2609. https://doi.org/10.1145/3632928 10.1145/3632928
Martin Bravenboer and Yannis Smaragdakis. 2009. Strictly Declarative Specification of Sophisticated Points-to Analyses. In Proceedings of the 24th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications. 243–262. https://doi.org/10.1145/1639949.1640108 10.
e_1_2_1_60_1
Gelfond Michael (e_1_2_1_36_1) 1988
e_1_2_1_20_1
e_1_2_1_66_1
e_1_2_1_68_1
e_1_2_1_24_1
e_1_2_1_45_1
e_1_2_1_62_1
e_1_2_1_43_1
Madsen Magnus (e_1_2_1_51_1) 2022
e_1_2_1_64_1
e_1_2_1_28_1
e_1_2_1_49_1
e_1_2_1_26_1
e_1_2_1_47_1
Bembenek Aaron (e_1_2_1_14_1) 2020
e_1_2_1_71_1
Cadar Cristian (e_1_2_1_22_1) 2008
Li Ziyang (e_1_2_1_48_1) 2024
e_1_2_1_31_1
e_1_2_1_54_1
e_1_2_1_8_1
e_1_2_1_56_1
e_1_2_1_6_1
e_1_2_1_12_1
e_1_2_1_50_1
e_1_2_1_73_1
e_1_2_1_4_1
e_1_2_1_10_1
e_1_2_1_52_1
e_1_2_1_2_1
e_1_2_1_16_1
e_1_2_1_39_1
e_1_2_1_37_1
e_1_2_1_18_1
Flores-Montoya Antonio (e_1_2_1_33_1)
Ryzhyk Leonid (e_1_2_1_58_1) 2019
e_1_2_1_42_1
e_1_2_1_65_1
Huang Jiani (e_1_2_1_41_1) 2021
e_1_2_1_40_1
e_1_2_1_67_1
e_1_2_1_23_1
e_1_2_1_46_1
e_1_2_1_61_1
e_1_2_1_21_1
e_1_2_1_44_1
e_1_2_1_63_1
e_1_2_1_27_1
e_1_2_1_25_1
Gallier Jean (e_1_2_1_35_1)
e_1_2_1_69_1
e_1_2_1_29_1
e_1_2_1_7_1
e_1_2_1_30_1
e_1_2_1_5_1
Pacak André (e_1_2_1_55_1) 2022
e_1_2_1_57_1
Whaley John (e_1_2_1_70_1)
e_1_2_1_3_1
e_1_2_1_13_1
e_1_2_1_34_1
e_1_2_1_72_1
e_1_2_1_1_1
e_1_2_1_11_1
e_1_2_1_32_1
e_1_2_1_53_1
e_1_2_1_17_1
e_1_2_1_38_1
e_1_2_1_15_1
e_1_2_1_59_1
e_1_2_1_9_1
e_1_2_1_19_1
References_xml – reference: André Pacak and Sebastian Erdweg. 2022. Functional programming with Datalog. In 36th European Conference on Object-Oriented Programming. 7:1–7:28.
– reference: Michael Gelfond and Vladimir Lifschitz. 1988. The Stable Model Semantics for Logic Programming. In Proceedings of the 5th International Conference and Symposium on Logic Programming.
– reference: Clark Barrett, Pascal Fontaine, and Cesare Tinelli. 2016. The Satisfiability Modulo Theories Library (SMT-LIB). www.SMT-LIB.org
– reference: Tamás Szabó, Sebastian Erdweg, and Gábor Bergmann. 2021. Incremental whole-program analysis in Datalog with lattices. In Proceedings of the ACM SIGPLAN International Conference on Programming Language Design and Implementation. 1–15.
– reference: Leonid Ryzhyk and Mihai Budiu. 2019. Differential Datalog. In Proceedings of the 3rd International Workshop on the Resurgence of Datalog in Academia and Industry. 56–67.
– reference: Neville Grech, Michael Kong, Anton Jurisevic, Lexi Brent, Bernhard Scholz, and Yannis Smaragdakis. 2018. Madmax: Surviving Out-of-Gas Conditions in Ethereum Smart Contracts. Proceedings of the ACM on Programming Languages, 2, OOPSLA (2018), 116:1–116:27. https://doi.org/10.1145/3276486 10.1145/3276486
– reference: Jiani Huang, Ziyang Li, Binghong Chen, Karan Samel, Mayur Naik, Le Song, and Xujie Si. 2021. Scallop: From Probabilistic Deductive Databases to Scalable Differentiable Reasoning. In Advances in Neural Information Processing Systems. 25134–25145.
– reference: Neville Grech, Lexi Brent, Bernhard Scholz, and Yannis Smaragdakis. 2019. Gigahorse: Thorough, Declarative Decompilation of Smart Contracts. In Proceedings of the 41st International Conference on Software Engineering. 1176–1186. https://doi.org/10.1109/ICSE.2019.00120 10.1109/ICSE.2019.00120
– reference: Francois Bancilhon. 1986. Naive Evaluation of Recursively Defined Relations. In On Knowledge Base Management Systems. Springer, 165–178. https://doi.org/10.1007/978-1-4612-4980-1_17 10.1007/978-1-4612-4980-1_17
– reference: John Whaley and Monica S. Lam. 2004. Cloning-Based Context-Sensitive Pointer Alias Analysis Using Binary Decision Diagrams. In Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation. 131–144. https://doi.org/10.1145/996841.996859 10.1145/996841.996859
– reference: Eric Zhang. 2020. Crepe. https://github.com/ekzhang/crepe Accessed: 2023-08-18
– reference: Aaron Bembenek, Michael Greenberg, and Stephen Chong. 2020. Formulog: Datalog for SMT-Based Static Analysis. Proceedings of the ACM on Programming Languages, 4, OOPSLA (2020), 141:1–141:31. https://doi.org/10.1145/3428209 10.1145/3428209
– reference: Christoph M. Wintersteiger, Youssef Hamadi, and Leonardo de Moura. 2009. A Concurrent Portfolio Approach to SMT Solving. In Computer Aided Verification. 715–720. isbn:978-3-642-02658-4
– reference: Leonardo Dagum and Ramesh Menon. 1998. OpenMP: an industry standard API for shared-memory programming. IEEE Computational Science & Engineering, 5, 1 (1998), 46–55.
– reference: Maurice Herlihy and Jeannette M. Wing. 1990. Linearizability: A Correctness Condition for Concurrent Objects. ACM Transactions on Programming Languages and Systems, 12, 3 (1990), 463–492. https://doi.org/10.1145/78969.78972 10.1145/78969.78972
– reference: Peter Alvaro, William R Marczak, Neil Conway, Joseph M Hellerstein, David Maier, and Russell Sears. 2010. Dedalus: Datalog in Time and Space. In Datalog Reloaded - 1st International Workshop. 43–48. https://doi.org/10.1007/978-3-642-24206-9_16 10.1007/978-3-642-24206-9_16
– reference: Ziyang Li, Jiani Huang, Jason Liu, Felix Zhu, Eric Zhao, William Dodds, Neelay Velingker, Rajeev Alur, and Mayur Naik. 2024. Relational Programming with Foundation Models. In AAAI Conference on Artificial Intelligence. 209–214.
– reference: Krzysztof R Apt, Howard A Blair, and Adrian Walker. 1988. Towards a Theory of Declarative Knowledge. In Foundations of Deductive Databases and Logic Programming. Elsevier, 89–148. https://doi.org/10.1016/B978-0-934613-40-8.50006-3 10.1016/B978-0-934613-40-8.50006-3
– reference: Ninghui Li and John C Mitchell. 2003. Datalog with Constraints: A Foundation for Trust Management Languages. In Proceedings of the 5th International Symposium on Practical Aspects of Declarative Languages. 58–73. https://doi.org/10.1007/3-540-36388-2_6 10.1007/3-540-36388-2_6
– reference: Teodor C Przymusinski. 1988. On the Declarative Semantics of Deductive Databases and Logic Programs. In Foundations of Deductive Databases and Logic Programming. Elsevier, 193–216. https://doi.org/10.1016/b978-0-934613-40-8.50009-9 10.1016/b978-0-934613-40-8.50009-9
– reference: Tiark Rompf and Martin Odersky. 2010. Lightweight Modular Staging: A Pragmatic Approach to Runtime Code Generation and Compiled DSLs. In International Conference on Generative Programming and Component Engineering. 127–136. https://doi.org/10.1145/1868294.1868314 10.1145/1868294.1868314
– reference: Arash Sahebolamri, Thomas Gilray, and Kristopher Micinski. 2022. Seamless deductive inference via macros. In Proceedings of the 31st ACM SIGPLAN International Conference on Compiler Construction. 77–88.
– reference: Catriel Beeri and Raghu Ramakrishnan. 1991. On the Power of Magic. The Journal of Logic Programming, 10, 3-4 (1991), 255–299. https://doi.org/10.1016/0743-1066(91)90038-Q 10.1016/0743-1066(91)90038-Q
– reference: Boon Thau Loo, Tyson Condie, Minos Garofalakis, David E. Gay, Joseph M. Hellerstein, Petros Maniatis, Raghu Ramakrishnan, Timothy Roscoe, and Ion Stoica. 2006. Declarative Networking: Language, Execution and Optimization. In Proceedings of the ACM SIGMOD International Conference on Management of Data. 97–108. https://doi.org/10.1145/1142473.1142485 10.1145/1142473.1142485
– reference: Aaron Bembenek, Michael Greenberg, and Stephen Chong. 2024. Making Formulog Fast: An Argument for Unconventional Datalog Evaluation (Extended Version). arxiv:2408.14017.
– reference: Francois Bancilhon, David Maier, Yehoshua Sagiv, and Jeffrey D Ullman. 1985. Magic Sets and Other Strange Ways to Implement Logic Programs. In Proceedings of the 5th ACM SIGACT-SIGMOD Symposium on Principles of Database Systems. 1–15. https://doi.org/10.1145/6012.15399 10.1145/6012.15399
– reference: Zhiwei Fan, Jianqiao Zhu, Zuyu Zhang, Aws Albarghouthi, Paraschos Koutris, and Jignesh M. Patel. 2019. Scaling-up in-Memory Datalog Processing: Observations and Techniques. Proceedings of the VLDB Endowment, 12, 6 (2019), feb, 695–708. issn:2150-8097 https://doi.org/10.14778/3311880.3311886 10.14778/3311880.3311886
– reference: Rajeev Alur, Rastislav Bodík, Garvit Juniwal, Milo M. K. Martin, Mukund Raghothaman, Sanjit A. Seshia, Rishabh Singh, Armando Solar-Lezama, Emina Torlak, and Abhishek Udupa. 2013. Syntax-guided synthesis. In 2013 Formal Methods in Computer-Aided Design. 1–8. https://ieeexplore.ieee.org/document/6679385/
– reference: 1978. Logic and Data Bases, Hervé Gallaire and Jack Minker (Eds.). Plenum Press.
– reference: Daniel J Dougherty, Kathi Fisler, and Shriram Krishnamurthi. 2006. Specifying and reasoning about dynamic access-control policies. In Proceedings of the 3rd International Joint Conference on Automated Reasoning. 632–646. https://doi.org/10.1007/11814771_51 10.1007/11814771_51
– reference: Supun Abeysinghe, Anxhelo Xhebraj, and Tiark Rompf. 2024. Flan: An Expressive and Efficient Datalog Compiler for Program Analysis. Proceedings of the ACM on Programming Languages, 8, POPL (2024), 2577–2609. https://doi.org/10.1145/3632928 10.1145/3632928
– reference: Michael Arntzenius and Neel Krishnaswami. 2020. Seminäive Evaluation for a Higher-Order Functional Language. Proceedings of the ACM on Programming Languages, 4, POPL (2020), 22:1–22:28. https://doi.org/10.1145/3371090 10.1145/3371090
– reference: Nimar S Arora, Robert D Blumofe, and C Greg Plaxton. 1998. Thread Scheduling for Multiprogrammed Multiprocessors. In Proceedings of the Tenth Annual ACM Symposium on Parallel Algorithms and Architectures. 119–129.
– reference: Tony Antoniadis, Konstantinos Triantafyllou, and Yannis Smaragdakis. 2017. Porting Doop to Soufflé: A Tale of Inter-Engine Portability for Datalog-Based Analyses. In International Workshop on State Of the Art in Program Analysis. 25–30. https://doi.org/10.1145/3088515.3088522 10.1145/3088515.3088522
– reference: Herbert Jordan, Pavle Subotić, David Zhao, and Bernhard Scholz. 2019. Brie: A specialized trie for concurrent Datalog. In Proceedings of the 10th International Workshop on Programming Models and Applications for Multicores and Manycores. 31–40.
– reference: Aaron Bembenek, Michael Ballantyne, Michael Greenberg, and Nada Amin. 2020. Datalog-Based Systems Can Use Incremental SMT Solving. In Proceedings of the 36th International Conference Logic Programming (Technical Communications).
– reference: Herbert Jordan, Bernhard Scholz, and Pavle Subotić. 2016. Soufflé: On Synthesis of Program Analyzers. In Computer Aided Verification. https://doi.org/10.1007/978-3-319-41540-6_23 10.1007/978-3-319-41540-6_23
– reference: Pavle Subotić, Herbert Jordan, Lijun Chang, Alan Fekete, and Bernhard Scholz. 2018. Automatic Index Selection for Large-Scale Datalog Computation. Proceedings of the VLDB Endowment, 12, 2 (2018), 141–153.
– reference: Gavin M. Bierman, Andrew D. Gordon, Cătălin Hriţcu, and David Langworthy. 2012. Semantic Subtyping with an SMT Solver. Journal of Functional Programming, 22, 1 (2012), 31–105. https://doi.org/10.1145/1863543.1863560 10.1145/1863543.1863560
– reference: Bernhard Scholz, Herbert Jordan, Pavle Subotić, and Till Westmann. 2016. On Fast Large-Scale Program Analysis in Datalog. In Proceedings of the 25th International Conference on Compiler Construction. 196–206. https://doi.org/10.1145/2892208.2892226 10.1145/2892208.2892226
– reference: John Whaley, Dzintars Avots, Michael Carbin, and Monica S. Lam. 2005. Using Datalog with Binary Decision Diagrams for Program Analysis. In Proceedings of the Third Asian Symposium on Programming Languages and Systems. 97–118.
– reference: Jiwon Seo, Stephen Guo, and Monica S. Lam. 2013. SociaLite: Datalog Extensions for Efficient Social Network Analysis. In 29th IEEE International Conference on Data Engineering. 278–289. https://doi.org/10.1109/ICDE.2013.6544832 10.1109/ICDE.2013.6544832
– reference: Herbert Jordan, Pavle Subotic, David Zhao, and Bernhard Scholz. 2022. Specializing parallel data structures for Datalog. Concurrency and Computation: Practice and Experience, 34, 2 (2022), https://doi.org/10.1002/CPE.5643 10.1002/CPE.5643
– reference: Stefano Ceri, Georg Gottlob, and Letizia Tanca. 1989. What You Always Wanted to Know About Datalog (and Never Dared to Ask). IEEE Transactions on Knowledge and Data Engineering, 1, 1 (1989), 146–166.
– reference: Cristian Cadar, Daniel Dunbar, and Dawson Engler. 2008. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation. 209–224.
– reference: Petar Tsankov, Andrei Dan, Dana Drachsler-Cohen, Arthur Gervais, Florian Buenzli, and Martin Vechev. 2018. Securify: Practical Security Analysis of Smart Contracts. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. 67–82. https://doi.org/10.1145/3243734.3243780 10.1145/3243734.3243780
– reference: Edmund Clarke, Daniel Kroening, and Flavio Lerda. 2004. A Tool for Checking ANSI-C Programs. In Proceedings of the 10th International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 168–176. https://doi.org/10.1007/978-3-540-24730-2_15 10.1007/978-3-540-24730-2_15
– reference: Keith L Clark. 1977. Negation as Failure. In Logic and Data Bases. 293–322. https://doi.org/10.1007/978-1-4684-3384-5_11 10.1007/978-1-4684-3384-5_11
– reference: Niklas Eén and Niklas Sörensson. 2003. Temporal Induction by Incremental SAT Solving. Electronic Notes in Theoretical Computer Science, 89, 4 (2003), 543–560. https://doi.org/10.1016/s1571-0661(05)82542-3 10.1016/s1571-0661(05)82542-3
– reference: Ziyang Li, Jiani Huang, and Mayur Naik. 2023. Scallop: A Language for Neurosymbolic Programming. Proceedings of the ACM on Programming Languages, 7, PLDI (2023), 1463–1487. https://doi.org/10.1145/3591280 10.1145/3591280
– reference: Leonardo de Moura and Nikolaj Bjørner. 2011. Satisfiability modulo Theories: Introduction and Applications. Commun. ACM, 54, 9 (2011), 69–77. https://doi.org/10.1145/1995376.1995394 10.1145/1995376.1995394
– reference: Yannis Smaragdakis, Neville Grech, Sifis Lagouvardos, Konstantinos Triantafyllou, and Ilias Tsatiris. 2021. Symbolic value-flow static analysis: deep, precise, complete modeling of Ethereum smart contracts. Proceedings of the ACM on Programming Languages, 5, OOPSLA (2021), 1–30.
– reference: Alex Aiken, Suhabe Bugrara, Isil Dillig, Thomas Dillig, Brian Hackett, and Peter Hawkins. 2007. An Overview of the Saturn Project. In Proceedings of the 7th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering. 43–48. https://doi.org/10.1145/1251535.1251543 10.1145/1251535.1251543
– reference: Robert D Blumofe and Charles E Leiserson. 1999. Scheduling multithreaded computations by work stealing. Journal of the ACM (JACM), 46, 5 (1999), 720–748.
– reference: Martin Bravenboer and Yannis Smaragdakis. 2009. Strictly Declarative Specification of Sophisticated Points-to Analyses. In Proceedings of the 24th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications. 243–262. https://doi.org/10.1145/1639949.1640108 10.1145/1639949.1640108
– reference: Leonardo de Moura and Nikolaj Bjørner. 2008. Z3: An Efficient SMT Solver. In Proceedings of the 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 337–340. https://doi.org/10.1007/978-3-540-78800-3_24 10.1007/978-3-540-78800-3_24
– reference: Peter Alvaro, Tyson Condie, Neil Conway, Khaled Elmeleegy, Joseph M Hellerstein, and Russell Sears. 2010. Boom Analytics: Exploring Data-Centric, Declarative Programming for the Cloud. In Proceedings of the 5th European Conference on Computer Systems. 223–236. https://doi.org/10.1145/1755913.1755937 10.1145/1755913.1755937
– reference: Magnus Madsen, Ming-Ho Yee, and Ondřej Lhoták. 2016. From Datalog to Flix: a Declarative Language for Fixed Points on Lattices. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation. 194–208. https://doi.org/10.1145/2908080.2908096 10.1145/2908080.2908096
– reference: Stephen M. Blackburn, Robin Garner, Chris Hoffmann, Asjad M. Khang, Kathryn S. McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z. Guyer, Martin Hirzel, Antony Hosking, Maria Jump, Han Lee, J. Eliot B. Moss, Aashish Phansalkar, Darko Stefanović, Thomas VanDrunen, Daniel von Dincklage, and Ben Wiedermann. 2006. The DaCapo Benchmarks: Java Benchmarking Development and Analysis. In Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications. 169–190. https://doi.org/10.1145/1167473.1167488 10.1145/1167473.1167488
– reference: Yu Feng, Xinyu Wang, Isil Dillig, and Thomas Dillig. 2015. Bottom-up Context-Sensitive Pointer Analysis for Java. In Proceedings of the 13th Asian Symposium on Programming Languages and Systems. 465–484. https://doi.org/10.1007/978-3-319-26529-2_25 10.1007/978-3-319-26529-2_25
– reference: Allen Van Gelder. 1989. Negation as Failure Using Tight Derivations for General Logic Programs. The Journal of Logic Programming, 6, 1-2 (1989), 109–133. https://doi.org/10.1016/0743-1066(89)90032-0 10.1016/0743-1066(89)90032-0
– reference: Antonio Flores-Montoya and Eric M. Schulte. 2020. Datalog Disassembly. In Proceedings of the 29th USENIX Security Symposium. 1075–1092.
– reference: Bas Ketsman and Paraschos Koutris. 2022. Modern Datalog Engines. Foundations and Trends in Databases, 12, 1 (2022), 1–68. https://doi.org/10.1561/1900000073 10.1561/1900000073
– reference: Arash Sahebolamri, Langston Barrett, Scott Moore, and Kristopher K. Micinski. 2023. Bring Your Own Data Structures to Datalog. Proceedings of the ACM on Programming Languages, 7, OOPSLA2 (2023), 1198–1223. https://doi.org/10.1145/3622840 10.1145/3622840
– reference: Alexander Shkapsky, Mohan Yang, Matteo Interlandi, Hsuan Chiu, Tyson Condie, and Carlo Zaniolo. 2016. Big Data Analytics with Datalog Queries on Spark. In Proceedings of the 2016 International Conference on Management of Data. 1135–1149. https://doi.org/10.1145/2882903.2915229 10.1145/2882903.2915229
– reference: Aaron Bembenek, Michael Greenberg, and Stephen Chong. 2024. Making Formulog Fast: An Argument for Unconventional Datalog Evaluation (OOPSLA’24 Artifact). https://doi.org/10.5281/zenodo.13372573 10.5281/zenodo.13372573
– reference: Herbert Jordan, Pavle Subotic, David Zhao, and Bernhard Scholz. 2019. A Specialized B-tree for Concurrent Datalog Evaluation. In Proceedings of the 24th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. 327–339. https://doi.org/10.1145/3293883.3295719 10.1145/3293883.3295719
– reference: Eric Mohr, David A Kranz, and Robert H Halstead Jr. 1990. Lazy task creation: A technique for increasing the granularity of parallel programs. In Proceedings of the 1990 ACM Conference on LISP and Functional Programming. 185–197.
– reference: Tamás Szabó, Gábor Bergmann, Sebastian Erdweg, and Markus Voelter. 2018. Incrementalizing Lattice-Based Program Analyses in Datalog. Proceedings of the ACM on Programming Languages, 2, OOPSLA (2018), 139:1–139:29. https://doi.org/10.1145/3276509 10.1145/3276509
– reference: Jean Gallier. 1986. Logic for Computer Science: Foundations of Automated Theorem Proving. Wiley.
– reference: Todd J. Green, Shan Shan Huang, Boon Thau Loo, and Wenchao Zhou. 2013. Datalog and Recursive Query Processing. Foundations & Trends in Databases, https://doi.org/10.1561/1900000017 10.1561/1900000017
– reference: Inderpal Singh Mumick, Hamid Pirahesh, and Raghu Ramakrishnan. 1990. The Magic of Duplicates and Aggregates. In Proceedings of the 16th International Conference on Very Large Data Bases. 264–277.
– reference: Magnus Madsen, Jonathan Lindegaard Starup, and Ondřej Lhoták. 2022. Flix: A Meta Programming Language for Datalog. In Proceedings of the 4th International Workshop on the Resurgence of Datalog in Academia and Industry.
– ident: e_1_2_1_20_1
  doi: 10.1145/324133.324234
– volume-title: Hervé Gallaire and Jack Minker (Eds.)
  ident: e_1_2_1_34_1
– ident: e_1_2_1_16_1
  doi: 10.1145/3689754
– ident: e_1_2_1_23_1
  doi: 10.1109/69.43410
– ident: e_1_2_1_29_1
  doi: 10.1007/11814771_51
– ident: e_1_2_1_40_1
  doi: 10.1145/78969.78972
– ident: e_1_2_1_32_1
  doi: 10.1007/978-3-319-26529-2_25
– ident: e_1_2_1_8_1
  doi: 10.1145/3371090
– ident: e_1_2_1_30_1
  doi: 10.1016/s1571-0661(05)82542-3
– volume-title: Logic for Computer Science: Foundations of Automated Theorem Proving
  ident: e_1_2_1_35_1
– ident: e_1_2_1_57_1
  doi: 10.1145/1868294.1868314
– ident: e_1_2_1_59_1
  doi: 10.1145/3622840
– ident: e_1_2_1_31_1
  doi: 10.14778/3311880.3311886
– ident: e_1_2_1_3_1
  doi: 10.1109/FMCAD.2013.6679385
– volume-title: Scallop: From Probabilistic Deductive Databases to Scalable Differentiable Reasoning. In Advances in Neural Information Processing Systems. 25134–25145.
  year: 2021
  ident: e_1_2_1_41_1
– ident: e_1_2_1_13_1
  doi: 10.1016/0743-1066(91)90038-Q
– ident: e_1_2_1_25_1
  doi: 10.1007/978-3-540-24730-2_15
– ident: e_1_2_1_68_1
  doi: 10.1145/3243734.3243780
– ident: e_1_2_1_49_1
  doi: 10.1145/3591280
– ident: e_1_2_1_19_1
  doi: 10.1145/1167473.1167488
– ident: e_1_2_1_28_1
  doi: 10.1145/1995376.1995394
– volume-title: Proceedings of the 5th International Conference and Symposium on Logic Programming.
  year: 1988
  ident: e_1_2_1_36_1
– ident: e_1_2_1_73_1
– ident: e_1_2_1_12_1
– ident: e_1_2_1_26_1
  doi: 10.1109/99.660313
– volume-title: Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation. 209–224
  year: 2008
  ident: e_1_2_1_22_1
– volume-title: Relational Programming with Foundation Models. In AAAI Conference on Artificial Intelligence. 209–214
  year: 2024
  ident: e_1_2_1_48_1
– ident: e_1_2_1_65_1
  doi: 10.14778/3282495.3282500
– ident: e_1_2_1_56_1
  doi: 10.1016/b978-0-934613-40-8.50009-9
– volume-title: Proceedings of the Third Asian Symposium on Programming Languages and Systems. 97–118
  ident: e_1_2_1_70_1
– volume-title: Datalog Disassembly. In Proceedings of the 29th USENIX Security Symposium. 1075–1092
  ident: e_1_2_1_33_1
– ident: e_1_2_1_6_1
  doi: 10.1145/3088515.3088522
– ident: e_1_2_1_37_1
  doi: 10.1109/ICSE.2019.00120
– ident: e_1_2_1_52_1
  doi: 10.1145/2908080.2908096
– ident: e_1_2_1_10_1
  doi: 10.1007/978-1-4612-4980-1_17
– ident: e_1_2_1_7_1
  doi: 10.1016/B978-0-934613-40-8.50006-3
– volume-title: Differential Datalog. In Proceedings of the 3rd International Workshop on the Resurgence of Datalog in Academia and Industry. 56–67
  year: 2019
  ident: e_1_2_1_58_1
– ident: e_1_2_1_50_1
  doi: 10.1145/1142473.1142485
– ident: e_1_2_1_44_1
  doi: 10.1145/3293883.3295719
– ident: e_1_2_1_1_1
  doi: 10.1145/3632928
– volume-title: Proceedings of the 4th International Workshop on the Resurgence of Datalog in Academia and Industry.
  year: 2022
  ident: e_1_2_1_51_1
– ident: e_1_2_1_63_1
  doi: 10.1145/2882903.2915229
– ident: e_1_2_1_60_1
  doi: 10.1145/3497776.3517779
– ident: e_1_2_1_64_1
  doi: 10.1145/3485540
– ident: e_1_2_1_45_1
  doi: 10.1002/CPE.5643
– ident: e_1_2_1_18_1
  doi: 10.1145/1863543.1863560
– volume-title: 36th European Conference on Object-Oriented Programming. 7:1–7:28
  year: 2022
  ident: e_1_2_1_55_1
– ident: e_1_2_1_15_1
  doi: 10.1145/3428209
– ident: e_1_2_1_11_1
  doi: 10.1145/6012.15399
– ident: e_1_2_1_53_1
  doi: 10.1145/91556.91631
– ident: e_1_2_1_43_1
  doi: 10.1145/3303084.3309490
– ident: e_1_2_1_72_1
  doi: 10.1007/978-3-642-02658-4_60
– ident: e_1_2_1_17_1
  doi: 10.5281/zenodo.13372573
– ident: e_1_2_1_47_1
  doi: 10.1007/3-540-36388-2_6
– ident: e_1_2_1_5_1
  doi: 10.1007/978-3-642-24206-9_16
– ident: e_1_2_1_67_1
  doi: 10.1145/3453483.3454026
– volume-title: Proceedings of the 36th International Conference Logic Programming (Technical Communications).
  year: 2020
  ident: e_1_2_1_14_1
– ident: e_1_2_1_21_1
  doi: 10.1145/1639949.1640108
– ident: e_1_2_1_4_1
  doi: 10.1145/1755913.1755937
– ident: e_1_2_1_61_1
  doi: 10.1145/2892208.2892226
– ident: e_1_2_1_24_1
  doi: 10.1007/978-1-4684-3384-5_11
– ident: e_1_2_1_2_1
  doi: 10.1145/1251535.1251543
– ident: e_1_2_1_38_1
  doi: 10.1145/3276486
– ident: e_1_2_1_46_1
  doi: 10.1561/1900000073
– ident: e_1_2_1_69_1
  doi: 10.1016/0743-1066(89)90032-0
– ident: e_1_2_1_71_1
  doi: 10.1145/996841.996859
– ident: e_1_2_1_54_1
  doi: 10.5555/645916.671834
– ident: e_1_2_1_9_1
  doi: 10.1145/277651.277678
– ident: e_1_2_1_39_1
  doi: 10.1561/1900000017
– ident: e_1_2_1_27_1
  doi: 10.1007/978-3-540-78800-3_24
– ident: e_1_2_1_42_1
  doi: 10.1007/978-3-319-41540-6_23
– ident: e_1_2_1_66_1
  doi: 10.1145/3276509
– ident: e_1_2_1_62_1
  doi: 10.1109/ICDE.2013.6544832
SSID ssj0001934839
Score 2.291113
Snippet With its combination of Datalog, SMT solving, and functional programming, the language Formulog provides an appealing mix of features for implementing...
SourceID crossref
acm
SourceType Enrichment Source
Index Database
Publisher
StartPage 1219
SubjectTerms Automated static analysis
Computing methodologies
Constraint and logic languages
Shared memory algorithms
Software and its engineering
SubjectTermsDisplay Computing methodologies -- Shared memory algorithms
Software and its engineering -- Automated static analysis
Software and its engineering -- Constraint and logic languages
Title Making Formulog Fast: An Argument for Unconventional Datalog Evaluation
URI https://dl.acm.org/doi/10.1145/3689754
Volume 8
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
journalDatabaseRights – providerCode: PRVHPJ
  databaseName: ROAD: Directory of Open Access Scholarly Resources
  customDbUrl:
  eissn: 2475-1421
  dateEnd: 99991231
  omitProxy: false
  ssIdentifier: ssj0001934839
  issn: 2475-1421
  databaseCode: M~E
  dateStart: 20170101
  isFulltext: true
  titleUrlDefault: https://road.issn.org
  providerName: ISSN International Centre
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV3PT9swFLY64LDLGGwTZTD5MO2CsjWJk9jcIqDbgUKlwcStsh0bIdEMFYo4cdofjp9_JGmHtO2wS9Ratqv6fXp-ef78PYQ-aqKylIgi0iqrIhJLEgkt8kjRnAsuTcxupZR-HBcnJ_Tigo17vV_hLsz9dVHX9OGB3fxXU5s2Y2y4OvsP5m4mNQ3mszG6eRqzm-dfGX5k60vtDU0wOocyk0N-G9J_5exybg__gVt4Xi8wzg9dHmfvqJH_7sat42afs9SP8mAEpwye3DWF3wuJzzbtrqbCOFLrbUs-a4_7LdUn0Mq6tH3LMvAUYc8-6yYlEuJYca3vSkiRRTFxl58_q2favPOlHYydno6_H5dJx53GwZ8q_9Wpcv7u9gkoZKQ5ZYWTpF4U1l7a8BoaoruUnU38wBdoNSkyBr5x9NjJ1LGUUFuSrvkH7vY1jP3ix0JwI6ed4KYTpZy9Rq_86wUuHSw2UE_Vm2g9lO7A3pO_QV8dSnBACQaU7OOyxgEj2GAEL2IEe4zgFiNv0fnw6OzgW-RrakQcXrWjPKZVTARnUOtVZMmAchpnSsiEVFDHLMm52XEGIqVKpkRLK-CnOauEZnKgWfoOrdQ_a7WFcKFykhsPUOWcERCiVJowTWBWDjqVfbRplmRy41RTwiL30aewRBPpZeihGsr1ZMkafYSbjmGOpS7bf-7yHr1s8bmDVu5mc7WL1uT93dXt7IM19BPUAXPL
linkProvider ISSN International Centre
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Making+Formulog+Fast%3A+An+Argument+for+Unconventional+Datalog+Evaluation&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Bembenek%2C+Aaron&rft.au=Greenberg%2C+Michael&rft.au=Chong%2C+Stephen&rft.date=2024-10-08&rft.issn=2475-1421&rft.eissn=2475-1421&rft.volume=8&rft.issue=OOPSLA2&rft.spage=1219&rft.epage=1248&rft_id=info:doi/10.1145%2F3689754&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3689754
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon