×

Coq中的强类型术语表示。 (英语) Zbl 1269.68041号

摘要:有两种方法可以在证明助手或编程语言中形式化类型化对象语言的语法。外部方法是首先定义一个对非类型化对象表达式进行编码的类型,然后针对非类型化项单独定义类型判断。内在方法是生成一个捕获良好类型对象表达式的单一定义,因此il-type表达式甚至无法表示。内部编码很有吸引力,并且自然会强制要求对对象表达式(例如替换)进行元语言操作时尊重对象类型。代价是内在编码和操作的元语言类型涉及非平凡依赖性,增加了显著的复杂性。本文描述了简单类型语言和多态语言在Coq证明助手中的内部类型形式化及其基本语法操作。编码对象级变量(deBruijn索引)和术语的Coq类型由类型和类型环境索引。一个关键的构造是对定义和引理的引导,这些定义和引语是关于替换行为的,用类似的替换来实现更简单的重命名概念。在简单类型的情况下,这将产生不使用任何类型相等强制的定义。在多态的情况下,一些替换操作仍然需要类型强制,我们至少可以通过统一使用异构等式来部分驯服这一点。

MSC公司:

68甲18 函数编程和lambda演算
68吨15 定理证明(演绎、解析等)(MSC2010)

软件:

Coq公司;海克
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Adams,R.:形式化的元理论,用索引类型族表示术语。In:校对和程序的类型。计算机科学课堂讲稿,第3839卷,第1-16页。斯普林格(2006)·兹比尔1172.68547
[2] Altenkirch,T.,Reus,B.:使用广义归纳类型的lambda项的单数表示。摘自:计算机科学逻辑,第13届国际研讨会(CSL'99)。计算机科学课堂讲稿,第1683卷,第453-468页。斯普林格(1999)·Zbl 0944.03011号
[3] Benton,N.、Hur,C.K.:双正交性、阶跃诱导和编译器正确性。摘自:第14届ACM SIGPLAN函数编程国际会议记录(ICFP'09),第97–108页。ACM(2009)·Zbl 1302.68083号
[4] Benton,N.,Hur,C.K.:多态语言的可实现性和组合编译器正确性。技术代表MSR-TR-2010-62,微软研究院(2010)
[5] Benton,N.,Kennedy,A.J.,Varming,C.:Coq中的一些领域理论和指称语义学。在:高阶逻辑中的定理证明,第22届国际会议(TPHOLs'09)。计算机科学课堂讲稿,第5674卷,第115-130页。施普林格(2009)·Zbl 1252.68248号
[6] Bird,R.,Meertens,L.:嵌套数据类型。摘自:第四届程序构造数学国际会议论文集(MPC'98)。计算机科学课堂讲稿,第1422卷,第52-67页。斯普林格(1998)
[7] Bird,R.,Paterson,R.:de Bruijn表示法作为嵌套数据类型。J.功能。程序。9, 77–91 (1999) ·Zbl 0926.68025号 ·doi:10.1017/S0956796899003366
[8] Brady,E.,Hammond,K.:经过验证的分段解释器是经过验证的编译器。摘自:《第五届生成程序设计和组件工程国际会议论文集》(GPCE’06),第111-120页。ACM(2006)
[9] 查普曼:类型理论应该吞噬自己。参加:逻辑框架和元语言:理论与实践国际研讨会(LFMTP’08)。选举人。注释Theor。计算。科学。,第228卷,第21-36页。爱思唯尔(2009)
[10] Cheney,J.、Hinze,R.:第一类幻影类型。技术代表TR2003-1901,康奈尔大学(2003)
[11] Chlipala,A.:机械化语义的参数化高阶抽象语法。摘自:第13届ACM SIGPLAN函数编程国际会议记录(ICFP'08),第143-156页。ACM(2008)·Zbl 1323.68184号
[12] Coquand,C.:带有显式替换的简单类型lambda-calculus的健全性和完整性的形式化证明。高阶和符号。公司。15, 57–90 (2002) ·兹比尔1041.68016 ·doi:10.1023/A:1019964114625
[13] Danielsson,N.A.:将依赖类型语言形式化为归纳-递归家族。In:校对和程序的类型。计算机科学讲义,第4502卷,第93-109页。施普林格(2007)·Zbl 1178.03026号
[14] Girard,J.Y.、Lafont,Y.、Taylor,P.:证据和类型。剑桥理论计算机科学丛书,第7卷。CUP(1989)·Zbl 0671.68002号
[15] Goguen,H.,McKinna,J.:替代人选。技术代表ECS-LFCS-97-358,爱丁堡大学(1997)
[16] Harper,R.,Honsell,F.,Plotkin,G.:定义逻辑的框架。J.ACM 40(1),143–184(1993)·Zbl 0778.03004号 ·数字对象标识代码:10.1145/138027.138060
[17] Hirschowitz,A.,Maggesi,M.:Coq中的嵌套抽象语法。J.汽车。原因。(2010). doi:10.1007/s10817-010-9207-9·Zbl 1260.68374号
[18] Hur,C.-K.:Heq:异构等式的Coq库。http://www.mpi-sws.org/\(\sim\)gil/Heq/(2010)。2011年2月访问
[19] Kennedy,A.,Russo,C.:广义代数数据类型和面向对象编程。摘自:ACM面向对象编程系统、语言和应用会议(OOPSLA’05),第21-40页。ACM(2005)
[20] McBride,C.:有动机的消除。In:校对和程序的类型。《计算机科学讲义》,第2277卷,第197–216页。斯普林格(2002)·Zbl 1054.03501号
[21] McBride,C.:保留类型的重命名和替换。http://strictlypositive.org/ren-sub.pdf (2005). 2011年2月访问
[22] McBride,C.:令人讨厌但有意义的巧合(依赖于类型安全的语法和评估)。摘自:第六届ACM SIGPLAN泛型编程研讨会会议记录(WGP’10)。ACM(2010)
[23] McBride,C.,McKinna,J.:左侧视图。J.功能。程序。14(1), 69–111 (2004) ·Zbl 1069.68539号 ·doi:10.1017/S0956796803004829
[24] Sheard,T.:未来的语言。在:第19届美国计算机学会面向对象编程系统、语言和应用会议(OOPSLA’04),第116–119页。ACM(2004)
[25] Sozeau,M.:COQ中的编程手指树。摘自:第十二届ACM SIGPLAN函数式编程国际会议记录(ICFP'07),第13-24页。ACM(2007)·Zbl 1291.68157号
[26] Sozeau,M.:简单型lambda-calculus的依赖型形式化:替换、表示、规范化。http://mattam.org/research/publications/drafts/lambda-notes.pdf (2007). 2011年2月访问
[27] Xi、H.、Chen、C.、Chen和G.:保护递归数据类型构造函数。在:第30届ACM SIGPLAN-SIGCT编程语言原理研讨会论文集(POPL’03),第224–235页。ACM(2003)·Zbl 1321.68161号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。