热门标签 | 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)。
推荐阅读
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 一个转子曲线面积问题及其反问题的解答
    曾经解答过这样一个问题,从该ID的最后一次登录时间、该ID显示的专业信息,误以为是新闻里某个想不开的同学,不安了一阵子。经确认是我多虑了,不过把问题答案还是写出来。之后就收到一堆要求帮忙算 ... [详细]
  • PBO(PixelBufferObject),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(DirectM ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • 此更新支持将 Cognito User Pools 作为 API Gateway 授权器的类型 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • EST:西湖大学鞠峰组污水厂病原菌与土著反硝化细菌是多重抗生素耐药基因的活跃表达者...
    点击蓝字关注我们编译:祝新宇校稿:鞠峰、袁凌论文ID原名:PathogenicandIndigenousDenitrifyingBacte ... [详细]
  • Android 自定义 RecycleView 左滑上下分层示例代码
    为了满足项目需求,需要在多个场景中实现左滑删除功能,并且后续可能在列表项中增加其他功能。虽然网络上有很多左滑删除的示例,但大多数封装不够完善。因此,我们尝试自己封装一个更加灵活和通用的解决方案。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 当使用 `new` 表达式(即通过 `new` 动态创建对象)时,会发生两件事:首先,内存被分配用于存储新对象;其次,该对象的构造函数被调用以初始化对象。为了确保资源管理的一致性和避免内存泄漏,建议在使用 `new` 和 `delete` 时保持形式一致。例如,如果使用 `new[]` 分配数组,则应使用 `delete[]` 来释放内存;同样,如果使用 `new` 分配单个对象,则应使用 `delete` 来释放内存。这种一致性有助于防止常见的编程错误,提高代码的健壮性和可维护性。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
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社区 版权所有