Results 21  30
of
38
M.: A GrammarBased Approach to Invertible Programs
, 2010
"... Abstract. 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 attention has been paid to two problems: how to characterize programs that are easy or h ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
(Show Context)
Abstract. 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 attention has been paid to two problems: how to characterize programs that are easy or hard to invert and whether, for each class of programs, efficient inverses can be obtained. In this paper, we propose an inversion framework that we call grammarbased inversion, where a program is associated with an unambiguous grammar describing the range of the program. The complexity of the grammar indicates how hard it is to invert the program, while the complexity is related to how efficient an inverse can be obtained. 1
The expression lemma ⋆
"... Abstract. Algebraic data types and catamorphisms (folds) play a central role in functional programming as they allow programmers to define recursive data structures and operations on them uniformly by structural recursion. Likewise, in objectoriented (OO) programming, recursive hierarchies of objec ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
Abstract. Algebraic data types and catamorphisms (folds) play a central role in functional programming as they allow programmers to define recursive data structures and operations on them uniformly by structural recursion. Likewise, in objectoriented (OO) programming, recursive hierarchies of object types with virtual methods play a central role for the same reason. There is a semantical correspondence between these two situations which we reveal and formalize categorically. To this end, we assume a coalgebraic model of OO programming with functional objects. The development may be helpful in deriving refactorings that turn sufficiently disciplined functional programs into OO programs of a designated shape and vice versa. Key words: expression lemma, expression problem, functional object, catamorphism, fold, the composite design pattern, program calculation, distributive law, free monad, cofree comonad. 1
A TypeBased Approach to Parallelization
 National University of Singapore
, 2003
"... Parallel programs can be synthesized from sequential functional programs via a technique known as context preservation [6]. This technique has significantly broadened the set of sequential programs eligible for parallelization. However, the ability to automatically detect functions which admit conte ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Parallel programs can be synthesized from sequential functional programs via a technique known as context preservation [6]. This technique has significantly broadened the set of sequential programs eligible for parallelization. However, the ability to automatically detect functions which admit contextpreservation property has not been investigated. In this paper, we propose a typebased approach to automatically detect a class of functions with contextpreservation property. In essence, our type system aims to detect an extendedring property of the subject program, from which context preservation is guaranteed. Through this type system, a sequential program can be automatically transformed to fit into a skeletal form, which can then be parallelized.
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

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
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.
A Type System for Parallelization
"... 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 typebased system that soundly synthesizes parallel programs from sequential functional programs. Our t ..."
Abstract
 Add to MetaCart
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 typebased system that soundly synthesizes parallel programs from sequential functional programs. Our type inference system discovers the parallelizability property of a sequential program in a modular fashion, by exploring a ring structure among the program's operators. It handles selfrecursive functions with accumulating parameters, as well as a class of nonlinear mutualrecursive functions. We automatically generates parallel code in a mutumorphic form  a succint model for parallel computation. Transforming into
Hiroshi Unno
"... We introduce higherorder, multiparameter, tree transducers (HMTTs, for short), which are kinds of higherorder tree transducers that take input trees and output a (possibly infinite) tree. We study the problem of checking whether the tree generated by a given HMTT conforms to a given output speci ..."
Abstract
 Add to MetaCart
(Show Context)
We introduce higherorder, multiparameter, tree transducers (HMTTs, for short), which are kinds of higherorder tree transducers that take input trees and output a (possibly infinite) tree. We study the problem of checking whether the tree generated by a given HMTT conforms to a given output specification, provided that the input trees conform to input specifications (where both input/output specifications are regular tree languages). HMTTs subsume higherorder recursion schemes and ordinary tree transducers, so that their verification has a number of potential applications to verification of functional programs using recursive data structures, including resource usage verification, string analysis, and exact typechecking of XMLprocessing programs. We propose a sound but incomplete verification algorithm for the HMTT verification problem: the algorithm reduces the verification problem to a modelchecking problem for higherorder recursion schemes extended with finite data domains, and then uses (an extension of) Kobayashi’s algorithm for modelchecking recursion schemes. While the algorithm is incomplete (indeed, as we show in the paper, the verification problem is undecidable in general), it is sound and complete for a subclass of HMTTs called linear HMTTs. We have applied our HMTT verification algorithm to various program verification problems and obtained promising results.
unknown title
"... ABSTRACT Parallel programs can be synthesized from sequential functional programs via a technique known as context preservation[6]. This technique has significantly broadened the set of sequential programs eligible for parallelization. However, the ability to automatically detect functions which adm ..."
Abstract
 Add to MetaCart
(Show Context)
ABSTRACT Parallel programs can be synthesized from sequential functional programs via a technique known as context preservation[6]. This technique has significantly broadened the set of sequential programs eligible for parallelization. However, the ability to automatically detect functions which admit contextpreservation property has not been investigated. In this paper, we propose a typebased approach to automatically detect a class of functions with contextpreservation property. In essence, our type system aims to detect an extendedring property of the subject program, from which context preservation is guaranteed. Through this type system, a sequential program can be automatically transformed to fit into a skeletal form, which can then be parallelized. In contrast to the usual type system that are constructed from the evaluation rules of the underlying language, our type system is constructed from a set of metarules that are used to transform programs into skeletal forms suitable for parallelization. 1. INTRODUCTION Systematic parallelization of sequential programs remains a major challenge in parallel computing. Particularly challenging are programs which make use of distributive and associative properties in order to restructure into divideandconquer style parallelism.
Sliced bananas on opaque data ⋆ The expression lemma
"... Abstract. Algebraic data types and catamorphisms (folds) play a central role in functional programming as they allow programmers to define recursive data structures and operations on them uniformly by structural recursion. Likewise, in objectoriented (OO) programming, recursive hierarchies of objec ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. Algebraic data types and catamorphisms (folds) play a central role in functional programming as they allow programmers to define recursive data structures and operations on them uniformly by structural recursion. Likewise, in objectoriented (OO) programming, recursive hierarchies of object types with virtual methods play a central role for the same reason. There is a semantical correspondence between these two situations which we reveal and formalize categorically. To this end, we assume a coalgebraic model of OO programming with functional objects. In practical terms, the development prepares for refactorings that turn sufficiently disciplined functional folds into OO programs of a designated shape (and v.v.). Key words: expression lemma, expression problem, functional object, catamorphism, fold, composite, program calculation, distributive law, free monad, cofree comonad. 1
B[count++] = A[i];
"... / * copy all bigger elements from A[1..n] into B[] */ count = 0; for (i=0; i<n; i++) { sumAfter = 0; for (j=i+1; j<n; j++) { sumAfter + = A[j]; if (A[i]> sumAfter) ..."
Abstract
 Add to MetaCart
(Show Context)
/ * copy all bigger elements from A[1..n] into B[] */ count = 0; for (i=0; i<n; i++) { sumAfter = 0; for (j=i+1; j<n; j++) { sumAfter + = A[j]; if (A[i]> sumAfter)