热门标签 | 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)。
推荐阅读
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文详细介绍了C语言的起源、发展及其标准化过程,涵盖了从早期的BCPL和B语言到现代C语言的演变,并探讨了其在操作系统和跨平台编程中的重要地位。 ... [详细]
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • 基于结构相似性的HOPC算法:多模态遥感影像配准方法及Matlab实现
    本文介绍了一种基于结构相似性的多模态遥感影像配准方法——HOPC算法,该算法通过相位一致性模型构建几何结构特征描述符,能够有效应对多模态影像间的非线性辐射差异。文章详细阐述了HOPC算法的原理、实验结果及其在多种遥感影像中的应用,并提供了相应的Matlab代码。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 本文介绍了如何在 Node.js 中使用 `setDefaultEncoding` 方法为可写流设置默认编码,并提供了详细的语法说明和示例代码。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • 2017-2018年度《网络编程与安全》第五次实验报告
    本报告详细记录了2017-2018学年《网络编程与安全》课程第五次实验的具体内容、实验过程、遇到的问题及解决方案。 ... [详细]
  • 本文探讨了在iOS平台上开发BLE(蓝牙低功耗)应用程序时遇到的挑战,特别是如何实现应用在后台模式下仍能持续扫描并连接蓝牙设备。文章提供了具体的配置方法和常见的问题解决方案。 ... [详细]
  • [Vue.js 3.0] Guide – Scaling Up – State Management
    [Vue.js 3.0] Guide – Scaling Up – State Management ... [详细]
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社区 版权所有