一句话:将 size-change 原理推广为 totality 检查,以在混合归纳与余归纳类型下可靠验证递归定义。
本文研究在 ML/Haskell 风格、同时包含归纳与余归纳类型的语言中,如何用 size-change 原理检查任意递归定义的正确性。朴素的用法分别检查终止性与 productivity,但在归纳与余归纳类型嵌套时并不可靠(unsound)。作者将 size-change 原理加以改造,使其检查“totality”,即递归定义相对于相应(余)归纳类型的正确性。该性质恰好对应语义上所需的总性,从而在嵌套情形下也保持可靠性。论文通过理论分析论证了这一适配的合理性,为混合(余)归纳类型下的递归定义验证提供了统一框架。
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. Naively using the size-change principle to check productivity and termination is straightforward but unsound when inductive and coinductive types are nested. We can however adapt the size-change principle to check ``totality'', which corresponds exactly to correctness with respect to the corresponding (co)inductive type.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@article{abs-2407-05715,
title = {The Size-Change Principle for Mixed Inductive and Coinductive types},
author = {Pierre Hyvernat},
journal = {Logical Methods in Computer Science},
volume = {Volume 21, Issue 3},
year = {2025},
doi = {10.46298/lmcs-21(3:20)2025}
}