Combining higher-order abstract syntax with first-order abstract syntax in ATS

  • Authors:
  • Kevin Donnelly;Hongwei Xi

  • Affiliations:
  • Boston University;Boston University

  • Venue:
  • Proceedings of the 3rd ACM SIGPLAN workshop on Mechanized reasoning about languages with variable binding
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

Encodings based on higher-order abstract syntax represent the variables of an object-language as the variables of a meta-language. Such encodings allow for the reuse of α-conversion, substitution and hypothetical judgments already defined in the meta-language and thus often lead to simple and natural formalization. However, it is also well-known that there are some inherent difficulties with higher-order abstract syntax in supporting recursive definitions.We demonstrate a novel approach to explicitly combining higher-order abstract syntax with first-order abstract syntax that makes use of a (restricted) form of dependent types. With this combination, we can readily define recursive functions over first-order abstract syntax while ensuring the correctness of these functions through higher-order abstract syntax. We present an implementation of substitution and a verified evaluator for pure untyped call-by-value λ-calculus.