English

Contextual MetaML: Syntax and Full Abstraction

Programming Languages 2026-05-19 v2

Abstract

MetaML-style metaprogramming languages allow programmers to construct, manipulate and run code. In the presence of higher-order references for code, ensuring type safety is challenging, as free variables can escape their binders. In this paper, we present Contextual MetaML, \textit{the first metaprogramming language that supports storing and running open code under a strong type safety guarantee}. The type system utilises contextual modal types to track and reason about free variables in code explicitly. A crucial concern in metaprogramming-based program optimisations is whether the optimised program preserves the meaning of the original program. Addressing this question requires a notion of program equivalence and techniques to reason about it. In this paper, we provide a semantic model that captures contextual equivalence for Contextual MetaML, establishing \textit{the first full abstraction result for an imperative MetaML-style language}. Our model is based on traces derived via operational game semantics, where the meaning of a program is modelled by its possible interactions with the environment. We also establish a novel closed instances of use theorem that accounts for both call-by-value and call-by-name closing substitutions.

Keywords

Cite

@article{arxiv.2602.03033,
  title  = {Contextual MetaML: Syntax and Full Abstraction},
  author = {Haoxuan Yin and Andrzej S. Murawski and C. -H. Luke Ong},
  journal= {arXiv preprint arXiv:2602.03033},
  year   = {2026}
}

Comments

43 pages, 6 figures

R2 v1 2026-07-01T09:33:22.877Z