Bring Your Own Data Structures to Datalog

The restricted logic programming language Datalog has become a popular implementation target for deductive-analytic workloads including social-media analytics and program analysis. Modern Datalog engines compile Datalog rules to joins over explicit representations of relations—often B-trees or hash...

Full description

Saved in:
Bibliographic Details
Published in:Proceedings of ACM on programming languages Vol. 7; no. OOPSLA2; pp. 1198 - 1223
Main Authors: Sahebolamri, Arash, Barrett, Langston, Moore, Scott, Micinski, Kristopher
Format: Journal Article
Language:English
Published: New York, NY, USA ACM 16.10.2023
Subjects:
ISSN:2475-1421, 2475-1421
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Abstract The restricted logic programming language Datalog has become a popular implementation target for deductive-analytic workloads including social-media analytics and program analysis. Modern Datalog engines compile Datalog rules to joins over explicit representations of relations—often B-trees or hash maps. While these modern engines have enabled high scalability in many application domains, they have a crucial weakness: achieving the desired algorithmic complexity may be impossible due to representation-imposed overhead of the engine’s data structures. In this paper, we present the "Bring Your Own Data Structures" (Byods) approach, in the form of a DSL embedded in Rust. Using Byods, an engineer writes logical rules which are implicitly parametric on the concrete data structure representation; our implementation provides an interface to enable "bringing their own" data structures to represent relations, which harmoniously interact with code generated by our compiler (implemented as Rust procedural macros). We formalize the semantics of Byods as an extension of Datalog’s; our formalization captures the key properties demanded of data structures compatible with Byods, including properties required for incrementalized (semi-naïve) evaluation. We detail many applications of the Byods approach, implementing analyses requiring specialized data structures for transitive and equivalence relations to scale, including an optimized version of the Rust borrow checker Polonius; highly-parallel PageRank made possible by lattices; and a large-scale analysis of LLVM utilizing index-sharing to scale. Our results show that Byods offers both improved algorithmic scalability (reduced time and/or space complexity) and runtimes competitive with state-of-the-art parallelizing Datalog solvers.
AbstractList The restricted logic programming language Datalog has become a popular implementation target for deductive-analytic workloads including social-media analytics and program analysis. Modern Datalog engines compile Datalog rules to joins over explicit representations of relations—often B-trees or hash maps. While these modern engines have enabled high scalability in many application domains, they have a crucial weakness: achieving the desired algorithmic complexity may be impossible due to representation-imposed overhead of the engine’s data structures. In this paper, we present the "Bring Your Own Data Structures" (Byods) approach, in the form of a DSL embedded in Rust. Using Byods, an engineer writes logical rules which are implicitly parametric on the concrete data structure representation; our implementation provides an interface to enable "bringing their own" data structures to represent relations, which harmoniously interact with code generated by our compiler (implemented as Rust procedural macros). We formalize the semantics of Byods as an extension of Datalog’s; our formalization captures the key properties demanded of data structures compatible with Byods, including properties required for incrementalized (semi-naïve) evaluation. We detail many applications of the Byods approach, implementing analyses requiring specialized data structures for transitive and equivalence relations to scale, including an optimized version of the Rust borrow checker Polonius; highly-parallel PageRank made possible by lattices; and a large-scale analysis of LLVM utilizing index-sharing to scale. Our results show that Byods offers both improved algorithmic scalability (reduced time and/or space complexity) and runtimes competitive with state-of-the-art parallelizing Datalog solvers.
ArticleNumber 264
Author Barrett, Langston
Moore, Scott
Micinski, Kristopher
Sahebolamri, Arash
Author_xml – sequence: 1
  givenname: Arash
  orcidid: 0000-0003-3657-093X
  surname: Sahebolamri
  fullname: Sahebolamri, Arash
  email: asahebol@syr.edu
  organization: Syracuse University, Syracuse, USA
– sequence: 2
  givenname: Langston
  orcidid: 0009-0005-0190-8912
  surname: Barrett
  fullname: Barrett, Langston
  email: langston@galois.com
  organization: Galois, Portland, USA
– sequence: 3
  givenname: Scott
  orcidid: 0009-0009-0719-1130
  surname: Moore
  fullname: Moore, Scott
  email: scott@galois.com
  organization: Galois, Portland, USA
– sequence: 4
  givenname: Kristopher
  orcidid: 0000-0002-8650-0991
  surname: Micinski
  fullname: Micinski, Kristopher
  email: kkmicins@syr.edu
  organization: Syracuse University, Syracuse, USA
