-
Chapter and Conference Paper
Design Datalog Templates for Synthesizing Bidirectional Programs from Tabular Examples
In the database community, many synthesizers have been proposed to synthesize unidirectional programs (queries) from tabular examples, but it remains as a challenge to synthesize bidirectional programs (view upda...
-
Chapter and Conference Paper
A Lazy Desugaring System for Evaluating Programs with Sugars
Extending a programming language with syntactic sugars is common practice in language design. Given a core language, one can define a surface language on top of it with sugars. We propose a lazy desugaring sys...
-
Chapter and Conference Paper
An Efficient Composition of Bidirectional Programs by Memoization and Lazy Update
Bidirectional transformations (BX) are a solution to the view update problem and widely used for synchronizing data. The semantics and correctness of bidirectional programs have been investigated intensively d...
-
Chapter and Conference Paper
A Counterexample-Guided Debugger for Non-recursive Datalog
The Datalog language is used in many potential applications including database queries, program analysis, bidirectional transformations, and so forth. In practice, such a Datalog program is expected to be well...
-
Chapter and Conference Paper
A Clear Picture of Lens Laws
A lens is an optical device which refracts light. Properly adjusted, it can be used to project sharp images of objects onto a screen—a principle underlying photography as well as human vision. Striving for cla...
-
Chapter and Conference Paper
Validity Checking of Putback Transformations in Bidirectional Programming
A bidirectional transformation consists of pairs of transformations —a forward transformation get produces a target view from a source, while a putback transformation put puts back modifications on the view to th...
-
Chapter and Conference Paper
Marker-Directed Optimization of UnCAL Graph Transformations
Buneman et al. proposed a graph algebra called UnCAL (Unstructured CALculus) for compositional graph transformations based on structural recursion, and we have recently applied to model transformations. The co...
-
Chapter and Conference Paper
Generate, Test, and Aggregate
MapReduce, being inspired by the map and reduce primitives available in many functional languages, is the de facto standard for large scale data-intensive parallel programming. Although it has succeeded in pop...
-
Chapter and Conference Paper
Toward Bidirectionalization of ATL with GRoundTram
ATL is a language for describing model transformations currently in uni-direction. In our previous work we have shown that transformations of graph structures given in some form can be bidirectionalized and ha...
-
Chapter and Conference Paper
Program Calculation in Coq
Program calculation, being a programming technique that derives programs from specification by means of formula manipulation, is a challenging activity. It requires human insights and creativity, and needs sys...
-
Chapter and Conference Paper
Context-Preserving XQuery Fusion
XQuery is a DBPL for querying XML databases. The semantics of XQuery is context sensitive and requires preservation of document order. In this paper, we propose, as far as we are aware, the first XQuery fusion...
-
Chapter and Conference Paper
Gradual Refinement
Pattern matching is advantageous for understanding and reasoning about function definitions, but it tends to tightly couple the interface and implementation of a datatype. Significant effort has been invested ...
-
Chapter and Conference Paper
Generating Synchronization Engines between Running Systems and Their Model-Based Views
The key point to leverage model-based techniques on runtime system management is to ensure the correct synchronization between the running system and its model-based view. In this paper, we present a generativ...
-
Chapter and Conference Paper
A Grammar-Based Approach to Invertible Programs
Program inversion has many applications such as in the implementation of serialization/deserialization and in providing support for redo/undo, and has been studied by many researchers. However, little attentio...
-
Chapter and Conference Paper
Swap** Arguments and Results of Recursive Functions
Many useful calculation rules, such as fusion and tupling, rely on well-structured functions, especially in terms of inputs and outputs. For instance, fusion requires that well-produced outputs should be conne...
-
Chapter and Conference Paper
Maximum Marking Problems with Accumulative Weight Functions
We present a new derivation of efficient algorithms for a class of optimization problems called maximum marking problems. We extend the class of weight functions used in the specification to allow for weight f...
-
Chapter and Conference Paper
An Efficient Staging Algorithm for Binding-Time Analysis
Binding-Time Analysis (BTA) is one of the compile-time program analyses which is a general framework for program optimization and program generation [1]. The task of BTA is to divide a source program into two ...
-
Chapter and Conference Paper
PType System: A Featherweight Parallelizability Detector
Parallel programming is becoming an important cornerstone of general computing. In addition, type systems have significant impact on program analysis. In this paper, we demonstrate an automated type-based syst...
-
Chapter and Conference Paper
An Injective Language for Reversible Computation
Erasure of information incurs an increase in entropy and dissipates heat. Therefore, information-preserving computation is essential for constructing computers that use energy more effectively. A more recent m...
-
Chapter and Conference Paper
An Algebraic Approach to Bi-directional Updating
In many occasions would one encounter the task of maintaining the consistency of two pieces of structured data that are related by some transform — synchronising bookmarks in different web browsers, the source...