Proceedings of the 18th International Symposium on Principles and Practice of Declarative Programming 2016
DOI: 10.1145/2967973.2968610
|View full text |Cite
|
Sign up to set email alerts
|

Demand-driven incremental object queries

Abstract: Object queries are essential in information seeking and decision making in vast areas of applications. However, a query may involve complex conditions on objects and sets, which can be arbitrarily nested and aliased. The objects and sets involved as well as the demand-the given parameter values of interest-can change arbitrarily. How to implement object queries efficiently under all possible updates, and furthermore to provide complexity guarantees?This paper describes an automatic method. The method allows po… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
5
0

Year Published

2016
2016
2022
2022

Publication Types

Select...
3
2
1

Relationship

2
4

Authors

Journals

citations
Cited by 10 publications
(5 citation statements)
references
References 54 publications
0
5
0
Order By: Relevance
“…To run a task mutually exclusively, the process sends a request and adds it to q (lines 6-8), waits for (i) own request (t,self) to be before each other request (t2,p2) in q and (ii) having received an ack with a time t2 later than t from each process p2 in s (lines 9-10) before doing the task in critical section (line 11), and then removes the request from q and sends a release (lines 12-13). When receiving a request or release, it sends back an ack and adds to or removes from q (lines [14][15][16][17][18][19]. The two conditions in await are key to the algorithm to ensure mutual exclusion, while the rest does basic sending and receiving of messages and bookkeeping of q.…”
Section: Creating Variants Using Incrementalizationmentioning
confidence: 99%
See 1 more Smart Citation
“…To run a task mutually exclusively, the process sends a request and adds it to q (lines 6-8), waits for (i) own request (t,self) to be before each other request (t2,p2) in q and (ii) having received an ack with a time t2 later than t from each process p2 in s (lines 9-10) before doing the task in critical section (line 11), and then removes the request from q and sends a release (lines 12-13). When receiving a request or release, it sends back an ack and adds to or removes from q (lines [14][15][16][17][18][19]. The two conditions in await are key to the algorithm to ensure mutual exclusion, while the rest does basic sending and receiving of messages and bookkeeping of q.…”
Section: Creating Variants Using Incrementalizationmentioning
confidence: 99%
“…A more general automated approach is to generate them by starting with a high-level algorithm (or specification) and applying different optimizations (algorithm improvements, automated using program analysis and transformation). In particular, we have used a method based on systematic incrementalization [27,22,19,18], which transforms programs to maintain high-level invariants incrementally, and related optimizations to generate multiple variants of many sequential algorithms and distributed algorithms [26,25,24]. Algorithm diversity and implementation-level diversity introduce different kinds of variation and together offer more diversity than either alone.…”
Section: Introductionmentioning
confidence: 99%
“…IncOQ [30] improves over OSQ by tracking dependencies statically and incorporating demand. However, the same limitations apply: only set comprehensions and only in-memory.…”
Section: Icls For Information Systemsmentioning
confidence: 99%
“…ICQ [59] handles queries in object-oriented languages like Java by converting the problem to relational logic and statically constructing a graph of relationships between collections. While capable of incrementalizing queries containing arbitrary filter predicates, it does not know the semantics of those predicates.…”
Section: Incremental Computationmentioning
confidence: 99%