Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456 Abstracts
S-C. Mu, Z. Hu and M. Takeichi, An algebraic approach to bidirectional updating. Submitted to APLAS 2004, [PDF]
In many occasions would one encounter the task of maintaining
the consistency of two pieces of structured data related
by some transform --- synchronise bookmarks in different 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, inspired by previous work on
program inversion. 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.
Z. Hu, S-C. Mu and M. Takeichi, A programmable editor for developing structured documents based on bidirectional transformations. To appear in PEPM 2004. [PDF]
This paper presents a novel editor supporting interactive
refinement in the development of structured documents. The user
performs a sequence of editing operations on the document view,
and our system automatically derives an efficient and reliable
document source and a transformation that produces the document view.
The editor is unique in its programmability, in the sense that
transformation can be obtained through editing operations. The
important techniques behind this editor are the utilization of the
view-updating idea developed in the database community, and a
bidirectional transformation language that concisely describes
the relationship between the document source and its view,
as well as data dependency in the view.
S-C. Mu, Z. Hu and M. Takeichi, An Injective language for reversible computation. To appear in Mathematics of Programming Construction 2004. [PDF]
Erasure of information incurs an increase in entropy and dissipatse
heat. Therefore, information-preserving computation is essential
for constructing computers that use energy more effectively.
A more recent motivation to understand reversible
transformations also comes from the design of editors
where editing actions on a view need to be reflected back to
the source data.
In this paper we present a point-free functional language,
with a relational semantics,
in which the programmer is allowed to define injective
functions only. Non-injective functions can be transformed into
a program returning a history. The language is presented with many examples,
and its relationship with Bennett's reversible Turing machine
is explained.
The language serves as a good model for program
construction and reasoning for reversible computers, and hopefully
for modelling bi-directional updating in an editor.
S-C. Mu and R. S. Bird, Theory and applications of inverting functions as folds. Science of Computer Programming Vol. 51 Special Issue for Mathematics of Program Construction 2002, pp. 87-116, 2003. [GZipped Postscript]
This paper is devoted to the proof, applications, and
generalisation of a theorem, due to Bird and de Moor, that
gave conditions under which a total function can be expressed
as a relational fold. The theorem is illustrated with three
problems, all dealing with constructing trees with various
properties. It is then generalised to give conditions under
which the inverse of a partial function can be expressed as
a relational hylomorphism. Its proof makes use of Doornbos
and Backhouse's theory on well-foundedness and reductivity.
Possible applications of the generalised theorem is discussed.
R. S. Bird and S-C. Mu, Inverting the Burrows-Wheeler transform. To appear in Journal of Functional Programming Special Issue on Functional Pearls, 2003 [GZipped Postscript]
The Burrows-Wheeler Transform is a string-to-string transform
which, when used as a preprocessing phase in compression,
significantly enhances the compression rate. However, it often
puzzles people how the inverse transform can be carried out.
In this pearl we to exploit simple equational reasoning to
derive the inverse of the Burrows-Wheeler transform from its
specification. We also outline how to derive the inverse of
two more general versions of the transform, one proposed by
Schindler and the other by Chapin and Tate.
S-C. Mu and R. S. Bird, Rebuilding a tree from its traversals: a case study of
program inversion. In The First Asian Symposium on Programming Languages and Systems, LNCS 2895, pp. 265-282, Bejing, 2003. [GZipped Postscript]
Given the inorder and preorder traversal
of a binary tree whose labels are all distinct, one can reconstruct
the tree. This article examines two existing algorithms
for rebuilding the tree in a functional framework, using existing
theory on function inversion. We also present a new, although
complicated, algorithm by trying another possibility not
explored before.
S-C. Mu, A Calculational Approach to Program Inversion. D.Phil Thesis. Oxford University Computing Laboratory.
March 2003 [GZipped Postscript]
Many problems in computation can be specified in terms of
computing the inverse of an easily constructed function.
However, studies on how to derive an algorithm from
a problem specification involving inverse functions
are relatively rare.
The aim of this thesis is to demonstrate, in an example-driven
style, a number of techniques to do the job.
The techniques are based on the framework of relational,
algebraic program derivation.
Simple program inversion can be performed by just taking
the converse of the program, sometimes known as to ``run
a program backwards''. The approach, however, does not
match the pattern of some more advanced algorithms. Previous
results, due to Bird and de Moor, gave conditions under which
the inverse of a total function can be written as a fold. In this
thesis, a generalised theorem stating the conditions for
the inverse of a partial function to be a hylomorphism is
presented and proved. The theorem is applied to many examples,
including the classical problem of rebuilding a binary tree
from its preorder and inorder traversals.
This thesis also investigates into the interplay between the
above theorem and previous results on optimisation problems.
A greedy linear-time algorithm is derived for one of
its instances --- to build a tree of minimum height. The necessary
monotonicity condition, though looking intuitive, is difficult to
establish. For general optimal bracketing problems, however, the
thinning strategy gives an exponential-time algorithm. The reason and
possible improvements are discussed in a comparison with the
traditional dynamic programming approach.
The greedy theorem is also generalised to a generic form allowing
mutually defined algebras. The generalised theorem is applied to the
optimal marking problem defined on non-polynomial based datatypes.
This approach delivers polynomial-time algorithms without
the need to convert the inputs to polynomial based datatypes,
which is sometimes not convenient to do.
The many techniques are applied to solve the Countdown problem,
a problem derived from the popular television program of the same
name. Different strategies toward deriving an efficient algorithm
are experimented and compared.
Finally, it is shown how to derive from its specification
the inverse of the Burrows-Wheeler transform, a string-to-string
transform useful in compression. Not only do we identify the
key property why the inverse algorithm works, but,
as a bonus, we also outline how two generalisations of
the transform may be derived.
S-C. Mu and R. S. Bird, Inverting functions as folds. In Sixth International Conference on Mathematics of Program Construction, Dagstuhl, Germany, July 2002 [GZipped Postscript]
This paper is devoted to the proof and applications of a theorem
giving conditions under which the inverse of a partial function can be
expressed as a relational hylomorphism. The theorem is a generalisation
of a previous result, due to Bird and de Moor, that gave conditions
under which a total function can be expressed a relational fold.
The theorem is illustrated with three problems, all dealing with
constructing trees with various properties.
S-C. Mu and R. S. Bird, Quantum functional programming. In 2nd Asian Workshop on Programming Languages and Systems , KAIST, Dajeaon, Korea, December 17-18, 2001. [GZipped Postscript]
It has been shown that
non-determinism, both angelic and demonic, can be encoded in a
functional language in different representation of sets. In this
paper we see quantum programming as a special kind of non-deterministic
programming where negative probabilities are allowed. The point
is demonstrated by coding two simple quantum algorithms in Haskell.
A monadic style of quantum programming is also proposed. Programs
are written in an imperative style but the programmer
is encouraged to think in terms of values rather than quantum registers.