非谓词性(Impredicative),简单来说就是,类型的定义中可以自我引用(Self-Reference),如 a set containing all sets that do not contain itself。
谓词性(Predicative),简单来说是,为了解决非谓词性产生悖论(paradox),使用类型宇宙层次,使得 “a set containing all sets that do not contain itself” 中的 “a set” 与 “all sets” 存在不同宇宙层次上,一般是,“a set” 的宇宙层次 比 “all sets”的宇宙层次高一层,这样就避免了(avoid)非谓词性的悖论(paradox)。
《 归纳类型(Inductive Type)的使用规则(Elimination Rule)》提到,归纳类型使用规则(Elimination Rule)的定义,即,通过使用函数(Elimination)作用于(使用)给定的归纳类型 P 的值 p,输出相应的结果,该结果的类型由动机函数(motive)C来给出,
C: ∀a::α.P a → Uᵤ。
Large Elimination 指,动机函数 C 的目标类型(Target Type),即 Uᵤ,可指向任何层次的类型宇宙。而,对于某些归纳类型,如 存在类型(Existential Type),其动机函数 C的目标类型(Target Type)只能是最底层的类型宇宙,即命题类型宇宙,记 Prop,亦 Sort 0。
这个为了整个系统的一致性(consistence)所定义的,避免(avoid)非谓词性(impredicative)。
下面列出LEAN 中 具备 Large Elimination 属性 的充分条件,有:(Γ, t: F ⊢ K LE)
(注:没在其定义之内的类型,就没有 Large Elimintation,即其使用函数中的动机函数,不能指向除了命题类型宇宙外的类型宇宙)
1. 归纳类型所在的类型宇宙层次大于等于1,即非底层的命题类型宇宙。
2. 无构建函数的归纳类型。
3. 具备单个构建函数,且该构建函数的类型符合Large Elimination的要求,记 α LE ctor,的归纳类型。
构建函数的Large Elimination要求,有:(Γ, t: F ⊢ α LE ctor)
1. 无输入参数的构建函数。
2. 所有输入参数的类型为命题类型,存在于(live in)命题类型宇宙。
3. 带有递归参数的,符合 Large Elimination 要求的构建函数。
即,如果 β 本来就符合 Large Elimination 要求,那么再给入其递归参数后的构建函数,符合Large Elimination 要求。
4. 单一元素的归纳类型的构建函数。
口