×

精化依赖(共同)模式匹配:没有留下任何模式。 (英语) Zbl 1442.68025号

摘要:在依赖类型的语言中,我们可以通过提供形式证明来保证程序的正确性。为了检查它们,类型检查器将这些程序和证明细化为低级核心语言。然而,这种核心语言本质上是人类难以理解的,所以我们怎么知道我们证明了这一点呢?这个问题尤其适用于依赖的共模式匹配,这是一种通过依赖案例分析和混合归纳/共归纳编写程序和证明的强大语言结构。copattern匹配的定义由以下列表组成条款详细阐述为案例树,可以进一步翻译为原语消除器在之前的工作中,这第二步受到了很多关注,但到目前为止,第一步大多被忽视。我们提出了一种算法,该算法通过与核心语言的依赖共模式匹配来阐述定义,核心语言具有归纳数据类型、共归纳记录类型、身份类型和由良好类型的案例树定义的常量。为了确保正确性,我们证明精化保留了用户子句的第一匹配语义。基于这一理论工作,我们重新实现了Agda使用的通过模式匹配检查定义左侧的算法。同时,新的实现更通用、更简单,并修复了旧版本中的一些错误和可用性问题。因此,我们朝着实用的依赖类型语言的正式验证实现迈出了另一步。

MSC公司:

