×

使用SMT解算器的语义子类型。 (英语) Zbl 1248.68131号

摘要:我们研究了一种一阶函数式语言,将精化类型(满足布尔表达式的类型子集)和类型测试(测试值是否属于类型的布尔表达式)的思想进行了新颖的结合。
我们的核心演算可以表达丰富多样的打字习惯用法;例如,交集、并集、否定、单例、可空、变量和代数类型都是可派生的。我们制定了一种语义,其中表达式表示术语,类型被解释为一阶逻辑公式。子类型定义为类型语义之间的有效隐含。
这些公式在我们使用标准一阶理论公理化的特定模型中进行解释。在此基础上,我们提出了一种新的类型检查算法,该算法能够消除许多动态测试并静态检测许多错误。其关键思想是依靠可满足性模理论求解器高效计算子类型。
此外,使用可满足性模理论求解器,我们可以显示非确定性表达式正规形式的唯一性,在类型检查失败时提供精确的反例,检测空类型,并在静态和运行时计算类型实例。

MSC公司:

68甲18 函数编程和lambda演算
68甲15 程序设计语言理论

关键词:

一阶函数语言
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Leino,ACM应用计算研讨会论文集(2009年)
[2] 内政部:10.1145/1806596.1806632·数字对象标识代码:10.1145/1806596.1806632
[3] Kopylov,第18届IEEE计算机科学逻辑研讨会论文集(2003年)
[4] Komondoor,第十一届系统构建和分析工具和算法国际会议论文集(2005年)
[5] 内政部:10.1145/1667048.1667051·数字对象标识代码:10.1145/1667048.1667051
[6] Sage Knowles:第一类类型、一般精炼类型和动态的统一混合检查(2007)
[7] 内政部:10.1145/360248.360252·Zbl 0329.68018号 ·doi:10.1145/360248.360252
[8] 内政部:10.1145/1542476.1542510·数字对象标识代码:10.1145/1542476.1542510
[9] Jhala,TACAS会议记录(2007年)
[10] Jhala,《CAV会议录》第470页–(2011年)
[11] Jaffar,J.Log。阿尔盖布。程序。第19页,第503页–(1994年)·Zbl 00639141号 ·doi:10.1016/0743-1066(94)90033-7
[12] Hosoya,第五届ACM SIGPLAN函数编程国际会议记录(2000年)
[13] 内政部:10.1145/767193.767195·Zbl 05458149号 ·doi:10.1145/767193.767195
[14] 内政部:10.1017/S0956796807006338·Zbl 1128.68090号 ·网址:10.1017/S0956796807006338
[15] 格林伯格,第37届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集(2010年)
[16] Gordon,ISSS会议记录(2002)
[17] DOI:10.1023/A:1005797629953·Zbl 0882.68019号 ·doi:10.1023/A:1005797629953
[18] Genevès,2007年ACM SIGPLAN编程语言设计与实现会议记录(2007)
[19] 内政部:10.1145/1391289.1391293·Zbl 1325.68136号 ·doi:10.145/1391289.1391293
[20] Freeman,ACM SIGPLAN'91编程语言设计与实现会议论文集(1991)
[21] 弗拉纳根,程序设计语言原理研讨会论文集(2006)
[22] Fisher,程序设计语言原理研讨会论文集(2006年)
[23] Findler,第七届ACM SIGPLAN函数编程国际会议记录(ICFP'02)(2002)
[24] 邓菲尔德,第31届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,POPL(2004)
[25] 数字对象标识码:10.1145/1066100.1066102·Zbl 1323.68462号 ·doi:10.1145/1066100.1066102
[26] de Moura,FMCAD会议记录(2009)
[27] de Moura,TACAS会议记录(2008)
[28] de Moura,CADE-21会议记录,第183页–(2007年)
[29] Damm,TACS会议记录(1994年)
[30] Crockford,JavaScript对象符号(Json)的应用程序/Json媒体类型(2006)·doi:10.17487/rfc4627
[31] 科恩,SIGMOD会议记录(2006)
[32] DOI:10.1006/inco.2001.3128·Zbl 1007.68029号 ·doi:10.1006/inco.2001.3128
[33] 卡斯塔尼亚,DBPL会议记录(2005)
[34] Cartwright,PLDI会议记录(1991)
[35] Xi,第26届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集(1999)
[36] 内政部:10.1017/S0956796804004004·Zbl 1083.68021号 ·网址:10.1017/S0956796804004004
[37] 内政部:10.1006/inco.1994.1093·Zbl 0938.68559号 ·doi:10.1006/inco.1994.1093
[38] Lerner,PLDI会议记录(2007)
[39] 伯斯托尔,LISP会议记录(1980)
[40] 内政部:10.1145/239912.239917·数字对象标识代码:10.1145/239912.239917
[41] Unno,第十一届国际ACM SIGPLAN声明性编程原则与实践会议记录(2009年)
[42] Tobin-Hochstadt,第十五届ACM SIGPLAN函数编程国际会议记录(2010)
[43] Tobin-Hochstadt,第35届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集(2008年)
[44] Buneman,DBPL会议记录(1999)
[45] 内政部:10.1016/0304-3975(95)00024-Q·Zbl 0874.68092号 ·doi:10.1016/0304-3975(95)00024-Q
[46] 内政部:10.1016/0898-1221(94)00215-7·兹伯利00718810 ·doi:10.1016/0898-1221(94)00215-7
[47] Böhme,TPHOL会议记录(2008)
[48] Terauchi,《POPL会议录》(2010年)
[49] Bierman,第15届ACM SIGPLAN函数编程国际会议(OOPSLA)会议记录(2007)
[50] Swamy,《员工持股计划》(2010年)
[51] Jones,使用VDM的系统软件开发(1986)·Zbl 0584.68008号
[52] Sozeau,《类型学报》(2006年)
[53] Bierman,《使用SMT求解器进行语义分型》(2010年)·Zbl 1323.68096号 ·doi:10.1145/1863543.1863560
[54] 西蒙,《POPL会议记录》(2003年)
[55] Benzaken,第八届ACM SIGPLAN函数编程国际会议(ICFP)会议记录(2003)
[56] Saraswat,OOPSLA会议记录(2008)
[57] 本特森,《CSF会议录》(2008年)
[58] 内政部:10.1109/32.713327·数字对象标识代码:10.1109/32.713327
[59] Rondon,PLDI会议记录(2008)
[60] 雷诺兹,《类算法语言》第173页–(1996)
[61] Ranise,SMT-LIB标准:1.2版(2006)
[62] 麦卡锡,IFIP大会会议记录(1962)
[63] Lovas,LFMTP会议记录(2007)
[64] Barrett,CAV会议记录(2007年)
[65] 内政部:10.1142/S0218213008004060·Zbl 05514821号 ·doi:10.1142/S0218213008004060
[66] 巴内特,FMCO会议记录(2005)
[67] Backes,CPP会议记录,第11届第二语言习得生成方法会议(2011年)
[68] Aspinall,类型和编程语言高级主题(2005)
[69] 阿斯皮纳尔,CSL会议记录(1994年)
[70] Aiken,第21届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集(1994年)
[71] Aiken,ICFP 03会议记录,第八届ACM SIGPLAN函数编程国际会议(1993)
[72] Abiteboul,《网上数据》(2000年)
[73] 普拉特,《POPL学报》(1983年)
[74] 内政部:10.1145/345099.345100·Zbl 01935173号 ·doi:10.1145/345099.345100
[75] 皮尔斯,类型与程序设计语言(2002)
[76] Pierce,用交集类型、并集类型和多态性编程(1991)
[77] Nordström,国际单项体育联合会论文集(1983)
[78] Microsoft代码名“M”建模语言规范0.5版(2009)
[79] 梅耶,埃菲尔:语言(1992)
[80] 内政部:10.1007/s10817-007-9085-y·Zbl 1203.68188号 ·doi:10.1007/s10817-007-9085-y
[81] Meijer,SIGMOD会议记录(2007年)
[82] Bierman,第15届ACM SIGPLAN国际函数编程会议(ICFP)会议记录(2010年)
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。