Viper
A Verification Infrastructure for Permission-Based Reasoning
16th July 2015, Imperial Concurrency Workshop
Alex Summers, ETH Zurich Joint work with Uri Juhasz, Ioannis Kassios, Peter Müller, Milos Novacek, Malte Schwerhoff (and many students)
Viper A Verification Infrastructure for Permission-Based Reasoning - - PowerPoint PPT Presentation
Viper A Verification Infrastructure for Permission-Based Reasoning Alex Summers, ETH Zurich Joint work with Uri Juhasz, Ioannis Kassios, Peter Mller, Milos Novacek, Malte Schwerhoff (and many students) 16 th July 2015, Imperial Concurrency
16th July 2015, Imperial Concurrency Workshop
Alex Summers, ETH Zurich Joint work with Uri Juhasz, Ioannis Kassios, Peter Müller, Milos Novacek, Malte Schwerhoff (and many students)
✔ ✘
Int ntermedia iate Verif ific ication ion Lang nguage aut utom
ic prov
Back-end nd tool
Fron
nd tool
generates verified by
x.f y.f this.f z.g
Back-end nd tools
Fron
nd tools
generates verified by
25
class C { int[ ] data; int count = 0; monitor invariant this.data ↦ _ * this.count ↦ _ void Foo( ) { acquire this; int i = data.length; while( 0 < i ) invariant this.data ↦ _ * this.count ↦ _ invariant holds( this ); { ... ; i = i – 1; } count = count + 1; release this; } }
27
class C { int[ ] data; int count = 0; monitor invariant this.data ↦ _ * this.count ↦ _ && this.count > old(this.count) void Foo( ) { acquire this; int i = data.length; while( 0 < i ) invariant this.data ↦ _ * this.count ↦ _ invariant holds( this ); { ... ; i = i – 1; } count = count + 1; release this; } }
31
Silicon Carbon Boogie
(Microsoft)
Z3
(Microsoft) verified by encodes in queries queries
Silver code
32
Program Verifier
read by calculates
Prover
given to
WPs
weakest precondition calculation
Program Verifier
read by maintains
Symbolic State σ
symbolically execute every path through every method query prover at every step: is next statement executable?
Prover
used by
σ1 σ2 σ3 σ4 σ5
Silicon Carbon Boogie
(Microsoft)
Z3
(Microsoft)
Chalice2Silver
OpenCL (UTwente)
verified by encodes in queries queries gene rate
Sample Scala2Silver
infer additional specifications
Silver
front-ends back-ends
Java (UTwente)
(VerCors project - Marieke Huisman)