LEAN 类型理论之注解(Annotations of LEAN Type Theory)—— 定义上相等(Definitional Equality)

本文主要是介绍LEAN 类型理论之注解(Annotations of LEAN Type Theory)—— 定义上相等(Definitional Equality),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        定义上相等(Definitional Equality)指的是意义上相等,即同义,包括了,定义的缩写(Abbreviatory Definition),alpha转换,相同替代(substituting equals for equals)等。下面是LEAN给定的何谓 定义上相等。 

        注:罗列的推演规则中,如自明其义的,则不多加解析其前提、结果、或特定注解。

         一、表达式的定义上相等(Definitional Equality of Expressions)(Γ ⊢ e₁ ≡ e₂)

1. 定义上相等的自反性(Reflexive)

前提(Premises):

        a. 在 Γ  的假设,表达式 e 的类型是 α。

结果(Conclusion):

        在 Γ  的假设,表达式 e 定义上等于表达式 e 自己。

2. 定义上相等的互换性(Commutive)

3. 定义上相等的传递性(Transitive)

4. 类型宇宙的定义上相等(Definitional Equality for Universes)

5. 函数应用的同义替换(Substituting equals for equals in Application Typing Rule)

6. 抽象化的同义替换(Substituting equals for equals in Abstraction Typing Rule)

7. 依赖函数类型的同义替换(Substituting equals for equals in Dependent Function Type)

8. Beta 简化 (Beta Reduction)

        注解:

                该推演规则定义了,LEAN的Beta简化,即,函数应用(Function application, or application in short) 在定义上相等于(Definitional equals)函数体的表达式 e 中,将所有输入变量替换成调用时输入的表达式 e'。

9. Eta 简化(Eta Reduction)

        注解:

                该推演规则定义了,LEAN的 Eta简化,即,对已有的函数 e 再抽象化,定义上相等于(Definitional equals)其自己 e (itself)。

10. 证明无关性(Proof Irrelevance)

前提(Premises):

        a. 在 Γ  的假设,类型表达式 p 存在于类型宇宙 ℙ,即 p 是一个命题,ℙ 为命题类型宇宙。

        b. 在 Γ  的假设,表达式 h 的类型为 类型表达式 p,即 h 证明了 p。

        c. 在 Γ  的假设,表达式 h' 的类型为 类型表达式 p,即 h' 证明了 p。

结果(Conclusion):

        在 Γ  的假设,表达式 h 定义上等于表达式 h' 。

注解:

        该推演规则定义了,如果两个不同的证据(proof),h 和 h',证明了同样的命题 p,那么这两个证据在定义上相等(Definitional equals)。

二、宇宙层次的定义上相等(Definitional Equality of Levels)

        宇宙层次的定义上相等通过不等式来定义,即 𝑙 ≤ 𝑙' + n, n ∈ ℤ,当 n = 0时,𝑙 ≤ 𝑙'。另外在其论文有简要的说明,如何理解这个宇宙层次,这里就直接引用了。

        然后,再分别对每条推演规则进行注解。

1. 宇宙层次的定义上相等 (Definitional Equality of Levels)(𝑙 ≡ 𝑙')

2. 宇宙层次必须大于等0

3. 宇宙层次大于等于自身

4. 定义不等式左边的下一级的宇宙层次

        注解:当前宇宙层次 𝑙 ,另一宇宙层次 𝑙‘,有 𝑙 ≤ 𝑙‘ + (n - 1),那么,当前宇宙层次 𝑙  的下一级宇宙层次 S𝑙 ,会有 S𝑙 ≤ 𝑙‘ + (n - 1) + 1,即 S𝑙  ≤ 𝑙‘ + n 。也就是说,S𝑙 是 𝑙 层次的递进 1 级(+1)。

5. 定义不等式右边的下一级的宇宙层次

        注解:定义在不等式右边的,S𝑙'  ≡ 𝑙' + 1

6. 定义 作用在宇宙层次的 max函数 和 imax 函数

        注解:当  𝑙₁ + n  或  𝑙₂ + n 大于等于  𝑙,不管 𝑙₁ 和 𝑙₂ 谁的值大,其 max(𝑙₁, 𝑙₂) 都是获取其中的最大值,因此, max(𝑙₁, 𝑙₂) + n 必然 大于等于 𝑙。上面两个推演规则说明了,max函数内的左右输入的位置不影响其输出的结果。

        注解:当max函数的左右输入都小于等于  𝑙 + n 时,那么其结果也小于等于  𝑙 + n,即 max 只获取左右输入的较大值,而不增减其宇宙层次。

        注解:当 imax函数的右输入为层次 0 时,其输出亦为 0 。即,imax 函数的左右输入需要严格区分,会影响其输出的结果。

        注解:当 imax函数的右输入不等于 0 时,即 S𝑙₂,必大于0,其等价于max函数。

        注解:由于imax函数对其右输入是否为0敏感,因此,分析上面两条推演规则,即不等式左右两边的max函数与imax函数的关系,时,可按情况分别分析 𝑙₃ 是否等于 0。

        注释:这里突出了 𝑙 是宇宙层次表达式,其中可含有宇宙层次变量 u,在实际使用的过程中,其变量会被替换成实际的自然数值。

这篇关于LEAN 类型理论之注解(Annotations of LEAN Type Theory)—— 定义上相等(Definitional Equality)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137097

相关文章

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景

C# dynamic类型使用详解

《C#dynamic类型使用详解》C#中的dynamic类型允许在运行时确定对象的类型和成员,跳过编译时类型检查,适用于处理未知类型的对象或与动态语言互操作,dynamic支持动态成员解析、添加和删... 目录简介dynamic 的定义dynamic 的使用动态类型赋值访问成员动态方法调用dynamic 的

使用@Slf4j注解,log.info()无法使用问题

《使用@Slf4j注解,log.info()无法使用问题》在使用Lombok的@Slf4j注解打印日志时遇到问题,通过降低Lombok版本(从1.18.x降至1.16.10)解决了问题... 目录@Slf4androidj注解,log.info()无法使用问题最后解决总结@Slf4j注解,log.info(

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识