WatChat: Explaining perplexing programs by debugging mental models
Not on the map. Why?
Abstract (arXiv)
Often, a good explanation for a program's unexpected behavior is a bug in the programmer's code. But sometimes, an even better explanation is a bug in the programmer's mental model of the language or API they are using. Instead of merely debugging our current code ("giving the programmer a fish"), what if our tools could directly debug our mental models ("teaching the programmer to fish")? In this paper, we apply recent ideas from computational cognitive science to offer a principled framework for doing exactly that. Given a "why?" question about a program, we automatically infer potential misconceptions about the language/API that might cause the user to be surprised by the program's behavior -- and then analyze those misconceptions to provide explanations of the program's behavior. Our key idea is to formally represent misconceptions as counterfactual (erroneous) semantics for the language/API, which can be inferred and debugged using program synthesis techniques. We demonstrate our framework, WatChat, by building systems for explanation in two domains: JavaScript type coercion, and the Git version control system. We evaluate WatChatJS and WatChatGit by comparing their outputs to experimentally-collected human-written explanations in these two domains: we show that WatChat's explanations exhibit key features of human-written explanation, unlike those of a state-of-the-art language model.
Key facts. Cited by 3 papers in the map (data through 14 Oct 2026). Builds on 8 of its 108 references that are in the map. First posted on arXiv 8 Mar 2024.
Builds on
8 of 108 references.
References · 8
- 2017Explanation in Artificial Intelligence: Insights from the Social Sciencescited by 1,206
- 2023Evaluating Language Models for Mathematics through Interactionscited by 70
- 2023Selective Explanations: Leveraging Human Input to Align Explainable AIcited by 29
- 2023Inferring the Future by Imagining the Pastcited by 4
- 2023A Grounded Conceptual Model for Ownership Types in Rustcited by 2
- 2015The Essence of JavaScriptcited by 1
- 2017Bonsai: Synthesis-Based Reasoning for Type Systemscited by 1
- 2018It's Like Python But: Towards Supporting Transfer of Programming Language Knowledgecited by 1
Built on by
Citing papers per year: 2024: 1; 2025: 2.
3 papers.
- 2024Building Machines that Learn and Think with Peoplecited by 73
- 2025Retrieval-augmented systems can be dangerous medical communicatorscited by 5
- 2025Empathy in Explanationcited by 0
- 2025Empathy in Explanation16 Jun 2025
- 2025Retrieval-augmented systems can be dangerous medical communicators18 Feb 2025
- 2024Building Machines that Learn and Think with People22 Jul 2024