BookMark eNptz01LAzEQBuAgFay1ePe0N_GwOpPNbpKj1k8o9KAePC2TbLastBtJsoj_3o9WEfE0w7wPA-8-G_W-d4wdIpwiivKsqDhXAnbYmAtZ5ig4jn7te2wa4zMAoC6EKvSYnVyErl9mT34I2eK1zy4pUXafwmDTEFzMkv86rfzygO22tIpuup0T9nh99TC7zeeLm7vZ-TwnLmXKlXWcG6cbgIYrsoIbROcQWkVOGlMaV5hKW604UisAgUypW3BVY2XVyGLC8s1fG3yMwbW17RKlzvcpULeqEerPqvW26oc__uNfQrem8PaPPNpIsusf9B2-A8vIWzc
CitedBy_id crossref_primary_10_1145_3729298
crossref_primary_10_1145_3632928
crossref_primary_10_1145_3689754
Cites_doi 10.1017/S1471068417000436
10.1145/3303084.3309490
10.1145/2692956.2663188
10.1145/1480881.1480915
10.1007/978-3-319-41540-6_23
10.1007/s00778-012-0299-1
10.1007/978-3-642-24206-9_14
10.1109/PACT.2019.00015
10.14778/2556549.2556572
10.14778/3282495.3282500
10.1145/3497776.3517779
10.1145/2908080.2908096
10.1145/3591239
10.1145/3453483.3454026
10.1145/237721.237727
10.1145/1640089.1640108
10.1145/2723372.2742796
10.1145/116873.116878
10.1145/321941.321942
10.2140/pjm.1955.5.285
10.1007/11575467_8
10.1145/2882903.2915229
10.1145/3428195
10.1145/364099.364331
10.1109/69.43410
10.1145/137097.137852
10.1145/16894.16859
10.1007/978-1-4612-4980-1_17
10.1002/cpe.5643
10.1109/CGO.2004.1281665
10.1145/2951913.2951948
10.1145/3428209
10.1145/3434304
10.1145/3371090
10.1145/3318464.3384677
ContentType Journal Article
Copyright Owner/Author
Copyright_xml – notice: Owner/Author
DBID AAYXX
CITATION
DOI 10.1145/3622840
DatabaseName CrossRef
DatabaseTitle CrossRef
DatabaseTitleList CrossRef

DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 2475-1421
EndPage 1223
ExternalDocumentID 10_1145_3622840
3622840
GrantInformation_xml – fundername: NSF
  grantid: CCF-2217037
  funderid: https://doi.org/10.13039/
– fundername: Defense Advanced Research Projects Agency
  grantid: N66001-21-C-402
  funderid: https://doi.org/10.13039/100000185
