在“解释语言的语言”中提到,设计一个新的语言,仅仅是使用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的更多相关文章

  1. Understanding about numerical stability, convergence and consistency

    In a computer simulation of the real world, physical quantities, which usually have continuous distr ...

  2. Utility2:Appropriate Evaluation Policy

    UCP收集所有Managed Instance的数据的机制,是通过启用各个Managed Instances上的Collection Set:Utility information(位于Managem ...

  3. SQL SERVER 2012 从Enterprise Evaluation Edtion 升级到 Standard Edtion SP1

    案例背景:公司从意大利购买了一套中控系统,前期我也没有参与其中(包括安装.实施都是第三方),直到最近项目负责人告诉我:前期谈判以为是数据库的License费用包含在合同中,现在经过确认SQL Serv ...

  4. mysql Statement violates GTID consistency 的坑

    今天项目迁移,重新换了一个数据库版本,然后问题来了,原本运行正常的程序迁移过来之后就是不能正常运行,后台报错如下: update tbl_user_info set -- 强制下架 mv_count ...

  5. cassandra-replication_factor 和 consistency level

    参考 replication_factor 决定了数据会被写到多少个节点.为2表示要写到两个节点. consistency level决定客户端要等待多少个节点被写成功.为1表示只要第一个节点被写成功 ...

  6. Evaluation Clustering methods

    There are many evaluation measures available like entropy, recall, precision, F-measure, silhouette ...

  7. PLT:说说Evaluation strategy

    Brief 在学习方法/函数时,我们总会接触到 按值传值 和 引用传值 两个概念.像C#是按值传值,但参数列表添加了ref/out后则是引用传值,但奇怪的事出现了 namespace Foo{ cla ...

  8. PyMySQL Evaluation

    PyMySQL Evaluation This page will capture issues related to Openstack moving to the PyMySQL driver f ...

  9. 分配给 主机的 Evaluation Mode 许可证已过期。建议升级许可证。

    参考文献 http://247its.wordpress.com/2012/04/02/new-build-esxi-5-complaints-licence-has-expired/ http:// ...

随机推荐

  1. 获取本机IP地址的方法

    public class Test { public static void main(String[] strings) { try { InetAddress candidateAddress = ...

  2. 如何成功安装旧版本火狐,成功安装firebug和firepath插件

    很久不用火狐了,为了练习selenium定位浏览器等操作,下载了火狐浏览器,新版火狐已经没有firebug和firepath等插件,无法使用,只有安装老版本的火狐:*****安装好之后立刻设置不让他自 ...

  3. SharePoint 已在此服务器场中安装 ID 为 XXXXXXXXX 的功能。请使用强制属性显式地重新安装此功能。解决方法

    图1: 图2: 解决方法: stsadm -o deploysolution -name ***.wsp -immediate -allowGacDeployment -url http://*** ...

  4. linux怎么查看进程启动,用户的工作目录,pwdx,/proc/11256/cwd

    linux 通过pid 寻找程序路径的最简单命令(pwdx)  #pwdx  pid号1  [pid2] .... 在linux实际操作命令中,查看pid的方式有很多种,通过pid找程序路径的方式也有 ...

  5. dataTable使用方法

    using System; using System.Data; using System.Data.SqlClient; namespace App{ class MyClass{ public s ...

  6. Android使用https与服务器交互的正确姿势

    HTTPS 使用 SSL 在客户端和服务器之间进行加密通信,错误地使用 SSL ,将会导致其它人能够拦截网络上的应用数据. 使用一个包含公钥及与其匹配的私钥的证书配置服务器,作为 SSL 客户端与服务 ...

  7. GAITC 2019全球人工智能技术大会(南京)

    2019年5月25日至26日,由中国人工智能学会主办,以“交叉.融合.相生.共赢”为主题的2019GAITC将在南京全新亮相. 2019 全球人工智能技术大会(2019 GAITC)以“前端引领.深度 ...

  8. JavaScript 判断是PC端还是移动端

    function IsPC() {     var userAgentInfo = navigator.userAgent;     var Agents = ["Android" ...

  9. Redis详解与常见问题解决方案

    Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sor ...

  10. spoj 1029 Matrix Summation

    题意: 对一个矩阵有2种操作: 1.把某个元素设为x. 2.查询以(x1,y1)为左上角 以(x2,y2)为右上角的矩阵中的数字的和. 思路: 二维树状数组入门题,同时对横坐标和纵坐标做前缀和就行了. ...