Chapter

Integrated Formal Methods

Volume 3771 of the series Lecture Notes in Computer Science pp 53-69

# State/Event Software Verification for Branching-Time Specifications

• Sagar ChakiAffiliated withSoftware Engineering Institute, Carnegie Mellon University
• , Edmund ClarkeAffiliated withSchool of Computer Science, Carnegie Mellon University
• , Orna GrumbergAffiliated withThe Technion
• , Joël OuaknineAffiliated withComputing Laboratory, Oxford University
• , Natasha SharyginaAffiliated withSchool of Computer Science, Carnegie Mellon UniversityUSI (Università della Svizzera Italiana)
• , Tayssir TouiliAffiliated withLIAFA, CNRS & University of Paris7
• , Helmut VeithAffiliated withTechnische Universität München

* Final gross prices may vary according to local VAT.

## Abstract

In the domain of concurrent software verification, there is an evident need for specification formalisms and efficient algorithms to verify branching-time properties that involve both data and communication. We address this problem by defining a new branching-time temporal logic SE-A$${\it \Omega}$$ which integrates both state-based and action-based properties. SE-A$${\it \Omega}$$ is universal, i.e., preserved by the simulation relation, and thus amenable to counterexample-guided abstraction refinement. We provide a model-checking algorithm for this logic, based upon a compositional abstraction-refinement loop which exploits the natural decomposition of the concurrent system into its components. The abstraction and refinement steps are performed over each component separately, and only the model checking step requires an explicit composition of the abstracted components. For experimental evaluation, we have integrated our algorithm within the ComFort reasoning framework and used it to verify a piece of industrial robot control software.

### Keywords

Concurrent Software Model Checking State/Event-based Verification Branching-time Temporal Logic Automated Abstraction Refinement
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 1, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "math_score": 0.8797646164894104, "perplexity": 4889.444817956826}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "warc_path": "s3://commoncrawl/crawl-data/CC-MAIN-2016-50/segments/1480698540909.75/warc/CC-MAIN-20161202170900-00061-ip-10-31-129-80.ec2.internal.warc.gz"}