在之前的章节中介绍的λ-calculus是无类型的, 即若把一个λ-term理解为映射, 则该映射的定义域(Domain)与值域(range)为全集(universe). 在很多时候域将会揭示很多有意义的信息, 为λ-calculus明确指定定义域与值域(类型)是很有意义的, 类型可以理解为对域进行符号化并提供了一系列的操作工具. 这节开始介绍λ-calculus与类型系统.
本节将介绍简单带类型的λ-calculus, 即Simply typed lambda calculus(STLC).
Simply typed λ-calculus à la Curry
下面给出了Curry风格简单带类型的λ-calculus的定义, 其为在无类型的λ-calculus的表达式尾部添加入了类型项.
类型标识符(type variables):
为可数标识符集合, 为类型标识符.
类型(types):
亦或定义为满足:
的最小集合.
为所有类型的集合
类型一些例子:
, , ,
一般地, 使用表示.
上下文环境(contexts):
为所有序列的集合:
其中(为λ-calculus中的标识符) .
前提(assumption):
另一种表示方式是将前提作为一个有限部分函数(finite partial function)
在这种表示下下文的域(domain)与值域(range)便是非常自然的概念.
域(domain)
值域(range):
一般地, 使用代表, 若使用代表.
表达式:
为无类型λ表达式, 定义可参见第一节. 可以理解为在无类型λ-calculus的表达式尾部添加入了类型项.
自由名称(free variables):
自由名称的定义与无类型λ-calculus类似. 一个Curry风格简单带类型表达式的自由名称为忽略类型项后无类型表达式的自由名称.
其中为无类型λ-表达式的自由名称.
如果, 则称为闭合的(closed).
类型性推导规则:
类型性规则(typability)为定义在上的关系, 满足以下推导规则
注: 更一般地, 在与规则中若有情况可以对符号进行重命名, 如
重命名为进而推导出类型.
一些例子:
为任意类型. 定义
有
定义: 若有, 则称表达式在前提下拥有类型, 若对于表达式存在一个前提使得, 则称表达式为可类型化的(typable)
定义: 具有以上形式(三元组)的λ-calculus系统称之为simply typed λ-calculus à la Curry或 à la Curry.
引理1: 自由名称引理(Free variables lemma) 若则有:
- 若则.
- .
- 若且则.
证明:
1. 对的推导做结构归纳.
若推导为, 其中, , . 由得, , 那么显然有.
若推导为, 其中, , . 不妨设根据归纳假设有, 则有.
若推导为, 其中, 根据归纳假设有与, 则有.
故由归纳得.
2. 3. 类似与证明1, 对的推导做结构归纳.
以3.中若推导为的情况为例, 其中, , . 则, 且, 故有, 由归纳假设有, 则有.
证毕.
引理2: 生成引理(Generation lemma)
- 若, , 则.
- 若, 则存在使得与.
- 若, , 则存在使得且.
证明:
1. 由推导规则, 其中, , 显然.
2. 由推导规则, 显然.
3. 由推导规则, 其中, 显然.
证毕.
定义: 表示将类型中所有类型标识符替换为类型.
类型的替换规则如下:
其中为类型标识符, 为类型.
使用记号表示.
引理3: 替换引理(Substitution lemma)
- 若则有.
- 若且则有.
证明:
1. 对的推导做结构归纳.
以推导为的情况为例, 其中, , . 由归纳假设有, 则有, 又由, 故有即.
2. 对的推导做结构归纳.
若推导为, 其中, , 那么显然有.
若推导为, 其中, , . 不妨设 (若非则对名称进行重命名), 又有, 根据归纳假设有, 那么有, 同时故.
若推导为, 其中, 又有, 根据归纳假设与, 则有, 同时, 故.
故由归纳得.
证毕.
定理1: Subject reduction theorem
若并且, 那么有.
该定理表明在 à la Curry系统中β-规约将保留表达式的类型.
证明:
对的规约规则做结构归纳.
归纳基础: 当为β-可约式时, 即, 对进行β-规约:
得到. 由引理2(生成引理, Generation lemma)得由可得与 (), 根据引理3(替换引理, Substitution lemma)第二部分得, 即.
归纳步骤: 对于β-规约规则
由归纳假设有若则, 显然根据类型性推导规可证.
故由归纳得且, 那么有.
对于, 同时多步β-规约可表示为, 对于每一步β-规约均保留类型, 即且那么有, 可得.
证毕.
注: 一个与之方向相反的命题: 若并且, 那么(称之为subject expansion)并不成立. 一个简单的反例是取, 其中, 显然, , 并且, 但是非可类型化(untypable)的. 证明将在下一节给出.
Simply typed λ-calculus à la Church
Simply typed λ-calculus à la Church系统与simply typed λ-calculus à la Curry类似, 在类型表示上稍微不同, 其将类型项嵌入了表达式之中.
Simply typed λ-calculus à la Church系统中的: 类型标识符(type variables), 类型(types), 上下文环境(contexts), 前提(assumption), 域(domain), 值域(range) 与Curry风格系统相同.
表达式:
亦或定义为满足:
的最小集合.
自由名称(free variables):
如果, 则称为闭合的(closed).
替换(substitution):
替换的定义与无类型λ-calculus类似.
定义替换规则如下:
无类型λ-calculus替换的推论同样适用.
类型性推导规则:
类型性规则(typability)为定义在上的关系, 满足以下推导规则
一些例子:
为任意类型. 类似于Curry风格系统中的:
β规约(β-reduction):
单步β-reduction为之上的最小二元关系, 记作, 定义为:
在推导规则下闭合:
多步β-reduction与β-等价(β-equality)
与无类型λ-calculus中的定义相同, 为的传递自反闭包, 为的传递自反对称闭包, 参见第一节.
定义: 具有以上形式(三元组)的λ-calculus系统称之为simply typed λ-calculus à la Church或 à la Church.
引理4: 自由名称引理(Free variables lemma) 若则有:
- 若则.
- .
- 若且则.
证明:
类似于 à la Curry中的自由变量引理证明, 参见引理1.
证毕.
引理5: 生成引理(Generation lemma)
- 若, , 则.
- 若, 则存在使得与.
- 若, , 则存在使得且.
证明:
类似于 à la Curry中的生成引理证明, 参见引理2.
证毕.
引理6: 替换引理(Substitution lemma)
- 若则有.
- 若且则有.
证明:
类似于 à la Curry中的生成引理证明, 参见引理3.
证毕.
定理2: Subject reduction theorem
若并且, 那么有.
该定理表明在 à la Church系统中β-规约将保留表达式的类型.
证明:
类似于 à la Curry中的Subject reduction theorem证明, 参见定理1.
证毕.
引理7: 类型唯一性(Uniqueness of types)
- 若与, 则有.
- 若与, 且, 则有.
证明:
1. 对的推导做结构归纳. 显然.
2. 由及Church-Rosser property(证明将在下文给出, 定理4), 存在满足与, 由定理2(Subject reduction theorem)得与, 又由引理第一部分得.
证毕.
注: 该性质在 à la Curry不成立, 典型的例子如对于在 à la Curry中有或.
定义: 擦除映射(erasure map)为到的映射.
该映射将 à la Church表达式中的类型擦除, 映射至对应的无类型λ-表达式.
引理8: 擦除引理(Erasing lemma) 对于
- 若那么有.
- 若在 à la Church有那么在 à la Curry中有.
擦除引理揭示了可将 à la Church表达式擦除为 à la Curry表达式.
证明:
1. 第一步证明.
对做结构归纳
若, 为任意标识符, 则显然成立;
若, 根据归纳假设有与, 那么成立;
若, 根据归纳假设有, 不妨设, 那么成立.
根据归纳法得.
第二步证明若那么有.
对的规约规则做结构归纳.
归纳基础: 当为β-可约式时, 即, 对进行β-规约:
得到. 由第一步证明有, 则, 那么显然成立.
归纳步骤: 显然.
根据归纳法得.
2. 对的推导做结构归纳.
若推导为, 其中, , . 在 à la Curry中显然有.
若推导为, 其中, , . 不妨设, 根据归纳假设在 à la Curry中有, 又有, 那么有.
若推导为, 其中, 根据归纳假设在 à la Curry中有与, 那么有.
故由归纳得在 à la Curry中有.
证毕.
引理9: 抬升引理(Lifting lemma) 对于
- 若那么对于任意满足均存在满足且.
- 若在 à la Curry有那么在 à la Church中有且.
抬升引理揭示了可将 à la Curry表达式抬升为 à la Church表达式.
证明:
1. 对的规约规则做结构归纳.
归纳基础: 当为β-可约式时, 即, 对进行β-规约:
得到. 对于满足, 其中, . 那么有且由(参见引理8证明1)得即.
归纳步骤: 显然.
根据归纳法得.
2. 对的推导做结构归纳.
类似于引理8证明2.
证毕.
à la Curry与 à la Church为单带类型λ-calculus的两种不同的形式, Curry风格系统将类型项放置在表达式后, 修饰整个表达式, Church风格系统将类型嵌入表达式中, 类型项修饰参数, 整个表达式的类型则由类型性推导规则给出. 这两种系统本质上相同, 但由于表现形式的不同有一些细微的差异(参见引理7注与定理4注).
Church-Rosser property(for simply typed λ-calculus)
定理3: Church-Rosser property(for Curry style)
在 à la Curry中, 对于某一, 若有:
与 .
则存在一满足:
与 且.
证明: 与 , 由无类型λ-calculus Church-Rosser Theorem(参见第一节)得存在满足 与 , 又由Subject reduction theorem(定理1)得与.
证毕.
引理10: Newman's lemma
若二元关系具有强规范性与WCR(weak Church-Rosser property), 则其具有CR(Church-Rosser property).
(关于WCR与CR的定义参见上一节)
证明: 设该在集合上的二元关系为, 满足SN(strong normalization)与WCR. 其传递自反闭包记作.
若某一项为normal form, 则不存在另一项使得. 由于关系满足SN, 故对于任意项均会规约至某一normal form上. 若存在某一项规约至两个或以上的不同的normal form上, 则称其为二义的(ambiguous). 显然, 若关系满足CR则中不存在二义项.
对于二义项, 存在另一二义项满足. 由于是二义的, 即存在不同的两个normal form满足与, 由于则至少在存在一步不相同规约, 即可写作与, 若则取, 否则由WCR得存在满足与. 不妨令为normal form(若不是由SN可得能规约直到normal form), 由于, 故有或, 那么可取或.
若中存在二义项, 则取二义项, 其二义规约序列为无穷规约序列, 与SN矛盾. 故中不存在二义项, 即该二元关系具有CR.
证毕.
定理4: Church-Rosser property(for Church style)
在 à la Church中, 对于某一, 若有:
与 .
则存在一满足:
与 且.
证明:
很显然, à la Church中β-规约具有WCR(β-规约不相交则交叉规约, 若一个β-规约的可约式包含另外一个β-规约则对β-规约产生的新的可约式进行规约, 具体严格的证明可对β-规约进行归纳). 另外 à la Church具有强规范性(证明将在下节给出), 由引理10(Newman's lemma)可得具有CR. 并由Subject reduction theorem(定理2)得.
证毕.
注: Church风格中的CR证明与Curry风格不同在于 à la Church表达式中类型项是嵌入在表达式中的, 而不像 à la Curry表达式中可以很好的分离从而利用无类型的CR theorem.
本节介绍的是关于简单带类型λ-calculus的最基础的概念和性质, 可能略有点无趣, 下一节将会介绍正规化证明和类型重建, 非常有趣的呢, 不要走开喔~
另外这个系列的文章我拖了不短的一段时间呢, 接下来的内容我会尽快补上的, 有什么想看的或有什么问题也请告诉我哦, 谢谢大家的支持啦喵.