Blog

Proving the Church-Rosser Theorem Using a Locally Nameless Representation

November 21, 2011
Around 2 years ago, for an earlier project of mine (which has not seen its light yet!) in which I had to build a language with variables and prove its properties, I surveyed a number of ways to handle binders. For some background, people have noticed that, when proving properties about a language with bound... [1 comment...].

Calculating Programs from Galois Connections

December 10, 2010
One is often amazed that, once two functions are identified as a Galois connection, a long list of nice and often useful properties follow from one concise, elegant defining equation. But how does one construct a program from a specification given as a Galois connection? ... [14 comments...].

Evaluating Simple Polynomials

July 12, 2010
I had a chance to show the students, in 25 minutes, what functional program calculation is about. The student have just been exposed to functional programming a week ago in a three-hour course, and I have talked to them about maximum segment sum way too many times. ... [11 comments...].

Sum of Squares of Differences

July 11, 2010
Given an array of integers having at least two elements, compute the sum of squares of the difference between all pairs of elements. It is not hard to quickly write up a O(N²) program using nested loops, which, I have to confess, is what I would do before reading Kaldewaij’s book and realised that it... [2 comments...].

An Exercise Utilising Galois Connections

May 6, 2010
In the recent work of Sharon and me on maximally dense segments we needed quite a number of functions to be monotonic, idempotent, etc. It only occurred to me after submitting the paper: could they be defined as Galois connections? ... [no comments...].

[All blog posts...]

Software

  • Fully Polynomial-Time Approximation by Thinning: Code accompanying a forthcoming paper of Yu-Han Lyu, Akimasa Morihata, and me: Constructing Datatype-Generic Fully Polynomial-Time Approximation Schemes Using Generalised Thinning.
  • Maximally Dense Segments — Code and Proof: Code and proof accompanying our forthcoming paper Functional Pearl: Maximally Dense Segments.
  • AoPA — Algebra of Programming in Agda: The AoPA library allows one to encode Algebra of Programming style program derivation, both functional and relational, in Agda, accompanying the paper Algebra of Programming Using Dependent Types (MPC 2008) developed in co-operation with Hsiang-Shang Ko and Patrik Jansson.
  • Push: Improving Heap Residency for Lazy Stream Processing by Concurrency: Prototype implementation of a language Push, accompanying our recently submitted paper. The prototype is implemented and prepared by Ta-Chung Tsai.While studying XML stream processing, we noticed that programmers need concurrency to save space, especially in a lazy language. We propose the idea of pushing datatypes — when a pushing closure is demanded, all expressions referring
  • Maximum Segment Sum and Density with Bounded Lengths: It may be surprising that variations of the maximum segment sum (MSS) problem, a textbook example for the squiggolists, are still active topics for algorithm designers. These literate Haskell scripts presents a program solving two recently studied variations: computing the maximum sum of segments not longer than an upper-bound, and the maximum density (average) of

Teaching

Academic Activities

Editorship: Programme Committee Chair: Workshop Organisation: Programme Committee Member: Summerschool Organisation: Professional Membership:
Research Projects:
  • 2011.08.01 - 2012.07.31: 以依值型別與對話型別確保並行程式之正確性. NSC100-2221-E-001-003.
  • 2008.08.01 - 2011.10.31: 程式之模組性與擴充性:驗證方法與工具-總計畫. NSC97-2221-E-001-003-MY3.
  • 2008.08.01 - 2011.07.31: 程式之模組性與擴充性:驗證方法與工具-子計畫二:模組化、可擴充之依賴形態程式設計典範. NSC97-2221-E-001-005-MY3.
  • 2008.08.01 - 2011.07.31: 程式之模組性與擴充性:驗證方法與工具-子計畫ㄧ:ML程式語言的模組化驗證. NSC97-2221-E-001-004-MY3.
  • 2007.08.01 - 2008.07.31: 一個有反函數功能的函數程式語言. NSC96-2221-E-001-013.

Colleagues

Research assistants: Previous research assistants: