h5i
本中文版由作者借助 AI 翻译而成。作者并非中文母语者,译文未经人工逐句校对,可能存在错误。如发现问题,请在 GitHub 上提交 issue。

附录 F

记号与术语表

本书用到的每个符号、判断和术语,以及引入它的章节。阅读时可把本附录当作参考,也可当作本书内容的清单。

记法

项

记法 含义 章节
Sort u\Sort{u} 层级 uu 上的宇宙;Sort 0\Sort{0} 是命题的宇宙 2
x,y,zx, y, z 变量 2
cc 签名中的常量 7
Π(x:A). B\tPi{x}{A}{B} 依赖函数类型(Π\Pi 类型) 2
A→BA \to B 非依赖函数类型,即 Π(_:A). B\tPi{\_}{A}{B} 2
λ(x:A). t\tLam{x}{A}{t} 函数(λ\lambda 抽象) 2
t  st\;s 应用,左结合 2
h  a1⋯anh\;a_1 \cdots a_n 脊:头部 hh 应用于一列参数 2
(x⃗:A⃗)(\vec{x} : \vec{A}), Π(x⃗:A⃗). B\tPi{\vec{x}}{\vec{A}}{B} 绑定的 telescope,以及其上的 Π\Pi 8
FV(t)\FV(t) tt 的自由变量 11
t[x↦s]\subst{t}{x}{s} 在 tt 中用 ss 替换 xx 的避免捕获的替换 11
⌊t⌋E\db{t}{E} tt 在绑定子列表 EE 之下的无名(de Bruijn)形式 B
?m\hole{m} 部分证明项中的洞(元变量) 10

判断与关系

记法 含义 章节
Γ\Gamma 上下文,即假设 x:Ax : A 的有序列表 3
⋅\cdot 空上下文 3
dom(Γ)\dom(\Gamma) Γ\Gamma 中被假设的名字 3
⊢Γ;ok\ctxok{\Gamma} Γ\Gamma 是良构的 3
Γ⊢t:A\Gamma \vdash t : A 在 Γ\Gamma 中 tt 具有类型 AA 3
Σ\Sigma 常量的签名 7
c:C:=tc : C \mathrel{:=} t 体为 tt 的定义 7
imax(u,v)\imax(u, v) 若 v=0v = 0 则为 00,否则为 max⁡(u,v)\max(u, v) 3、13
s=αts \alphaeq t α 等价 11
E1;E2⊢s=αtE_1; E_2 \vdash s \alphaeq t 绑定子列表 E1E_1、E2E_2 之下的算法化 α 等价 11
idx(E,x)\mathrm{idx}(E, x) EE 中最后一个 xx 的位置,从右数起 11
t→βt′t \betared t', t→δt′t \deltared t', t→ιt′t \iotared t' β 归约、δ 归约、ι 归约 3、7
t→t′t \to t' 任意一种归约的一步 12
s≡ts \conv t 定义相等(转换) 3、12
Δ⊢φ\Delta \vdash \varphi 二阶命题逻辑中的可证性 4
φ∗\varphi^\ast, Δ∗\Delta^\ast 公式的翻译、假设列表的翻译 4
⟨Γ⊢?m:T⟩\goal{\Gamma}{\hole{m}}{T} 目标:为洞 mm 在 Γ\Gamma 中找一个类型为 TT 的项 10

标准内核的常量

记法 类型 leanmini 名字 章节
Nat\Nat Sort 1\Sort{1} Nat 7
zero\zero Nat\Nat Nat.zero 7
succ\suc Nat→Nat\Nat \to \Nat Nat.succ 7
Nat.recu\NatRec{u} 见图 7.1 Nat.rec0, Nat.rec1 7
Equ\Eq{u} Π(A:Sort u). A→A→Sort 0\tPi{A}{\Sort{u}}{A \to A \to \Sort{0}} Eq 9
reflu\refl{u} Π(A:Sort u). Π(a:A). Equ  A  a  a\tPi{A}{\Sort{u}}{\tPi{a}{A}{\Eq{u}\;A\;a\;a}} Eq.refl 9
Eq.recu,v\EqRecDep{u,v} 依赖消去子,图 9.1 Eq.rec0, Eq.rec1 9
Eq.ndrecu,v\EqRec{u,v} 非依赖消去子(一个定义) 未预先声明 9
add\add, m+nm + n Nat→Nat→Nat\Nat \to \Nat \to \Nat add(在脚本中定义) 7

算法

名称 作用 Rust 章节
Infer(Γ,t)\Infer(\Gamma, t) 计算 tt 的类型 Kernel::infer 5
Check(Γ,t,T)\Check(\Gamma, t, T) 验证 t:Tt : T Kernel::check 5
InferSort(Γ,A)\InferSort(\Gamma, A) 验证 AA 是类型,并返回其层级 Kernel::infer_sort 5
Freshen(Γ,x,b)\Freshen(\Gamma, x, b) 重命名会遮蔽 Γ\Gamma 的绑定子 rename_binder_if_needed 5
Whnf(t)\Whnf(t) 弱头范式 Kernel::whnf 12
Normalize(t)\Normalize(t) 完全范式 Kernel::normalize 12
IsDefEq(s,t)\IsDefEq(s, t) 判定 s≡ts \conv t Kernel::is_def_eq 12

术语表

α 等价(Alpha-equivalence)。 项在约束变量重命名意义下的相等。判定方法:约束变量按绑定子位置比较,自由变量按名字比较。第 11 章。

β 归约(Beta-reduction)。 计算步骤 (λ(x:A). t)  s→t[x↦s](\tLam{x}{A}{t})\;s \to \subst{t}{x}{s}。第 3 章和第 12 章。

