Papers for

functional programming tool developers

Papers whose findings have a practical use for this group, as judged from the abstract. Open a paper to read what it means in practice.

Domain theory simplifies reasoning about interactive program behaviors

Domain Theory Meets Interaction Trees in Rocq

Abstract: We present a domain-theoretical formalization of interaction trees in the Rocq prover. Unlike existing formalizations, ours does not rely on Rocq's built-in coinduction. Hence, we avoid complications occurring in earlier works, such as artificially including silent steps to comply with Rocq's productivity checker, treating monad laws as weak bisimulations, and coinductive bisimulation reasoning. We define an inductive program equivalence relation as the congruence closure of a base relation on primitive effects with respect to action sequencing and least upper bounds. This enables reasoning about possibly non-terminating programs by reducing their equivalences to equivalences of their terminating approximations, which are then proved by induction. This relation is proved correct: provided the base relation is correct, equivalent computations have equal denotations in any monad that faithfully implements the effects. We illustrate the framework by showing the equivalence of two programs encoding the Syracuse sequence, whose termination is an open mathematical conjecture.

Mon 28 SeptLogic in Computer Science
The gist
Programs that can keep running forever and interact with their environment are tricky to compare and reason about. The authors created a new way to understand such programs without relying on complex techniques that can make reasoning harder. Their approach breaks down potentially infinite behaviors into simpler, finite parts that can be checked with straightforward mathematical methods. This makes it easier to prove when two programs are essentially doing the same thing, even if they don't stop running. They tested this method by comparing two programs related to a famous math problem that nobody knows if it always ends.
Open → 2609.34888v1