热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HowdoyourepresenttermsoftheCoCinAgda?

如何解决《HowdoyourepresenttermsoftheCoCinAgda?》经验,为你挑选了1个好方法。

Representing, for example, the STLC in Agda can be done as:

data Type : Set where
*   : Type
_?_ : (S T : Type) ? Type

data Context : Set where
?   : Context
_,_ : (? : Context) (S : Type) ? Context

data _?_ : Context ? Type ? Set where
here  : ? {? S} ? (? , S) ? S
there : ? {? S T} (i : ? ? S) ? (? , T) ? S

data Term : Context ? Type ? Set where
var : ? {? S} (v : ? ? S) ? Term ? S
lam : ? {? S T} (t : Term (? , S) T) ? Term ? (S ? T)
app : ? {? S T} (f : Term ? (S ? T)) (x : Term ? S) ? Term ? T

(From here.) Trying to adapt this to the Calculus of Constructions, though, is problematic, because Type and Term are a single type. This means not only Context/Term must be mutually recursive, but also that Term must be indexed on itself. Here is an initial attempt:

data ? : Set

data Term : ? ? Term ? Set

data ? where
  ?   : ?
  _,_ : (ty : Term) (ctx : ?) ? ?
infixr 5 _,_

data Term where
    -- ...

Agda, though, complains that Term isn't in scope on its initial declaration. Is it possible to represent it that way, or do we really need to have different types for Term and Type? I'd highly like to see a minimal/reference implementation of CoC in Agda.



1> user3237465..:

众所周知这是一个非常困难的问题。据我所知,在Agda中还没有“最小”的方式来编码CoC。您必须证明很多东西,或者使用浅层编码,或者使用诸如商数归纳之类的沉重(但完全明智)的技术,或者先定义未键入的术语,然后将它们分类为键入的术语。以下是一些相关文献:

Nils Anders Danielsson,《通过类型的功能程序正确性》,本论文的最后一章是对依赖类型语言的形式化。这是大量的引子形式的形式化,并且还包含一些未键入的术语。

类型检查和规范化,詹姆斯·查普曼(James Chapman)-本论文的第五章是依赖类型语言的形式化。这也是一种引理形式的形式化,除了许多引理只是对应数据类型的构造函数。例如,您可以将显式替换用作构造函数,而不是用作计算函数(先前的论文没有针对类型的替换,仅针对术语,而本论文甚至针对类型也具有明确的替换)。

令人发指,但有意义的巧合。从属类型安全的语法和评估,Conor McBride -本文提出了从属类型理论的深层编码,以简化该理论的浅层编码。这意味着作者仅使用Agda的评估模型,而不是定义替代和证明属性,而是提供了目标语言的完整语法。

类型化语法元编程,Dominique Devriese,Frank Piessens-未类型化的术语被化为类型化的术语。当我查看IIRC时,代码中有很多假设,因为这是元编程的框架而不是形式化的框架。

类型理论在吃东西吗?,徐创杰(Chuangjie Xu)和马丁·埃斯卡多(Martin Escardo)-单一文件格式。与往常一样,几种数据类型是相互定义的。使用显式传输的显式替换“模仿”替换操作的行为。

EatEval.agda-我们通过结合前两种形式化的思想来实现这一点。在此文件中,我们没有定义多个显式传输,而只有一个传输,它可以将术语的类型更改为符号上相等的术语。即,我们没有通过构造函数明确指定替换的行为,而是有一个单独的构造函数,它表示“如果在Agda中评估两种类型给出相同的结果,则可以通过构造函数将一种类型的术语转换为另一种类型的术语”。

使用商归纳类型的类型理论中的类型理论,Thorsten Altenkirch,Ambrus Kaposi-这是我要说的最有前途的方法。它通过商类型设备在类型级别“合法化”计算。但是我们在Agda中还没有商类型,它们在本文中已基本假定。人们在商类型上做了大量工作(有一个完整的论点:商归纳-归纳定义 -Dijkstra,Gabe),所以我们可能会在某个时候使用它们。

类型理论中类型理论转换的可判定性,Andreas Abel,JoakimÖhman,Andrea Vezzosi-未类型化的术语被归类为类型化的术语。很多属性。还具有大量的元理论证明和一个特别有趣的设备,该设备允许使用相同的逻辑关系来证明健全性和完整性。形式化是巨大的,并得到了很好的评论。

艾格达(开发中的zip文件)中的扩展Martin-Löf类型理论的setoid模型,Erik Palmgren-摘要:

抽象。我们介绍了马丁·洛夫类型理论的类固醇模型的阿格达形式化的详细信息,该模型具有Pi,Sigma,可扩展身份类型,自然数和无限大的拉塞尔的宇宙。一个关键因素是使用Aczel的V型迭代集作为setoid的可扩展范围,从而可以很好地解释类型相等。

Coq中的Coq,Bruno Barras和Benjamin Werner-Coq中CC的正式形式(代码)。未分类的术语被归类为类型+大量引理+元理论证明。

感谢AndrásKovács和James Chapman的建议。


我还要提到[最大的原生Agda形式化](http://www.cse.chalmers.se/~abela/popl18.pdf)。
推荐阅读
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
author-avatar
玲玲0308baby
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有