GroupedDBID AAKMM
AAYFX
ACM
ADPZR
AIKLT
ALMA_UNASSIGNED_HOLDINGS
GUFHI
LHSKQ
M~E
OK1
ROL
AAYXX
AEFXT
AEJOY
AKRVB
CITATION
ID FETCH-LOGICAL-a277t-8ce22be9d00d28ac42b11ee10f8ae7bb5be3b69c9821af4010ab59f0e6dc76d73
ISICitedReferencesCount 7
ISICitedReferencesURI http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=001087279100044&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
ISSN 2475-1421
IngestDate Sun Nov 09 14:46:52 EST 2025
Tue Nov 18 22:27:53 EST 2025
Fri Feb 21 01:29:13 EST 2025
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Issue OOPSLA2
Keywords Logic Programming
Datalog
Program Analysis
Static Analysis
Language English
License This work is licensed under a Creative Commons Attribution 4.0 International License.
LinkModel OpenURL
MergedId FETCHMERGED-LOGICAL-a277t-8ce22be9d00d28ac42b11ee10f8ae7bb5be3b69c9821af4010ab59f0e6dc76d73
ORCID 0009-0009-0719-1130
0000-0002-8650-0991
0000-0003-3657-093X
0009-0005-0190-8912
OpenAccessLink https://dl.acm.org/doi/10.1145/3622840
PageCount 26
ParticipantIDs crossref_citationtrail_10_1145_3622840
crossref_primary_10_1145_3622840
acm_primary_3622840
PublicationCentury 2000
PublicationDate 2023-10-16
PublicationDateYYYYMMDD 2023-10-16
PublicationDate_xml – month: 10
  year: 2023
  text: 2023-10-16
  day: 16
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 2023
Publisher ACM
Publisher_xml – name: ACM
References Molham Aref, Balder ten Cate, Todd J. Green, Benny Kimelfeld, Dan Olteanu, Emir Pasalic, Todd L. Veldhuizen, and Geoffrey Washburn. 2015. Design and Implementation of the LogicBlox System. In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data (SIGMOD ’15). Association for Computing Machinery, New York, NY, USA. 1371–1382. isbn:9781450327589 https://doi.org/10.1145/2723372.2742796 10.1145/2723372.2742796
Zvi Galil and Giuseppe F. Italiano. 1991. Data Structures and Algorithms for Disjoint Set Union Problems. ACM Comput. Surv., 23, 3 (1991), sep, 319–344. issn:0360-0300 https://doi.org/10.1145/116873.116878 10.1145/116873.116878
Herbert Jordan, Pavle Subotić, David Zhao, and Bernhard Scholz. 2022. Specializing parallel data structures for Datalog. Concurrency and Computation: Practice and Experience, 34, 2 (2022), e5643. https://doi.org/10.1002/cpe.5643 10.1002/cpe.5643
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 (SIGMOD ’16). Association for Computing Machinery, New York, NY, USA. 1135–1149. isbn:9781450335317 https://doi.org/10.1145/2882903.2915229 10.1145/2882903.2915229
Ross Tate, Michael Stepp, Zachary Tatlock, and Sorin Lerner. 2009. Equality Saturation: A New Approach to Optimization. In Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’09). Association for Computing Machinery, New York, NY, USA. 264–276. isbn:9781605583792 https://doi.org/10.1145/1480881.1480915 10.1145/1480881.1480915
André Pacak, Sebastian Erdweg, and Tamás Szabó. 2020. A Systematic Approach to Deriving Incremental Type Checkers. Proc. ACM Program. Lang., 4, OOPSLA (2020), Article 127, nov, 28 pages. https://doi.org/10.1145/3428195 10.1145/3428195
Bernard A. Galler and Michael J. Fisher. 1964. An Improved Equivalence Algorithm. Commun. ACM, 7, 5 (1964), may, 301–303. issn:0001-0782 https://doi.org/10.1145/364099.364331 10.1145/364099.364331
Harold N. Gabow. 1976. An Efficient Implementation of Edmonds’ Algorithm for Maximum Matching on Graphs. J. ACM, 23, 2 (1976), apr, 221–234. issn:0004-5411 https://doi.org/10.1145/321941.321942 10.1145/321941.321942
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), 1–31. https://doi.org/10.1145/3428209 10.1145/3428209
Herbert Jordan, Pavle Subotić, David Zhao, and Bernhard Scholz. 2019. Brie: A Specialized Trie for Concurrent Datalog. PMAM’19. Association for Computing Machinery, New York, NY, USA. 31–40. isbn:9781450362900 https://doi.org/10.1145/3303084.3309490 10.1145/3303084.3309490
Pavle Subotić, Herbert Jordan, Lijun Chang, Alan Fekete, and Bernhard Scholz. 2018. Automatic Index Selection for Large-scale Datalog Computation. Proc. VLDB Endow., 12, 2 (2018), Oct., 141–153. issn:2150-8097 https://doi.org/10.14778/3282495.3282500 10.14778/3282495.3282500
Alfred Tarski. 1955. A lattice-theoretical fixpoint theorem and its applications.
Jiacheng Wu, Jin Wang, and Carlo Zaniolo. 2022. Optimizing parallel recursive datalog evaluation on multicore machines. In Proceedings of the 2022 International Conference on Management of Data. 1433–1446.
Michael Arntzenius and Neelakantan R Krishnaswami. 2016. Datafun: a functional Datalog. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming. 214–227. https://doi.org/10.1145/2951913.2951948 10.1145/2951913.2951948
Kai Wang, Zhiqiang Zuo, John Thorpe, Tien Quang Nguyen, and Guoqing Harry Xu. 2018. RStream: Marrying Relational Algebra with Streaming for Efficient Graph Mining on a Single Machine. In Proceedings of the 13th USENIX Conference on Operating Systems Design and Implementation (OSDI’18). USENIX Association, USA. 763–782. isbn:9781931971478
Patrick Nappa, David Zhao, Pavle Subotić, and Bernhard Scholz. 2019. Fast parallel equivalence relations in a Datalog compiler. In 2019 28th International Conference on Parallel Architectures and Compilation Techniques (PACT). 82–96.
Rijnard van Tonder. 2021. Towards Fully Declarative Program Analysis via Source Code Transformation. arXiv preprint arXiv:2112.12398.
Martin Bravenboer and Yannis Smaragdakis. 2009. Strictly declarative specification of sophisticated points-to analyses. In Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications. 243–262.
Alexander Shkapsky, Mohan Yang, and Carlo Zaniolo. 2015. Optimizing recursive queries with monotonic aggregates in deals. In 2015 IEEE 31st International Conference on Data Engineering. 867–878.
Yannis Smaragdakis and Martin Bravenboer. 2011. Using Datalog for Fast and Easy Program Analysis. In Proceedings of the First International Conference on Datalog Reloaded (Datalog’10). Springer-Verlag, Berlin, Heidelberg. 245–251. isbn:978-3-642-24205-2 https://doi.org/10.1007/978-3-642-24206-9_14 10.1007/978-3-642-24206-9_14
Bjarne Steensgaard. 1996. Points-to analysis in almost linear time. In Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages. 32–41.
Nicholas D. Matsakis and Felix S. Klock. 2014. The Rust Language. Ada Lett., 34, 3 (2014), oct, 103–104. issn:1094-3641 https://doi.org/10.1145/2692956.2663188 10.1145/2692956.2663188
Michael Arntzenius and Neel Krishnaswami. 2019. Seminaïve Evaluation for a Higher-Order Functional Language. Proc. ACM Program. Lang., 4, POPL (2019), Article 22, dec, 28 pages. https://doi.org/10.1145/3371090 10.1145/3371090
François Bancilhon. 1986. Naive Evaluation of Recursively Defined Relations. Springer New York, New York, NY. 165–178. isbn:978-1-4612-4980-1 https://doi.org/10.1007/978-1-4612-4980-1_17 10.1007/978-1-4612-4980-1_17
Lawrence Page, Sergey Brin, Rajeev Motwani, and Terry Winograd. 1999. The PageRank citation ranking: Bringing order to the web.. Stanford InfoLab.
Jure Leskovec and Andrej Krevl. 2014. SNAP Datasets: Stanford Large Network Dataset Collection. http://snap.stanford.edu/data
Chris Lattner and Vikram Adve. 2004. LLVM: A compilation framework for lifelong program analysis & transformation. In International symposium on code generation and optimization, 2004. CGO 2004.. 75–86.
George Balatsouras and Yannis Smaragdakis. 2016. Structure-sensitive points-to analysis for C and C++. In Static Analysis: 23rd International Symposium, SAS 2016, Edinburgh, UK, September 8-10, 2016, Proceedings 23. 84–104.
Jin Wang, Guorui Xiao, Jiaqi Gu, Jiacheng Wu, and Carlo Zaniolo. 2020. RASQL: A Powerful Language and Its System for Big Data Applications. In Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data (SIGMOD ’20). Association for Computing Machinery, New York, NY, USA. 2673–2676. isbn:9781450367356 https://doi.org/10.1145/3318464.3384677 10.1145/3318464.3384677
Tamás Szabó, Sebastian Erdweg, and Gábor Bergmann. 2021. Incremental Whole-Program Analysis in Datalog with Lattices. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI 2021). Association for Computing Machinery, New York, NY, USA. 1–15. isbn:9781450383912 https://doi.org/10.1145/3453483.3454026 10.1145/3453483.3454026
Lars Ole Andersen. 1994. Program analysis and specialization for the C programming language. Ph. D. Dissertation. DIKU, University of Copenhagen.
Magnus Madsen, Ming-Ho Yee, and Ondřej Lhoták. 2016. From datalog to flix: A declarative language for fixed points on lattices. ACM SIGPLAN Notices, 51, 6 (2016), 194–208. https://doi.org/10.1145/2908080.2908096 10.1145/2908080.2908096
Leonid Ryzhyk and Mihai Budiu. 2019. Differential Datalog. In Proceedings of the 4th International Workshop on the Resurgence of Datalog in Academia and Industry (Datalog-2.0). Philadelpha, PA. 56–67.
Jiwon Seo, Jongsoo Park, Jaeho Shin, and Monica S. Lam. 2013. Distributed Socialite: A Datalog-Based Language for Large-Scale Graph Analysis. Proc. VLDB Endow., 6, 14 (2013), sep, 1906–1917. issn:2150-8097 https://doi.org/10.14778/2556549.2556572 10.14778/2556549.2556572
Yihong Zhang, Yisu Remy Wang, Oliver Flatt, David Cao, Philip Zucker, Eli Rosenthal, Zachary Tatlock, and Max Willsey. 2023. Better Together: Unifying Datalog and Equality Saturation. Proc. ACM Program. Lang., 7, PLDI (2023), Article 125, jun, 25 pages. https://doi.org/10.1145/3591239 10.1145/3591239
Todd L. Veldhuizen. 2014. Triejoin: A Simple, Worst-Case Optimal Join Algorithm. In International Conference on Database Theory.
Mirjana Mazuran, Edoardo Serra, and Carlo Zaniolo. 2013. Extending the Power of Datalog Recursion. 22, 4 (2013), aug, 471–493. issn:1066-8888 https://doi.org/10.1007/s00778-012-0299-1 10.1007/s00778-012-0299-1
LLVM-Authors. 2023. Opaque Pointers – LLVM documentation. https://llvm.org/docs/OpaquePointers.html
Francois Bancilhon and Raghu Ramakrishnan. 1986. An Amateur’s Introduction to Recursive Query Processing Strategies. In Proceedings of the 1986 ACM SIGMOD International Conference on Management of Data (SIGMOD ’86). Association for Computing Machinery, New York, NY, USA. 16–52. isbn:0897911911 https://doi.org/10.1145/16894.16859 10.1145/16894.16859
Max Willsey, Chandrakana Nandi, Yisu Remy Wang, Oliver Flatt, Zachary Tatlock, and Pavel Panchekha. 2021. Egg: Fast and Extensible Equality Saturation. Proc. ACM Program. Lang., 5, POPL (2021), Article 23, jan, 29 pages. https://doi.org/10.1145/3434304 10.1145/3434304
Tony Antoniadis, Konstantinos Triantafyllou, and Yannis Smaragdakis. 2017. Porting doop to soufflé: a tale of inter-engine portability for datalog-based analyses. In Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis. 25–30.
Jay McCarthy. 2022. Datalog: Deductive Database Programming. https://docs.racket-lang.org/datalog/ Accessed 04-13-2023
Nuno Lopes, Nikolaj Bjørner, N
Wu Jiacheng (e_1_2_1_49_1) 2022
Veldhuizen Todd L. (e_1_2_1_43_1) 2014
e_1_2_1_20_1
e_1_2_1_41_1
Ryzhyk Leonid (e_1_2_1_31_1) 2019
e_1_2_1_24_1
e_1_2_1_22_1
e_1_2_1_28_1
e_1_2_1_47_1
Balatsouras George (e_1_2_1_6_1) 2016
Andersen Lars Ole (e_1_2_1_1_1)
e_1_2_1_8_1
e_1_2_1_12_1
e_1_2_1_50_1
e_1_2_1_4_1
e_1_2_1_10_1
e_1_2_1_33_1
e_1_2_1_52_1
e_1_2_1_16_1
e_1_2_1_39_1
e_1_2_1_14_1
e_1_2_1_37_1
e_1_2_1_18_1
Wang Kai (e_1_2_1_45_1) 2018
e_1_2_1_42_1
e_1_2_1_40_1
Antoniadis Tony (e_1_2_1_2_1) 2017
e_1_2_1_23_1
e_1_2_1_44_1
e_1_2_1_27_1
e_1_2_1_25_1
e_1_2_1_48_1
McCarthy Jay (e_1_2_1_26_1) 2022
e_1_2_1_29_1
Shkapsky Alexander (e_1_2_1_35_1) 2015
Weiss Aaron (e_1_2_1_46_1) 2019
e_1_2_1_7_1
e_1_2_1_30_1
e_1_2_1_5_1
e_1_2_1_3_1
e_1_2_1_13_1
e_1_2_1_34_1
e_1_2_1_51_1
e_1_2_1_11_1
e_1_2_1_32_1
e_1_2_1_17_1
e_1_2_1_38_1
e_1_2_1_15_1
e_1_2_1_36_1
e_1_2_1_9_1
e_1_2_1_19_1
References_xml – reference: Zvi Galil and Giuseppe F. Italiano. 1991. Data Structures and Algorithms for Disjoint Set Union Problems. ACM Comput. Surv., 23, 3 (1991), sep, 319–344. issn:0360-0300 https://doi.org/10.1145/116873.116878 10.1145/116873.116878
– reference: Alexander Shkapsky, Mohan Yang, and Carlo Zaniolo. 2015. Optimizing recursive queries with monotonic aggregates in deals. In 2015 IEEE 31st International Conference on Data Engineering. 867–878.
– reference: Michael Arntzenius and Neel Krishnaswami. 2019. Seminaïve Evaluation for a Higher-Order Functional Language. Proc. ACM Program. Lang., 4, POPL (2019), Article 22, dec, 28 pages. https://doi.org/10.1145/3371090 10.1145/3371090
– reference: Herbert Jordan, Pavle Subotić, David Zhao, and Bernhard Scholz. 2019. Brie: A Specialized Trie for Concurrent Datalog. PMAM’19. Association for Computing Machinery, New York, NY, USA. 31–40. isbn:9781450362900 https://doi.org/10.1145/3303084.3309490 10.1145/3303084.3309490
– 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), 1–31. https://doi.org/10.1145/3428209 10.1145/3428209
– 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 (SIGMOD ’16). Association for Computing Machinery, New York, NY, USA. 1135–1149. isbn:9781450335317 https://doi.org/10.1145/2882903.2915229 10.1145/2882903.2915229
– reference: Leonid Ryzhyk and Mihai Budiu. 2019. Differential Datalog. In Proceedings of the 4th International Workshop on the Resurgence of Datalog in Academia and Industry (Datalog-2.0). Philadelpha, PA. 56–67.
– reference: Max Willsey, Chandrakana Nandi, Yisu Remy Wang, Oliver Flatt, Zachary Tatlock, and Pavel Panchekha. 2021. Egg: Fast and Extensible Equality Saturation. Proc. ACM Program. Lang., 5, POPL (2021), Article 23, jan, 29 pages. https://doi.org/10.1145/3434304 10.1145/3434304
– reference: François Bancilhon. 1986. Naive Evaluation of Recursively Defined Relations. Springer New York, New York, NY. 165–178. isbn:978-1-4612-4980-1 https://doi.org/10.1007/978-1-4612-4980-1_17 10.1007/978-1-4612-4980-1_17
– reference: Ross Tate, Michael Stepp, Zachary Tatlock, and Sorin Lerner. 2009. Equality Saturation: A New Approach to Optimization. In Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’09). Association for Computing Machinery, New York, NY, USA. 264–276. isbn:9781605583792 https://doi.org/10.1145/1480881.1480915 10.1145/1480881.1480915
– reference: Jin Wang, Guorui Xiao, Jiaqi Gu, Jiacheng Wu, and Carlo Zaniolo. 2020. RASQL: A Powerful Language and Its System for Big Data Applications. In Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data (SIGMOD ’20). Association for Computing Machinery, New York, NY, USA. 2673–2676. isbn:9781450367356 https://doi.org/10.1145/3318464.3384677 10.1145/3318464.3384677
– reference: Eric Zhang. 2023. Datalog compiler embedded in Rust as a procedural macro. https://github.com/ekzhang/crepe
– 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. https://doi.org/10.1109/69.43410 10.1109/69.43410
– reference: Carlo Zaniolo, Mohan Yang, Ariyam Das, Alexander Shkapsky, Tyson Condie, and Matteo Interlandi. 2017. Fixpoint semantics and optimization of recursive datalog programs with aggregates. Theory and Practice of Logic Programming, 17, 5-6 (2017), 1048–1065.
– reference: Todd L. Veldhuizen. 2014. Triejoin: A Simple, Worst-Case Optimal Join Algorithm. In International Conference on Database Theory.
– reference: Pavle Subotić, Herbert Jordan, Lijun Chang, Alan Fekete, and Bernhard Scholz. 2018. Automatic Index Selection for Large-scale Datalog Computation. Proc. VLDB Endow., 12, 2 (2018), Oct., 141–153. issn:2150-8097 https://doi.org/10.14778/3282495.3282500 10.14778/3282495.3282500
– reference: Bernard A. Galler and Michael J. Fisher. 1964. An Improved Equivalence Algorithm. Commun. ACM, 7, 5 (1964), may, 301–303. issn:0001-0782 https://doi.org/10.1145/364099.364331 10.1145/364099.364331
– 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: Tony Antoniadis, Konstantinos Triantafyllou, and Yannis Smaragdakis. 2017. Porting doop to soufflé: a tale of inter-engine portability for datalog-based analyses. In Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis. 25–30.
– reference: Molham Aref, Balder ten Cate, Todd J. Green, Benny Kimelfeld, Dan Olteanu, Emir Pasalic, Todd L. Veldhuizen, and Geoffrey Washburn. 2015. Design and Implementation of the LogicBlox System. In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data (SIGMOD ’15). Association for Computing Machinery, New York, NY, USA. 1371–1382. isbn:9781450327589 https://doi.org/10.1145/2723372.2742796 10.1145/2723372.2742796
– reference: Jiwon Seo, Jongsoo Park, Jaeho Shin, and Monica S. Lam. 2013. Distributed Socialite: A Datalog-Based Language for Large-Scale Graph Analysis. Proc. VLDB Endow., 6, 14 (2013), sep, 1906–1917. issn:2150-8097 https://doi.org/10.14778/2556549.2556572 10.14778/2556549.2556572
– reference: Kai Wang, Zhiqiang Zuo, John Thorpe, Tien Quang Nguyen, and Guoqing Harry Xu. 2018. RStream: Marrying Relational Algebra with Streaming for Efficient Graph Mining on a Single Machine. In Proceedings of the 13th USENIX Conference on Operating Systems Design and Implementation (OSDI’18). USENIX Association, USA. 763–782. isbn:9781931971478
– reference: Michael Arntzenius and Neelakantan R Krishnaswami. 2016. Datafun: a functional Datalog. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming. 214–227. https://doi.org/10.1145/2951913.2951948 10.1145/2951913.2951948
– reference: Kenneth A. Ross and Yehoshua Sagiv. 1992. Monotonic Aggregation in Deductive Databases. In Proceedings of the Eleventh ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems (PODS ’92). Association for Computing Machinery, New York, NY, USA. 114–126. isbn:0897915194 https://doi.org/10.1145/137097.137852 10.1145/137097.137852
– reference: Herbert Jordan, Pavle Subotić, David Zhao, and Bernhard Scholz. 2022. Specializing parallel data structures for Datalog. Concurrency and Computation: Practice and Experience, 34, 2 (2022), e5643. https://doi.org/10.1002/cpe.5643 10.1002/cpe.5643
– reference: Lawrence Page, Sergey Brin, Rajeev Motwani, and Terry Winograd. 1999. The PageRank citation ranking: Bringing order to the web.. Stanford InfoLab.
– reference: John Whaley, Dzintars Avots, Michael Carbin, and Monica S Lam. 2005. Using Datalog with binary decision diagrams for program analysis. In Asian Symposium on Programming Languages and Systems. 97–118.
– reference: Herbert Jordan, Bernhard Scholz, and Pavle Subotić. 2016. Soufflé: On Synthesis of Program Analyzers. In Computer Aided Verification, Swarat Chaudhuri and Azadeh Farzan (Eds.). Springer International Publishing, Cham. 422–430. isbn:978-3-319-41540-6 https://doi.org/10.1007/978-3-319-41540-6_23 10.1007/978-3-319-41540-6_23
– reference: LLVM-Authors. 2023. Opaque Pointers – LLVM documentation. https://llvm.org/docs/OpaquePointers.html
– reference: Jure Leskovec and Andrej Krevl. 2014. SNAP Datasets: Stanford Large Network Dataset Collection. http://snap.stanford.edu/data
– reference: Aaron Weiss, Olek Gierczak, Daniel Patterson, Nicholas D Matsakis, and Amal Ahmed. 2019. Oxide: The essence of rust. arXiv preprint arXiv:1903.00982, https://doi.org/10.48550/arXiv.1903.00982
– reference: André Pacak, Sebastian Erdweg, and Tamás Szabó. 2020. A Systematic Approach to Deriving Incremental Type Checkers. Proc. ACM Program. Lang., 4, OOPSLA (2020), Article 127, nov, 28 pages. https://doi.org/10.1145/3428195 10.1145/3428195
– reference: Chris Lattner and Vikram Adve. 2004. LLVM: A compilation framework for lifelong program analysis & transformation. In International symposium on code generation and optimization, 2004. CGO 2004.. 75–86.
– reference: Harold N. Gabow. 1976. An Efficient Implementation of Edmonds’ Algorithm for Maximum Matching on Graphs. J. ACM, 23, 2 (1976), apr, 221–234. issn:0004-5411 https://doi.org/10.1145/321941.321942 10.1145/321941.321942
– reference: Patrick Nappa, David Zhao, Pavle Subotić, and Bernhard Scholz. 2019. Fast parallel equivalence relations in a Datalog compiler. In 2019 28th International Conference on Parallel Architectures and Compilation Techniques (PACT). 82–96.
– reference: Martin Bravenboer and Yannis Smaragdakis. 2009. Strictly declarative specification of sophisticated points-to analyses. In Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications. 243–262.
– reference: Tamás Szabó, Sebastian Erdweg, and Gábor Bergmann. 2021. Incremental Whole-Program Analysis in Datalog with Lattices. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI 2021). Association for Computing Machinery, New York, NY, USA. 1–15. isbn:9781450383912 https://doi.org/10.1145/3453483.3454026 10.1145/3453483.3454026
– reference: Nicholas Matsakis and RustDevelopers. 2023. Rust-Lang/polonius: Defines the Rust borrow checker. https://github.com/rust-lang/polonius
– reference: Jiacheng Wu, Jin Wang, and Carlo Zaniolo. 2022. Optimizing parallel recursive datalog evaluation on multicore machines. In Proceedings of the 2022 International Conference on Management of Data. 1433–1446.
– reference: George Balatsouras and Yannis Smaragdakis. 2016. Structure-sensitive points-to analysis for C and C++. In Static Analysis: 23rd International Symposium, SAS 2016, Edinburgh, UK, September 8-10, 2016, Proceedings 23. 84–104.
– reference: Yihong Zhang, Yisu Remy Wang, Oliver Flatt, David Cao, Philip Zucker, Eli Rosenthal, Zachary Tatlock, and Max Willsey. 2023. Better Together: Unifying Datalog and Equality Saturation. Proc. ACM Program. Lang., 7, PLDI (2023), Article 125, jun, 25 pages. https://doi.org/10.1145/3591239 10.1145/3591239
– reference: Magnus Madsen, Ming-Ho Yee, and Ondřej Lhoták. 2016. From datalog to flix: A declarative language for fixed points on lattices. ACM SIGPLAN Notices, 51, 6 (2016), 194–208. https://doi.org/10.1145/2908080.2908096 10.1145/2908080.2908096
– reference: Yannis Smaragdakis and Martin Bravenboer. 2011. Using Datalog for Fast and Easy Program Analysis. In Proceedings of the First International Conference on Datalog Reloaded (Datalog’10). Springer-Verlag, Berlin, Heidelberg. 245–251. isbn:978-3-642-24205-2 https://doi.org/10.1007/978-3-642-24206-9_14 10.1007/978-3-642-24206-9_14
– reference: Lars Ole Andersen. 1994. Program analysis and specialization for the C programming language. Ph. D. Dissertation. DIKU, University of Copenhagen.
– reference: Jay McCarthy. 2022. Datalog: Deductive Database Programming. https://docs.racket-lang.org/datalog/ Accessed 04-13-2023
– reference: Alfred Tarski. 1955. A lattice-theoretical fixpoint theorem and its applications.
– reference: Bjarne Steensgaard. 1996. Points-to analysis in almost linear time. In Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages. 32–41.
– reference: Francois Bancilhon and Raghu Ramakrishnan. 1986. An Amateur’s Introduction to Recursive Query Processing Strategies. In Proceedings of the 1986 ACM SIGMOD International Conference on Management of Data (SIGMOD ’86). Association for Computing Machinery, New York, NY, USA. 16–52. isbn:0897911911 https://doi.org/10.1145/16894.16859 10.1145/16894.16859
– reference: Rijnard van Tonder. 2021. Towards Fully Declarative Program Analysis via Source Code Transformation. arXiv preprint arXiv:2112.12398.
– reference: Mirjana Mazuran, Edoardo Serra, and Carlo Zaniolo. 2013. Extending the Power of Datalog Recursion. 22, 4 (2013), aug, 471–493. issn:1066-8888 https://doi.org/10.1007/s00778-012-0299-1 10.1007/s00778-012-0299-1
– reference: Nuno Lopes, Nikolaj Bjørner, Nick McKeown, Andrey Rybalchenko, Dan Talayco, and George Varghese. 2016. Automatically verifying reachability and well-formedness in P4 Networks. Technical Report, Tech. Rep.
– reference: Nicholas D. Matsakis and Felix S. Klock. 2014. The Rust Language. Ada Lett., 34, 3 (2014), oct, 103–104. issn:1094-3641 https://doi.org/10.1145/2692956.2663188 10.1145/2692956.2663188
– volume-title: 2015 IEEE 31st International Conference on Data Engineering. 867–878
  year: 2015
  ident: e_1_2_1_35_1
