#### Filter Results:

- Full text PDF available (11)

#### Publication Year

2008

2017

- This year (3)
- Last five years (10)

#### Publication Type

#### Co-author

#### Publication Venue

#### Key Phrases

Learn More

- Shin-Cheng Mu, Hsiang-Shang Ko, Patrik Jansson
- J. Funct. Program.
- 2009

Relational program derivation is the technique of stepwise refining a relational specification to a program by algebraic rules. The program thus obtained is correct by construction. Meanwhile, dependent type theory is rich enough to express various correctness properties to be verified by the type checker. We have developed a library, AoPA, to encode… (More)

- Shin-Cheng Mu, Hsiang-Shang Ko, Patrik Jansson
- MPC
- 2008

Dependent type theory is rich enough to express that a program satisfies an input/output relational specification, but it could be hard to construct the proof term. On the other hand, squiggolists know very well how to show that one relation is included in another by algebraic reasoning. We demonstrate how to encode functional and relational derivations in… (More)

- Hsiang-Shang Ko, Jeremy Gibbons
- WGP@ICFP
- 2011

Dependently typed programmers are encouraged to use inductive families to integrate constraints with data construction. Different constraints are used in different contexts, leading to different versions of datatypes for the same data structure. Modular implementation of common operations for these structurally similar datatypes has been a longstanding… (More)

- Zirun Zhu, Hsiang-Shang Ko, Pedro Martins, João Saraiva, Zhenjiang Hu
- Bx@STAF
- 2015

Language designers usually need to implement parsers and printers. Despite being two related programs, in practice they are designed and implemented separately. This approach has an obvious disadvantage: as a language evolves, both its parser and printer need to be separately revised and kept synchronised. Such tasks are routine but complicated and… (More)

- Hsiang-Shang Ko, Tao Zan, Zhenjiang Hu
- PEPM
- 2016

Putback-based bidirectional programming allows the programmer to write only one putback transformation, from which the unique corresponding forward transformation is derived for free. The logic of a putback transformation is more sophisticated than that of a forward transformation and does not always give rise to well-behaved bidirectional programs; this… (More)

- Hsiang-Shang Ko, Jeremy Gibbons
- DTP@ICFP
- 2013

Dependently typed programming is hard, because ideally dependently typed programs should share structure with their correctness proofs, but there are very few guidelines on how one can arrive at such integrated programs. McBride's <i>algebraic ornamentation</i> provides a methodological advancement, by which the programmer can derive a datatype from a… (More)

- Yongzhe Zhang, Hsiang-Shang Ko, Zhenjiang Hu
- ArXiv
- 2017

Pregel is a popular parallel computing model for dealing with large-scale graphs. However, it can be tricky to implement graph algorithms correctly and efficiently in Pregel's vertex-centric model, as programmers need to carefully restructure an algorithm in terms of supersteps and message passing, which are low-level and detached from the algorithm… (More)

Dependently typed programming uses precise variants of data structures to ensure program correctness in an economical way, but designing reusable libraries for all possible variants of data structures is a difficult problem. The authors addressed the problem by extending McBride's ornaments to a framework of ornaments and refinements to support a modular… (More)

- Hsiang-Shang Ko
- 2011

In his seminal book A Discipline of Programming [3], one of the concluding remarks made by Dijkstra was: [.. .] that it does not suffice to design a mechanism of which we hope that it will meet its requirements, but that we must design it in such a form that we can convince ourselves — and anyone else for that matter — that it will, indeed, meet its… (More)

- Tao Zan, Li Liu, Hsiang-Shang Ko, Zhenjiang Hu
- Bx@ETAPS
- 2016

In work on relational databases, the view-update problem is about how to translate update operations on the view table to corresponding update operations on the source table properly. It is a problem that the translation policies are not unique in many situations. Relational lenses try to solve this problem by providing a list of combinators that let the… (More)