Starling: automating concurrency verification Mike Dodds (1) , - - PowerPoint PPT Presentation

starling automating concurrency verification
SMART_READER_LITE
LIVE PREVIEW

Starling: automating concurrency verification Mike Dodds (1) , - - PowerPoint PPT Presentation

Starling: automating concurrency verification Mike Dodds (1) , Matthew Parkinson (2) , Matt Windsor (1) (1) University of York (2) Microsoft Research Funding from Royal Society Industrial Fellowship for Dodds. Ticketed


slide-1
SLIDE 1

Starling: automating concurrency verification

Mike Dodds(1), Matthew Parkinson(2), Matt Windsor(1)

(1) University of York (2) Microsoft Research Funding from Royal Society Industrial Fellowship for Dodds.

slide-2
SLIDE 2
slide-3
SLIDE 3

Ticketed Lock

global int ticket; // The next ticket to hand out. global int serving; // The current ticket holding the lock. method lock() { <t = ticket++>; do { <s = serving>; } while (s != t); } method unlock() { <serving++>; }

slide-4
SLIDE 4

Ticketed Lock

method lock() { {| emp |} <t = ticket++>; do { <s = serving>; } while (s != t); {| holdLock() |} } method unlock() { {| holdLock() |} <serving++>; {| emp |} } constraint holdLock() * holdLock() -> false;

slide-5
SLIDE 5

Ticketed Lock

method lock() { {| emp |} <t = ticket++>; {| holdTick(t) |} do { {| holdTick(t) |} <s = serving>; {| if s==t then holdLock() else holdTick(t) |} } while (s != t); {| holdLock() |} } method unlock() { {| holdLock() |} <serving++>; {| emp |} } constraint holdLock() * holdLock() -> false;

slide-6
SLIDE 6

Demo

slide-7
SLIDE 7

Views

slide-8
SLIDE 8

Checking proof outline

slide-9
SLIDE 9

Reification

constraint holdLock() * holdLock() -> false;

slide-10
SLIDE 10

Check proof outlines

slide-11
SLIDE 11

Proof

slide-12
SLIDE 12

Open Development

Follow the project on GitHub: http://github.com/septract/starling-tool/