殊途同归 - Church-Rosser and Consistency of Evaluation
在“解释语言的语言”中提到,设计一个新的语言,仅仅是使用meta-language给出其描述是不够的,我们还需要去验证一些性质。
考虑一下我们在“解释语言的语言中”给出的求值关系\(r\) ,对于表达式\(( f . ( t . f ) )\), 表达式能够通过求值关系\(\rightarrow_{r}\)得到\((f . (t . f) )\rightarrow_{r}(f . t)\)以及\((f . (t . f) )\rightarrow_{r}(t . f)\),但是我们的关注点在于通过求值关系\(\rightarrow_{r}\)得到的不同表达式的最终结果是否相同。这上面的例子中\((t . f)\)与\((f . t)\)最终都会规约到\(t\),但是单个例子显然没有说服力。这需要证明求值的一致性(Consistency of Evaluation)。
回忆一下在上一节提到的不同扩展范围的求值关系:
| name | definition | intution |
|---|---|---|
| \(-\) | the base relation on members of an expression grammar | a single "reduction" step with no context |
| \(\rightarrow_{-}\) | the compatible clojure of - with respect to expression grammar | a single step within context |
| \(\twoheadrightarrow_{-}\) | the reflexive-transitive clojure of \(\rightarrow_{-}\) | multiple evaluation steps (zero or more) |
| \(=_{-}\) | the symmetric-transitive clojure of \(\twoheadrightarrow_{-}\) | equate expression that produce the same result |
| \(eval_{-}\) | \(=_{-}\)restricted to a range of results | complete evaluation |
接下来在这里先给出3个定理
Theorem 1: \(eval_r(B_0)=R_1\) and \(eval_r(B_1)=R_2\), then \(R_1=R_2\)
Theorem 2(Church-Rosser Theorem ): If \(M=_{r}N\) , there exists expression \(L\) such that \(M \twoheadrightarrow_{r} L\) and \(N \twoheadrightarrow_{r} L\)
Theorem 3(Diamond property of \(\twoheadrightarrow_{r}\)): If \(L \twoheadrightarrow_{r} M\) and \(L \twoheadrightarrow_{r} N\), then there exists expression \(L'\) such that \(M \twoheadrightarrow_{r} L'\) and \(N \twoheadrightarrow_{r} L'\)
定理1解释图:

定理1描述的是一个表达式通过求值函数\(eval_r(B_0)\)得到的值的一致性。
定理2解释图:

定理2描述的是两个通过求值关系\(\twoheadrightarrow_{r}\)得到的表达式最终规约结果的一致性。
证明过程:
Base case: if \(M =_{r} N\), there exists an expression \(L\) such that \(M =_{r} L\) and \(L =_{r} N\)( transitive relation)
- Case \(M \twoheadrightarrow_{r} N\)
Let \(L=N\) , the claim holds
Inductive cases:
- Case \(M =_{r} N\) because \(N =_{r} M\)
By induction, \(L\) exists for \(N =_{r} M\), that is the \(L\) we want
- Case \(M \twoheadrightarrow_{r} N\) because \(M \twoheadrightarrow_{r} L_0\) and \(L_0 \twoheadrightarrow_{r} N\)
By induction, there exists an \(L_1\) such that \(M \twoheadrightarrow_{r} L_1\) and \(L_0 \twoheadrightarrow_{r} L_1\). Also by the induction, there exists an \(L_2\) such that \(N \twoheadrightarrow_{r} L_2\) and \(L_0 \twoheadrightarrow_{r} L_2\)
then by theorem 1 and induction, there exists an \(L_3\) such that \(L_1 \twoheadrightarrow_{r} L_3\) and \(L_2 \twoheadrightarrow_{r} L_3\), the claim holds.
定理2证明图:

定理3解释图:

定理3描述的是一个表达式的不同规约路径,最终规约到一个结果的过程,由于形状是一个四边形(可能中间也会有多个中间表达式\(L_n\)),因此称其为关系\(\twoheadrightarrow_{r}\)的Diamond property。
基于上述的定理,可以得到基于关系\(\twoheadrightarrow_{r}\)拓展而来的求值关系求值一致性保证。但是在具体的语言描述中,还是需要对我们的语言描述进行验证,但这总是一个好的开始。
参考文献
[1] Matthias Fellesisen, Matthew Flatt.Programming Languages And Lambda Calculi[M]. Utah:, 2006. 21-24.
殊途同归 - Church-Rosser and Consistency of Evaluation的更多相关文章
- Understanding about numerical stability, convergence and consistency
In a computer simulation of the real world, physical quantities, which usually have continuous distr ...
- Utility2:Appropriate Evaluation Policy
UCP收集所有Managed Instance的数据的机制,是通过启用各个Managed Instances上的Collection Set:Utility information(位于Managem ...
- SQL SERVER 2012 从Enterprise Evaluation Edtion 升级到 Standard Edtion SP1
案例背景:公司从意大利购买了一套中控系统,前期我也没有参与其中(包括安装.实施都是第三方),直到最近项目负责人告诉我:前期谈判以为是数据库的License费用包含在合同中,现在经过确认SQL Serv ...
- mysql Statement violates GTID consistency 的坑
今天项目迁移,重新换了一个数据库版本,然后问题来了,原本运行正常的程序迁移过来之后就是不能正常运行,后台报错如下: update tbl_user_info set -- 强制下架 mv_count ...
- cassandra-replication_factor 和 consistency level
参考 replication_factor 决定了数据会被写到多少个节点.为2表示要写到两个节点. consistency level决定客户端要等待多少个节点被写成功.为1表示只要第一个节点被写成功 ...
- Evaluation Clustering methods
There are many evaluation measures available like entropy, recall, precision, F-measure, silhouette ...
- PLT:说说Evaluation strategy
Brief 在学习方法/函数时,我们总会接触到 按值传值 和 引用传值 两个概念.像C#是按值传值,但参数列表添加了ref/out后则是引用传值,但奇怪的事出现了 namespace Foo{ cla ...
- PyMySQL Evaluation
PyMySQL Evaluation This page will capture issues related to Openstack moving to the PyMySQL driver f ...
- 分配给 主机的 Evaluation Mode 许可证已过期。建议升级许可证。
参考文献 http://247its.wordpress.com/2012/04/02/new-build-esxi-5-complaints-licence-has-expired/ http:// ...
随机推荐
- mysql统计库下所有表数据行数
一.执行下面sql select concat( 'select "', TABLE_name, '", count(*) from ', TABLE_SCHEMA, '.', T ...
- Angular系列文章之angular路由
路由(route),几乎所有的MVC(VM)框架都应该具有的特性,因为它是前端构建单页面应用(SPA)必不可少的组成部分. 那么,对于angular而言,它自然也有内置的路由模块:叫做ngRoute. ...
- P3803 【模板】多项式乘法(FFT)
传送门: 参考博客 1:大佬 attack 参考博客 2:大佬 胡小兔 在这里再膜拜一下这两位大佬 Orz%%% #include<iostream> #include<cstd ...
- Mysql 5.7优化
为了达到数据库胡最佳性能 1. 普通用户通过配置软件与硬件来实现 2. 高级用户会寻求机会改善MySQL本身,开发自己的数据存储引擎,硬件应用. 在数据库层面的优化 1. 表设计,通常列有适合的数据类 ...
- Javascript扩展String.prototype实现格式金额、格式时间、字符串连接、计算长度、是否包含、日期计算等功能
<script src="Js/jquery-3.1.1.min.js"></script> <script type="text/java ...
- 使用datagrid时json的格式
EasyUI的DataGrid要求返回的JSON数据集是这样的形式: {"total":总记录数量,"rows":[数据记录数组]}. 例如: {"t ...
- 使用PL/SQL能查询oracle中数据,在for update 语句中一直卡住
原因:在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住.下次就不能执行增删操作. 解决:1.查询 ...
- Vue2.0 入门 安装Vue-cli
因为要用到npm命令先按装node.js 具体安装如下: 一.安装Node.js步骤 1.下载对应你系统的Node.js版本:https://nodejs.org/en/download/2.选安装目 ...
- puppeteer(四)常见问题——部分元素无法操作,代码没任何问题。
前言 最近写了一个小例子,但是一个page.click无论如何也不能正常操作,语法这么简单不可能有错.于是找原因,浏览器的问题吗?各种开发环境切换,nodejs版本换到较老的版本,npm版本切换,最后 ...
- 【论文速读】Pan He_ICCV2017_Single Shot Text Detector With Regional Attention
Pan He_ICCV2017_Single Shot Text Detector With Regional Attention 作者和代码 caffe代码 关键词 文字检测.多方向.SSD.$$x ...