2009
DOI: 10.1017/s0956796809007345
|View full text |Cite
|
Sign up to set email alerts
|

Algebra of programming in Agda: Dependent types for relational program derivation

Abstract: 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 (Algebra of Programming in Agda), to encode relational derivations in the dependently typed programming language Agda. A program is coupled with an algebraic derivation whos… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
27
0

Year Published

2011
2011
2023
2023

Publication Types

Select...
6
1

Relationship

1
6

Authors

Journals

citations
Cited by 30 publications
(27 citation statements)
references
References 33 publications
0
27
0
Order By: Relevance
“…The relational framework of this paper heavily borrows techniques from the AoPA library [18]. AoPA deals with non-dependently typed programs only, whereas to work with indexed datatypes we need to move to indexed families of relations; to work with the ornamental universe we parametrise the relational fold with a description, making it fully datatype-generic, whereas AoPA has only specialised versions for lists and binary trees; we defined min · Λ as a single operator (which happens to be the shrinking operator proposed by Mu and Oliveira [17]) to avoid the struggle with predicativity that AoPA had.…”
Section: Discussionmentioning
confidence: 99%
See 3 more Smart Citations
“…The relational framework of this paper heavily borrows techniques from the AoPA library [18]. AoPA deals with non-dependently typed programs only, whereas to work with indexed datatypes we need to move to indexed families of relations; to work with the ornamental universe we parametrise the relational fold with a description, making it fully datatype-generic, whereas AoPA has only specialised versions for lists and binary trees; we defined min · Λ as a single operator (which happens to be the shrinking operator proposed by Mu and Oliveira [17]) to avoid the struggle with predicativity that AoPA had.…”
Section: Discussionmentioning
confidence: 99%
“…As demonstrated by the AoPA library [18], they can be faithfully formalised with preorder reasoning combinators in Agda and used to discharge the fusion conditions of algOrn-fusion-⊆ and algOrn-fusion-⊇. Hence we get two conversions, one of type Vec A n → (n m) → BVec A m which relaxes a vector of length n to a bounded vector whose length is bounded above by some m that is at least n, and the other of type BVec A m → Σ [ n : Nat ] Vec A n × (n m) which converts a bounded vector whose length is at most m to a vector of length precisely n and guarantees that n is at most m.…”
Section: Relational Program Derivation In Agda and Relational Algebramentioning
confidence: 98%
See 2 more Smart Citations
“…Our work is much related to AoPA [16], a library to support encoding of relational derivations in the dependently typed programming language Agda. This follows the line of research for bridging the gap between dependent types and practical programming [17][18][19].…”
Section: Related Workmentioning
confidence: 99%