Algebraic effects, specification and refinement
Publication date
Authors
DOI
Document Type
Master Thesis
Metadata
Show full item recordCollections
License
CC-BY-NC-ND
Abstract
In the process of software engineering, we want to be sure that our code will function according to our requirements. The refinement calculus is a system that allows for mathematical correctness proofs, for imperative programs using a specific set of side effects. In the thesis, we explain how to use algebraic effects to add side effects to a purely functional program, and how to generalize concepts from the refinement calculus to develop and verify programs with algebraic effects. We work in the dependently typed programming language Agda, illustrating that this approach allows for formal verification of programs.
Keywords
program verification,semantics,predicate transformer,effect,refinement,program calculation,constructive mathematics,intuitionistic mathematics,type theory,formal verification,weakest precondition,dependent types,free monads,Agda,