– volume-title: Oxide: The essence of rust. arXiv preprint arXiv:1903.00982, https://doi.org/10.48550/arXiv.1903.00982
  year: 2019
  ident: e_1_2_1_46_1
– ident: e_1_2_1_50_1
  doi: 10.1017/S1471068417000436
– volume-title: Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis. 25–30
  year: 2017
  ident: e_1_2_1_2_1
– ident: e_1_2_1_16_1
  doi: 10.1145/3303084.3309490
– ident: e_1_2_1_24_1
  doi: 10.1145/2692956.2663188
– ident: e_1_2_1_41_1
  doi: 10.1145/1480881.1480915
– ident: e_1_2_1_15_1
  doi: 10.1007/978-3-319-41540-6_23
– ident: e_1_2_1_25_1
  doi: 10.1007/s00778-012-0299-1
– ident: e_1_2_1_36_1
  doi: 10.1007/978-3-642-24206-9_14
– ident: e_1_2_1_51_1
– ident: e_1_2_1_19_1
– ident: e_1_2_1_27_1
  doi: 10.1109/PACT.2019.00015
– ident: e_1_2_1_20_1
– ident: e_1_2_1_33_1
  doi: 10.14778/2556549.2556572
– volume-title: Static Analysis: 23rd International Symposium, SAS 2016, Edinburgh, UK, September 8-10, 2016, Proceedings 23
  year: 2016
  ident: e_1_2_1_6_1
