<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//TaxonX//DTD Taxonomic Treatment Publishing DTD v0 20100105//EN" "../../nlm/tax-treatment-NS0.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:tp="http://www.plazi.org/taxpub" article-type="research-article" dtd-version="3.0" xml:lang="en">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">109</journal-id>
      <journal-id journal-id-type="index">urn:lsid:arphahub.com:pub:3dc5f44e-8666-58db-bc76-a455210e8891</journal-id>
      <journal-title-group>
        <journal-title xml:lang="en">JUCS - Journal of Universal Computer Science</journal-title>
        <abbrev-journal-title xml:lang="en">jucs</abbrev-journal-title>
      </journal-title-group>
      <issn pub-type="ppub">0948-695X</issn>
      <issn pub-type="epub">0948-6968</issn>
      <publisher>
        <publisher-name>Journal of Universal Computer Science</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.3217/jucs-015-01-0072</article-id>
      <article-id pub-id-type="publisher-id">29293</article-id>
      <article-categories>
        <subj-group subj-group-type="heading">
          <subject>Research Article</subject>
        </subj-group>
        <subj-group subj-group-type="scientific_subject">
          <subject>D.1.3 - Concurrent Programming</subject>
          <subject>D.2.4 - Software/Program Verification</subject>
          <subject>F.3.1 - Specifying and Verifying and Reasoning about Programs</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>Reasoning about Nonblocking Concurrency</article-title>
      </title-group>
      <contrib-group content-type="authors">
        <contrib contrib-type="author" corresp="yes">
          <name name-style="western">
            <surname>Groves</surname>
            <given-names>Lindsay</given-names>
          </name>
          <email xlink:type="simple">lindsay.groves@vuw.ac.nz</email>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
      </contrib-group>
      <aff id="A1">
        <label>1</label>
        <addr-line content-type="verbatim">Victoria University of Wellington, Wellington, New Zealand</addr-line>
        <institution>Victoria University of Wellington</institution>
        <addr-line content-type="city">Wellington</addr-line>
        <country>New Zealand</country>
      </aff>
      <author-notes>
        <fn fn-type="corresp">
          <p>Corresponding author: Lindsay Groves (<email xlink:type="simple">lindsay.groves@vuw.ac.nz</email>).</p>
        </fn>
        <fn fn-type="edited-by">
          <p>Academic editor: </p>
        </fn>
      </author-notes>
      <pub-date pub-type="collection">
        <year>2009</year>
      </pub-date>
      <pub-date pub-type="epub">
        <day>01</day>
        <month>01</month>
        <year>2009</year>
      </pub-date>
      <volume>15</volume>
      <issue>1</issue>
      <fpage>72</fpage>
      <lpage>111</lpage>
      <uri content-type="arpha" xlink:href="http://openbiodiv.net/F89104DD-CDE6-56E6-8722-161346FC96C7">F89104DD-CDE6-56E6-8722-161346FC96C7</uri>
      <uri content-type="zenodo_dep_id" xlink:href="https://zenodo.org/record/7000617">7000617</uri>
      <permissions>
        <copyright-statement>Lindsay Groves</copyright-statement>
        <license license-type="creative-commons-attribution" xlink:href="" xlink:type="simple">
          <license-p>This article is freely available under the J.UCS Open Content License.</license-p>
        </license>
      </permissions>
      <abstract>
        <label>Abstract</label>
        <p>Verification of concurrent algorithms has been the focus of much research over a considerable period of time, and a variety of techniques have been developed that are suited to particular classes of algorithm, for example algorithms based on message passing or mutual exclusion. The development of nonblocking or lock-free algorithms, which rely only on hardware primitives such as Compare And Swap, present new challenges for verification, as they allow greater levels of currency and more complex interactions between processes.  In this paper, we describe and compare two approaches to reasoning about nonblocking algorithms. We give a brief overview of the simulation approach we have used in previous work. We then give a more detailed description of an approach based on Lipton's reduction method, and illustrate it by verifying two versions of a shared counter and two versions of a shared stack. Both approaches work by transforming a concurrent execution into an equivalent sequentia-execution, but they differ in the way that executions are transformed and the way that transformations are justified.</p>
      </abstract>
    </article-meta>
  </front>
</article>
