A Meta Lambda Calculus with Cross-Level Computation

Kazunori Tobisawa
2015 Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages - POPL '15  
We propose meta lambda calculus λ * as a basic model of textual substitution via metavariables. The most important feature of the calculus is that every β-redex can be reduced regardless of whether the β-redex contains meta-level variables or not. Such a meta lambda calculus has never been achieved before due to difficulty to manage binding structure consistently with α-renaming in the presence of meta-level variables. We overcome the difficulty by introducing a new mechanism to deal with
more » ... tution and binding structure in a systematic way without the notion of free variables and α-renaming. Calculus λ * enables us to investigate cross-level terms that include a certain type of level mismatch. Cross-level terms have been regarded as meaningless terms and left out of consideration thus far. We find that some cross-level terms behave as quotes and 'eval' command in programming languages. With these terms, we show a procedural language as an application of the calculus, which sheds new light on the notions of stores and recursion via metalevel variables.
doi:10.1145/2676726.2676976 dblp:conf/popl/Tobisawa15 fatcat:c74zlkaz4nhtbmiyqrw4cw75vy