2019
DOI: 10.1145/3341707
|View full text |Cite
|
Sign up to set email alerts
|

A predicate transformer semantics for effects (functional pearl)

Abstract: Reasoning about programs that use effects can be much harder than reasoning about their pure counterparts. This paper presents a predicate transformer semantics for a variety of effects, including exceptions, state, non-determinism, and general recursion. The predicate transformer semantics gives rise to a refinement relation that can be used to relate a program to its specification, or even calculate effectful programs that are correct by construction.

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

1
10
0

Year Published

2019
2019
2021
2021

Publication Types

Select...
4
3
1

Relationship

2
6

Authors

Journals

citations
Cited by 18 publications
(11 citation statements)
references
References 35 publications
1
10
0
Order By: Relevance
“…This paper builds upon our previous results [32] by demonstrating their use in non-trivial development.…”
Section: Open Issuessupporting
confidence: 61%
See 1 more Smart Citation
“…This paper builds upon our previous results [32] by demonstrating their use in non-trivial development.…”
Section: Open Issuessupporting
confidence: 61%
“…In this paper, we explore a novel approach, drawing inspiration from recent work on algebraic effects [3,35,20]. We demonstrate how to reason about all parsers uniformly using predicate transformers [32]. We extend our previous work that uses predicate transformer semantics to reason about a single effect, to handle the combinations of effects used by parsers.…”
Section: Introductionmentioning
confidence: 99%
“…Our optimistic and pessimistic specifications are examples of predicate transformer semantics. They date back to Dijkstra [1975], forming the basis of much work on the verification of effectful programs in type theory [Nanevski et al 2008;Swamy et al 2013;Swierstra 2009;Swierstra and Baanen 2019]. Our predicate transformer semantics are two conventional effect observations [Maillard et al 2019] from the clairvoyance monad-a variant of the powerset monad-to the specification monads respectively for angelic and demonic nondeterminism.…”
Section: Computation Cost and Lazinessmentioning
confidence: 99%
“…We then define a PRSA on lists of a type that can itself be split-i.e., interleavings with an additional constructor divide for making ends meet. For SCtx, we obtain: Expressions are not interpreted to plain values, but to command trees [18,36] with values at the leaves. Outgoing commands may contain channel endpoint references, and must therefore be separated from their continuation.…”
Section: Stage I: Interpreting the Expression Languagementioning
confidence: 99%