– ident: e_1_2_1_38_1
  doi: 10.14778/3282495.3282500
– ident: e_1_2_1_32_1
  doi: 10.1145/3497776.3517779
– ident: e_1_2_1_22_1
  doi: 10.1145/2908080.2908096
– ident: e_1_2_1_42_1
– volume-title: Program analysis and specialization for the C programming language. Ph. D. Dissertation. DIKU
  ident: e_1_2_1_1_1
– volume-title: Proceedings of the 13th USENIX Conference on Operating Systems Design and Implementation (OSDI’18)
  year: 2018
  ident: e_1_2_1_45_1
– ident: e_1_2_1_52_1
  doi: 10.1145/3591239
– ident: e_1_2_1_39_1
  doi: 10.1145/3453483.3454026
– ident: e_1_2_1_37_1
  doi: 10.1145/237721.237727
– volume-title: Proceedings of the 2022 International Conference on Management of Data. 1433–1446
  year: 2022
  ident: e_1_2_1_49_1
– ident: e_1_2_1_10_1
  doi: 10.1145/1640089.1640108
– ident: e_1_2_1_3_1
  doi: 10.1145/2723372.2742796
– ident: e_1_2_1_13_1
  doi: 10.1145/116873.116878
– ident: e_1_2_1_12_1
  doi: 10.1145/321941.321942
