×

驯服合并运算符。 (英语) Zbl 1519.68049号

小结:结石不相交的相交类型支持a对称合并运算符使用子类型。合并操作符将记录串联推广到任何类型,支持对象组合的表现形式,并为硬模块化问题提供简单的解决方案。不幸的是,最近使用不相交类型和合并运算符的计算缺乏具有预期属性的(直接)操作语义,例如决定论主题缩减,并且仅说明终止程序。本文提出了一个类型定向操作语义(TDOS),用于具有交集类型和合并运算符的计算。我们在文献中研究了结石的两种变体。第一个微积分名为\(\lambda_i\),是由B.C.d.S.奥利维拉等[摘自:《第21届ACM SIGPLAN函数编程国际会议论文集》,ICFP 2016。纽约州纽约市:计算机协会(ACM)。364–377 (2016;Zbl 1361.68046号)]与另一种微积分密切相关通过J.邓菲尔德[J.Funct.Program.24,No.2–3,133–165(2014;Zbl 1297.68049号)]. 尽管邓菲尔德为她的演算提出了一种直接的小步语义,但她的语义缺乏确定性和主题约简。使用我们的TDOS,我们获得了具有这两个属性的\(\lambda_i\)的直接语义。第二种演算被称为“(lambda_i^+”),它使用了众所周知的Barendregt、Coppo和Dezani-Ciancaglini(BCD)的子类型关系。因此,\(\lambda_i^+\)扩展了\(\lambda_i \)的更基本的子类型关系,并添加了对记录类型和嵌套合成(它支持合并组件的递归组合)。为了完全获得决定论,\(\lambda_i)和\(\lambda_i^+)都使用了原始\(\lambda_i.)演算中提出的不相交限制。TDOS方法的另一个好处是以直接的方式处理递归,这与以前的不相交类型的计算不同,后者的递归是有问题的。我们将\(\lambda_i\)的静态和动态语义与Dunfield的演算和演算的原始版本联系起来。此外,对于\(\lambda_i^+\),我们展示了BCD子类型的一个新公式,它是算法,具有非常简单的及物性证明,并允许分配性规则的模加(即不影响其他子类型规则)。所有结果都已在Coq定理证明器中完全形式化。

MSC公司:

68甲18 函数编程和lambda演算
03B70型 计算机科学中的逻辑
68V20型 数学形式化与定理证明
PDF格式BibTeX公司 XML格式引用
全文: DOI程序

参考文献:

