Towers of Hanoi — OpenProse Bookkeeping Stress Test
Hypothesis
The specification-level separation note predicts that OpenProse-like DSLs recover scoping benefits but not error-correction benefits. Towers of Hanoi is a pure bookkeeping task — the semantic content is trivial (move a disk) but the recursive structure demands exact tracking of:
- Call stack depth and scope — which recursive call are we in?
- Arithmetic conditions — is n == 1? What is n - 1?
- Peg-role permutation — source/target/auxiliary swap at each level
- Move ordering — 2^n - 1 moves in one exact correct sequence
All of these are operations that a symbolic executor handles trivially (discrete state, deterministic transitions) but that the LLM-as-VM must perform on the stochastic substrate.
What to observe
- Move count: 4 disks → exactly 15 moves. Any other number = bookkeeping error.
- Move order: The canonical sequence is deterministic. Any reordering = state tracking failure.
- Peg confusion: The source/target/auxiliary roles swap at each recursion level. Getting these wrong is the classic LLM variable-tracking failure.
- Depth errors: Failing to recurse to the right depth, or evaluating the base case condition wrong.
Running
prose run hanoi.prose
Or with in-context state for simpler programs:
prose run hanoi.prose --in-context
Expected correct output
The 15 moves for hanoi(4, A, C, B):
1. disk 1: A → B
2. disk 2: A → C
3. disk 1: B → C
4. disk 3: A → B
5. disk 1: C → A
6. disk 2: C → B
7. disk 1: A → B
8. disk 4: A → C
9. disk 1: B → C
10. disk 2: B → A
11. disk 1: C → A
12. disk 3: B → C
13. disk 1: A → B
14. disk 2: A → C
15. disk 1: B → C
Variations to try
- 3 disks (7 moves) — easier baseline
- 5 disks (31 moves) — harder, more chance for error accumulation
- Track error rate — run multiple times, count deviations from correct sequence