Model checking unbounded concurrent lists

We present a model checking-based method for verifying list-based concurrent set data structures. Concurrent data structures are notorious for being hard to get right and thus, their verification has received significant attention from the verification community. These data structures are unbounded...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:International journal on software tools for technology transfer 2016-08, Vol.18 (4), p.375-391
Hauptverfasser: Sethi, Divjyot, Talupur, Muralidhar, Malik, Sharad
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 391
container_issue 4
container_start_page 375
container_title International journal on software tools for technology transfer
container_volume 18
creator Sethi, Divjyot
Talupur, Muralidhar
Malik, Sharad
description We present a model checking-based method for verifying list-based concurrent set data structures. Concurrent data structures are notorious for being hard to get right and thus, their verification has received significant attention from the verification community. These data structures are unbounded in two dimensions: the list size is unbounded and an unbounded number of threads access them. Thus, their model checking requires abstraction to a model bounded in both the dimensions. We first show how the unbounded number of threads can be model checked by reduction to a finite model, while assuming a bounded number of list nodes. In particular, we leverage the CMP (CoMPositional) method which abstracts the unbounded threads by keeping one thread as is (concrete) and abstracting all the other threads to a single environment thread. Next, the method proceeds as a series of iterations where in each iteration the abstraction is model checked and, if a spurious counterexample is observed, refined. This is accomplished by the user by inspecting the returned counterexamples. If the user determines the returned counterexample to be spurious, she adds constraints to the abstraction in the form of lemmas to refine it. Upon addition, these lemmas are also verified for correctness as part of the CMP method. Thus, since these lemmas are verified as well, we show how some of the lemmas required for refinement of this abstract model can be mined automatically using an assertion mining tool, Daikon. Next, we show how the CMP method approach can be extended to the list dimension as well, to fully verify the data structures in both the dimensions. While it is possible to show correctness of these data structures for an unbounded number of threads by keeping one concrete thread and abstracting others, this is not directly possible in the list dimension as the nodes pointed to by the threads change during list traversal. Our method addresses this challenge by constructing an abstraction for which the concrete nodes, i.e., the nodes pointed to by the threads, can change as the thread pointers move with program execution. Further, our method also allows for refinement of this abstraction to prove properties of interest. We show the soundness of our method and establish its utility by model checking challenging concurrent list-based data structure examples.
doi_str_mv 10.1007/s10009-015-0369-y
format Article
fullrecord <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_miscellaneous_1904204008</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>4111021231</sourcerecordid><originalsourceid>FETCH-LOGICAL-c349t-ebc28105480e5306508e37f57d79208c75c32a9bf7de37c3158d334f526b28c13</originalsourceid><addsrcrecordid>eNp1kE1LxDAQhoMouK7-AG8FL3qITr6a5CiLX7DiRc-hTdO1azdZk_aw_94sFRHBy8wwPO8wPAidE7gmAPIm5QoaAxEYWKnx7gDNCGcMU6nk4c8s9TE6SWkNQGQp9QxdPYfG9YV9d_aj86ti9HUYfeOawgZvxxidH4q-S0M6RUdt1Sd39t3n6O3-7nXxiJcvD0-L2yW2jOsBu9pSRUBwBU4wKAUox2QrZCM1BWWlsIxWum5lk_eWEaEaxngraFlTZQmbo8vp7jaGz9GlwWy6ZF3fV96FMRmigVPgACqjF3_QdRijz98ZooByorSimSITZWNIKbrWbGO3qeLOEDB7eWaSZ7I8s5dndjlDp0zKrF-5-Ovyv6EvtG9vrw</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>1802418982</pqid></control><display><type>article</type><title>Model checking unbounded concurrent lists</title><source>Springer Nature - Complete Springer Journals</source><creator>Sethi, Divjyot ; Talupur, Muralidhar ; Malik, Sharad</creator><creatorcontrib>Sethi, Divjyot ; Talupur, Muralidhar ; Malik, Sharad</creatorcontrib><description>We present a model checking-based method for verifying list-based concurrent set data structures. Concurrent data structures are notorious for being hard to get right and thus, their verification has received significant attention from the verification community. These data structures are unbounded in two dimensions: the list size is unbounded and an unbounded number of threads access them. Thus, their model checking requires abstraction to a model bounded in both the dimensions. We first show how the unbounded number of threads can be model checked by reduction to a finite model, while assuming a bounded number of list nodes. In particular, we leverage the CMP (CoMPositional) method which abstracts the unbounded threads by keeping one thread as is (concrete) and abstracting all the other threads to a single environment thread. Next, the method proceeds as a series of iterations where in each iteration the abstraction is model checked and, if a spurious counterexample is observed, refined. This is accomplished by the user by inspecting the returned counterexamples. If the user determines the returned counterexample to be spurious, she adds constraints to the abstraction in the form of lemmas to refine it. Upon addition, these lemmas are also verified for correctness as part of the CMP method. Thus, since these lemmas are verified as well, we show how some of the lemmas required for refinement of this abstract model can be mined automatically using an assertion mining tool, Daikon. Next, we show how the CMP method approach can be extended to the list dimension as well, to fully verify the data structures in both the dimensions. While it is possible to show correctness of these data structures for an unbounded number of threads by keeping one concrete thread and abstracting others, this is not directly possible in the list dimension as the nodes pointed to by the threads change during list traversal. Our method addresses this challenge by constructing an abstraction for which the concrete nodes, i.e., the nodes pointed to by the threads, can change as the thread pointers move with program execution. Further, our method also allows for refinement of this abstraction to prove properties of interest. We show the soundness of our method and establish its utility by model checking challenging concurrent list-based data structure examples.</description><identifier>ISSN: 1433-2779</identifier><identifier>EISSN: 1433-2787</identifier><identifier>DOI: 10.1007/s10009-015-0369-y</identifier><language>eng</language><publisher>Berlin/Heidelberg: Springer Berlin Heidelberg</publisher><subject>Communities ; Computer programs ; Computer Science ; Computers ; Concretes ; Data integrity ; Data structures ; Iterative methods ; Lists ; Mathematical analysis ; Program verification (computers) ; Software ; Software Engineering ; Software Engineering/Programming and Operating Systems ; Spin 2013 ; Theory of Computation</subject><ispartof>International journal on software tools for technology transfer, 2016-08, Vol.18 (4), p.375-391</ispartof><rights>Springer-Verlag Berlin Heidelberg 2015</rights><rights>Springer-Verlag Berlin Heidelberg 2016</rights><lds50>peer_reviewed</lds50><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c349t-ebc28105480e5306508e37f57d79208c75c32a9bf7de37c3158d334f526b28c13</citedby><cites>FETCH-LOGICAL-c349t-ebc28105480e5306508e37f57d79208c75c32a9bf7de37c3158d334f526b28c13</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktopdf>$$Uhttps://link.springer.com/content/pdf/10.1007/s10009-015-0369-y$$EPDF$$P50$$Gspringer$$H</linktopdf><linktohtml>$$Uhttps://link.springer.com/10.1007/s10009-015-0369-y$$EHTML$$P50$$Gspringer$$H</linktohtml><link.rule.ids>314,777,781,27905,27906,41469,42538,51300</link.rule.ids></links><search><creatorcontrib>Sethi, Divjyot</creatorcontrib><creatorcontrib>Talupur, Muralidhar</creatorcontrib><creatorcontrib>Malik, Sharad</creatorcontrib><title>Model checking unbounded concurrent lists</title><title>International journal on software tools for technology transfer</title><addtitle>Int J Softw Tools Technol Transfer</addtitle><description>We present a model checking-based method for verifying list-based concurrent set data structures. Concurrent data structures are notorious for being hard to get right and thus, their verification has received significant attention from the verification community. These data structures are unbounded in two dimensions: the list size is unbounded and an unbounded number of threads access them. Thus, their model checking requires abstraction to a model bounded in both the dimensions. We first show how the unbounded number of threads can be model checked by reduction to a finite model, while assuming a bounded number of list nodes. In particular, we leverage the CMP (CoMPositional) method which abstracts the unbounded threads by keeping one thread as is (concrete) and abstracting all the other threads to a single environment thread. Next, the method proceeds as a series of iterations where in each iteration the abstraction is model checked and, if a spurious counterexample is observed, refined. This is accomplished by the user by inspecting the returned counterexamples. If the user determines the returned counterexample to be spurious, she adds constraints to the abstraction in the form of lemmas to refine it. Upon addition, these lemmas are also verified for correctness as part of the CMP method. Thus, since these lemmas are verified as well, we show how some of the lemmas required for refinement of this abstract model can be mined automatically using an assertion mining tool, Daikon. Next, we show how the CMP method approach can be extended to the list dimension as well, to fully verify the data structures in both the dimensions. While it is possible to show correctness of these data structures for an unbounded number of threads by keeping one concrete thread and abstracting others, this is not directly possible in the list dimension as the nodes pointed to by the threads change during list traversal. Our method addresses this challenge by constructing an abstraction for which the concrete nodes, i.e., the nodes pointed to by the threads, can change as the thread pointers move with program execution. Further, our method also allows for refinement of this abstraction to prove properties of interest. We show the soundness of our method and establish its utility by model checking challenging concurrent list-based data structure examples.</description><subject>Communities</subject><subject>Computer programs</subject><subject>Computer Science</subject><subject>Computers</subject><subject>Concretes</subject><subject>Data integrity</subject><subject>Data structures</subject><subject>Iterative methods</subject><subject>Lists</subject><subject>Mathematical analysis</subject><subject>Program verification (computers)</subject><subject>Software</subject><subject>Software Engineering</subject><subject>Software Engineering/Programming and Operating Systems</subject><subject>Spin 2013</subject><subject>Theory of Computation</subject><issn>1433-2779</issn><issn>1433-2787</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2016</creationdate><recordtype>article</recordtype><sourceid>8G5</sourceid><sourceid>ABUWG</sourceid><sourceid>AFKRA</sourceid><sourceid>AZQEC</sourceid><sourceid>BENPR</sourceid><sourceid>CCPQU</sourceid><sourceid>DWQXO</sourceid><sourceid>GNUQQ</sourceid><sourceid>GUQSH</sourceid><sourceid>M2O</sourceid><recordid>eNp1kE1LxDAQhoMouK7-AG8FL3qITr6a5CiLX7DiRc-hTdO1azdZk_aw_94sFRHBy8wwPO8wPAidE7gmAPIm5QoaAxEYWKnx7gDNCGcMU6nk4c8s9TE6SWkNQGQp9QxdPYfG9YV9d_aj86ti9HUYfeOawgZvxxidH4q-S0M6RUdt1Sd39t3n6O3-7nXxiJcvD0-L2yW2jOsBu9pSRUBwBU4wKAUox2QrZCM1BWWlsIxWum5lk_eWEaEaxngraFlTZQmbo8vp7jaGz9GlwWy6ZF3fV96FMRmigVPgACqjF3_QdRijz98ZooByorSimSITZWNIKbrWbGO3qeLOEDB7eWaSZ7I8s5dndjlDp0zKrF-5-Ovyv6EvtG9vrw</recordid><startdate>20160801</startdate><enddate>20160801</enddate><creator>Sethi, Divjyot</creator><creator>Talupur, Muralidhar</creator><creator>Malik, Sharad</creator><general>Springer Berlin Heidelberg</general><general>Springer Nature B.V</general><scope>AAYXX</scope><scope>CITATION</scope><scope>3V.</scope><scope>7SC</scope><scope>7XB</scope><scope>8AL</scope><scope>8AO</scope><scope>8FD</scope><scope>8FE</scope><scope>8FG</scope><scope>8FK</scope><scope>8G5</scope><scope>ABJCF</scope><scope>ABUWG</scope><scope>AFKRA</scope><scope>ARAPS</scope><scope>AZQEC</scope><scope>BENPR</scope><scope>BGLVJ</scope><scope>CCPQU</scope><scope>DWQXO</scope><scope>GNUQQ</scope><scope>GUQSH</scope><scope>HCIFZ</scope><scope>JQ2</scope><scope>K7-</scope><scope>L6V</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope><scope>M0N</scope><scope>M2O</scope><scope>M7S</scope><scope>MBDVC</scope><scope>P5Z</scope><scope>P62</scope><scope>PADUT</scope><scope>PQEST</scope><scope>PQQKQ</scope><scope>PQUKI</scope><scope>PRINS</scope><scope>PTHSS</scope><scope>Q9U</scope></search><sort><creationdate>20160801</creationdate><title>Model checking unbounded concurrent lists</title><author>Sethi, Divjyot ; Talupur, Muralidhar ; Malik, Sharad</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c349t-ebc28105480e5306508e37f57d79208c75c32a9bf7de37c3158d334f526b28c13</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2016</creationdate><topic>Communities</topic><topic>Computer programs</topic><topic>Computer Science</topic><topic>Computers</topic><topic>Concretes</topic><topic>Data integrity</topic><topic>Data structures</topic><topic>Iterative methods</topic><topic>Lists</topic><topic>Mathematical analysis</topic><topic>Program verification (computers)</topic><topic>Software</topic><topic>Software Engineering</topic><topic>Software Engineering/Programming and Operating Systems</topic><topic>Spin 2013</topic><topic>Theory of Computation</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Sethi, Divjyot</creatorcontrib><creatorcontrib>Talupur, Muralidhar</creatorcontrib><creatorcontrib>Malik, Sharad</creatorcontrib><collection>CrossRef</collection><collection>ProQuest Central (Corporate)</collection><collection>Computer and Information Systems Abstracts</collection><collection>ProQuest Central (purchase pre-March 2016)</collection><collection>Computing Database (Alumni Edition)</collection><collection>ProQuest Pharma Collection</collection><collection>Technology Research Database</collection><collection>ProQuest SciTech Collection</collection><collection>ProQuest Technology Collection</collection><collection>ProQuest Central (Alumni) (purchase pre-March 2016)</collection><collection>Research Library (Alumni Edition)</collection><collection>Materials Science &amp; Engineering Collection</collection><collection>ProQuest Central (Alumni Edition)</collection><collection>ProQuest Central UK/Ireland</collection><collection>Advanced Technologies &amp; Aerospace Collection</collection><collection>ProQuest Central Essentials</collection><collection>ProQuest Central</collection><collection>Technology Collection</collection><collection>ProQuest One Community College</collection><collection>ProQuest Central Korea</collection><collection>ProQuest Central Student</collection><collection>Research Library Prep</collection><collection>SciTech Premium Collection</collection><collection>ProQuest Computer Science Collection</collection><collection>Computer Science Database</collection><collection>ProQuest Engineering 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><collection>Computing Database</collection><collection>Research Library</collection><collection>Engineering Database</collection><collection>Research Library (Corporate)</collection><collection>Advanced Technologies &amp; Aerospace Database</collection><collection>ProQuest Advanced Technologies &amp; Aerospace Collection</collection><collection>Research Library China</collection><collection>ProQuest One Academic Eastern Edition (DO NOT USE)</collection><collection>ProQuest One Academic</collection><collection>ProQuest One Academic UKI Edition</collection><collection>ProQuest Central China</collection><collection>Engineering Collection</collection><collection>ProQuest Central Basic</collection><jtitle>International journal on software tools for technology transfer</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Sethi, Divjyot</au><au>Talupur, Muralidhar</au><au>Malik, Sharad</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Model checking unbounded concurrent lists</atitle><jtitle>International journal on software tools for technology transfer</jtitle><stitle>Int J Softw Tools Technol Transfer</stitle><date>2016-08-01</date><risdate>2016</risdate><volume>18</volume><issue>4</issue><spage>375</spage><epage>391</epage><pages>375-391</pages><issn>1433-2779</issn><eissn>1433-2787</eissn><abstract>We present a model checking-based method for verifying list-based concurrent set data structures. Concurrent data structures are notorious for being hard to get right and thus, their verification has received significant attention from the verification community. These data structures are unbounded in two dimensions: the list size is unbounded and an unbounded number of threads access them. Thus, their model checking requires abstraction to a model bounded in both the dimensions. We first show how the unbounded number of threads can be model checked by reduction to a finite model, while assuming a bounded number of list nodes. In particular, we leverage the CMP (CoMPositional) method which abstracts the unbounded threads by keeping one thread as is (concrete) and abstracting all the other threads to a single environment thread. Next, the method proceeds as a series of iterations where in each iteration the abstraction is model checked and, if a spurious counterexample is observed, refined. This is accomplished by the user by inspecting the returned counterexamples. If the user determines the returned counterexample to be spurious, she adds constraints to the abstraction in the form of lemmas to refine it. Upon addition, these lemmas are also verified for correctness as part of the CMP method. Thus, since these lemmas are verified as well, we show how some of the lemmas required for refinement of this abstract model can be mined automatically using an assertion mining tool, Daikon. Next, we show how the CMP method approach can be extended to the list dimension as well, to fully verify the data structures in both the dimensions. While it is possible to show correctness of these data structures for an unbounded number of threads by keeping one concrete thread and abstracting others, this is not directly possible in the list dimension as the nodes pointed to by the threads change during list traversal. Our method addresses this challenge by constructing an abstraction for which the concrete nodes, i.e., the nodes pointed to by the threads, can change as the thread pointers move with program execution. Further, our method also allows for refinement of this abstraction to prove properties of interest. We show the soundness of our method and establish its utility by model checking challenging concurrent list-based data structure examples.</abstract><cop>Berlin/Heidelberg</cop><pub>Springer Berlin Heidelberg</pub><doi>10.1007/s10009-015-0369-y</doi><tpages>17</tpages></addata></record>
fulltext fulltext
identifier ISSN: 1433-2779
ispartof International journal on software tools for technology transfer, 2016-08, Vol.18 (4), p.375-391
issn 1433-2779
1433-2787
language eng
recordid cdi_proquest_miscellaneous_1904204008
source Springer Nature - Complete Springer Journals
subjects Communities
Computer programs
Computer Science
Computers
Concretes
Data integrity
Data structures
Iterative methods
Lists
Mathematical analysis
Program verification (computers)
Software
Software Engineering
Software Engineering/Programming and Operating Systems
Spin 2013
Theory of Computation
title Model checking unbounded concurrent lists
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-21T07%3A02%3A19IST&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=Model%20checking%20unbounded%20concurrent%20lists&rft.jtitle=International%20journal%20on%20software%20tools%20for%20technology%20transfer&rft.au=Sethi,%20Divjyot&rft.date=2016-08-01&rft.volume=18&rft.issue=4&rft.spage=375&rft.epage=391&rft.pages=375-391&rft.issn=1433-2779&rft.eissn=1433-2787&rft_id=info:doi/10.1007/s10009-015-0369-y&rft_dat=%3Cproquest_cross%3E4111021231%3C/proquest_cross%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=1802418982&rft_id=info:pmid/&rfr_iscdi=true