A Calculus of Atomic Actions

Subscribers:
344,000
Published on ● Video Link: https://www.youtube.com/watch?v=6T7lstN0aII



Duration: 1:11:06
169 views
2


Concurrency-related bugs are notoriously difficult to discover by code review and testing. By doing a formal proof on the program text, one can statically verify that no execution of the program leads to an error. The effectiveness of the proof depends on the proper choice of the manual inputs such as code annotations. Deriving these annotations for a concurrent program requires complicated reasoning. The main reason behind this is the interaction between threads over the shared memory. While writing the proof, at every point, one has to consider the possible interleavings of conflicting operations. Existing proof methods including Owicki-Gries, rely/guarantee and concurrent separation logic are applied at the finest level of concurrency. Analyzing the program at this level requires complex annotations and invariants, along with many auxiliary variables. In this talk, we present a new proof method that simplifies verifying assertions in concurrent programs. The key feature of our method is the use of atomicity as the main proof tool. A proof is done by rewriting the program with larger atomic blocks in a number of steps. In order to reach the desired level of atomicity, we alternate proof steps that apply abstraction and reduction, each of which improves the outcome of the other in a following step. Then, we check assertions sequentially within the atomic blocks of the resulting program. We declare the original program correct when we discharge all the assertions. Our proof style provides separation of concerns: At each step, we either use facts about a concurrency protocol to enlarge atomic blocks, or check data properties sequentially. Our software tool, QED, mechanizes proofs using the Z3 SMT solver to check preconditions of the proof steps. We demonstrated the simplicity of our proof strategy by verifying well-known programs using fine-grained locking and non-blocking data algorithms. The work presented is going to be presented at POPL'09, and is also available as a Microsoft Research technical report at: http://research.microsoft.com/apps/pubs/default.aspx?id=70608




Other Videos By Microsoft Research


2016-09-06From Company Man, Family Dinners & Affluence to Home Office, Blackberry Moms and Economic Anxiety
2016-09-06Iterative Methods in Combinatorial Optimization
2016-09-06Inventing the Future: Humanity's Future in Space
2016-09-06Mixing in Time and Space
2016-09-06Abstraction-Guided Hybrid Symbolic Execution for Testing Concurrent Systems
2016-09-06The Church-Turing Thesis: Story and Recent Progress
2016-09-06Investigating the Fundamental Network Burden of Distributed Cooperation
2016-09-06Techniques for combinatorial optimization: Spectral Graph Theory and Semidefinite Programming
2016-09-06Visual Search for an Object in a 3D Environment using a Mobile Robot
2016-09-06Deterministic Parallel Java: Towards Deterministic-by-default Parallel Programming
2016-09-06A Calculus of Atomic Actions
2016-09-06The Edge of Medicine: The Technology that will Change Our Lives
2016-09-06Approximating the optimum: Efficient algorithms and their limits
2016-09-06Modeling and Enacting Electronic Contracts
2016-09-06eScience: Closing Keynote - eScience and the Fourth Paradigm: Supporting Data-centric Science
2016-09-06eScience: Plenary, Keynote - Digital Repositories, Archives and Infrastructures
2016-09-06eScience: Closing Keynote - Distributed and Parallel Programming Environments and their Performance
2016-09-06eScience: Birds of a Feather Session - eScience Inspired Education
2016-09-06eScience: Panel What [1/9]
2016-09-06Bio Tools - Microsoft Computational Finance Server as a Platform for Computational Biology
2016-09-06The eScience Appliance: Provisioning an Inexpensive Bottom-Up Cyberinfrastructure



Tags:
microsoft research