Results 1 
6 of
6
An Algebraic Approach to BiDirectional Updating
 In ASIAN Symposium on Programming Languages and Systems (APLAS
, 2004
"... 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 di#erent web browsers, the source and the view in an editor, or views in databases, to name a few. This paper proposes ..."
Abstract

Cited by 21 (7 self)
 Add to MetaCart
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 di#erent web browsers, the source and the view in an editor, or views in databases, to name a few. This paper proposes a formal model of such tasks, basing on a programming language allowing injective functions only. The programmer designs the transformation as if she is writing a functional program, while the synchronisation behaviour is automatically derived by algebraic reasoning. The main advantage is being able to deal with duplication and structural changes. The result will be integrated to our structure XML editor in the Programmable Structured Document project.
There and back again: arrows for invertible programming
 In Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
, 2006
"... Invertible programming occurs in the area of data conversion where it is required that the conversion in one direction is the inverse of the other. For that purpose, we introduce bidirectional arrows (biarrows). The biarrow class is an extension of Haskell’s arrow class with an extra combinator tha ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
Invertible programming occurs in the area of data conversion where it is required that the conversion in one direction is the inverse of the other. For that purpose, we introduce bidirectional arrows (biarrows). The biarrow class is an extension of Haskell’s arrow class with an extra combinator that changes the direction of computation. The advantage of the use of biarrows for invertible programming is the preservation of invertibility properties using the biarrow combinators. Programming with biarrows in a polytypic or generic way exploits this the most. Besides bidirectional polytypic examples, including invertible serialization, we give the definition of a monadic biarrow transformer, which we use to construct a bidirectional parser/pretty printer.
Automatic Inversion Generates DivideandConquer Parallel Programs
"... Divideandconquer algorithms are suitable for modern parallel machines, tending to have large amounts of inherent parallelism and working well with caches and deep memory hierarchies. Among others, list homomorphisms are a class of recursive functions on lists, which match very well with the divide ..."
Abstract

Cited by 5 (3 self)
 Add to MetaCart
Divideandconquer algorithms are suitable for modern parallel machines, tending to have large amounts of inherent parallelism and working well with caches and deep memory hierarchies. Among others, list homomorphisms are a class of recursive functions on lists, which match very well with the divideandconquer paradigm. However, direct programming with list homomorphisms is a challenge for many programmers. In this paper, we propose and implement a novel system that can automatically derive costoptimal list homomorphisms from a pair of sequential programs, based on the third homomorphism theorem. Our idea is to reduce extraction of list homomorphisms to derivation of weak right inverses. We show that a weak right inverse always exists and can be automatically generated from a wide class of sequential programs. We demonstrate our system with several nontrivial examples, including the maximum prefix sum problem, the prefix sum computation, the maximum segment sum problem, and the lineofsight problem. The experimental results show practical efficiency of our automatic parallelization algorithm and good speedups of the generated parallel programs.
Automatic Partial Inversion of Inductively Sequential Functions ⋆
"... Abstract. We introduce a new partial inversion technique for firstorder functional programs. Our technique is simple, fully automatic, and (when it succeeds) returns a program that belongs to the same class of the original program, namely the class of inductively sequential programs (i.e., typical ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Abstract. We introduce a new partial inversion technique for firstorder functional programs. Our technique is simple, fully automatic, and (when it succeeds) returns a program that belongs to the same class of the original program, namely the class of inductively sequential programs (i.e., typical functional programs). To ease the definition, our method proceeds in a stepwise manner: normalization (introduction of let expressions), proper inversion, and removal of let expressions. Furthermore, it can easily be implemented. Therefore, it forms an appropriate basis for developing a practically applicable transformation tool. Preliminary experiments with a prototype implementation of the partial inverter demonstrates the usefulness and viability of our approach. 1
TypeBased Specialization . . .
, 2009
"... It is often convenient to write a function and apply it to a specific input. However, a program developed in this way may be inefficient to evaluate and difficult to analyze due to its generality. In this paper, we propose a technique of new specialization for a class of XML transformations, in whic ..."
Abstract
 Add to MetaCart
It is often convenient to write a function and apply it to a specific input. However, a program developed in this way may be inefficient to evaluate and difficult to analyze due to its generality. In this paper, we propose a technique of new specialization for a class of XML transformations, in which no output of a function can be decomposed or traversed. Our specialization is typebased in the sense that it uses the structures of input types; types are described by regular hedge grammars and subtyping is defined settheoretically. The specialization always terminates, resulting in a program where every function is fully specialized and only accepts its rigid input. We present several interesting applications of our new specialization, especially for injectivity analysis.
PolynomialTime Inverse Computation for Accumulative Functions with Multiple Data Traversals
"... Inverse computation has many applications such as serialization/deserialization, providing support for undo, and testcase generation for software testing. In this paper, we propose an inverse computation method that always terminates for a class of functions known as parameterlinear macro tree tra ..."
Abstract
 Add to MetaCart
Inverse computation has many applications such as serialization/deserialization, providing support for undo, and testcase generation for software testing. In this paper, we propose an inverse computation method that always terminates for a class of functions known as parameterlinear macro tree transducers, which involve multiple data traversals and the use of accumulations. The key to our method is the observation that a function in the class can be regarded as a nonaccumulative contextgenerating transformation without multiple data traversals. Accordingly, we demonstrate that it is easy to achieve terminating inverse computation for the class by contextwise memoization of the inverse computation results. We also show that when we use a tree automaton to express the inverse computation results, the inverse computation runs in time polynomial to the size of the original output and the textual program size.