– volume-title: Differential Datalog. In Proceedings of the 4th International Workshop on the Resurgence of Datalog in Academia and Industry (Datalog-2.0)
  year: 2019
  ident: e_1_2_1_31_1
– ident: e_1_2_1_40_1
  doi: 10.2140/pjm.1955.5.285
– ident: e_1_2_1_47_1
  doi: 10.1007/11575467_8
– ident: e_1_2_1_34_1
  doi: 10.1145/2882903.2915229
– ident: e_1_2_1_28_1
  doi: 10.1145/3428195
– ident: e_1_2_1_23_1
– ident: e_1_2_1_29_1
– ident: e_1_2_1_14_1
  doi: 10.1145/364099.364331
– ident: e_1_2_1_11_1
  doi: 10.1109/69.43410
– ident: e_1_2_1_30_1
  doi: 10.1145/137097.137852
– ident: e_1_2_1_8_1
  doi: 10.1145/16894.16859
– ident: e_1_2_1_7_1
  doi: 10.1007/978-1-4612-4980-1_17
– ident: e_1_2_1_17_1
  doi: 10.1002/cpe.5643
– volume-title: Worst-Case Optimal Join Algorithm. In International Conference on Database Theory.
  year: 2014
  ident: e_1_2_1_43_1
– ident: e_1_2_1_18_1
  doi: 10.1109/CGO.2004.1281665
