On the declarative semantics of deductive databases and logic programs
Foundations of deductive databases and logic programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Timed default concurrent constraint programming
Journal of Symbolic Computation - Special issue: executable temporal logics
Greedy algorithms in Datalog with choice and negation
JICSLP'98 Proceedings of the 1998 joint international conference and symposium on Logic programming
Distributed systems (2nd Ed.)
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
Principles of Database and Knowledge-Base Systems: Volume II: The New Technologies
Principles of Database and Knowledge-Base Systems: Volume II: The New Technologies
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs
The glue-nail deductive database system: design, implementation, and evaluation
The VLDB Journal — The International Journal on Very Large Data Bases - Prototypes of deductive database systems
IEEE Transactions on Knowledge and Data Engineering
DATALOG with Constraints: A Foundation for Trust Management Languages
PADL '03 Proceedings of the 5th International Symposium on Practical Aspects of Declarative Languages
An Operational Semantics of Starlog
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
On Active Deductive Databases: The Statelog Approach
ILPS '97 International Seminar on Logic Databases and the Meaning of Change, Transactions and Change in Logic Databases
SD3: A Trust Management System with Certified Evaluation
SP '01 Proceedings of the 2001 IEEE Symposium on Security and Privacy
Enhancing the expressive power of the U-Datalog language
Theory and Practice of Logic Programming
Context-sensitive program analysis as database queries
Proceedings of the twenty-fourth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
Declarative routing: extensible routing with declarative queries
Proceedings of the 2005 conference on Applications, technologies, architectures, and protocols for computer communications
Dyna: a declarative language for implementing dynamic programs
ACLdemo '04 Proceedings of the ACL 2004 on Interactive poster and demonstration sessions
Scaling games to epic proportions
Proceedings of the 2007 ACM SIGMOD international conference on Management of data
The design and implementation of a declarative sensor network system
Proceedings of the 5th international conference on Embedded networked sensor systems
Operational Semantics for Declarative Networking
PADL '09 Proceedings of the 11th International Symposium on Practical Aspects of Declarative Languages
Unified Declarative Platform for Secure Netwoked Information Systems
ICDE '09 Proceedings of the 2009 IEEE International Conference on Data Engineering
PADS: a policy architecture for distributed storage systems
NSDI'09 Proceedings of the 6th USENIX symposium on Networked systems design and implementation
Communications of the ACM - Scratch Programming for All
Boom analytics: exploring data-centric, declarative programming for the cloud
Proceedings of the 5th European conference on Computer systems
Declarative distributed computing
Correct Reasoning
Logic and lattices for distributed programming
Proceedings of the Third ACM Symposium on Cloud Computing
Datalog 2.0'12 Proceedings of the Second international conference on Datalog in Academia and Industry
Reasoning about knowledge in distributed systems using datalog
Datalog 2.0'12 Proceedings of the Second international conference on Datalog in Academia and Industry
Confluence analysis for distributed programs: a model-theoretic approach
Datalog 2.0'12 Proceedings of the Second international conference on Datalog in Academia and Industry
Knowlog: a declarative language for reasoning about knowledge in distributed systems
ER'12 Proceedings of the 31st international conference on Conceptual Modeling
Understanding specification languages through their model theory
Proceedings of the 17th Monterey conference on Large-Scale Complex IT Systems: development, operation and management
Proceedings of the 2013 International Workshop on Programming Models and Applications for Multicores and Manycores
Relational transducers for declarative networking
Journal of the ACM (JACM)
Collaborative data-driven workflows: think global, act local
Proceedings of the 32nd symposium on Principles of database systems
Declaratively processing provenance metadata
TaPP'13 Proceedings of the 5th USENIX conference on Theory and Practice of Provenance
Declaratively processing provenance metadata
Proceedings of the 5th USENIX Workshop on the Theory and Practice of Provenance
Large-scale computation not at the cost of expressiveness
HotOS'13 Proceedings of the 14th USENIX conference on Hot Topics in Operating Systems
Distributed state machines: a declarative framework for the management of distributed systems
Proceedings of the 8th International Conference on Network and Service Management
Proceedings of the 4th annual Symposium on Cloud Computing
Distributed socialite: a datalog-based language for large-scale graph analysis
Proceedings of the VLDB Endowment
Parallel Computing
Tierless programming and reasoning for software-defined networks
NSDI'14 Proceedings of the 11th USENIX Conference on Networked Systems Design and Implementation
Hi-index | 0.00 |
Recent research has explored using Datalog-based languages to express a distributed system as a set of logical invariants. Two properties of distributed systems proved difficult to model in Datalog. First, the state of any such system evolves with its execution. Second, deductions in these systems may be arbitrarily delayed, dropped, or reordered by the unreliable network links they must traverse. Previous efforts addressed the former by extending Datalog to include updates, key constraints, persistence and events, and the latter by assuming ordered and reliable delivery while ignoring delay. These details have a semantics outside Datalog, which increases the complexity of the language and its interpretation, and forces programmers to think operationally. We argue that the missing component from these previous languages is a notion of time. In this paper we present Dedalus, a foundation language for programming and reasoning about distributed systems. Dedalus reduces to a subset of Datalog with negation, aggregate functions, successor and choice, and adds an explicit notion of logical time to the language. We show that Dedalus provides a declarative foundation for the two signature features of distributed systems: mutable state, and asynchronous processing and communication. Given these two features, we address two important properties of programs in a domain-specific manner: a notion of safety appropriate to non-terminating computations, and stratified monotonic reasoning with negation over time. We also provide conservative syntactic checks for our temporal notions of safety and stratification. Our experience implementing full-featured systems in variants of Datalog suggests that Dedalus is well-suited to the specification of rich distributed services and protocols, and provides both cleaner semantics and richer tests of correctness.