TP

The Choose-Your-Own-Adventure Calculus

Tomas Petricek, Jan Liam Verter, Mikolas Fromm

In Proceedings of Onward! Papers 2026

In many programming systems, the user can interactively construct a program by repeatedly triggering a completion mechanism and choosing one of the offered options. This is the case with code editors for object-oriented languages (choosing a member), data exploration environments (choosing a transformation), but also with theorem provers (choosing a tactic) and structure editors (choosing a grammar rule).

We capture the essence of this interaction pattern through a small formal model called the \emph{choose-your-own-adventure calculus}. The model serves three roles. First, it reveals subtle differences between instances of the interaction pattern. Second, it enables transfer of interaction techniques across different domains by describing them abstractly in terms of the calculus. Examples include mixed-initiative interaction, AI assistants and programming by demonstration. Third, it lets us characterise desirable properties of a programming system, including correctness, completeness and uniqueness.

More generally, the paper shows that programming language theory can be used to study not just languages, but also rich interactive programming systems. We argue that such systems deserve at least as much attention as languages.

Paper and more information

Bibtex

If you want to cite the paper, you can use the following BibTeX information.

 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
@inproceedings{petricek-2026-adventure,
  author    = {Tomas Petricek and Jan Liam Verter and Mikolas Fromm},
  title     = {The Choose-Your-Own-Adventure Calculus},
  booktitle = {Proceedings of the 2026 {ACM} {SIGPLAN} International
                Symposium on New Ideas, New Paradigms, and Reflections on
                Programming and Software, Onward! 2026, Oakland, CA, USA,
                October 4-9, 2026},
  publisher = {{ACM}},
  year      = {2026},
  isbn      = {979-8-4007-2934-8},
  doi       = {10.1145/3840586.3843213}
}

If you have any comments, suggestions or related ideas, I'll be happy to hear from you! Send me an email at tomas@tomasp.net or get in touch via BlueSky at @tomasp.net.

Published: Monday, 5 October 2026, 12:00 am
Author: Tomas Petricek
Typos: Send me a pull request!