首页> 外文会议>International Symposium on NASA Formal Methods >Developing Verified Software Using Leon
【24h】

Developing Verified Software Using Leon

机译:使用莱昂开发已验证的软件

获取原文

摘要

We present Leon, a system for developing functional Scala programs annotated with contracts. Contracts in Leon can themselves refer to recursively defined functions. Leon aims to find counterexamples when functions do not meet the specifications, and proofs when they do. Moreover, it can optimize run-time checks by eliminating statically checked parts of contracts and doing memoization. For verification Leon uses an incremental function unfolding algorithm (which could be viewed as k-induction) and SMT solvers. For counterexample finding it uses these techniques and additionally specification-based test generation. Leon can also execute specifications (e.g. functions given only by postconditions), by invoking a constraint solver at run time. To make this process more efficient and predictable, Leon supports deductive synthesis of functions from specifications, both interactively and in an automated mode. Synthesis in Leon is currently based on a custom deductive synthesis framework incorporating, for example, syntax-driven rules, rules supporting synthesis procedures, and a form of counterexample-guided synthesis. We have also developed resource bound invariant inference for Leon and used it to check abstract worst-case execution time. We have also explored within Leon a compilation technique that transforms real-valued program specifications into finite-precision code while enforcing the desired end-to-end error bounds. Recent work enables Leon to perform program repair when the program does not meet the specification, using error localization, synthesis guided by the original expression, and counterexample-guided synthesis of expressions similar to a given one. Leon is open source and can also be tried from its web environment at leon.epfl.ch.
机译:我们呈现Leon,该系统开发了合同注释的功能性Scala程序。莱昂的合同本身可以指递归定义的功能。莱昂旨在在功能不符合规格时找到反例,并在他们这样做时的证据。此外,它可以通过消除静态检查的合同和备忘录来优化运行时检查。对于验证leon使用增量函数展开算法(可以被视为k诱导)和SMT求解器。对于CounterExample来发现,它使用这些技术和基于规范的测试生成。莱昂还可以通过在运行时调用约束求解器来执行规范(例如,仅由后处理给出的函数)。为了使这个过程更加高效和可预测,Leon支持交互式和自动模式的规格的函数的演绎合成功能。 Leon中的合成目前基于定制的演绎综合框架,例如语法驱动的规则,支持合成程序的规则,以及一种体内引导综合的形式。我们还为Leon开发了资源绑定的不变推理,并使用它来检查抽象的最坏情况执行时间。我们还在leon中探索了一个编译技术,该技术将实值的程序规范转换为有限精度代码,同时强制执行所需的端到端错误界限。最近的工作使Leon能够在程序不符合规范时执行程序维修,使用错误本地化,由原始表达式引导的合成,以及与给定的对表达的综合合成。莱昂是开放的来源,也可以在Leon.epfl.ch上的网络环境中尝试。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号