×

扩展相等保存和验证的泛型编程。 (英语) Zbl 1522.68119号

摘要:在经过验证的泛型编程中,不能利用具体数据类型的结构,而必须依赖精心挑选的规范集或抽象数据类型(ADT)。函数和单子函数是函数编程的许多应用程序的核心。这就提出了一个问题,即验证函子和单子的有用ADT是什么样子的。许多重要单子的函数映射保持了外延相等。例如,如果\(f,g:A\到B\)是外延相等的,也就是说,\(对于A\中的所有x\),\(f\,x=g\,x\)、\(map\,f\,:\,List\,A\到List\,B\)和\(map \,g\)也是外延相等的。这表明保持外延相等在经过验证的通用编程中可能是一个有用的原则。我们用极简主义的方法探讨了这种可能性:我们在没有扩展理论或使用成熟的刚体的情况下,处理Martin-Löf内涵型理论中的(缺乏)外延平等。也许令人惊讶的是,这种最小的方法被证明是非常有用的。它允许人们推导一元律的简单泛型证明,但也可以在动力系统和控制理论中验证泛型结果。反过来,这些结果避免了冗长的代码重复和特殊的证明。因此,我们的工作是对实用的、经过验证的泛型编程的贡献。

MSC公司:

68甲18 函数编程和lambda演算
03B38型 类型理论
03B70号 计算机科学中的逻辑
18个C20 单体的Eilenberg-Moore和Kleisli构造
68问题65 抽象数据类型;代数规范
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] Altenkirch,T.(2017)从刚毛地狱到同伦天堂?网址:网址:https://www.cs.nott.ac.uk/psztxa/teaks/types-17-hell.pdf
[2] Arvidsson,A.,Johansson,M.&Touche,R.(2019)《证明Haskell的类型分类法》。《函数编程趋势》,Van Horn,D.&Hughes,J.(编辑)。施普林格,第61-74页·Zbl 1495.68034号
[3] Bellman,R.(1957)《动态规划》。普林斯顿大学出版社·Zbl 0077.13605号
[4] Bird,R.(2014)与Haskell一起思考功能。剑桥大学出版社。
[5] Bird,R.S.和De Moor,O.(1997)《程序设计代数》。普伦蒂斯·霍尔计算机科学国际系列。普伦蒂斯·霍尔·Zbl 0867.68042号
[6] Bishop,E.(1967)《建设性分析基础》。麦格劳-希尔·Zbl 0183.01503号
[7] Blanqui,F.等人(2020)《CoLoR:重写和终止的Coq库》(1.8.0版)。网址:https://github.com/fblanqui/color
[8] Botta,N.、Jansson,P.&Ionescu,C.(2017)对政策建议和可避免性计算理论的贡献。J.功能。程序27,1-52·兹比尔1476.68049
[9] Boulier,S.、Pédrot,P.-M.和Tabarau,N.(2017)类型理论的下700个句法模型。2017年CPP ACM SIGPLAN认证课程和证明会议。ACM,第182-194页。
[10] Brady,E.(2017)《Idris.Manning Publications Co.的类型驱动开发》。
[11] Brede,N.和Botta,N.(2021)《关于单子反向归纳法的正确性》。提交给函数编程杂志,网址:https://arxiv.org/abs/2008.02143 ·Zbl 1522.68120号
[12] Carette,J.和Hu,J.Z.S(2021)Agda的新分类库(0.1.5版)。https://github.com/agda/agda-categories
[13] Carette,J.、Farmer,W.M.和Kohlhase,M.(2014)《领域:巩固数学理论知识的结构》。智力。计算。数学252-266·兹比尔1304.68169
[14] Cohen,C.,Coquand,T.,Huber,S.&Mörtberg,A.(2018)立方体类型理论:对单价公理的建设性解释。程序中。类型2015。莱布尼茨国际信息学论文集(LIPIcs)69,第5:1-5:34页。达格斯图尔-莱布尼兹·泽特鲁姆宫(Schloss Dagstuhl-Leibniz-Zentrum für Informatik)·Zbl 1434.03036号
[15] Danielsson,N.A.,Hughes,J.,Jansson,P.&Gibbons,J.(2006)快速和松散的推理在道德上是正确的。ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL 2006)第206-217页。ACM公司·Zbl 1370.68042号
[16] De Moor,O.(1995)顺序决策过程的通用程序。1995年PLILPS编程语言研讨会:实现、逻辑和程序。斯普林格,第1-23页。
[17] Erwig,M.和Kollmansberger,S.(2006)《函数珍珠:Haskell中的概率函数编程》。J.功能。程序.16(1),21-34·Zbl 1091.68023号
[18] Giry,M.(1981)概率论的分类方法。在拓扑和分析的范畴方面,Banaschewski,B.(ed)。数学915课堂讲稿。施普林格,第68-85页·Zbl 0486.60034号
[19] Gnesi,S.、Montanari,U.和Martelli,A.(1981)《作为图搜索的动态编程:代数方法》。J.ACM28(4),737-751·Zbl 0471.90092号
[20] 霍夫曼,M.(1995)《内涵类型理论中的外延概念》。爱丁堡大学博士论文。
[21] Hofmann,M.&Streicher,T.(1994)群胚模型反驳了身份证明的唯一性。程序中。计算机科学中的逻辑专题讨论会(LICS 1994),第208-212页。
[22] Hu,J.Z.S.和Carette,J.(2021)Agda中的形式化范畴理论。在ACM SIGPLAN认证程序和证明会议上,CPP 2021,第327-342页。
[23] Huet,G.&Saíbi,A.(2000)建构性范畴理论。在证明、语言和互动方面。《纪念罗宾·米尔诺(Robin Milnor)、普洛金(Plotkin,G.)、斯特林(Stirling,C.)和托夫特(Tofte,M.)的论文》(编辑)。麻省理工学院,第239-275页。
[24] Ionescu,C.(2009)脆弱性建模和一元动力系统。柏林弗雷大学博士论文。
[25] Ionescu,C.&Jansson,P.(2013)气候影响研究中的测试与证明。程序中。2011款。莱布尼茨国际信息学论文集19。达格斯图尔-莱布尼兹·泽特鲁姆宫(Schloss Dagstuhl-Leibniz-Zentrum für Informatik),第41-54页。
[26] Jansson,P.&Jeuring,J.(2002)《Polytypic数据转换程序》。科学。计算。程序.43(1),35-75·Zbl 1004.68043号
[27] JetBrains研究。(2021)阿伦德定理证明器(1.6.0版)。网址:https://arend-lang.github.io网址/
[28] Jeuring,J.、Jansson,P.和Amaral,C.(2012)《测试类型分类法》。2012年哈斯克尔研讨会论文集。ACM,第49-60页。
[29] Kuznetsov,Y.A.(1998)《应用分叉理论的要素》。第二版施普林格·Zbl 0914.58025号
[30] Manes,E.G.(1976)代数理论。斯普林格·Zbl 0353.18007号
[31] Martin-Löf,P.&Sambin,G.(1984)直觉主义类型理论,第9卷。那不勒斯图书馆·Zbl 0571.03030号
[32] Mcbride,C.&Paterson,R.(2008)《应用程序设计与效果》。J.功能。程序.18(1),1-13·Zbl 1128.68020号
[33] Megacz,A.(2011)Coq中的范畴理论(Coq-Categories)。网址:http://www.megacz.com/berkeley/coq-categories/
[34] Mu,S.-C.,Ko,H.-S.&Jansson,P.(2009)Agda编程代数:关系程序派生的依赖类型。J.功能。程序19(5),545-579·Zbl 1191.68195号
[35] Nordström,B.、Peterson,K.和Smith,J.m.(1990)《Martin-Löf类型理论中的编程》。国际计算机科学专著丛书,第200卷。牛津大学出版社·Zbl 0744.03029号
[36] Norell,U.(2007)基于依赖类型理论的实用编程语言。查尔默斯科技大学博士论文。
[37] Peyton Jones,S.、Tolmach,A.和Hoare,T.(2001)按规则行事:改写为GHC中的实用优化技术。2001年哈斯克尔讲习班,第203-233页。ACM SIGPLAN。
[38] Pierce,B.C.(1991)《计算机科学家的基本范畴理论》。计算机基础系列。麻省理工学院·Zbl 0875.18001号
[39] Sozeau,M.(2010)类型理论中广义重写的新视角。J.正式。原因2(1),41-62·Zbl 1205.68364号
[40] Spitters,B.&Semeria,V.M.(2017)奈梅亨Coq Repository(1.2.0版)。网址:https://github.com/coq-community/corn
[41] Streicher,T.(1991)类型理论的语义学——正确性、完整性和独立性结果。理论计算机科学进展。Birkhä用户·Zbl 0790.68068号
[42] Streicher,T.(1993)《内涵类型理论研究》。习惯化论文,路德维希·马克西米利安-慕尼黑大学。
[43] Streicher,T.(2003)范畴理论与范畴逻辑。达姆施塔特科技大学课堂讲稿。网址:https://www2.mathematik.tu-darmstadt.de/streicher/CTCL.pdf。
[44] (2021)Coq Proof Assistant(版本8.13.0)。网址:https://doi.org/10.5281/zenodo.4501022
[45] (2020)Idris语言文档。网址:http://docs.idris-lang.org/en/latest/
[46] .(2013)同伦类型理论:单叶数学基础。网址:https://homotopytypetheory.org/book ·Zbl 1298.03002号
[47] Thomas,R.和Arnol’D,V.(2012)灾难理论。斯普林格。
[48] Vezzosi,A.、Mörtberg,A.和Abel,A.(2021)Cubical Agda:一种具有单价和更高归纳类型的依赖类型编程语言。J.功能。程序31,e8·Zbl 1512.68058号
[49] Voevodsky,V.、Ahrens,B.、Grayson,D.等人(2021年)《UniMath-计算机检查的单价数学库》。可在https://github.com/UniMath/UniMath
[50] Von Glehn,T.(2015)《多项式与类型理论模型》。剑桥大学博士论文·Zbl 1408.18010号
[51] Wadler,P.(1992)函数式编程的本质。在ACM SIGPLAN-SIGACT编程语言原理研讨会上,第1-14页。
[52] Wiegley,J.(2018)Coq中的范畴理论。可从以下位置获得https://github.com/jwiegley/category-理论
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。