68甲18 函数编程和lambda演算
68甲15 编程语言理论
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Abel,A.和Pientka,B.(2013年)《具有共同模式的良好递归:终止和生产力的统一方法》。2013年9月25日至27日在美国马萨诸塞州波士顿举行的第十八届ACM SIGPLAN功能编程国际会议记录中,Morrisett,G.&Uustalu,T.(编辑)。ACM出版社,第185-196页。网址:http://doi.acm.org/10.1145/2500365.2500591 ·Zbl 1323.68087号
[2] Abel,A.、Pientka,B.、Thibodeau,D.和Setzer,A.(2013)《共同模式:通过观测规划无限结构》。2013年1月23日至25日,意大利罗马,第40届ACM SIGPLAN-SIGACT编程语言原理年度研讨会,Giacobazzi,R.&Cousot,R.(编辑)。ACM出版社,第27-38页。网址:http://dl.acm.org/citation.cfm?id=2429069 ·Zbl 1301.68080号
[3] (2017)Agda 2.5.3文件。网址:http://agda.readthedocs.io/en/v2.5.3/
[4] .(2017a)基于模式的类型消歧导致非唯一元解决方案。网址:https://github.com/agda/agda/issues/2834(在Agda bug tracker上)。
[5] .(2017b)记录构造函数被接受,记录模式不被接受。网址:https://github.com/agda/agda/issues/2850(在Agda bug tracker上)。
[6] (2017c)。恐慌:未绑定变量。网址:https://github.com/agda/agda/issues/2856(在Agda bug tracker上)。
[7] .(2017d)src/full/agda/typechecking/coverage/match中的内部错误。hs:312。网址:https://github.com/agda/agda/issues/2874。(在Agda bug tracker上)。
[8] (2018a)Unifier丢弃模式。网址:https://github.com/agda/agda/issues/2896。(在Agda bug tracker上)。
[9] .(2018b)子句匹配顺序与案例树不匹配;主题缩减中断。网址:https://github.com/agda/agda/issues/2964。(在Agda bug tracker上)。
[10] Andreoli,J.-M(1992),《线性逻辑中聚焦证明的逻辑编程》。《逻辑计算杂志》2(3),297-347。网址:doi:https://doi.org/10.1093/logcom/2.3.297。 ·Zbl 0764.03020号
[11] Augusson,L.(1985)编译模式匹配。《函数编程语言和计算机体系结构》,FPCA1985,法国南希,1985年9月16日至19日,第201卷。计算机科学课堂讲稿。施普林格,第368-381页。网址:https://doi.org/10.1007/3-540-15975-4_48。
[12] Blanchette,J.C.、Bouzy,A.、Lochbihler,A.、Popescu,A.和Traytel,D.(2017年)《利益之友——在基础证明助理中实施同义词》。《编程语言和系统——第26届欧洲编程研讨会》,ESOP2017,作为欧洲软件理论与实践联合会议的一部分举行,ETAPS 2017,乌普萨拉,瑞典,2017年4月22日至29日,Proceedings,Yang,H.(ed),vol.10201。计算机科学课堂讲稿。斯普林格,第111-140页。网址:https://doi.org/10.1007/978-3-662-54434-1_5 ·Zbl 1485.68280号
[13] Brady,E.(2013)Idris,一种通用的依赖类型编程语言:设计与实现。J.功能程序。23(5),552-593。网址:http://dx.doi.org/10.1017/S095679681300018X ·Zbl 1295.68059号
[14] Brady,E.、McBride,C.和McKinna,J.(2003)感应家庭无需存储其指数。《证明和计划类型》,国际研讨会,TYPES2003,意大利都灵,2003年4月30日至5月4日,修订论文集,Berardi,S.,Coppo,M.&Damiani,F.(eds),第3085卷。计算机科学课堂讲稿。斯普林格,第115-129页。网址:https://doi.org/10.1007/978-3-540-24849-1_8 ·兹比尔1100.68546
[15] Cardelli,L.(1984)编译函数式语言。《1984年美国计算机学会LISP和函数编程会议记录》,1984年8月5日至8日,美国德克萨斯州奥斯汀,美国计算机学会出版社,第208-217页。网址:http://lucacardeli.name/Papers/CompilingML.A4.pdf
[16] Cockx,J.(2017)依赖模式匹配和证明相关统一。博士论文,鲁汶大学,2017年。
[17] Cockx,J.&Abel,A.(2018)阐述依赖(协同)模式匹配。PACMPL,2(ICFP),75:1-75:30。网址:https://doi.org/10.1145/3236770。
[18] Cockx,J.、Devriese,D.和Piessens,F.(2016)作为等价物的统一:相关类型数据的证明统一。Garrigue等人(2016),第270-283页。网址:http://doi.acm.org/10.1145/2951913.2951917。 ·Zbl 1360.68321号
[19] Coquand,T.(1992)与依赖类型的模式匹配。《1992年校对和程序类型研讨会论文集》,瑞典伯斯塔德,1992年6月,Nordström,B.,Pettersson,K.&Plotkin,G.(eds)。查尔默斯科技大学,第71-83页,1992年。网址:http://www.cse.chalmers.se/coquand/模式.ps
[20] de Bruijn,N.G.(1991)类型lambda演算中的伸缩映射。《信息计算》91(2),189-204。网址:https://doi.org/10.1016/0890-5401(91)90066-B·Zbl 0723.68024号
[21] de Moura,L.M.、Kong,S.、Avigad,J.、van Doorn,F.和von Raumer,J.(2015)《精益定理证明器》(系统描述)。《自动扣减——CADE-25——第25届自动扣减国际会议》,德国柏林,2015年8月1日至7日,Proceedings,Felty,A.P.&Middeldorp,A.(eds),第9195卷。计算机科学课堂讲稿。施普林格,第378-388页,网址:https://doi.org/10.1007/978-3-319-21401-6_26 ·Zbl 1465.68279号
[22] Garrigue,J.、Keller,G.和Sumii,E.(编辑)。2016年9月18日至22日在日本奈良举行的第21届ACM SIGPLAN功能编程国际会议记录。ACM出版社。网址:http://doi.acm.org/10.1145/2951913 ·Zbl 1350.68013号
[23] Goguen,H.、McBride,C.和McKinna,J.(2006)《消除依赖模式匹配》。在《代数、意义和计算》一书中,《献给Joseph A.Goguen 65岁生日的散文》,Futatsugi,K.,Jouannaud,J.-P&Meseguer,J.(编辑),第4060卷。计算机科学课堂讲稿。斯普林格,第521-540页。网址:https://doi.org/10.1007/11780274_27 ·Zbl 1132.68327号
[24] (2017)《考证助理参考手册》。INRIA,8.7版,可在以下网址获取:http://coq.inia.fr/
[25] Krishnaswami,N.R.(2009),专注于模式匹配。第36届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,POPL2009,佐治亚州萨凡纳,美国,2009年1月21日至23日,Shao,Z.&Pierce,B.C.(编辑)。ACM出版社,第366-378页。网址:http://doi.acm.org/10.1145/14080881.1480927 ·Zbl 1315.68100号
[26] Laforgue,P.&Régis-Gianas,Y.(2017)ocaml中的Copattern匹配和一流观测,带有宏。在2017年10月9日至11日于比利时纳穆尔举行的第19届声明性编程原则与实践国际研讨会的会议记录中,Vanhoof,W.&Pientka,B.(eds)。ACM,第97-108页。国际标准图书编号978-1-4503-5291-8。网址:https://doi.org/10.1145/3131851.3131869
[27] Licata,D.R.、Zeilberger,N.和Harper,R.(2008)《聚焦于绑定和计算》。2008年6月24日至27日,美国宾夕法尼亚州匹兹堡,第二十三届IEEE计算机科学逻辑研讨会论文集。IEEE计算机学会出版社,第241-252页。网址:https://doi.org/10.109/LICS.2008.48
[28] Maranget,L.(1992)编译惰性模式匹配。在LISP和函数编程中,第21-31页。网址:http://doi.acm.org/10.1145/141471.141499
[29] McBride,C.(2000)依赖型函数程序及其证明。爱丁堡大学博士论文。
[30] McBride,C.和McKinna,J.(2004)左侧视图。J.功能。程序.14(1),69-111。网址:https://doi.org/10.1017/S0956796803004829。 ·Zbl 1069.68539号
[31] Norell,U.(2007)基于依赖类型理论的实用编程语言。查尔默斯科技大学博士论文。
[32] Oury,N.(2007)使用集合近似对依赖类型进行模式匹配覆盖检查。2007年10月5日,德国弗莱堡,《美国计算机学会编程语言与程序验证研讨会论文集》,Stump,A.&Xi,H.(eds),第47-56页。ACM出版社。网址:http://doi.acm.org/10.1145/1292597.1292606
[33] Pollack,R.(1998)《如何相信机器检查的证据》。建构型理论二十五年。牛津大学出版社。网址:http://www.brics.dk/RS/97/18/brics-RS-97-18.pdf ·Zbl 0936.03012号
[34] Setzer,A.、Abel,A.、Pientka,B.和Thibodeau,D.(2014)《共模式的解嵌套》。2014年7月14日至17日在奥地利维也纳举行的RTA-TLCA2014年改写和打字Lambda Calculi联合国际会议,作为维也纳逻辑夏季的一部分。《诉讼》,Dowek,G.(ed),第8560卷。计算机科学课堂讲稿。施普林格,第31-45页。网址:http://dx.doi.org/10.1007/978-3-319-08918-8_3 ·Zbl 1416.68048号
[35] Sozeau,M.(2010)方程:依赖模式匹配编译器。《交互式定理证明》,第一届国际会议,ITP2010,英国爱丁堡,2010年7月11日至14日。《议事录》,Kaufmann,M.&Paulson,L.C.(编辑),第6172卷。计算机科学课堂讲稿。斯普林格,第419-434页。网址:https://doi.org/10.1007/978-3642-14052-5_29 ·Zbl 1291.68369号
[36] Thibodeau,D.、Cave,A.和Pientka,B.(2016)索引尾数据类型。在Garrigue等人(2016)中,第351-363页。网址:http://doi.acm.org/10.1145/2951913.2951929 ·Zbl 1360.68342号
[37] Zeilberger,N.(2008)聚焦和高阶抽象语法。第35届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,POPL2008,美国加利福尼亚州旧金山,2008年1月7日至12日,Necula,G.C.&Wadler,P.(eds),第359-369页。ACM出版社。网址:http://doi.acm.org/10.1145/1328438.1328482 ·Zbl 1295.68071号
[38] Zeilberger,N.(2009)《评估顺序和模式匹配的逻辑基础》。卡内基梅隆大学博士论文。网址:http://software.imdea.org/诺姆·齐尔伯格/thesis.pdf
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。