2026-08-28·作者 Sijie Wang#idea#math

type-theory

类型论——从简单类型到依赖类型

上级:logic

给 λ 演算 加上类型,再通过 Curry–Howard 对应,就得到一个逻辑——而如果让类型依赖于值,就得到整个数学的一个基础。

简单类型 λ 演算(STLC)

类型 = 基本类型 + 箭头类型 A → B。关键事实:STLC 是强正规化的——每一个项都会终止。你因此失去图灵完备性,换来一致性:作为一个逻辑(Curry–Howard 对应),STLC 就是直觉主义命题逻辑。完全性 ⟺ 一致性,这正是反复出现的那道阈值——引入一般递归就会重新带来 ⊥。

λ 立方体(Barendregt)——三种增加表达力的方式

  • 项依赖于类型 → 多态性(System F:∀α. α→α);
  • 类型依赖于类型 → 类型算子;
  • 类型依赖于项 → 依赖类型。 三者合一,就是构造演算(Calculus of Constructions, CoC)——立方体那个最远的角,也是 Lean/Coq 的核心。

(STLC 在最近的角;每一条轴增加一种依赖关系;CoC 在最远的角,同时拥有全部三种依赖。)

依赖类型——由值索引的类型

Vec A n = 长度为 n 的 A 列表;Π(x:A). B x = 一个返回类型依赖于参数的函数;Σ(x:A). B x = 一对值,其第二个的类型依赖于第一个。由 Curry–Howard 对应,Π = ∀,Σ = ∃,所以一个类型可以表达任意命题,而该类型的一个项就是这个命题的证明。

Martin-Löf 类型论(MLTT)

一种构造性的数学基础:依赖类型 + 归纳类型(构造出 ℕ、列表、树)+ 同一性类型(a = b 本身就是一个类型——把"相等"当作一个待证明的命题)+ 一个宇宙层级(Type 0 : Type 1 : …,避免罗素式悖论)。它是集合论的一个替代方案——因其构造方式而天然可计算(证明是可以运行的)。

这笔权衡

一个完全的类型论(所有项都会终止)是一个一致的逻辑,但不是图灵完备的;允许不终止能换来一般递归,代价是一致性。证明助手在证明层保留完全性,把偏函数隔离到别处沙盒运行。→ proof-theory, lean4。

关于这一条

sijie 的一条 wiki 条目。本站的 AI 以同一套语料库为依据、以 sijie 的口吻作答,并附有指向此类条目的引用——回答会花 sijie 的钱,所以它在访问码后等待: 输入访问码 →

type-theory — Sijie Wang