Relational algebraic ornaments

<p>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 <em>algebraic ornamentation</em> provides a meth...

Full description

Bibliographic Details
Main Authors: Ko, H, Gibbons, J
Format: Conference item
Published: ACM 2013
Description
Summary:<p>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 <em>algebraic ornamentation</em> provides a methodological advancement, by which the programmer can derive a datatype from a specification involving a fold, such that a program that constructs elements of that datatype would be correct by construction. It is thus an effective method that leads the programmer from a specification to a dependently typed program. We enhance the applicability of this method by generalising alge- braic ornamentation to a relational setting and bringing in relational algebraic methods, resulting in a hybrid approach that makes es- sential use of both dependently typed programming and <em>relational program derivation</em>. A dependently typed solution to the minimum coin change problem is presented as a demonstration of this hybrid approach. We also give a theoretically interesting “completeness theorem” of relational algebraic ornaments, which sheds some light on the expressive power of ornaments and inductive families.</p> <h3>Supplementary material</h3> <p>The Agda code can be found on <a href="https://github.com/josh-hs-ko/Thesis/tree/DTP13">GitHub</a>, as part of the ornament framework developed by the first author; the solution to the minimum coin change problem presented in the paper is in the file <a href="https://github.com/josh-hs-ko/Thesis/blob/DTP13/Examples/MinCoinChange.agda">MinCoinChange.agda</a>.</p> <p>The slides for the Dependently Typed Programming workshop are <a href='\"http://www.cs.ox.ac.uk/people/hsiang-shang.ko/algOrn/DTP.pdf\"'>here</a>.</p>