Loading…

Efficient Verification of Sequential and Concurrent C Programs

There has been considerable progress in the domain of software verification over the last few years. This advancement has been driven, to a large extent, by the emergence of powerful yet automated abstraction techniques such as predicate abstraction. However, the state-space explosion problem in mod...

Full description

Saved in:
Bibliographic Details
Published in:Formal methods in system design 2004-09, Vol.25 (2/3), p.129-166
Main Authors: Chaki, S., Clarke, E., Groce, A., Ouaknine, J., Strichman, O., Yorav, K.
Format: Article
Language:English
Citations: Items that cite this one
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
cited_by cdi_FETCH-LOGICAL-c344t-32b1377a9046c2f5f1c0080a97f3426fc3527fac3ec0aa48e7b4e4f20a4c0d13
cites
container_end_page 166
container_issue 2/3
container_start_page 129
container_title Formal methods in system design
container_volume 25
creator Chaki, S.
Clarke, E.
Groce, A.
Ouaknine, J.
Strichman, O.
Yorav, K.
description There has been considerable progress in the domain of software verification over the last few years. This advancement has been driven, to a large extent, by the emergence of powerful yet automated abstraction techniques such as predicate abstraction. However, the state-space explosion problem in model checking remains the chief obstacle to the practical verification of real-world distributed systems. Even in the case of purely sequential programs, a crucial requirement to make predicate abstraction effective is to use as few predicates as possible. This is because, in the worst case, the state-space of the abstraction generated (and consequently the time and memory complexity of the abstraction process) is exponential in the number of predicates involved. In addition, for concurrent programs, the number of reachable states could grow exponentially with the number of components. We attempt to address these issues in the context of verifying concurrent (message-passing) C programs against safety specifications. More specifically, we present a fully automated compositional framework which combines two orthogonal abstraction techniques (predicate abstraction for data and action-guided abstraction for events) within a counterexample-guided abstraction refinement scheme. In this way, our algorithm incrementally increases the granularity of the abstractions until the specification is either established or refuted. Additionally, a key feature of our approach is that if a property can be proved to hold or not hold based on a given finite set of predicates P, the predicate refinement procedure we propose in this article finds automatically a minimal subset of P that is sufficient for the proof. This, along with our explicit use of compositionality, delays the onset of state-space explosion for as long as possible. We describe our approach in detail, and report on some very encouraging experimental results obtained with our tool MAGIC.
doi_str_mv 10.1023/B:FORM.0000040026.56959.91
format article
fullrecord <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_miscellaneous_28676640</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>28676640</sourcerecordid><originalsourceid>FETCH-LOGICAL-c344t-32b1377a9046c2f5f1c0080a97f3426fc3527fac3ec0aa48e7b4e4f20a4c0d13</originalsourceid><addsrcrecordid>eNpFkE1LAzEQhnNQsH78h8WDt10nH5vd9CDYpVWhUtHiNUzTRCLbTU22B_-9u1ZwLjO8PAwvDyHXFAoKjN_OpovV63MB4wgAJotSqlIVip6QCShW5qou5Rk5T-lzQGoq-YTczZ3zxtuuz95t9MONvQ9dFlz2Zr8OQ-6xzbDbZk3ozCHGkWyylxg-Iu7SJTl12CZ79bcvyHoxXzeP-XL18NTcL3PDhehzzjaUVxUqENIwVzpqhgKAqnJcMOkML1nl0HBrAFHUttoIKxwDFAa2lF-Qm-PbfQxDqdTrnU_Gti12NhySZrWspBQwgNMjaGJIKVqn99HvMH5rCnq0pGd6tKT_LelfS1pR_gOEyF2H</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>28676640</pqid></control><display><type>article</type><title>Efficient Verification of Sequential and Concurrent C Programs</title><source>Springer Nature</source><creator>Chaki, S. ; Clarke, E. ; Groce, A. ; Ouaknine, J. ; Strichman, O. ; Yorav, K.</creator><creatorcontrib>Chaki, S. ; Clarke, E. ; Groce, A. ; Ouaknine, J. ; Strichman, O. ; Yorav, K.</creatorcontrib><description>There has been considerable progress in the domain of software verification over the last few years. This advancement has been driven, to a large extent, by the emergence of powerful yet automated abstraction techniques such as predicate abstraction. However, the state-space explosion problem in model checking remains the chief obstacle to the practical verification of real-world distributed systems. Even in the case of purely sequential programs, a crucial requirement to make predicate abstraction effective is to use as few predicates as possible. This is because, in the worst case, the state-space of the abstraction generated (and consequently the time and memory complexity of the abstraction process) is exponential in the number of predicates involved. In addition, for concurrent programs, the number of reachable states could grow exponentially with the number of components. We attempt to address these issues in the context of verifying concurrent (message-passing) C programs against safety specifications. More specifically, we present a fully automated compositional framework which combines two orthogonal abstraction techniques (predicate abstraction for data and action-guided abstraction for events) within a counterexample-guided abstraction refinement scheme. In this way, our algorithm incrementally increases the granularity of the abstractions until the specification is either established or refuted. Additionally, a key feature of our approach is that if a property can be proved to hold or not hold based on a given finite set of predicates P, the predicate refinement procedure we propose in this article finds automatically a minimal subset of P that is sufficient for the proof. This, along with our explicit use of compositionality, delays the onset of state-space explosion for as long as possible. We describe our approach in detail, and report on some very encouraging experimental results obtained with our tool MAGIC.</description><identifier>ISSN: 0925-9856</identifier><identifier>DOI: 10.1023/B:FORM.0000040026.56959.91</identifier><language>eng</language><ispartof>Formal methods in system design, 2004-09, Vol.25 (2/3), p.129-166</ispartof><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c344t-32b1377a9046c2f5f1c0080a97f3426fc3527fac3ec0aa48e7b4e4f20a4c0d13</citedby></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,780,784,27924,27925</link.rule.ids></links><search><creatorcontrib>Chaki, S.</creatorcontrib><creatorcontrib>Clarke, E.</creatorcontrib><creatorcontrib>Groce, A.</creatorcontrib><creatorcontrib>Ouaknine, J.</creatorcontrib><creatorcontrib>Strichman, O.</creatorcontrib><creatorcontrib>Yorav, K.</creatorcontrib><title>Efficient Verification of Sequential and Concurrent C Programs</title><title>Formal methods in system design</title><description>There has been considerable progress in the domain of software verification over the last few years. This advancement has been driven, to a large extent, by the emergence of powerful yet automated abstraction techniques such as predicate abstraction. However, the state-space explosion problem in model checking remains the chief obstacle to the practical verification of real-world distributed systems. Even in the case of purely sequential programs, a crucial requirement to make predicate abstraction effective is to use as few predicates as possible. This is because, in the worst case, the state-space of the abstraction generated (and consequently the time and memory complexity of the abstraction process) is exponential in the number of predicates involved. In addition, for concurrent programs, the number of reachable states could grow exponentially with the number of components. We attempt to address these issues in the context of verifying concurrent (message-passing) C programs against safety specifications. More specifically, we present a fully automated compositional framework which combines two orthogonal abstraction techniques (predicate abstraction for data and action-guided abstraction for events) within a counterexample-guided abstraction refinement scheme. In this way, our algorithm incrementally increases the granularity of the abstractions until the specification is either established or refuted. Additionally, a key feature of our approach is that if a property can be proved to hold or not hold based on a given finite set of predicates P, the predicate refinement procedure we propose in this article finds automatically a minimal subset of P that is sufficient for the proof. This, along with our explicit use of compositionality, delays the onset of state-space explosion for as long as possible. We describe our approach in detail, and report on some very encouraging experimental results obtained with our tool MAGIC.</description><issn>0925-9856</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2004</creationdate><recordtype>article</recordtype><recordid>eNpFkE1LAzEQhnNQsH78h8WDt10nH5vd9CDYpVWhUtHiNUzTRCLbTU22B_-9u1ZwLjO8PAwvDyHXFAoKjN_OpovV63MB4wgAJotSqlIVip6QCShW5qou5Rk5T-lzQGoq-YTczZ3zxtuuz95t9MONvQ9dFlz2Zr8OQ-6xzbDbZk3ozCHGkWyylxg-Iu7SJTl12CZ79bcvyHoxXzeP-XL18NTcL3PDhehzzjaUVxUqENIwVzpqhgKAqnJcMOkML1nl0HBrAFHUttoIKxwDFAa2lF-Qm-PbfQxDqdTrnU_Gti12NhySZrWspBQwgNMjaGJIKVqn99HvMH5rCnq0pGd6tKT_LelfS1pR_gOEyF2H</recordid><startdate>200409</startdate><enddate>200409</enddate><creator>Chaki, S.</creator><creator>Clarke, E.</creator><creator>Groce, A.</creator><creator>Ouaknine, J.</creator><creator>Strichman, O.</creator><creator>Yorav, K.</creator><scope>AAYXX</scope><scope>CITATION</scope><scope>7SC</scope><scope>8FD</scope><scope>JQ2</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope></search><sort><creationdate>200409</creationdate><title>Efficient Verification of Sequential and Concurrent C Programs</title><author>Chaki, S. ; Clarke, E. ; Groce, A. ; Ouaknine, J. ; Strichman, O. ; Yorav, K.</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c344t-32b1377a9046c2f5f1c0080a97f3426fc3527fac3ec0aa48e7b4e4f20a4c0d13</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2004</creationdate><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Chaki, S.</creatorcontrib><creatorcontrib>Clarke, E.</creatorcontrib><creatorcontrib>Groce, A.</creatorcontrib><creatorcontrib>Ouaknine, J.</creatorcontrib><creatorcontrib>Strichman, O.</creatorcontrib><creatorcontrib>Yorav, K.</creatorcontrib><collection>CrossRef</collection><collection>Computer and Information Systems Abstracts</collection><collection>Technology Research Database</collection><collection>ProQuest Computer Science Collection</collection><collection>Advanced Technologies Database with Aerospace</collection><collection>Computer and Information Systems Abstracts – Academic</collection><collection>Computer and Information Systems Abstracts Professional</collection><jtitle>Formal methods in system design</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Chaki, S.</au><au>Clarke, E.</au><au>Groce, A.</au><au>Ouaknine, J.</au><au>Strichman, O.</au><au>Yorav, K.</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Efficient Verification of Sequential and Concurrent C Programs</atitle><jtitle>Formal methods in system design</jtitle><date>2004-09</date><risdate>2004</risdate><volume>25</volume><issue>2/3</issue><spage>129</spage><epage>166</epage><pages>129-166</pages><issn>0925-9856</issn><abstract>There has been considerable progress in the domain of software verification over the last few years. This advancement has been driven, to a large extent, by the emergence of powerful yet automated abstraction techniques such as predicate abstraction. However, the state-space explosion problem in model checking remains the chief obstacle to the practical verification of real-world distributed systems. Even in the case of purely sequential programs, a crucial requirement to make predicate abstraction effective is to use as few predicates as possible. This is because, in the worst case, the state-space of the abstraction generated (and consequently the time and memory complexity of the abstraction process) is exponential in the number of predicates involved. In addition, for concurrent programs, the number of reachable states could grow exponentially with the number of components. We attempt to address these issues in the context of verifying concurrent (message-passing) C programs against safety specifications. More specifically, we present a fully automated compositional framework which combines two orthogonal abstraction techniques (predicate abstraction for data and action-guided abstraction for events) within a counterexample-guided abstraction refinement scheme. In this way, our algorithm incrementally increases the granularity of the abstractions until the specification is either established or refuted. Additionally, a key feature of our approach is that if a property can be proved to hold or not hold based on a given finite set of predicates P, the predicate refinement procedure we propose in this article finds automatically a minimal subset of P that is sufficient for the proof. This, along with our explicit use of compositionality, delays the onset of state-space explosion for as long as possible. We describe our approach in detail, and report on some very encouraging experimental results obtained with our tool MAGIC.</abstract><doi>10.1023/B:FORM.0000040026.56959.91</doi><tpages>38</tpages><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 0925-9856
ispartof Formal methods in system design, 2004-09, Vol.25 (2/3), p.129-166
issn 0925-9856
language eng
recordid cdi_proquest_miscellaneous_28676640
source Springer Nature
title Efficient Verification of Sequential and Concurrent C Programs
url http://sfxeu10.hosted.exlibrisgroup.com/loughborough?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2024-12-28T04%3A31%3A10IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Efficient%20Verification%20of%20Sequential%20and%20Concurrent%20C%20Programs&rft.jtitle=Formal%20methods%20in%20system%20design&rft.au=Chaki,%20S.&rft.date=2004-09&rft.volume=25&rft.issue=2/3&rft.spage=129&rft.epage=166&rft.pages=129-166&rft.issn=0925-9856&rft_id=info:doi/10.1023/B:FORM.0000040026.56959.91&rft_dat=%3Cproquest_cross%3E28676640%3C/proquest_cross%3E%3Cgrp_id%3Ecdi_FETCH-LOGICAL-c344t-32b1377a9046c2f5f1c0080a97f3426fc3527fac3ec0aa48e7b4e4f20a4c0d13%3C/grp_id%3E%3Coa%3E%3C/oa%3E%3Curl%3E%3C/url%3E&rft_id=info:oai/&rft_pqid=28676640&rft_id=info:pmid/&rfr_iscdi=true