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

Interaction trees: representing recursive and impure programs in Coq

Abstract: We present interaction trees (ITrees), a general-purpose data structure in Coq for formalizing the behaviors of recursive programs that interact with their environment. ITrees are built of uninterpreted events and their continuations-a coinductive variant of a "free monad. " We study the compositional properties of interpreters built from event handlers and show how to use them to implement a general mutual recursion operator. The resulting theory enables equational reasoning about ITrees up to weak bisimulati… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
23
0

Year Published

2019
2019
2022
2022

Publication Types

Select...
5
2
1

Relationship

0
8

Authors

Journals

citations
Cited by 61 publications
(23 citation statements)
references
References 61 publications
(50 reference statements)
0
23
0
Order By: Relevance
“…By supporting field update, Hofmann and Pierce's theory addresses shortcomings of purely functional object models, but its support for object aggregates or complex ownership structures appears limited and not much studied. A twolevel encoding could likely also be developed for concurrency-inspired object models [33,32,31], perhaps by adapting the theory of interaction trees [68,39]. However, VST's partial-correctness interpretation of triples limits the end-to-end usefulness of coinductive reasoning.…”
Section: Discussionmentioning
confidence: 99%
“…By supporting field update, Hofmann and Pierce's theory addresses shortcomings of purely functional object models, but its support for object aggregates or complex ownership structures appears limited and not much studied. A twolevel encoding could likely also be developed for concurrency-inspired object models [33,32,31], perhaps by adapting the theory of interaction trees [68,39]. However, VST's partial-correctness interpretation of triples limits the end-to-end usefulness of coinductive reasoning.…”
Section: Discussionmentioning
confidence: 99%
“…We would like to explore temporal specification of general, effectful programs. To do so, we wish to develop the treatment of the coinductive resumptions monad [55], that provides a general framework to reason on effectful computations, as shown by interaction trees [70]. It would be interesting to study temporal specifications we could give to effectful programs encoded in this setting.…”
Section: Discussionmentioning
confidence: 99%
“…For starters, we need to extend F ★ with concurrency. To do this, we follow the well-known approach of encoding computational effects as definitional interpreters over free monads (Hancock and Setzer 2000;Kiselyov and Ishii 2015;Swierstra 2008;Xia et al 2019). That is, we can represent computations as a datatype of (infinitely branching) trees of atomic actions.…”
Section: Steelcore: a Concurrent Separation Logic Embedded In F ★mentioning
confidence: 99%