My main interest includes programming languages and functional programming, especially algebraic and relational approach to program derivation. More specific research topics
Program derivation. The art of deriving a program from its specification. A problem specification, written as a relation, is subsequently refined in many step into a functional program. The program thus constructed is therefore correct by construction. I am also interested in derivation of procedural programs basing on the weakest-recondition calculus.
Program inversion. Many problems can be specified as the inverse of some well-known function. The converse-of-afunction theorem, originally proposed by Oege, describes how to construct the inverse of a function as a fold. We need more experience to deal with the calculations involved and are keen to see more of its applications. We are also seeking possibility to exploit program inversion techniques for XML editing and processing.
Bi-directional updating. Consider this scenario: some source data, usually a tree, a list, or other data structure, is transformed to a view by a function and displayed to the user, and the user is allowed to edit and alter the view. The task is to reflect the changes on the view back to the source data. In my previous work in University of Tokyo, we developed a programming language, based on injective functions, to ease the task of bi-directional updating.
Dependent Types. Modern programming languages deploy expressive type systems to guarantee compilerverifiable properties. There has been a trend to explore the expressiveness of dependent types, which opens a whole new world of type-level programming techniques. I am interested to know how to use dependent types in practical programming languages.