Emulation-Completeness of Programming Languages
Gregory Morse, Tam\'as Kozsik

TL;DR
This paper introduces a structured framework for analyzing when programming languages can emulate themselves fully, considering not just results but also runtime behaviors and states.
Contribution
It provides a formal taxonomy and vocabulary for reasoning about self-emulation, distinguishing different completeness levels and requirements.
Findings
Defines syntactic and compiled-code emulation-completeness
Organizes requirements into language-side and emulator-side classes
Uses Erlang as a case study for subtle emulation mismatches
Abstract
We study when a programming language can emulate programs written in that same language without delegating the guest program back to the host evaluator or compiler. We call this property emulation-completeness. The central observation is that Turing-completeness by itself is not enough: a self-emulator must not only compute the guest program's result, but must also account for the guest-visible state on which realistic programs depend, including control flow, exceptions, callbacks, timing, memory usage, and runtime metadata such as stack traces or line numbers. This paper is a systematization paper. Its contribution is not a new emulator implementation, but a precise vocabulary and a structured taxonomy for reasoning about self-emulation. We distinguish source-level evaluation from compiled-code emulation, define syntactic and compiled-code emulation-completeness, and separate weak…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
