DTacs - Program Verifier Tactics : Reducing the Development Time for Program Verifiers with re-usable Verification Strategies

DTacs - 程序验证器策略:通过可重复使用的验证策略减少程序验证器的开发时间

基本信息

  • 批准号:
    EP/M018407/1
  • 负责人:
  • 金额:
    $ 12.77万
  • 依托单位:
  • 依托单位国家:
    英国
  • 项目类别:
    Research Grant
  • 财政年份:
    2015
  • 资助国家:
    英国
  • 起止时间:
    2015 至 无数据
  • 项目状态:
    已结题

项目摘要

Software is woven into just about everything digital that we touch or depend upon: from communications, entertainment and consumer electronics - to railway, air-control, automotive, finance, defence, national infrastructure and health-care systems. The dependability of such software remains a major challenge. In 2002 it was estimated that software mistakes cost the US economy $59 Billion; more recent estimates have suggested an annual cost of more than $300 Billion worldwide. Dependability is therefore a key differentiator in commercial products. Whoever can cost-effectively crack the dependability challenge will have a major advantage.Conventional techniques used to ensure dependability are based around testing; and this can amount to half of the development time. Still, a fundamental problem of testing is that all combinations of inputs and conditions are not feasible. Formal approaches to software engineering use mathematics to ensure dependability. These have the advantage over conventional testing techniques that the software can be proven correct for all combinations of inputs and conditions. This is a result of using mathematics, and increases both the dependability and product quality. However, common bottlenecks of these approaches are limited availability of theorem proving skills and lack of automation provided by tools. Therefore they have often suffered from increased development time and costs when applied beyond niche markets such as safety and mission critical systems.Program verification is a formal software engineering technique where the source code is combined with a formal specification of desired behaviour. Mathematics is used to prove that the program satisfies its specification. Recently, there has been a wave of new program verifiers, where the underlying mathematics is hidden. Skills familiar to programmers are used to guide the proof in the program text rather than theorem proving skills; removing the "skill-barrier" associated with theorem provers and creating a more accessible discipline for a software engineer. Still, an open challenge is to reduce the amount of guidance that is required to complete the verification of a program - a challenge that has to be solved before program verification becomes a viable cost-effective mainstream software engineering discipline. This proposal addresses the automation challenge by enabling software engineers to encode patterns used to guide proofs directly in the program text as special programs. As a result, low-level and repetitive details, often resulting from a trial-and-error process, can be replaced by a higher-level underlying pattern. These can be re-used for similar tasks, liberating users from low-level and repetitive search tasks. As a pattern only needs to be developed once, less guidance will be needed - increasing automation and reducing development time and cost.The language used to write programs and guide proofs within a program verifier will be extended to enable software engineers to also encode their verification patterns. The extension should be as minimal as possible, to avoid reducing accessibility with new skill-barriers that have to be overcome. The development of such language requires a new understanding of how users guide program verifiers. We will focus on the Dafny program verifier; re-engineering the development process used in a selection of the available Dafny case studies; and developing and verifying new programs from scratch. In both cases, each step of the verification process will be captured, creating a catalogue of verification patterns. Based on this catalogue the language used within Dafny will be extended with a new special method called a `DTac' (Dafny Tactic). A verification pattern will be encoded as a DTac. Automation will be achieved by developing a new tool called Tacny that can read DTacs and apply them to other Dafny programs to automate the verification.
软件几乎融入了我们接触或依赖的所有数字化领域:从通信、娱乐和消费电子产品到铁路、空气控制、汽车、金融、国防、国家基础设施和医疗保健系统。这种软件的可靠性仍然是一个重大挑战。2002年,据估计软件错误给美国经济造成了590亿美元的损失;最近的估计表明,全球每年造成的损失超过3000亿美元。因此,可靠性是商业产品的关键区别。谁能经济有效地解决可靠性挑战,谁就将拥有巨大的优势。用于确保可靠性的传统技术是基于测试的;这可能占开发时间的一半。然而,测试的一个基本问题是,输入和条件的所有组合都是不可行的。软件工程的形式化方法使用数学来确保可靠性。与传统的测试技术相比,这些技术的优势在于可以证明软件对于所有输入和条件的组合都是正确的。这是使用数学的结果,并提高了可靠性和产品质量。然而,这些方法的共同瓶颈是有限的可用性定理证明技能和缺乏自动化提供的工具。因此,当应用于安全和使命关键系统等利基市场之外时,它们往往会增加开发时间和成本。程序验证是一种正式的软件工程技术,其中源代码与所需行为的正式规范相结合。数学是用来证明程序满足其规格。最近,出现了一波新的程序验证器,其中隐藏了底层的数学。程序员熟悉的技能被用来指导程序文本中的证明,而不是定理证明技能;消除了与定理证明器相关的“技能障碍”,为软件工程师创建了一个更容易理解的学科。尽管如此,一个开放的挑战是减少完成程序验证所需的指导量-在程序验证成为可行的成本效益主流软件工程学科之前必须解决的挑战。该提案通过使软件工程师能够将用于指导证明的模式直接编码在程序文本中作为特殊程序来解决自动化挑战。因此,通常由试错过程产生的低级别和重复的细节可以被更高级别的基础模式所取代。这些可以重复用于类似的任务,将用户从低级和重复的搜索任务中解放出来。由于一个模式只需要开发一次,因此需要的指导更少--提高了自动化程度,减少了开发时间和成本。用于编写程序和在程序验证器中指导证明的语言将得到扩展,使软件工程师能够对他们的验证模式进行编码。这种扩展应尽可能小,以避免因必须克服的新技能障碍而降低可获得性。这种语言的发展需要对用户如何引导程序验证器有一个新的理解。我们将专注于Dafny程序验证器;重新设计在选择可用的Dafny案例研究中使用的开发过程;从头开始开发和验证新程序。在这两种情况下,核查过程的每一步都将被记录下来,从而创建核查模式目录。在此目录的基础上,Dafny中使用的语言将被扩展为一种新的特殊方法,称为“DTac”(Dafny战术)。验证模式将被编码为DTac。自动化将通过开发一种名为Tacny的新工具来实现,该工具可以读取DTac并将其应用于其他Dafny程序以自动化验证。

项目成果

期刊论文数量(5)
专著数量(0)
科研奖励数量(0)
会议论文数量(0)
专利数量(0)
DAReing to reduce the annotation overheads of verified programs
DAReing 减少已验证程序的注释开销
  • DOI:
    10.48550/arxiv.1706.04023
  • 发表时间:
    2017
  • 期刊:
  • 影响因子:
    0
  • 作者:
    Grov G
  • 通讯作者:
    Grov G
Automating Event-B invariant proofs by rippling and proof patching
通过波纹和证明修补自动化事件 B 不变证明
  • DOI:
    10.1007/s00165-018-00476-7
  • 发表时间:
    2019
  • 期刊:
  • 影响因子:
    1
  • 作者:
    Lin Y
  • 通讯作者:
    Lin Y
FM 2016: Formal Methods
FM 2016:形式化方法
  • DOI:
    10.1007/978-3-319-48989-6_20
  • 发表时间:
    2016
  • 期刊:
  • 影响因子:
    0
  • 作者:
    Grov G
  • 通讯作者:
    Grov G
Extending the Dafny IDE with Tactics and Dead Annotation Analysis (tool demo)
使用策略和死注释分析扩展 Dafny IDE(工具演示)
  • DOI:
  • 发表时间:
    2017
  • 期刊:
  • 影响因子:
    0
  • 作者:
    Grov G.
  • 通讯作者:
    Grov G.
{{ item.title }}
{{ item.translation_title }}
  • DOI:
    {{ item.doi }}
  • 发表时间:
    {{ item.publish_year }}
  • 期刊:
  • 影响因子:
    {{ item.factor }}
  • 作者:
    {{ item.authors }}
  • 通讯作者:
    {{ item.author }}

数据更新时间:{{ journalArticles.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ monograph.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ sciAawards.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ conferencePapers.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ patent.updateTime }}

Gudmund Grov其他文献

AFM'10 Automated Formal Methods
AFM10 自动形式方法
  • DOI:
  • 发表时间:
    2010
  • 期刊:
  • 影响因子:
    0
  • 作者:
    Cliff B. Jones;Gudmund Grov;Alan Bundy
  • 通讯作者:
    Alan Bundy
Grand Challenges in Computing Research 2010
2010 年计算研究的重大挑战
  • DOI:
  • 发表时间:
    2010
  • 期刊:
  • 影响因子:
    0
  • 作者:
    Gudmund Grov;Alan Bundy;Cliff B. Jones;Andrew Ireland
  • 通讯作者:
    Andrew Ireland
AI4FM: A New Project Seeking Challenges
AI4FM:寻求挑战的新项目
  • DOI:
  • 发表时间:
    2010
  • 期刊:
  • 影响因子:
    0
  • 作者:
    Gudmund Grov
  • 通讯作者:
    Gudmund Grov

Gudmund Grov的其他文献

{{ item.title }}
{{ item.translation_title }}
  • DOI:
    {{ item.doi }}
  • 发表时间:
    {{ item.publish_year }}
  • 期刊:
  • 影响因子:
    {{ item.factor }}
  • 作者:
    {{ item.authors }}
  • 通讯作者:
    {{ item.author }}

相似海外基金

REU Site: The DUB REU Program for Human-Centered Computing Research
REU 网站:DUB REU 以人为中心的计算研究计划
  • 批准号:
    2348926
  • 财政年份:
    2024
  • 资助金额:
    $ 12.77万
  • 项目类别:
    Standard Grant
REU Site: Summer Research Program for Community College and Liberal Arts College Students in Physics and Astronomy
REU 网站:社区学院和文理学院学生物理和天文学夏季研究计划
  • 批准号:
    2349111
  • 财政年份:
    2024
  • 资助金额:
    $ 12.77万
  • 项目类别:
    Continuing Grant
Collaborative Research: REU Site: Summer Undergraduate Research Program in RNA and Genome Biology (REU-RGB)
合作研究:REU 网站:RNA 和基因组生物学暑期本科生研究计划 (REU-RGB)
  • 批准号:
    2349255
  • 财政年份:
    2024
  • 资助金额:
    $ 12.77万
  • 项目类别:
    Continuing Grant
Understanding Teacher Effectiveness and Retention Among Single Subject Math Program Completers in the First Five Years of Teaching
了解教师在教学前五年的效率和单科数学课程完成者的保留率
  • 批准号:
    2345187
  • 财政年份:
    2024
  • 资助金额:
    $ 12.77万
  • 项目类别:
    Continuing Grant
Conference: Early Career Development (CAREER) Program Workshop for STEM Education Research at Minority-Serving Institutions
会议:少数族裔服务机构 STEM 教育研究早期职业发展 (CAREER) 计划研讨会
  • 批准号:
    2400690
  • 财政年份:
    2024
  • 资助金额:
    $ 12.77万
  • 项目类别:
    Standard Grant
A cluster randomized controlled trial to evaluate pharmacy-based health promotion program to improve blood pressure control in Bangladesh, India and Pakistan
一项整群随机对照试验,旨在评估孟加拉国、印度和巴基斯坦基于药房的健康促进计划,以改善血压控制
  • 批准号:
    23K24566
  • 财政年份:
    2024
  • 资助金额:
    $ 12.77万
  • 项目类别:
    Grant-in-Aid for Scientific Research (B)
Cultivating Diversity Awareness in Japanese Med Schools with a foreign Standardized Patient program
通过外国标准化患者计划培养日本医学院的多样性意识
  • 批准号:
    24K13361
  • 财政年份:
    2024
  • 资助金额:
    $ 12.77万
  • 项目类别:
    Grant-in-Aid for Scientific Research (C)
Conference: The Polymath Jr Program
会议:小博学者计划
  • 批准号:
    2341670
  • 财政年份:
    2024
  • 资助金额:
    $ 12.77万
  • 项目类别:
    Continuing Grant
RAPID: Reimagining a collaborative future: engaging community with the Andrews Forest Research Program
RAPID:重新构想协作未来:让社区参与安德鲁斯森林研究计划
  • 批准号:
    2409274
  • 财政年份:
    2024
  • 资助金额:
    $ 12.77万
  • 项目类别:
    Standard Grant
Creating a Grow-Your-Own Program for Recruiting and Supporting Computer Science Teacher Candidates in Rural Georgia
创建一个自己成长的计划,用于招募和支持佐治亚州农村地区的计算机科学教师候选人
  • 批准号:
    2344678
  • 财政年份:
    2024
  • 资助金额:
    $ 12.77万
  • 项目类别:
    Standard Grant
{{ showInfoDetail.title }}

作者:{{ showInfoDetail.author }}

知道了