×

用依赖类型形式化语义双向化和扩展。 (英语) Zbl 1353.68042号

摘要:双向编程涉及一对转换,它们一起实现两个数据域之间的正向和反向关系。语义双向化是一种采用得到-函数(从源映射到视图)作为输入并自动提供-函数(将原始源和更新的视图映射回更新的源),同时保证标准的行为良好属性。这些属性的证明最初是手工完成的,后来该技术的扩展还附带了手工证明或草图。
在这里,我们提供了语义双向化的形式化,并在依赖类型的编程语言Agda中证明了这些属性。然后,我们探索了原始技术的两个先前考虑过的变体,使用我们的初始形式化作为基线,并表明在进行调整时,行为良好的特性得到了保留。此外,我们发现使用非常精确的类型是值得的,它可以表达对双向化技术的见解,甚至可以让我们进一步改进它。特别是,众所周知,形状更改更新对于语义双向化来说是有问题的,其中一种变体通过使用“形状双向化器”解决了这一问题。在过去,这些被认为是额外的组件,但通过利用关于源的形状和现在在类型级别上表达的视图之间的关系的信息,我们表明这些“插件”有时可以被类型推理所取代。
除了关于双向化的结果之外,本文还可以作为使用Agda形式化和验证函数编程应用程序的介绍和具体示例。

MSC公司:

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

参考文献:

[1] Michael Abbott;托尔斯滕·阿滕柯奇;Neil Ghani,Categories of containers,(软件科学和计算结构基础,Proceedings.Foundations of Software Science and Computational Structures,Proceetings,Letter Notes in Computer Science,vol.2620(2003),Springer),23-38·兹比尔1029.68096
[2] 布莱恩·艾德米尔;亚伦·博哈农;马修·费尔贝恩(Matthew Fairbairn);Nate Foster;本杰明·皮尔斯;彼得·休厄尔(Peter Sewell);Dimitrios的Vytiniotis;杰弗里·瓦什伯恩(Geoffrey Washburn);斯蒂芬妮·威里奇;Zdancewic,Steve,大众机械化元理论:流行标志挑战,(《高阶逻辑中的定理证明,程序集》,《高阶逻辑学中的定理验证,程序集,计算机科学讲稿》,第3603卷(2005),施普林格),50-65·Zbl 1152.68516号
[3] 弗朗索瓦州班西隆;Spyratos,Nicolas,更新关系视图的语义,ACM Trans。数据库系统。,6, 4, 557-575 (1981) ·Zbl 0465.68059号
[4] Jean-Philippe Bernardy;Moulin,Guilhem,《彩色字体理论》(函数编程国际会议,会议记录(2013),ACM),61-72·Zbl 1323.68198号
[5] Jean-Philippe Bernardy;Patrik Jansson;Paterson,Ross,《免费证明:依赖类型的参数化》,J.Funct。程序。,22, 2, 107-152 (2012) ·Zbl 1271.68076号
[6] 亚伦·博哈农;本杰明·皮尔斯;杰弗里·沃恩(Jeffrey Vaughan),《关系透镜:可更新视图的语言》(Relational lenses:a language for updateable views),(数据库系统原理,论文集(2006),ACM),338-347
[7] Czarnecki,Krzysztof;Nate Foster;胡镇江;拉尔夫·Lämmel;舒尔,安迪;James Terwilliger,《双向转换:跨学科视角》,(模型转换国际会议,会议记录。模型转换国际大会,会议记录,计算机科学讲稿,第5563卷(2009),Springer),260-283
[8] 皮埃尔·埃瓦里斯特·达冈;McBride,Conor,跨装饰物传输功能,(国际功能编程会议,会议记录(2012),ACM),103-114·Zbl 1291.68139号
[9] 皮埃尔·埃瓦里斯特·达冈;McBride,Conor,《装饰品的分类处理》(Logic in Computer Science,Proceedings(2013),IEEE),530-539·Zbl 1366.68021号
[10] Danielsson,Nils Anders,Agda标准库版本0.9(2014),上次访问时间:2015年7月
[11] Nate Foster;Michael Greenwald;乔纳森·摩尔(Jonathan Moore);本杰明·皮尔斯;Schmitt,Alan,《双向树转换的组合器:视图更新问题的语言方法》,ACM Trans。程序。语言系统。,29, 3, 17 (2007)
[12] Nate Foster;松田、川崎;Voigtländer,Janis,《双向编程的三种互补方法》(通用和索引编程春季学校(SSGIP 2010),修订讲座)。通用和索引编程春季学校(SSGIP 2010),修订讲座,计算机科学讲义,第7470卷(2012),Springer),1-46·Zbl 1374.68103号
[13] Grohne,Helmut,《Agda中语义双向化的形式化》(2013),波恩大学,Agda形式化,网址:
[14] 赫尔穆特·格罗恩;安德烈斯·洛赫;Voigtländer,Janis,用依赖类型形式化语义双向化(双向转换(BX))。《双向变换》(BX),《欧洲工程师联合会研讨会论文集》,第1133卷(2014),75-81
[15] 秀田秀一郎;胡镇江;稻田,Kazuhiro;加藤,Hiroyuki;松田、川崎;Nakano,Keisuke,双向图转换,(函数编程国际会议,会议记录(2010),ACM),205-216·Zbl 1323.68075号
[16] 胡镇江;Mu,Shin-Cheng;Masato Takeichi,基于双向转换开发结构化文档的可编程编辑器,High-订购符号。计算。,21, 1-2, 89-118 (2008) ·Zbl 1194.68096号
[17] Ko、Xiang-Shang;Jeremy Gibbons,《模块化归纳家族》,Prog。通知。,10, 65-88 (2013)
[18] 松田、川崎;王,孟,单态变换的“自由双向化”,科学。计算。程序。,111, 79-109 (2015)
[19] 松田、川崎;Wang,Meng,带透镜的应用双向编程,(国际函数编程会议论文集(2015),ACM),62-74·Zbl 1360.68335号
[20] 松田,Kazutaka;胡镇江;中野圭介;马科托·哈马纳;Takeichi,Masato,基于视图补码函数自动派生的双向转换,(函数编程国际会议,会议记录(2007),ACM),47-58·Zbl 1291.68147号
[21] Norell,Ulf,《Agda中的依赖类型编程》(Advanced Functional programming.Advanced Functional Program,AFP 2008,修订讲座。Advanced函数编程。Advanced-Functional programming,AFP 08,修订讲座,计算机科学讲义,第5832卷(2009),Springer),230-266·Zbl 1263.68038号
[22] Voigtländer,Janis,免费双向化!,(程序设计语言原理,会议录(2009),ACM),165-176·Zbl 1315.68059号
[23] Janis Voigtländer;胡镇江;松田、川崎;Wang,Meng,通过形状双向化器插件增强语义双向化,J.Funct。程序。,2015年5月23日至5515(2013)·Zbl 1303.68039号
[24] Wadler,Philip,免费定理!,(函数编程语言与计算机体系结构,学报(1989),ACM),347-359
[25] 王、孟;Najd,Shayan,《重新审视语义双向化》(Partial Evaluation and Program Manipulation,Proceedings(2014),ACM),51-61
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。