[1] Ahmed,A.J.(2006)递归和量化类型的步诱导句法逻辑关系。《编程语言与系统》,第15届欧洲编程研讨会,ESOP 2006,会议记录。施普林格,第69-83页·Zbl 1178.68146号
[2] Alpuim,J.、D.S.Oliveira,B.C.和Shi,Z.(2017)不相交多态性。《编程语言与系统——第26届欧洲编程研讨会》,2017年ESOP,瑞典乌普萨拉,2017年4月22日至29日,会议记录。斯普林格,第1-28页·Zbl 1485.68052号
[3] Barbanera,F.,Dezani-Ciancaglini,M.&De'Liguoro,U.(1995)交叉和联合类型:语法和语义。通知。计算119(2),202-230·Zbl 0832.68065号
[4] Barendregt,H.(1984)《兰姆达演算——其语法和语义》。逻辑和数学基础研究·Zbl 0551.03007号
[5] Barendregt,H.、Coppo,M.和Dezani-Ciancaglini,M.(1983)过滤器λ模型和类型赋值的完整性。J.塞姆。逻辑48(4)·Zbl 0545.03004号
[6] Bessai,J.、Dudenhefner,A.、Düdder,B.和Rehof,J.(2016)从理想和过滤器中提取交叉类型的正式验证的子类型算法。类型。
[7] Bessai,J.,Rehof,J.&Düdder,B.(2019)快速验证BCD亚型。在模型、思维模式、元:什么、如何和为什么不?,第11200卷。计算机科学课堂讲稿。查姆:施普林格,第356-371页·Zbl 1519.68044号
[8] Bi,X.,D.S.Oliveira,B.C.&Schrijvers,T.(2018)《嵌套组合的本质》。第32届欧洲面向对象编程会议,ECOOP 2018,2018年7月16-21日,荷兰阿姆斯特丹:Schloss Dagstuhl-Leibniz Zentrum für Informatik,第22:1-22:33页。
[9] Bi,X.和Oliveira,B.C.D.S.(2018),《一级性格类型》。第32届欧洲面向对象编程会议,ECOOP 2018。达格斯图尔-莱布尼兹·泽特鲁姆宫(Schloss Dagstuhl-Leibniz-Zentrum für Informatik),第9:1-9:28页。
[10] Bi,X.,Xie,N.,D.S.Oliveira,B.C.&Schrijvers,T.(2019)《组合编程的分布不相交多态性》。《编程语言和系统——第28届欧洲编程研讨会》,2019年ESOP,捷克共和国布拉格,2019月6日至11日,会议记录。施普林格,第381-409页。
[11] Bracha,G.和Cook,W.R.(1990)基于Mixin的继承。在面向对象编程系统、语言和应用会议/欧洲面向对象编程会议(OOPSLA/ECOOP)上,加拿大渥太华,1990年10月21日至25日,会议记录。ACM,第303-311页。
[12] Büchi,M.和Weck,W.(2000)通用包装。在欧洲面向对象编程会议(ECOOP)上。
[13] Cardelli,L.(1992)《纯微积分中的可扩展记录》。数字化。系统研究中心·Zbl 0837.68059号
[14] Cardelli,L.&Mitchell,J.(1991)《记录上的操作》。数学。结构。计算。科学1,3-48·Zbl 0727.68020号
[15] Cardelli,L.和Wegner,P.(1985)关于理解类型、数据抽象和多态性。ACM计算。《综述》17(4),471-522。
[16] Castagna,G.,Ghelli,G.&Longo,G.(1995)带子类型的重载函数演算。信息计算117(1),115-135·Zbl 0819.03005号
[17] Castagna,G.,Nguyen,K.,Xu,Z.&Abate,P.(2015)具有集合理论类型的多形函数:第2部分:局部类型推断和类型重建。2015年1月15日至17日,印度孟买,2015年POPL,第42届ACM SIGPLAN-SIGACT编程语言原则年度研讨会论文集。ACM,第289-302页·Zbl 1345.68041号
[18] Castagna,G.,Nguyen,K.,Xu,Z.,Im,H.,Lenglet,S.&Padovani,L.(2014)具有集合理论类型的多形函数:第1部分:语法、语义和评估。在2014年第41届ACM SIGPLAN-SIGACT编程语言原理研讨会上,POPL。ACM,第5-18页·兹比尔1284.68126
[19] Castagna,G.&Xu,Z.(2011)参数多态性和子类型的理论基础。2011年9月19日至21日,在日本东京举行的第16届ACM SIGPLAN功能编程国际会议上。ACM公司。第94-106页·Zbl 1323.68066号
[20] Chakravarty,M.M.T.,Keller,G.&Jones,S.L.P.(2005a)关联类型同义词。2005年9月26日至28日在爱沙尼亚塔林举行的第十届ACM SIGPLAN功能编程国际会议记录,ICFP 2005。ACM,第241-253页·Zbl 1302.68055号
[21] Chakravarty,M.M.T.、Keller,G.、Jones,S.L.P.和Marlow,S.(2005b)与类相关的类型。第32届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,POPL 2005,美国加利福尼亚州长滩,2005年1月12-14日。ACM,第1-13页·Zbl 1369.68089号
[22] Chambers,C.&Chen,W.(1999)高效多重预测调度。1999年11月1日至5日,美国科罗拉多州丹佛市,1999年ACM SIGPLAN面向对象编程系统、语言和应用会议论文集(OOPSLA 1999)。ACM,第238-255页。
[23] Chlipala,A.(2010)Ur:使用类型级记录计算的静态类型元编程。ACM Sigplan非.45(6),122-133。
[24] Clifton,C.,Leavens,G.T.,Chambers,C.&Millstein,T.D.(2000)《多java:java的模块化开放类和对称多重分派》。2000年10月15日至19日在美国明尼苏达州明尼阿波利斯举行的2000年ACM SIGPLAN面向对象编程系统、语言和应用会议(OOPSLA 2000)的会议记录。ACM,第130-145页。
[25] Compagnoni,A.B.&Goguen,H.(2003)高阶子类型的类型化操作语义。《信息计算》184(2),242-297·Zbl 1055.68075号
[26] Cook,W.R.和Palsberg,J.(1989)继承及其正确性的指称语义。面向对象编程:系统、语言和应用(OOPSLA)。
[27] Coppo,M.,Dezani-Ciancaglini,M.&Venneri,B.(1981)可解项的函数特征。数学。日志。问题27(2-6),45-58·Zbl 0479.03006号
[28] Davies,R.&Pfenning,F.(2000)交叉口类型和计算效果。2000年9月18日至21日,加拿大蒙特利尔,第五届ACM SIGPLAN功能编程国际会议(ICFP 2000)会议记录。ACM公司。第198-208页·Zbl 1321.68147号
[29] Devriese,D.&Piessens,F.(2011)关于类型类的优点:Agda中的实例参数。2011年9月19日至21日,在日本东京举行的第16届ACM SIGPLAN功能编程国际会议上。ACM公司。第143-155页·Zbl 1323.68108号
[30] Dunfield,J.(2014)阐述交叉和联合类型。J.功能。程序.24(2-3),133-165·Zbl 1297.68049号
[31] Dunfield,J.&Pfenning,F.(2003)调用值语言中交集和并集的类型赋值。《软件科学和计算结构基础》,第六届国际会议,FOSSACS 2003,波兰华沙,会议记录。施普林格,250-266·Zbl 1029.68098号
[32] Ernst,E.(2001)《家族多态性》。第15届欧洲面向对象编程会议论文集。柏林,海德堡:斯普林格·弗拉格,第303-326页·Zbl 0982.68637号
[33] (2014)流量。https://flow.org/
[34] Feng,Y.和Luo,Z.(2009)依赖记录类型的类型化操作语义。2009年5月12日至15日,法国奥斯索斯,《2009年类型》,《证据和程序的诉讼类型》,修订论文集。第30-46页·Zbl 1457.68154号
[35] Fisher,K.和Mitchell,J.(1995)基于委托的对象演算与子类型。计算理论基础·Zbl 1507.68086号
[36] Flatt,M.、Krishnamurthi,S.和Felleisen,M.(1998)《类与混合》。1998年POPL,第25届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录,1998年。ACM,第171-183页。
[37] Freeman,T.S.&Pfenning,F.(1991)《美国计算机学会SIGPLAN’91编程语言设计与实现会议(PLDI)论文集》中ML的精化类型。ACM,第268-277页。
[38] Goguen,H.(1994)《类型理论的类型化操作语义》。博士论文。英国爱丁堡大学。
[39] Goguen,H.(1995)《类型化操作语义》。《类型兰姆达演算及其应用》,第二届国际类型兰姆达演算及应用会议,TLCA 1995年,1995年,会议记录。施普林格,第186-200页·Zbl 1063.68556号
[40] Hall,C.V.、Hammond,K.、Jones,S.L.P.和Wadler,P.(1996)《haskell中的类型课程》。ACM变速器。程序。《语言汇编》18(2),109-138。
[41] Harper,R.&Pierce,B.(1991)基于对称级联的记录演算。第18届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。美国纽约州纽约市:计算机协会,第131-142页。
[42] Huang,X.和Oliveira,B.C.d.S.(2020)使用合并运算符的微积分的类型定向操作语义。在第34届面向对象编程欧洲会议上,ECOOP 2020。
[43] Kaes,S.(1988)多态编程语言中的参数重载。1988年ESOP,第二届欧洲规划研讨会,会议记录。施普林格,第131-144页。
[44] Kniesel,G.(1999)运行时组件自适应的类型安全委托。在欧洲面向对象编程会议(ECOOP)上。
[45] Knuth,D.E.(1971)形式语义学示例。在算法语言语义研讨会上。斯普林格·Zbl 0221.68014号
[46] Kurata,T.和Takahashi,M.(1995),交叉口类型系统的可判定特性。在第二届国际键入Lambda演算和应用会议记录中。Springer-Verlag,第297-311页·Zbl 1063.03519号
[47] Laurent,O.(2012)《通过切割消除进行子类型划分的交集类型》。信息学基础121(1-4),203-226·Zbl 1408.03007号
[48] Laurent,O.(2019)与施工人员的交叉口子类型。在《计算模型发展第十二次研讨会和交叉口类型和相关系统第九次研讨会论文集》(DCM 2018和ITRS 2018)中,第73-84页·Zbl 1519.68050号
[49] Leijen,D.(2004)可扩展行的第一类标签。技术报告UU-CS-2004-51。乌得勒支大学计算机科学系。UTCS技术报告。
[50] Lieberman,H.(1986)使用原型对象实现面向对象系统中的共享行为。在面向对象编程系统、语言和应用程序(OOPSLA)中。
[51] Luo,Z.(1999)胁迫子类型。J.日志。计算9(1),105-130·兹伯利0920.03062
[52] (2012)TypeScript。https://www.typescriptlang.org/
[53] Muehlboeck,F.&Tate,R.(2018)通过集成子类型赋予联合和交叉类型权力。程序。ACM计划。语言2(OOPSLA),112:1-112:29。
[54] Muschevic,R.、Potanin,A.、Tempero,E.D.和Noble,J.(2008)《实践中的多重调度》。《第23届ACM SIGPLAN面向对象编程、系统、语言和应用会议论文集》,OOPSLA 2008年10月19-23日,美国田纳西州纳什维尔,ACM,第563-582页。
[55] Nierstrasz,O.,Ducasse,S.&Schärli,N.(2006)扁平化特征。对象技术杂志。5(4),129-148。
[56] Odersky,M.,Altherr,P.,Cremet,V.,Emir,B.,Maneth,S.,Micheloud,S.、Mihaylov,N.、Schinz,M.、Stenman,E.和Zenger,M.(2004)《Scala编程语言概述》。技术报告。洛桑埃科尔理工学院。
[57] Odersky,M.,Wadler,P.&Wehr,M.(1995)《超载的第二次审视》。《第七届函数式程序设计语言与计算机体系结构国际会议论文集》,FPCA 1995。ACM,第135-146页。
[58] Oliveira,B.C.d.S.,Moors,A.&Odersky,M.(2010)将类作为对象和隐式类型。《第25届ACM SIGPLAN面向对象编程、系统、语言和应用年会论文集》,OOPSLA 2010年10月17日至21日,美国内华达州Reno/Tahoe。ACM,第341-360页。
[59] Oliveira,B.C.D.S.,Shi,Z.和Alpuim,J.(2016)不相交交叉类型。2016年9月18日至22日在日本奈良举行的第21届ACM SIGPLAN功能编程国际会议记录,ICFP 2016。ACM,第364-377页·Zbl 1361.68046号
[60] Ostermann,K.(2002)与委托层的动态组合协作。在欧洲面向对象编程会议(ECOOP)上·Zbl 1049.68824号
[61] Palsberg,J.&Zhao,T.(2004)记录串联和子类型的类型推断。《信息计算》189(1),54-86·Zbl 1082.68013号
[62] Park,G.,Hong,J.Jr,G.L.S.和Ryu,S.(2019)具有方差的多态对称多重调度。程序。ACM计划。语言3(POPL),11:1-11:28。
[63] Pierce,B.和Steffen,M.(1997)高阶子类型。西奥。计算。科学176(1),235-282·Zbl 0903.68020号
[64] Pierce,B.C.(1989)具有有界变量的交叉类型的子类型关系的决策程序。技术报告。卡内基梅隆大学计算机科学学院。
[65] Pierce,B.C.(1991)《交叉类型和有界多态性的编程》。博士论文。卡内基·梅隆大学。
[66] Pierce,B.C.&Turner,D.N.(1998)局部类型推断。《美国计算机学会编程语言原理研讨会论文集》,第252-265页。
[67] Plotkin,G.(1973)Lambda-可定义性和逻辑关系。
[68] Poll,E.(1997)具有宽子类型和记录更新的系统F。在计算机软件理论方面的国际研讨会上。斯普林格,第439-457页·Zbl 0884.03013号
[69] Pottier,F.(2000)三部分式推理机。在欧洲编程研讨会上。施普林格,第320-335页·Zbl 0971.68581号
[70] Pottinger,G.(1980)强正规化λ-项的类型赋值。致HB Curry:《组合逻辑、Lambda微积分和形式主义论文》,第561-577页。
[71] 。(2011)锡兰。https://ceylon-lang.org/
[72] Rehof,J.&Urzyczyn,P.(2011)具有交集类型的有限组合逻辑。在国际打字兰姆达演算和应用会议上·Zbl 1331.03019号
[73] Rémy,D.(1989)ML自然扩展中的类型检查记录和变体。第16届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,第77-88页。
[74] Rémy,D.(1995)约束类型的类型检查案例研究:打字记录串联。发表于英国剑桥牛顿学院计算机科学类型进展研讨会。
[75] Reynolds,J.C.(1988)编程语言Forsythe的初步设计。技术报告CMU-CS-88-159。卡内基·梅隆大学。
[76] Reynolds,J.C.(1991)语言与交叉类型的连贯性。《计算机软件的理论方面》,1991年TACS国际会议,日本仙台,1991年9月24日至27日,会议记录。施普林格,第675-700页·兹比尔1493.68061
[77] Reynolds,J.C.(1997)编程语言Forsythe的设计。在类ALGOL语言中。施普林格,第173-233页。
[78] Schaefer,I.、Bettini,L.和Damiani,F.(2011)面向增量编程的组合类型选择。《面向方面软件开发第十届国际会议论文集》,AOSD 2011。ACM,第43-56页。
[79] Schärli,N.、Ducasse,S.、Nierstrasz,O.和Black,A.P.(2003)《特征:可组合的行为单位》。在ECOOP 2003-面向对象编程中,第17届欧洲会议,会议记录。施普林格,第248-274页。
[80] Siek,J.G.(2019)交叉口类型的子类型传递性。CoRR.abs/1906.09709。
[81] Siek,J.G.和Taha,W.(2006)功能语言的渐进式键入。方案和功能编程研讨会。
[82] Siek,J.G.&Wadler,P.(2010)《三个人》,有责任也有责任。2010年1月17日至23日,西班牙马德里,第37届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录,2010年POPL。ACM,第365-376页·Zbl 1312.68138号
[83] Statman,R.(1985)逻辑关系与类型λ演算。信息控制65(2/3),85-97·Zbl 0594.03006号
[84] Statman,R.(2015)交叉口类型的有限模型特性。电子。程序。西奥。计算。科学。177, 1-9.
[85] Tait,W.W.(1967)有限型泛函的内涵解释I.J.Symb。日志32(2),198-212·Zbl 0174.01202号
[86] Ungar,D.&Smith,R.B.(1988)《自我:简单的力量》(面向对象语言)。第三十三届IEEE计算机学会国际会议论文摘要。
[87] Wadler,P.(1998)表达式问题。发布在Java Genericity邮件列表上。
[88] Wadler,P.&Blott,S.(1989)《如何减少即席多态性。1989年1月11日至13日在美国德克萨斯州奥斯汀举行的第十六届美国计算机学会编程语言原理年会的会议记录。ACM出版社,第60-76页。
[89] Wadler,P.&Findler,R.B.(2009)类型良好的项目不可指责。《编程语言与系统》,第18届欧洲编程研讨会,2009年ESOP,英国约克,2009年3月22日至29日。诉讼程序。斯普林格,第1-16页·Zbl 1234.68063号
[90] Wand,M.(1989)记录串联和多重继承的类型推断。诉讼程序。第四届计算机科学逻辑年会。第92-97页·Zbl 0716.68017号
[91] Wang,Y.,Zhang,H.,D.S.Oliveira,B.C.&Servetto,M.(2018)FHJ:分层调度和覆盖的正式模型。在第32届面向对象编程欧洲会议上,ECOOP 2018,2018年7月16日至21日,荷兰阿姆斯特丹。
[92] White,L.,Bour,F.&Yallop,J.(2014)《模块隐含》。《ML Family/OCaml Users and Developers Workshops会议录》,ML/OCaml 2014,瑞典哥德堡,2014年9月4-5日,第22-63页。
[93] Wright,A.K.和Felleisen,M.(1994)《类型健全性的句法方法》。Inf.计算115(1),38-94·Zbl 0938.68559号
[94] Xie,N.,Oliveira,B.C.D.S.,Bi,X.&Schrijvers,T.(2020)通过不相交多态性实现的行和有界多态性。第34届欧洲面向对象编程会议,ECOOP 2020。
[95] Zwanenburg,J.(1995)用交叉点类型记录串联。
[96] Zwanenburg,J.(1997)用于记录串联和分型的一种类型系统。技术报告。埃因霍温理工大学。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。