可达类型(Accessibility Type)表达了,对于一个定义在某一类型α关系 r,类型α 中的元素a 的可达性(Accessibility),即其它元素,能通过该关系r,直接或间接地接触到元素 a。 如果,类型里的每个元素都是关系 r 可达的(Accessible),那么该关系则是正确定义的(Well-founded)。
其定义为
即,给定 类型α 与 关系 r: α → α → ℙ,有可达类型(Accessibility Type)
accᵣ: α → ℙ
即,给定一个类型α的元素a,判断该元素a 的可达性(Accessibility)。
其构建函数
intro: ∀x:α.(∀y:α.ryx → Ay) → Ax
即,表达了,类型 α 中的任一元素 a,具备可达性(Accessibility)的充分条件,是,所有 与元素 a 满足关系 r 的 元素都具备可达性。那么,如果不存在跟元素 a 有关系 r 的元素,元素 a 即 可达。
如果,类型里的每个元素都是关系r可达的(Accessible),那么该关系则是正确定义的(Well-founded)。
LEAN 语言定义:
inductive Acc {α : Sort u} (r : α → α → Prop) : α → Prop where
| intro (x : α) (h : (y : α) → r y x → Acc r y) : Acc r x
另外,因可达类型的构建函数的非递归参数只出现在其目标类型中,所以,可达类型的使用函数是 Large Elimination,即其使用函数的目标类型(Target Type)可以指向任意类型宇宙(Universes)。
给定下图的可达性类型(其中,关系 r 由 < 表示):
有(inv, short for inverse, the inverse function of intro):
亦
invₓ : acc x → ∀y:α. ( y < x → acc y)
acc x : ℙ
即,给定了 类型为 acc x 的值 a,亦 a 为 acc x (x 在关系 < 上 是可达的) 的证明,那么,有 对于任意元素y,只要存在 y < x 的关系,y 也是可达的。
也就是,给了 acc x 的证明,可以提取出其论据,(∀y:α. y < x → acc y)。
其中,对于 可达性类型 acc 的使用规则,rec,有:
1. 动机函数(Motive): C := λz:α. (y<z → acc y)
实际上 C 应该作用于 acc x 的值,由于 acc x : ℙ,由此其值为其证明,又因在LEAN类型理论中,证明不区分性(proof irrelevance),是其值除了证明 acc x 外,并不包含任何信息,所以,有
C := (λ u: Unit -> λz:α. (y<z → acc y) ) unit ≡ λz:α. (y<z → acc y)
2. 次要函数组(minors)(因只有一个构建函数):
(λz:α. λh:(∀w.w<z → acc w). λ_. h y) x
其中有:
构建函数的输入参数:λz:α. λh:(∀w.w<z → acc w).
前值、前果:λ_.
函数体:h y
另,x 为 acc x 中的 x,表示类型α中元素x,是可达的(accessible)。
3. 作用对象(major):a,acc x : ℙ 的证明(proof)
然后对比,acc x 构建函数 intro 的输入类型,及 invₓ 的输出类型:
因证明不区分性(proof irrelevance),有:
即,当有了 a 作用 acc x的证明时,可以得出 acc x的论据,从而用以证明 acc x。
口