Remark. “最小 + 归纳”的历史

“先把对象定义成满足某些规则的最小集合,再沿着这些规则归纳”, 这个方法在许多理论里反复出现.

在自然数理论中,Richard Dedekind 在 1888 年的 Was sind und was sollen die Zahlen?(《数是什么,应该是什么?》)里, 把自然数定义为包含 1、对后继封闭的所有集合的交(他称为“链”), 由此直接证明了数学归纳法; Giuseppe Peano 1889 年的公理系统则把归纳作为公理.

在递归函数论中,Stephen Cole Kleene 等人在 1930 年代发展了相关理论. 按现代的一种刻画,偏递归函数类是包含零函数、后继函数与投影函数, 对复合、原始递归和无界最小化封闭的最小偏函数类; 若只有复合与原始递归,则得到的是原始递归函数类,不能覆盖全部可计算函数. 参见 Programming Language Concepts: Lecture 14,幻灯片 12.

更一般的数学基础来自不动点定理:Knaster–Tarski 定理(1928 / 1955)表明, 完备格上的单调函数有最小不动点. 词项的集合 的“最小集合”正是“由封闭条件确定的函数”的最小不动点.

到了计算机科学中,形式语言里 BNF 定义的语言就是满足产生式的最小字符串或语法树集合. 类型论中,Per Martin-Löf 的直觉主义类型论(1970 年代) 把“归纳类型”作为基本构造:类型由它的构造子给出,并伴随相应的消去与归纳原理; Coq(现名 Rocq)、Lean、Agda 里的 Inductive Inductive 、 inductive inductive 、 data data 是这一思想的直接实现,Rust 的 enum enum 则是它的工程化形式. 程序语义里,Gordon Plotkin 1981 年的结构化操作语义讲义 A Structural Approach to Operational Semantics, 把“程序怎么运行”写成由推导规则定义的最小关系, 一步规约 使用的就是这种做法.

这些理论研究的对象虽然各不相同,所用的核心方法是同一个.