首页 > 最新文献

2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)最新文献

英文 中文
Towards Automated Input Generation for Sketching Alloy Models 面向合金模型草图的自动输入生成
Ana Jovanovic, Allison Sullivan
Writing declarative models has numerous benefits, ranging from automated reasoning and correction of design-level properties before systems are built, to automated testing and debugging of their implementations after they are built. Alloy is a declarative modeling language that is well suited for verifying system designs. While Alloy comes deployed in the Analyzer, an automated scenario-finding tool set, writing correct models remains a difficult and error-prone task. ASketch is a synthesis framework that helps users build their Alloy models. ASketch takes as an input a partial Alloy models with holes and an A Unit test suite. As output, ASketch returns a completed model that passes all tests. ASketch’s initial evaluation reveals ASketch to be a promising approach to synthesize Alloy models. In this paper, we present and explore SketchGen2, an approach that looks to broaden the adoption of ASketch by increasing the automation of the inputs needed for the sketching process. Experimental results show SketchGen2 is effective at producing both expressions and test suites for synthesis.
编写声明性模型有很多好处,从构建系统之前的自动推理和设计级属性的纠正,到构建系统之后对其实现的自动测试和调试。Alloy是一种声明性建模语言,非常适合验证系统设计。虽然Alloy部署在Analyzer(一个自动化的场景查找工具集)中,但编写正确的模型仍然是一项困难且容易出错的任务。assketch是一个综合框架,可以帮助用户构建自己的Alloy模型。assketch将带有孔的部分Alloy模型和a单元测试套件作为输入。作为输出,assketch返回通过所有测试的完整模型。assketch的初步评估表明assketch是一种很有前途的合金模型合成方法。在本文中,我们提出并探索了SketchGen2,这是一种通过增加草图绘制过程所需输入的自动化来扩大草图采用范围的方法。实验结果表明,SketchGen2可以有效地生成合成表达式和测试套件。
{"title":"Towards Automated Input Generation for Sketching Alloy Models","authors":"Ana Jovanovic, Allison Sullivan","doi":"10.1145/3524482.3527651","DOIUrl":"https://doi.org/10.1145/3524482.3527651","url":null,"abstract":"Writing declarative models has numerous benefits, ranging from automated reasoning and correction of design-level properties before systems are built, to automated testing and debugging of their implementations after they are built. Alloy is a declarative modeling language that is well suited for verifying system designs. While Alloy comes deployed in the Analyzer, an automated scenario-finding tool set, writing correct models remains a difficult and error-prone task. ASketch is a synthesis framework that helps users build their Alloy models. ASketch takes as an input a partial Alloy models with holes and an A Unit test suite. As output, ASketch returns a completed model that passes all tests. ASketch’s initial evaluation reveals ASketch to be a promising approach to synthesize Alloy models. In this paper, we present and explore SketchGen2, an approach that looks to broaden the adoption of ASketch by increasing the automation of the inputs needed for the sketching process. Experimental results show SketchGen2 is effective at producing both expressions and test suites for synthesis.","PeriodicalId":119264,"journal":{"name":"2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)","volume":"53 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116327402","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
C for Yourself: Comparison of Front-End Techniques for Formal Verification C for Yourself:形式验证的前端技术比较
Levente Bajczi, Zsófia Ádám, V. Molnár
With the improvement of hardware and algorithms, the main challenge of software model checking has shifted from pure algorithmic performance toward supporting a wider set of input programs. Successful toolchains tackle the problem of parsing a wide range of inputs in an efficient way by reusing solutions from existing compiler technologies such as Eclipse CDT or LLVM. Our experience suggests that well-established techniques in compiler technology are not necessarily beneficial to model checkers and sometimes can even hurt their performance. In this paper, we review the tools mature enough to participate in the Software Verification Competition in terms of the employed analysis and frontend techniques. We find that successful tools do exhibit a bias toward certain combinations. We explore the theoretical reasons and suggest an adaptable approach for model checking frameworks. We validate our recommendations by implementing a new frontend for a model checking framework and show that it indeed benefits some of the algorithms.
随着硬件和算法的改进,软件模型检查的主要挑战已经从纯粹的算法性能转向支持更广泛的输入程序集。成功的工具链通过重用来自现有编译器技术(如Eclipse CDT或LLVM)的解决方案,以一种有效的方式解决了解析大量输入的问题。我们的经验表明,编译器技术中成熟的技术不一定对模型检查器有益,有时甚至会损害它们的性能。在本文中,我们从所使用的分析和前端技术的角度回顾了足够成熟的工具来参加软件验证竞赛。我们发现成功的工具确实表现出对某些组合的偏见。我们探讨了理论原因,并提出了一种适用于模型检查框架的方法。我们通过实现模型检查框架的新前端来验证我们的建议,并表明它确实有利于某些算法。
{"title":"C for Yourself: Comparison of Front-End Techniques for Formal Verification","authors":"Levente Bajczi, Zsófia Ádám, V. Molnár","doi":"10.1145/3524482.3527646","DOIUrl":"https://doi.org/10.1145/3524482.3527646","url":null,"abstract":"With the improvement of hardware and algorithms, the main challenge of software model checking has shifted from pure algorithmic performance toward supporting a wider set of input programs. Successful toolchains tackle the problem of parsing a wide range of inputs in an efficient way by reusing solutions from existing compiler technologies such as Eclipse CDT or LLVM. Our experience suggests that well-established techniques in compiler technology are not necessarily beneficial to model checkers and sometimes can even hurt their performance. In this paper, we review the tools mature enough to participate in the Software Verification Competition in terms of the employed analysis and frontend techniques. We find that successful tools do exhibit a bias toward certain combinations. We explore the theoretical reasons and suggest an adaptable approach for model checking frameworks. We validate our recommendations by implementing a new frontend for a model checking framework and show that it indeed benefits some of the algorithms.","PeriodicalId":119264,"journal":{"name":"2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121908703","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Generating Counterexamples in the form of Unit Tests from Hoare-style Verification Attempts 从hoare风格的验证尝试中以单元测试的形式生成反例
Amirfarhad Nilizadeh, Marlon Calvo, Gary T. Leavens, D. Cok
Unit tests that demonstrate why a program is incorrect have many potential uses, including localizing bugs (i.e., showing where code is wrong), improving test suites, and better code synthesis. However, counterexamples produced by failed attempts at Hoare-style verification (e.g., by SMT solvers) are difficult to translate into unit tests. We explain how to generate unit tests from counterexamples generated by an SMT solver and how this process could be embodied in a prototype tool. This process combines static verification techniques and runtime assertion checking.
证明程序为什么不正确的单元测试有许多潜在的用途,包括定位错误(即,显示代码错误的地方),改进测试套件,以及更好的代码合成。然而,在Hoare-style验证(例如,SMT求解器)中失败的尝试所产生的反例很难转化为单元测试。我们解释了如何从SMT求解器生成的反例中生成单元测试,以及如何将此过程体现在原型工具中。这个过程结合了静态验证技术和运行时断言检查。
{"title":"Generating Counterexamples in the form of Unit Tests from Hoare-style Verification Attempts","authors":"Amirfarhad Nilizadeh, Marlon Calvo, Gary T. Leavens, D. Cok","doi":"10.1145/3524482.3527656","DOIUrl":"https://doi.org/10.1145/3524482.3527656","url":null,"abstract":"Unit tests that demonstrate why a program is incorrect have many potential uses, including localizing bugs (i.e., showing where code is wrong), improving test suites, and better code synthesis. However, counterexamples produced by failed attempts at Hoare-style verification (e.g., by SMT solvers) are difficult to translate into unit tests. We explain how to generate unit tests from counterexamples generated by an SMT solver and how this process could be embodied in a prototype tool. This process combines static verification techniques and runtime assertion checking.","PeriodicalId":119264,"journal":{"name":"2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)","volume":"75 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124748837","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Formal Specifications Investigated: A Classification and Analysis of Annotations for Deductive Verifiers 形式规范研究:演绎验证器注释的分类与分析
Sophie Lathouwers, M. Huisman
Deductive verification can be used to ensure properties about all possible behaviours of a program, even when the program is parameterised and has an unbounded state space. But to achieve this, the user needs to specify what the desired properties are, and often needs to guide the prover with auxiliary annotations. This paper investigates what annotations are actually needed, and it provides a taxonomy to categorise these annotations. In particular, we identify several top-level categories, which are further divided into subcategories of annotations. This taxonomy is then used as a basis to investigate how often particular annotation categories occur, by inspecting over 10k lines of annotated programs. To determine whether the results are in line with expectations, we have interviewed several experts on deductive verification. Moreover, we show how the results can be used to evaluate the effectiveness of annotation generators. The knowledge from this analysis provides a gateway to guide further research in improving the efficiency of deductive verification, e.g.: it can serve as a guideline on what categories of annotations should be generated automatically, to evaluate the power of existing annotation generation techniques, and to improve the teaching of deductive verification.
演绎验证可用于确保程序的所有可能行为的属性,即使程序是参数化的并且具有无界状态空间。但是要实现这一点,用户需要指定想要的属性是什么,并且通常需要用辅助注释来指导证明者。本文研究了实际需要哪些注释,并提供了对这些注释进行分类的分类法。特别是,我们确定了几个顶级类别,这些类别进一步划分为注释的子类别。然后,通过检查超过10万行带注释的程序,将该分类法用作调查特定注释类别出现的频率的基础。为了确定结果是否符合预期,我们采访了几位专家进行演绎验证。此外,我们还展示了如何使用结果来评估注释生成器的有效性。从该分析中获得的知识为指导进一步研究如何提高演绎验证的效率提供了一个门户,例如,它可以指导应该自动生成哪些类别的注释,评估现有注释生成技术的能力,以及改进演绎验证的教学。
{"title":"Formal Specifications Investigated: A Classification and Analysis of Annotations for Deductive Verifiers","authors":"Sophie Lathouwers, M. Huisman","doi":"10.1145/3524482.3527652","DOIUrl":"https://doi.org/10.1145/3524482.3527652","url":null,"abstract":"Deductive verification can be used to ensure properties about all possible behaviours of a program, even when the program is parameterised and has an unbounded state space. But to achieve this, the user needs to specify what the desired properties are, and often needs to guide the prover with auxiliary annotations. This paper investigates what annotations are actually needed, and it provides a taxonomy to categorise these annotations. In particular, we identify several top-level categories, which are further divided into subcategories of annotations. This taxonomy is then used as a basis to investigate how often particular annotation categories occur, by inspecting over 10k lines of annotated programs. To determine whether the results are in line with expectations, we have interviewed several experts on deductive verification. Moreover, we show how the results can be used to evaluate the effectiveness of annotation generators. The knowledge from this analysis provides a gateway to guide further research in improving the efficiency of deductive verification, e.g.: it can serve as a guideline on what categories of annotations should be generated automatically, to evaluate the power of existing annotation generation techniques, and to improve the teaching of deductive verification.","PeriodicalId":119264,"journal":{"name":"2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124029406","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
Counting Bugs in Behavioural Models using Counterexample Analysis 使用反例分析计算行为模型中的错误
Irman Faqrizal, Gwen Salaün
Designing and developing distributed software has always been a tedious and error-prone task, and the ever increasing software complexity is making matters even worse. Model checking automatically verifies that a model, e.g., a Labelled Transition System (LTS), obtained from higher-level specification languages satisfies a given temporal property. When the model violates the property, the model checker returns a counterexample, but this counterexample does not precisely identify the source of the bug. In this work, we propose some techniques for simplifying the debugging of these models. These techniques first extract from the whole behavioural model the part which does not satisfy the given property. In that model, we then detect specific states (called faulty states) where a choice is possible between executing a correct behaviour or falling into an erroneous part of the model. By using this model, we propose in this paper some techniques to count the number of bugs in the original specification. The core idea of the approach is to change the specification for some specific actions that may cause the property violation, and compare the model before and after modification to detect whether this potential bug is one real bug or not. Beyond introducing in details the solution, this paper also presents tool support and experiments.
设计和开发分布式软件一直是一项乏味且容易出错的任务,而不断增加的软件复杂性使事情变得更糟。模型检查自动地验证从高级规范语言获得的模型,例如,标记转换系统(labeled Transition System, LTS),是否满足给定的时间属性。当模型违反该属性时,模型检查器返回一个反例,但是这个反例并不能精确地识别错误的来源。在这项工作中,我们提出了一些简化这些模型调试的技术。这些技术首先从整个行为模型中提取出不满足给定属性的部分。在该模型中,我们然后检测特定的状态(称为错误状态),在这些状态中,可以在执行正确的行为或落入模型的错误部分之间进行选择。利用这个模型,我们提出了一些计算原始规范中bug数量的技术。该方法的核心思想是对一些可能导致属性冲突的特定操作更改规范,并比较修改前后的模型,以检测该潜在错误是否是一个真正的错误。本文除了详细介绍了解决方案外,还提供了工具支持和实验。
{"title":"Counting Bugs in Behavioural Models using Counterexample Analysis","authors":"Irman Faqrizal, Gwen Salaün","doi":"10.1145/3524482.3527647","DOIUrl":"https://doi.org/10.1145/3524482.3527647","url":null,"abstract":"Designing and developing distributed software has always been a tedious and error-prone task, and the ever increasing software complexity is making matters even worse. Model checking automatically verifies that a model, e.g., a Labelled Transition System (LTS), obtained from higher-level specification languages satisfies a given temporal property. When the model violates the property, the model checker returns a counterexample, but this counterexample does not precisely identify the source of the bug. In this work, we propose some techniques for simplifying the debugging of these models. These techniques first extract from the whole behavioural model the part which does not satisfy the given property. In that model, we then detect specific states (called faulty states) where a choice is possible between executing a correct behaviour or falling into an erroneous part of the model. By using this model, we propose in this paper some techniques to count the number of bugs in the original specification. The core idea of the approach is to change the specification for some specific actions that may cause the property violation, and compare the model before and after modification to detect whether this potential bug is one real bug or not. Beyond introducing in details the solution, this paper also presents tool support and experiments.","PeriodicalId":119264,"journal":{"name":"2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)","volume":"482 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134375208","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Counterexample-Guided Inductive Repair of Reactive Contracts 反例引导的感应修复无功契约
Soha Hussein, Sanjai Rayadurgam, Stephen McCamant, Vaibhav Sharma, M. Heimdahl
Executable implementations are ultimately the only dependable representations of a software component’s behavior. Incorporating such a component in a rigorous model-based development of reactive systems poses challenges since a formal contract over its behaviors will have to be crafted for system verification. Simply hypothesizing a contract based on informal descriptions of the component is problematic: if it is too weak, we may fail in verifying valid system-level contracts; if it is too strong or simply erroneous, the system may fail in operation. Thus, establishing a valid and strong enough contract is crucially important.In this paper, we propose to repair the invalid hypothesized contract by replacing one or more of its sub-expressions with newly composed expressions, such that the new contract holds over the implementation. To this effect, we present a novel, sound, semantically minimal, and under reasonable assumptions terminating, and complete counterexample-guided general-purpose algorithm for repairing contracts. We implemented and evaluated our technique on more than 4,000 mutants with various complexities generated from 29 valid contracts for 4 non-trivial Java reactive components. Results show a successful repair rate of 81.51%, with 20.72% of the repairs matching the manually written contracts and 60.79% of the repairs describing non-trivial valid contracts.
可执行实现最终是软件组件行为的唯一可靠表示。将这样的组件合并到严格的基于模型的反应性系统开发中会带来挑战,因为必须为系统验证精心制定关于其行为的正式契约。简单地基于对组件的非正式描述假设一个契约是有问题的:如果它太弱,我们可能无法验证有效的系统级契约;如果它太强或错误,系统可能会在运行中失败。因此,建立一个有效且足够强大的合同是至关重要的。在本文中,我们建议通过用新组成的表达式替换其一个或多个子表达式来修复无效的假设合同,从而使新合同保持执行。为此,我们提出了一种新颖的、健全的、语义最小的、在合理假设下终止的、完整的反例指导的修复契约的通用算法。我们在超过4000个变体上实现并评估了我们的技术,这些变体的复杂性是由4个重要的Java反应性组件的29个有效契约生成的。结果表明,修复成功率为81.51%,其中20.72%的修复与手工书写的合同相匹配,60.79%的修复描述了非琐碎的有效合同。
{"title":"Counterexample-Guided Inductive Repair of Reactive Contracts","authors":"Soha Hussein, Sanjai Rayadurgam, Stephen McCamant, Vaibhav Sharma, M. Heimdahl","doi":"10.1145/3524482.3527650","DOIUrl":"https://doi.org/10.1145/3524482.3527650","url":null,"abstract":"Executable implementations are ultimately the only dependable representations of a software component’s behavior. Incorporating such a component in a rigorous model-based development of reactive systems poses challenges since a formal contract over its behaviors will have to be crafted for system verification. Simply hypothesizing a contract based on informal descriptions of the component is problematic: if it is too weak, we may fail in verifying valid system-level contracts; if it is too strong or simply erroneous, the system may fail in operation. Thus, establishing a valid and strong enough contract is crucially important.In this paper, we propose to repair the invalid hypothesized contract by replacing one or more of its sub-expressions with newly composed expressions, such that the new contract holds over the implementation. To this effect, we present a novel, sound, semantically minimal, and under reasonable assumptions terminating, and complete counterexample-guided general-purpose algorithm for repairing contracts. We implemented and evaluated our technique on more than 4,000 mutants with various complexities generated from 29 valid contracts for 4 non-trivial Java reactive components. Results show a successful repair rate of 81.51%, with 20.72% of the repairs matching the manually written contracts and 60.79% of the repairs describing non-trivial valid contracts.","PeriodicalId":119264,"journal":{"name":"2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115539244","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Computing Program Functions 计算程序功能
Hessamaldin Mohammadi, Wided Ghardallou, R. Linger, A. Mili
Extracting the function of a program from a static analysis of its source code is a valuable capability in software engineering, but it has proved to be an elusive goal, due primarily to the difficulty of deriving the function of iterative statements. Several automated tools obviate this difficulty by unrolling the loops; but this is clearly an imperfect solution, especially in light of the fact that loops capture most of the computing power of a program, are the locus of most of its complexity, and the source of most of its faults. In this paper we discuss the design and ongoing implementation of an automated tool for deriving the function of a program in three steps: first, the source code is mapped onto an abstract syntax tree (AST), using standard parsing technology; then each node of the AST is mapped onto an equation between pre and post states; finally, these equations are submitted to a symbolic computation engine that extracts the final program state as a function of its initial state. Loop functions are derived by pattern matching against semantic recognizers, which capture the requisite programming knowledge and domain knowledge.
在软件工程中,从源代码的静态分析中提取程序的功能是一种有价值的能力,但它已被证明是一个难以实现的目标,主要是由于推导迭代语句的功能的困难。一些自动化工具通过展开线圈来消除这个困难;但这显然是一个不完美的解决方案,特别是考虑到循环占据了程序的大部分计算能力,是程序的大部分复杂性的所在地,也是程序的大部分错误的来源。在本文中,我们讨论了一个自动化工具的设计和正在进行的实现,该工具分三步推导程序的功能:首先,使用标准解析技术将源代码映射到抽象语法树(AST)上;然后将AST的每个节点映射到前后状态之间的方程;最后,将这些方程提交给一个符号计算引擎,该引擎将程序的最终状态作为初始状态的函数提取出来。循环函数是通过对语义识别器的模式匹配得到的,语义识别器捕获了必要的编程知识和领域知识。
{"title":"Computing Program Functions","authors":"Hessamaldin Mohammadi, Wided Ghardallou, R. Linger, A. Mili","doi":"10.1145/3524482.3527655","DOIUrl":"https://doi.org/10.1145/3524482.3527655","url":null,"abstract":"Extracting the function of a program from a static analysis of its source code is a valuable capability in software engineering, but it has proved to be an elusive goal, due primarily to the difficulty of deriving the function of iterative statements. Several automated tools obviate this difficulty by unrolling the loops; but this is clearly an imperfect solution, especially in light of the fact that loops capture most of the computing power of a program, are the locus of most of its complexity, and the source of most of its faults. In this paper we discuss the design and ongoing implementation of an automated tool for deriving the function of a program in three steps: first, the source code is mapped onto an abstract syntax tree (AST), using standard parsing technology; then each node of the AST is mapped onto an equation between pre and post states; finally, these equations are submitted to a symbolic computation engine that extracts the final program state as a function of its initial state. Loop functions are derived by pattern matching against semantic recognizers, which capture the requisite programming knowledge and domain knowledge.","PeriodicalId":119264,"journal":{"name":"2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)","volume":"10 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121767269","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
Formal Modeling and Verification of Multi-Robot Interactive Scenarios in Service Settings 服务环境中多机器人交互场景的形式化建模与验证
Livia Lestingi, Cristian Sbrolli, P. Scarmozzino, Giorgio Romeo, M. Bersani, Matteo G. Rossi
Service robots are increasingly widespread in healthcare and domestic assistance settings. Nevertheless, the literature still lacks robotic application development approaches that can deal with the complexity of multi-agent systems and the unpredictability of human behavior. We target this issue by building upon a model-driven development framework for human-robot interactive scenarios that relies on formal analysis (Statistical Model Checking) to estimate the probability of success of the robotic mission. We extend the framework’s scope to scenarios featuring multi-robot fleets, a broader range of human-robot interaction contingencies, and task handover between robots. We also present an extended model of human behavior to capture interaction patterns implying close contact or competition with the robot. In the latter case, the user can specify alternative mission plans for the robot, depending on the competition outcome. We illustrate the approach’s effectiveness and scalability through a case study from the healthcare setting, featuring multiple mobile robots and humans with diverse physiological characteristics and requesting a broad spectrum of services.
服务机器人在医疗保健和家庭辅助环境中越来越普遍。然而,文献仍然缺乏能够处理多智能体系统复杂性和人类行为不可预测性的机器人应用程序开发方法。为了解决这个问题,我们建立了一个模型驱动的开发框架,用于人机交互场景,该框架依赖于形式分析(统计模型检查)来估计机器人任务成功的概率。我们将框架的范围扩展到具有多机器人车队,更广泛的人机交互突发事件以及机器人之间的任务移交的场景。我们还提出了一个扩展的人类行为模型,以捕捉暗示与机器人密切接触或竞争的交互模式。在后一种情况下,用户可以根据比赛结果为机器人指定备选任务计划。我们通过一个医疗环境的案例研究来说明该方法的有效性和可扩展性,该研究以具有不同生理特征的多个移动机器人和人类为特征,并要求提供广泛的服务。
{"title":"Formal Modeling and Verification of Multi-Robot Interactive Scenarios in Service Settings","authors":"Livia Lestingi, Cristian Sbrolli, P. Scarmozzino, Giorgio Romeo, M. Bersani, Matteo G. Rossi","doi":"10.1145/3524482.3527653","DOIUrl":"https://doi.org/10.1145/3524482.3527653","url":null,"abstract":"Service robots are increasingly widespread in healthcare and domestic assistance settings. Nevertheless, the literature still lacks robotic application development approaches that can deal with the complexity of multi-agent systems and the unpredictability of human behavior. We target this issue by building upon a model-driven development framework for human-robot interactive scenarios that relies on formal analysis (Statistical Model Checking) to estimate the probability of success of the robotic mission. We extend the framework’s scope to scenarios featuring multi-robot fleets, a broader range of human-robot interaction contingencies, and task handover between robots. We also present an extended model of human behavior to capture interaction patterns implying close contact or competition with the robot. In the latter case, the user can specify alternative mission plans for the robot, depending on the competition outcome. We illustrate the approach’s effectiveness and scalability through a case study from the healthcare setting, featuring multiple mobile robots and humans with diverse physiological characteristics and requesting a broad spectrum of services.","PeriodicalId":119264,"journal":{"name":"2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130569451","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
Automatic Loop Invariant Generation for Data Dependence Analysis 数据依赖性分析的自动循环不变量生成
Asmae Heydari Tabar, Richard Bubel, Reiner Hähnle
Parallelization of programs relies on sound and precise analysis of data dependences in the code, specifically, when dealing with loops. State-of-art tools are based on dynamic profiling and static analysis. They tend to over- and, occasionally, to under-approximate dependences. The former misses parallelization opportunities, the latter can change the behavior of the parallelized program. In this paper we present a sound and highly precise approach to generate data dependences based on deductive verification. The central technique is to infer a specific form of loop invariant tailored to express dependences. To achieve full automation, we adapt predicate abstraction in a suitable manner. To retain as much precision as possible, we generalized logic-based symbolic execution to compute abstract dependence predicates. We implemented our approach for Java on top of a deductive verification tool. The evaluation shows that our approach can generate highly precise data dependences for representative code taken from HPC applications.
程序的并行化依赖于对代码中数据依赖的可靠和精确的分析,特别是在处理循环时。最先进的工具是基于动态剖析和静态分析的。它们倾向于过度依赖,偶尔也会低估依赖。前者错过了并行化的机会,后者可以改变并行化程序的行为。在本文中,我们提出了一种基于演绎验证的可靠和高度精确的方法来生成数据依赖性。核心技术是推断为表示依赖关系而定制的特定形式的循环不变量。为了实现完全自动化,我们以适当的方式调整谓词抽象。为了保持尽可能多的精度,我们推广了基于逻辑的符号执行来计算抽象依赖谓词。我们在演绎验证工具之上为Java实现了我们的方法。评估表明,我们的方法可以为来自HPC应用程序的代表性代码生成高度精确的数据依赖。
{"title":"Automatic Loop Invariant Generation for Data Dependence Analysis","authors":"Asmae Heydari Tabar, Richard Bubel, Reiner Hähnle","doi":"10.1145/3524482.3527649","DOIUrl":"https://doi.org/10.1145/3524482.3527649","url":null,"abstract":"Parallelization of programs relies on sound and precise analysis of data dependences in the code, specifically, when dealing with loops. State-of-art tools are based on dynamic profiling and static analysis. They tend to over- and, occasionally, to under-approximate dependences. The former misses parallelization opportunities, the latter can change the behavior of the parallelized program. In this paper we present a sound and highly precise approach to generate data dependences based on deductive verification. The central technique is to infer a specific form of loop invariant tailored to express dependences. To achieve full automation, we adapt predicate abstraction in a suitable manner. To retain as much precision as possible, we generalized logic-based symbolic execution to compute abstract dependence predicates. We implemented our approach for Java on top of a deductive verification tool. The evaluation shows that our approach can generate highly precise data dependences for representative code taken from HPC applications.","PeriodicalId":119264,"journal":{"name":"2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)","volume":"55 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122988026","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Test Suite Generation for Boolean Conditions with Equivalence Class Partitioning 具有等价类划分的布尔条件的测试集生成
Sylvain Hallé
Boolean test input generation is the process of finding sets of values for variables of a logical expression such that a given coverage criterion is achieved. This paper presents a formal framework in which evaluating an expression produces a tree structure, and where a coverage criterion is expressed as equivalence classes induced by a particular transformation over these trees. It then defines many well-known coverage criteria as particular cases of this framework. The paper describes an algorithm to generate test suites by a reduction through a graph problem; this algorithm works in the same way regardless of the criterion considered. An experimental evaluation of this technique shows that it produces test suites that are in many cases smaller than existing tools.
布尔测试输入生成是为逻辑表达式的变量找到一组值的过程,从而达到给定的覆盖标准。本文提出了一个形式化的框架,在这个框架中,表达式的求值产生一个树结构,其中覆盖标准被表示为由这些树上的特定变换引起的等价类。然后,它定义了许多众所周知的覆盖标准作为该框架的特定案例。本文描述了一种通过图问题约简生成测试套件的算法;无论考虑何种标准,该算法都以相同的方式工作。对该技术的实验评估表明,在许多情况下,它产生的测试套件比现有工具要小。
{"title":"Test Suite Generation for Boolean Conditions with Equivalence Class Partitioning","authors":"Sylvain Hallé","doi":"10.1145/3524482.3527659","DOIUrl":"https://doi.org/10.1145/3524482.3527659","url":null,"abstract":"Boolean test input generation is the process of finding sets of values for variables of a logical expression such that a given coverage criterion is achieved. This paper presents a formal framework in which evaluating an expression produces a tree structure, and where a coverage criterion is expressed as equivalence classes induced by a particular transformation over these trees. It then defines many well-known coverage criteria as particular cases of this framework. The paper describes an algorithm to generate test suites by a reduction through a graph problem; this algorithm works in the same way regardless of the criterion considered. An experimental evaluation of this technique shows that it produces test suites that are in many cases smaller than existing tools.","PeriodicalId":119264,"journal":{"name":"2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127436102","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
期刊
2022 IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (FormaliSE)
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1