×

使用Dafny对红黑树的断言证明。 (英语) Zbl 1468.68082号

摘要:红黑树是方便的数据结构,用于插入、搜索和删除具有对数代价的键。然而,保持它们的平衡需要仔细的编程,有时需要处理大量的情况。在本文中,由于R.Sedgewick,我们提出了一种称为左向的红-黑树变体的功能版本,它将要处理的案例数量减少到几个。代码相当简洁,但要对其正确性进行推理需要付出相当大的努力。我们为所有函数提供了形式化的前提和后置条件,证明了它们的终止性,并且代码满足其规范。证明是断言的,包括在代码中散布足够的断言,以帮助验证工具履行证明义务。我们使用了Dafny验证平台,它提供了编程语言、断言语言和验证器。据我们所知,这是该数据结构的第一个断言证明,也是少数几个包含删除的断言证明之一。

MSC公司:

68第05页 数据结构
68伏15 定理证明(自动和交互式定理证明、演绎、解析等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] 阿德尔森·维尔斯基,U.M.,Landis,E.M.:信息组织算法。收录于:苏联数学Doklady pp.1259-1263(1962)
[2] 安德森:平衡搜索树变得简单了。收录:Dehne F.、Sack JR.、Santoro N.、Whitesides S.(编辑)《算法和数据结构》。WADS 1993。计算机科学课堂讲稿,第709卷,第60-71页。柏林施普林格(1993)·Zbl 1504.68041号
[3] Appel,A.W.:有效验证的红黑树。http://www.cs.princeton.edu/appel/papers/redblack.pdf(2011)
[4] Arge,L.,Sedgewick,R.,Seidel,R.:08081摘要收集数据结构。收录于:Arge,L.、Sedgewick,R.、Seidel,R.(编辑)《数据结构》,2008年2月17日至22日,Dagstuhl研讨会论文集,第08081卷。Internationales Begegnungs-und Forschungszentrum für Informatik(IBFI),德国达格斯图尔宫(2008)。http://drops.dagstuhl.de/opus/volltexte/2008/1532/
[5] Bayer,R.,对称二叉b树:数据结构和维护算法,信息学报,1290-306(1972)·Zbl 0233.68009号 ·doi:10.1007/BF00289509
[6] 拜耳,R。;McCreight,EM,《大型有序指数的组织与维护》,《信息学报》,第1173-189页(1972年)·Zbl 0226.68008号 ·doi:10.1007/BF00288683
[7] Bertot,Y。;Casteran,P.,交互式定理证明和程序开发Coq'Art:归纳构造的微积分(2004),纽约:Springer,纽约·Zbl 1069.68095号
[8] Bobot,F.,Filliâtre,J.C.,Marché,C.,Melquiond,G.,Paskevich,A.:Why3平台。版本0.86.1。巴黎南德大学,CNRS,Inria(2015)
[9] Bobot,F.,Filliátre,J.C.,Marché,C.,Paskevich,A.:Why3:牧养你的谚语群。收录于:Boogie 2011:第一期中级验证语言国际研讨会,第53-64页。波兰弗罗茨瓦夫(2011)。https://hal.inia.fr/hal-00790310
[10] 科曼,TH;Leiserson,CE;铆钉,RL;Stein,C.,《算法导论》(2001),剑桥:麻省理工学院出版社,剑桥·Zbl 1047.68161号
[11] de Moura,L.M.,Björner,N.:Z3:高效SMT求解器。收录于:Ramakrishnan,C.R.,Rehof,J.(编辑)《系统构建和分析的工具和算法》,第14届国际会议,TACAS 2008,作为欧洲软件理论和实践联合会议的一部分,ETAPS 2008,匈牙利布达佩斯,2008年3月29日至4月6日会议记录。计算机科学讲义,第4963卷,第337-340页。施普林格,纽约(2008)。10.1007/978-3-540-78800-3-24
[12] Filliátre,J.,Letouzey,P.:证明和程序的函数。摘自:Schmidt,D.A.(编辑)《编程语言与系统》,第13届欧洲编程研讨会,2004年ESOP,作为欧洲软件理论与实践联合会议的一部分,2004年3月29日至4月2日,西班牙巴塞罗那,ETAPS 2004,会议录。计算机科学讲义,第2986卷,第370-384页。Springer,纽约(2004)。10.1007/978-3-540-24725-8-26 ·Zbl 1126.68475号
[13] Guibas,L.J.,Sedgewick,R.:平衡树的二色框架。摘自:第19届计算机科学基础年度研讨会,美国密歇根州安娜堡,1978年10月16-18日,第8-21页。IEEE计算机学会(1978)。10.1109/SFCS.1978.3
[14] Guttag,合资公司;霍宁,JJ;加兰,SJ;琼斯,KD;Modet,A。;Wing,JM,Larch:正式规范的语言和工具。《计算机科学的文本和专著》(1993年),纽约:施普林格,纽约·Zbl 0794.68103号
[15] 赫伯特,L。;Leino,K。;夸雷斯马,J。;梅耶,B。;Nordio,M.,《使用自动程序验证器dafny》,《实用软件验证工具》,156-181(2012),柏林:施普林格出版社,柏林
[16] Jones,CB,《使用VDM进行系统软件开发》(1991),《上鞍河:普伦蒂斯·霍尔》,上鞍河
[17] Leino,K.R.M.:Dafny:功能正确性的自动程序验证器。摘自:Clarke,E.M.,Voronkov,A.(eds.)《程序设计、人工智能和推理逻辑》,第16届国际会议,LPAR-16,塞内加尔达喀尔,2010年4月25日至5月1日,修订论文集。计算机科学课堂讲稿,第6355卷,第348-370页。施普林格,纽约(2010年)。10.1007/978-3-642-17511-4-20 ·Zbl 1253.68095号
[18] Leino,K.R.M.:与Dafny开发验证程序。收录于:Brosgol,B.,Boleng,J.,Taft,S.T.(编辑)ACM高完整性语言技术会议,HILT'12,第9-10页。ACM(2012年)
[19] KRM Leino;Lucio,P.,自然合并排序稳定性和正确性的断言证明,ACM Trans。计算。日志。,17, 1, 6:1-6:22 (2015) ·Zbl 1367.68080号 ·doi:10.145/2814571
[20] Nipkow,T.:功能搜索树的自动功能正确性证明。In:Blanchette,J.,Merz,S.(eds)交互式定理证明。2016年ITP。计算机科学课堂讲稿,第9807卷,第307-322页。查姆施普林格(2016)·Zbl 1478.68065号
[21] Nipkow,T。;Paulson,L。;Wenzel,M.,Isabelle/HOL。高阶逻辑的证明助手(2002),纽约:Springer,纽约·Zbl 0994.68131号
[22] Okasaki,C.,《功能设置中的红黑树》,J.Funct。程序。,9, 4, 471-477 (1999) ·Zbl 0949.68518号 ·doi:10.1017/S0956796899003494
[23] Polikarpova,N.,Tschannen,J.,Furia,C.A.:一个完全验证的容器库。收录于:Björner,N.,de Boer,F.S.(eds.)FM 2015:正式方法第20届国际研讨会,挪威奥斯陆,2015年6月24-26日会议记录。计算机科学课堂讲稿,第9109卷,第414-434页。Springer,纽约(2015)。10.1007/978-3-319-19249-9-26
[24] Reade,CMP,带删除的平衡树:重写和证明练习,科学。计算。程序。,18, 181-204 (1992) ·Zbl 0769.68032号 ·doi:10.1016/0167-6423(92)90009-Z
[25] 塞奇威克,R。;Wayne,K.,《算法》(2011),波士顿:Addison-Wesley,波士顿
[26] Stepney,S.,Cooper,D.,Woodcock,J.:更强大的Z数据精化:推动工业精化的最新技术。收录人:Bowen,J.P.,Fett,A.,Hinchey,M.G.(编辑)ZUM'98:Z形式规范符号,第十一届Z用户国际会议,德国柏林,1998年9月24日至26日会议记录。《计算机科学讲义》,第1493卷,第284-307页。施普林格,纽约(1998年)。10.1007/978-3-540-49676-2-20
[27] Weiss,MA,《数据结构和使用Java解决问题》(1998),波士顿:Addison-Wesley,波士顿
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。