Reference. Seminaïve evaluation for a higher-order functional language
One of the workhorse techniques for implementing bottom-up Datalog engines is seminaïve evaluation. This optimization improves the performance of Datalog’s most distinctive feature: recursively defined predicates. These are computed iteratively, and under a naïve evaluation strategy, each iteration recomputes all previous values. Seminaïve evaluation computes a safe approximation of the difference between iterations. This can asymptotically improve the performance of Datalog queries. Seminaïve evaluation is defined partly as a program transformation and partly as a modified iteration strategy, and takes advantage of the first-order nature of Datalog code. This paper extends the seminaïve transformation to higher-order programs written in the Datafun language, which extends Datalog with features like first-class relations, higher-order functions, and datatypes like sum types.
Cite
Cites 28 works (2 here)
With notes (2)
Datafun: a functional Datalog arntzenius-2016-datafun
A judgmental reconstruction of modal logic pfenning-2001-a
External (26)
- Incremental lambda-Calculus in Cache-Transfer Style: Static Memoization by Program Transformation (2019)
- Deep Static Modeling of invokedynamic (2019)
- Fixing Incremental Computation: Derivatives of Fixpoints, and the Recursive Semantics of Datalog (2018)
- Static differentiation of monotone fixed points (unpublished note; in the published list only) (2017)
- Soufflé: On Synthesis of Program Analyzers (2016)
- From Datalog to flix: a declarative language for fixed points on lattices (2016)
- Design and Implementation of the LogicBlox System (2015)
- Pointer Analysis (2015)
- A theory of changes for higher-order languages (2014)
- Datomic: The fully transactional, cloud-ready, distributed database (2012)
- Consistency Analysis in Bloom: a CALM and Collected Approach (2011)
- SecPAL: Design and semantics of a decentralized authorization language (2010)
- Type inference for datalog with complex type hierarchies (2010)
- .QL: Object-Oriented Queries Made Easy (2007)
- Context-Sensitive Pointer Analysis using Binary Decision Diagrams (PhD thesis; author PDF only) (2007)
- Differential categories (2006)
- Cloning-based context-sensitive pointer alias analysis using binary decision diagrams (2004)
- The differential lambda-calculus (2003)
- Categorical and Kripke Semantics for Constructive S4 Modal Logic (2001)
- Complexity and expressive power of logic programming (2001)
- A mixed modal/linear lambda calculus with applications to bellantoni-cook safe recursion (1998)
- The parallel complexity of simple logic programs (1993)
- Comprehending monads (1992)
- What you always wanted to know about Datalog (and never dared to ask) (1989)
- Naive Evaluation of Recursively Defined Relations (1986)
- Magic sets and other strange ways to implement logic programs (extended abstract) (1985)