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...
Uloženo v:
| Vydáno v: | Proceedings of ACM on programming languages Ročník 8; číslo OOPSLA2; s. 1219 - 1248 |
|---|---|
| Hlavní autoři: | , , |
| 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 |