λ-calculus的归约

news/2025/2/5 1:56:23/文章来源:https://www.cnblogs.com/qixingzhi/p/18698688

\(\newcommand{\l}{\lambda}\)在之前的讨论中,我们用等号\(=\)表示“可以演算得到”,并且规定等号具有自反、对称、传递的基本性质。这就意味着,我们不仅可以说\((\l x.xx)N\)能演算得到\(NN\),根据对称性也可以说\(NN\)能演算得到\((\l x.xx)N\)。后者听上去很奇怪,因为与其说是“演算”,后者更像是一种“构造”。作为演算规则的\(\beta\)-conversion事实上不应该具有对称性,因为它总是倾向于将\(\l\)-term“化简”。因此我们意识到,对于何为“演算得到”(以及何为“化简”)还没有得到严格的定义。我们应当严格定义一个集合\(\Lambda\)上的二元关系,来描述“演算”(“化简”)。

归约(Reduction)

\(\newcommand{\ttob}{\twoheadrightarrow_\beta}\newcommand{\tob}{\rightarrow_\beta}\newcommand{\eqb}{=_\beta}\)如果我们把\(\alpha\)-equivalance看作语法上的设定(convention),也即我们总是避免局部变量与全局变量的重名,那么\(\l\)-calculus中唯一的演算规则就是\(\l\)-term整体或某一局部的\(\beta\)-conversion。我们定义符号\(\tob\)表示“单步\(\beta\)-reduction”:

  • 对任意的\(\l\)-term \(M,N\)和变量\(x\)\((\l x.M)M\tob M[x:=N]\)
  • 对任意的\(\l\)-term \(M,N,Z\),如果\(M\tob N\),那么\(ZM\tob ZN\)
  • 对任意的\(\l\)-term \(M,N,Z\),如果\(M\tob N\),那么\(MZ\tob NZ\)
  • 对任意的\(\l\)-term \(M,N\)和变量\(x\),如果\(M\tob N\),那么\(\l x.M\tob \l x.N\)

基于单步\(\beta\)-reduction,可以定义多步\(\beta\)-reduction(或简称\(\beta\)-reduction),用符号\(\ttob\)表示(多步包括0步):

  • 对任意的\(\l\)-term \(M\)\(M\ttob M\);(0步)
  • 对任意的\(\l\)-term \(M,N\),如果\(M\tob N\),那么\(M\ttob N\);(单步)
  • 对任意的\(\l\)-term \(M,N,L\),如果\(M\ttob N,N\ttob L\),那么\(M\ttob L\)

原先定义的包含对称性的等号现在可以基于\(\beta\)-reduction定义如下,为了看上去更清晰我们用符号\(\eqb\)代替\(=\)(它们的含义是等价的),称为\(\beta\)-conversion:

  • 对任意的\(\l\)-term \(M,N\),如果\(M\ttob N\),那么\(M\eqb N\)
  • 对任意的\(\l\)-term \(M,N\),如果\(M \eqb N\),那么\(N\eqb M\);(单步)
  • 对任意的\(\l\)-term \(M,N,L\),如果\(M\eqb N,N\eqb L\),那么\(M\eqb L\)

可以看到,\(\beta\)-conversion满足自反、对称、传递,是\(\Lambda\)上的等价关系。多步\(\beta\)-reduction只满足自反和传递而不满足对称,这样的关系称为congruence关系。

下面的图片清晰展示了\(\beta\)-reduction和\(\beta\)-conversion之间的区别:图中一个箭头表示单步\(\beta\)-reduction,同一直线上的箭头可以连成一个多步\(\beta\)-reduction,而只要忽略箭头方向两个点之间连通就可以满足\(\beta\)-conversion。

image-20250205014522060

Church-Rosser定理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/878825.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CubeMX 生成代码 在VScode 中显示未定义,解决办法

CubeMX 生成代码 在VScode 中显示未定义,解决办法CubeMX 生成代码 在VScode 中显示未定义,解决办法 1. 背景 CubeMX 生成代码 在VScode 中显示未定义,未定义、头文件路径无效,在当实际上是可以编译成功的。 2. 原因 keil软件编译器会预编译一些头文件,vscode没有编译 3. 解…

从《だから僕は音楽を辞めた》到《エルマ》

《エルマ》专辑访谈从《だから僕は音楽を辞めた》到《エルマ》 从专辑制作实况到更深层的乐器与演奏方式的执着,除了n-buna、suis之外,支援ヨルシカ的下鹤光康(吉他)、キタニタツヤ(贝斯)、Masack(鼓)、平畑彻也(钢琴)六人畅谈一切。超过一万五千字的特别专访。首先想…

vscode+edie插件配置STM32开发环境,彻底摆脱KEIL

安装 首先去vscode官网下载适合自己的安装包,一般来说选择 User Installer x64 即可,具体安装过程请参考其他教程,此处不再赘述: Vscode官网安装完成后打开,在左侧边栏打开插件市场,搜索并安装如下四个插件:C/C++ (C语言代码提示的核心插件) Chinese (中文显示) Emb…

本地部署DeepSeek并用Python调用

本地部署DeepSeek并用Python试调用之,总体来说过程比较顺畅。目录需要下载的软件安装步骤安装Ollama并运行模型DeepSeek安装Hollama试用python调用 需要下载的软件OllamaSetup.exe(Ollama是一个管理和运行大语言模型的开源工具) Hollama_0.25.1-win-x64.exe【可选】(Hollam…

12 网络编程详解

知识预备网络通信 :​ 网络通信是指,将一台设备(Host1)中的数据通过网络传输到另一台设备(Host2)。java.net 包下提供了许多用于完成网络通信的类或接口。 ​ 相关流程图如下 :网络 :​ 两台或两台以上的设备通过一定物理设备(交换机,网关服务器等等)连接起来…

25.2.4小记(FoxandRabbit代码复现)

1.接口(interface)不仅可以用于定义方法的签名,还可以充当类型的一部分。其本身可以作为类来引用 eg.Cell[][] field 数组中的对象是实现了这个接口的类的实例。 是一种特殊的classreturn list.toArray(new Cell[list.size()]);中list.toArray是将原来的数组填充到()中的对…

2015 纯碱

回调后有一波多头行情

2015 锰硅

年后回调后有波多头行情 具体等交易系给出信号

2024 山东一轮省集组合计数选讲学习笔记

https://www.luogu.com/article/hcy6mqry 初等双射 通常的方法是构造一个不会映射到自己的对合,这样就就可以把所有的组合对象分为数量相等的两类。 还有一种方法就是给等式两边找到一个相同的组合意义,以证明他们相等,这个不一定是一个映射,它允许“一对多”“多对一”。 …

TCP和UDP协定的基础知识解析,从网路效能到网路安全看TCP、UDP协议

TCP和UDP协定的基础知识解析,从网路效能到网路安全看TCP、UDP协议TCP和UDP协定是网路通讯中不可或缺的基础。 TCP以其可靠性著称,能够确保资料完整传输,适合文件传输和邮件服务等场景。它透过建立连接和确认机制,提供稳定的通讯体验。相比之下,UDP更注重速度和即时性。它无…