《LEAN 赋型唯一性(Unique Typing)之 证明过程简介》 中,梳理了赋型唯一性(Unique Typing)牵涉的概念及相关推论与证明,此篇文章就先介绍 n-provability 的概念,记 ⊢ₙ 。其围绕的是赋型规则(Typing Rules)而衍生的。
即,表达式 e 在进行计算的过程中,赋型规则随着表达式 e 的形变,给每一步计算后的形变表达式 e‘ 进行赋型。此时,赋型规则的前提(Premises),利用归纳假设(Inductive Hypothese)提供的定义上相等关系,即 Γ ⊢ₙ α ≡ β,为其结果的赋型,即 Γ ⊢ₙ e:α,提供证明。那么就有, Γ ⊢ₙ α ≡ β => Γ ⊢ₙ e:α => Γ ⊢ₙ₊₁ α ≡ β => ... ,归纳推演的过程(Induction Proof)。
注:形变,指的是,表达式 e 经过应用一次计算规则(reductions and conversions)后,其形态发生的变换,即计算的一步(one step of computation / normalization)。
注:该类型变换规则的唯一性,使得后面定义上反向(Defintional Inversion)的概念得以引入。
记,
1 赋型规则 为 Γ ⊢ₙ e:α 。
2 定义上相等 为 Γ ⊢ₙ₊₁ α ≡ β 。
即 n-provability 转换规则(conversion rules)如下:
1. Γ ⊢₀ α ≡ β ↔ α = β
析:Γ ⊢₀ α ≡ β ,意味着,当 表达式 α 与 表达式 β 相同(α = β)。即,表达式 β 无须经过转化,就与 表达式 α 定义上相等(Reflexive)。
2. Γ ⊢ₙ₊₁ α ≡ β ↔ ( Γ ⊢ₙ e:α → Γ ⊢ α ≡ β )
析:Γ ⊢ₙ₊₁ α ≡ β,意味着,只使用 Γ ⊢ₙ e:α ,可以推导出 Γ ⊢ α ≡ β。即,基于定义上相等规则(Definitional Equality Rules),经过 n 次,定义上相等类型可替的转化,得到了 Γ ⊢ α ≡ β。
3. Γ ⊢ₙ e:α ↔ ( Γ ⊢ₘ α ≡ β, m ≤ n → Γ ⊢ e:α )
析:Γ ⊢ₙ e:α,意味着,只使用 Γ ⊢ₘ α ≡ β, m ≤ n
(包含了所有 m ≤ n 的情况,如 Γ ⊢₀ α ≡ β, Γ ⊢₁ α ≡ β,等),
可以推导出 Γ ⊢ α ≡ β。
由此,n-provability (n ∈ ℕ),表示了,使用n-provability 转换规则(上述定义的规则)的步数。有基本步,记为 ⊢₀ ,下一步,记为 ⊢ₙ₊₁ ,对应的前一步,记为 ⊢ₙ 。
然后,分别应用于两种规则,即赋型规则(Typing Rules),记为 Γ ⊢ₙ e:α,及定义上相等规则(Definitional Equality),记为 Γ ⊢ₙ α ≡ β。
同时,上述 n-provability 转换规则 表达了 Γ ⊢ₙ e:α 与 Γ ⊢ₙ α ≡ β 的交互递归定义的关系(mutually recursive)
注意:要注意的是,其中的 e, α, β 都可以是表达式的形态出现,即未经过规范化的(Normalization)。而规范化(normalization)的过程,就是使用对应的转化规则(conversion and reduction rules),使其行为最终的正规元素(Canonical Element )的形态。
一般来说,e 等小写字母用于表示值变量及其表达式,而α, β等小写希腊字母用于表示类型变量及其表达式。变量有,自由变量(Free Variable)和绑定了的变量(Bound Variable)。自由变量(Free Variable)指的是,在一个表达式中,出现的变量名,没有对应的相关信息,即不知其指向的实体(Entity),包括其定义信息(Definition),类型信息(Type),等,也就是,在一个表达式中只知道该变量的名字,其它一无所知。反之是绑定了的变量(Bound Variable),由其绑定者(binder)提供,如函数里的参数信息,全局上下文(Global Context)中的全局变量及其定义(即此处的 Γ )等。
即:
那么:
推论(Lemma):
即 给定 (h: m ≤ n) 和 (Γ ⊢ₘ e:α ),求 (Γ ⊢ₙ e:α) 。
亦 proof: (h: m ≤ n) → (Γ ⊢ₘ e:α ) → (Γ ⊢ₙ e:α)
↔ (h: m ≤ n) → (Γ ⊢ₘ e:α ) → (Γ ⊢ₘ α ≡ β, m ≤ n → Γ ⊢ e:α )
↔ (h: m ≤ n) → ( Γ ⊢ₘ α ≡ β, m ≤ n → Γ ⊢ e:α ) → (Γ ⊢ₘ α ≡ β, m ≤ n → Γ ⊢ e:α )
通过将 n-provability 转换规则带入对应的表达式,可以求得,即最后的表达式,A → A。
口
实则上的意思是,如果通过 少步骤 可以证明 e:α,即 (Γ ⊢ₘ e:α ),那么,通过 更多的步骤 (m ≤ n) 同样也可以证明 e:α,即 (Γ ⊢ₙ e:α)
证明同上。
意思是,如果 能够证明 (Γ ⊢ e:α ),那么,肯定存在一定的步骤数 n,从第0个基础事实开始,到第 n 步的时候,证明 (Γ ⊢ e:α )。
这里,Γ ⊢ₙ e:α ↔ ( Γ ⊢ₘ α ≡ β, m ≤ n → Γ ⊢ e:α ),
意思同上。