– ident: e_1_2_1_5_1
  doi: 10.1145/2951913.2951948
– volume-title: Datalog: Deductive Database Programming. https://docs.racket-lang.org/datalog/ Accessed 04-13-2023
  year: 2022
  ident: e_1_2_1_26_1
– ident: e_1_2_1_9_1
  doi: 10.1145/3428209
– ident: e_1_2_1_48_1
  doi: 10.1145/3434304
– ident: e_1_2_1_4_1
  doi: 10.1145/3371090
– ident: e_1_2_1_44_1
  doi: 10.1145/3318464.3384677
SSID ssj0001934839
Score 2.3053792
Snippet The restricted logic programming language Datalog has become a popular implementation target for deductive-analytic workloads including social-media analytics...
SourceID crossref
acm
SourceType Enrichment Source
Index Database
Publisher
StartPage 1198
SubjectTerms Constraint and logic programming
Domain specific languages
Software and its engineering
Theory of computation
SubjectTermsDisplay Software and its engineering -- Domain specific languages
Theory of computation -- Constraint and logic programming
Title Bring Your Own Data Structures to Datalog
URI https://dl.acm.org/doi/10.1145/3622840
Volume 7
WOSCitedRecordID wos001087279100044&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
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/eLvHCXMwtV3NT9swFLc2xmGXwdgmGDD5ME2apojEcWL7WD6mSSu0UhniVtmOI5AgRW03OPG38_wRJwIO22GXqHJdR_XPfu_5-ffeQ-izyVNDVQXHkoKqhDLDE57TKpGiguOGyZV0aRfPhuzkhJ-fi3Hg6S5cOQHWNPzuTtz8V6ihDcC2obP_AHccFBrgM4AOT4Adnn8F_L5j1MEunn8b3TYA61Lau-ff7q7A5XM49C6bvl06jnrMUTsGB8f2FiGQt67tgK1jM9rgE3kBsgoWlI9VH8zlIrqW9zsC8BB-Zw3MiOwsMHsnNitEbLUX_KGE9s-Y7qDvkiCO3OYjJsMiCjR3J8YIZUWSUR8H3cpc1ltao9F4MhyQnhTNMl-ZOmjkjPiQ5KfSntrEGKCCQcemnUKLNMPwzUv0irBCWMLf8X3PAydyCuahj6S2Y-2F_tZQ0dc9Q6VncZyuozfhqIAHHuK36IVpNtBaW4YDB6n8Dn11iGOLOAbEsYUXd4jj5QwHxN-jX9-PTg9-JKECRiIJY8uEa0OIMqJK04pwqSlRsIFMltZcGqZUoWA3lUILTjJZw1E5laoQdWrKSrOyYvkHtNLMGrOJMNXCpHUhWVYoaljNq7KkXJdSSpNLJrfQBvzp6Y3PcTINU7GFvrSTMNUhabytXXI19QHtRdcRx47tGI-6fHz2DdvodbeEdtAKzI7ZRav6z_JyMf_kEHsAcJRXow
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=Bring+Your+Own+Data+Structures+to+Datalog&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Sahebolamri%2C+Arash&rft.au=Barrett%2C+Langston&rft.au=Moore%2C+Scott&rft.au=Micinski%2C+Kristopher&rft.date=2023-10-16&rft.pub=ACM&rft.eissn=2475-1421&rft.volume=7&rft.issue=OOPSLA2&rft.spage=1198&rft.epage=1223&rft_id=info:doi/10.1145%2F3622840&rft.externalDocID=3622840
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