捕获(Capture)。 把一个项替换到某个绑定子之下,而该绑定子恰好绑定了该项的某个自由变量,从而改变其含义的错误。通过重命名绑定子来避免。第 11 章。

合流性(Confluence)。 不同的归约顺序到达同一范式的性质,正是它使得转换可以通过规范化来判定。第 12 章。

一致性(Consistency)。 没有闭项具有类型 Π(P:Sort 0). P\tPi{P}{\Sort{0}}{P},这个性质使内核的接受有意义。第 4 章和第 14 章。

构造子(Constructor)。 构造归纳类型的值的常量,如 zero\zero 和 succ\suc。构造子从不归约。第 7 章。

上下文(Context)。 类型假设的有序列表。第 3 章。

转换(Conversion)。 见定义相等。

Curry-Howard 对应(Curry-Howard correspondence)。 命题即类型,证明即项,证明检查即类型检查。第 1 章。

de Bruijn 索引(De Bruijn index)。 用约束变量的出现与其绑定子之间的绑定子个数来表示该变量,这使得 α 等价的项完全相同。第 11 章、附录 B。

定义相等(Definitional equality)。 由归约和 α 等价生成的项上的等价关系;由内核判定。与命题相等相对。第 9 章和第 12 章。

δ 归约(Delta-reduction)。 把已定义的常量展开为其体。第 7 章。

依赖函数类型(Dependent function type)。 结果类型可以提到参数的 Π\Pi 类型;全称命题的证明所具有的类型。第 1 章。

大消去(Elimination, large)。 用命题的递归子构造数据,仅对子单元允许。第 8 章。

字段(Field)。 构造子的一个参数,但不计归纳类型的参数(parameter)。第 8 章。

目标(Goal)。 一个上下文连同一个类型,其项尚待寻找。第 10 章。

非谓词的(Impredicative)。 包含对该宇宙本身量化的类型的宇宙。Sort 0\Sort{0} 是非谓词的;更高的宇宙不是。第 13 章。

索引(Index)。 归纳类型构造器的参数中可在构造子之间变化的那种,如向量的长度或等式的右侧。第 8 章。

归纳假设(Induction hypothesis)。 小前提中“motive 对递归字段已经成立”这一假设。第 7 章。

归纳类型(Inductive type)。 由其构造子指定的类型,内核由此生成递归子和 ι 规则。第 7 章和第 8 章。

ι 归约(Iota-reduction)。 在构造子应用上运行递归子。第 7 章和第 12 章。

内核(Kernel)。 判定 Γ⊢t:A\Gamma \vdash t : A 的可信组件,其他一切只是为它生产项。第 1 章。

大前提(Major premise)。 递归子的参数中,由其构造子决定使用哪条 ι 规则的那一个。第 7 章。

元变量(Metavariable)。 Lean 对部分项中的洞的称呼。第 10 章。

小前提(Minor premise)。 递归子的参数中,给出某一构造子对应情形的那一个。第 7 章。

motive。 为每个元素给出递归子结果类型的函数 MM;对归纳而言,它是一个谓词。第 7 章。

中性项(Neutral term)。 以变量(或在有常量时,以卡住的常量)为头部的范式项。第 14 章、附录 D。

范式(Normal form)。 没有任何归约步骤可应用的项。第 12 章。

参数(Parameter)。 归纳类型构造器的参数中在每个构造子里都相同的那种,如列表的元素类型。第 8 章。

严格正性(Positivity, strict)。 递归字段只能把归纳类型用作函数的结果、绝不能用作函数参数的条件,终止性和一致性都需要它。第 8 章。

谓词的(Predicative)。 不包含对自身量化的类型的宇宙,即 u≥1u \ge 1 时的 Sort u\Sort{u}。第 13 章。

证明无关性(Proof irrelevance)。 Lean 的规则:同一命题的任意两个证明定义相等;MiniLean4 未实现。第 13 章。

命题相等(Propositional equality)。 归纳类型 Eq\Eq{},它的证明是项;与定义相等相对。第 9 章。

递归子(Recursor)。 为归纳类型生成的常量,表达结构递归和归纳。第 7 章。

签名(Signature)。 常量及其类型的表,定义还带有体。第 7 章。

脊(Spine)。 把项看作头部应用于一列参数的视角。第 2 章。

强规范化(Strong normalization)。 从良类型项出发的每个归约序列都是有限的。第 14 章。

类型保持性(Subject reduction)。 归约保持类型。第 14 章。

子单元(Subsingleton)。 至多有一个构造子、且其字段全是证明或索引的命题;它可以消去到任何宇宙。第 8 章。

语法制导(Syntax-directed)。 项的形状决定可用规则的规则系统;除 T-Conv 之外的所有类型规则。第 5 章。

策略(Tactic)。 内核之外的程序,为证明状态中的洞赋值项。第 10 章。

Telescope。 一列绑定,其中靠后的类型可以提到靠前的变量。第 8 章。

传输(Transport)。 沿着 a=ba = b 的证明,经由 Eq\Eq{} 的递归子,把关于 aa 的事实搬到关于 bb 的事实。第 9 章。

宇宙(Universe)。 元素都是类型的类型:Sort u\Sort{u}。第 2 章和第 13 章。

弱头范式(Weak head normal form)。 只在项的头部归约、直到最外层形状可见为止所得的结果。第 12 章。

要点回顾

  • 项、判断和算法各有一套全书统一使用的固定记法;上面的表格把每一项对应到它的 Rust 实现。
  • 两种相等(定义相等与命题相等)和两类宇宙(非谓词的与谓词的)是需要分清的区别。