Contextual MetaML: Syntax and Full Abstraction

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Yin, Haoxuan, Murawski, Andrzej S., Ong, C. -H. Luke
Formato: Preprint
Publicado: 2026
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866914577112891392
author Yin, Haoxuan
Murawski, Andrzej S.
Ong, C. -H. Luke
author_facet Yin, Haoxuan
Murawski, Andrzej S.
Ong, C. -H. Luke
contents 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.
format Preprint
id arxiv_https___arxiv_org_abs_2602_03033
institution arXiv
publishDate 2026
record_format arxiv
spellingShingle Contextual MetaML: Syntax and Full Abstraction
Yin, Haoxuan
Murawski, Andrzej S.
Ong, C. -H. Luke
Programming Languages
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.
title Contextual MetaML: Syntax and Full Abstraction
topic Programming Languages
url https://arxiv.org/abs/2602.03033