This paper shows how to use Lee, Jones and Ben Amram's size-change principle to check correctness of arbitrary recursive definitions in an ML / Haskell like programming language with inductive and coinductive types. The size-change principle is used to check both termination and productivity, and the resulting principle is sound even if inductive and coinductive types are arbitrarily nested. A prototype has been implemented and gives a practical argument in favor of this principle. This work relies on a characterization of least and greatest fixed points as sets of winning strategies for parity games that was developed by L. Santocanale in his early work on circular proofs. The proof of correctness of the criterion relies on an extension of the language's denotational semantics to a domain of untyped values with non-deterministic sums.
翻译:本文展示了如何使用 Lee、 Jones 和 Ben Amram 的大小变化原则来检查ML / Haskell 任意重复定义的正确性。 大小变化原则用于检查终止和生产率, 由此产生的原则是健全的, 即使输入和创造类型被任意嵌套。 原型已经实施, 并给出了支持这一原则的实用论据。 这项工作依赖于将最小和最大的固定点定性为L. Santocanale 在早期循环证明工作中开发的公平游戏获胜战略组合。 标准正确性的证据取决于该语言的分义语义表达法扩展至非定义数字的非类型价值观领域。