Expressive modular fine-grained concurrency specification
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Fractional permissions without the fractions
Proceedings of the 13th Workshop on Formal Techniques for Java-Like Programs
Proceedings of the 13th Workshop on Formal Techniques for Java-Like Programs
The VerCors project: setting up basecamp
PLPV '12 Proceedings of the sixth workshop on Programming languages meets program verification
Verifying concurrent programs with chalice
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
Deadlock-Free channels and locks
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
Automatic inference of access permissions
VMCAI'12 Proceedings of the 13th international conference on Verification, Model Checking, and Abstract Interpretation
Comparing verification condition generation with symbolic execution: an experience report
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
Verifying backwards compatibility of object-oriented libraries using Boogie
Proceedings of the 14th Workshop on Formal Techniques for Java-like Programs
Variable permissions for concurrency verification
ICFEM'12 Proceedings of the 14th international conference on Formal Engineering Methods: formal methods and software engineering
A framework for automated and certified refinement steps
Innovations in Systems and Software Engineering
Joogie: from Java through Jimple to Boogie
Proceedings of the 2nd ACM SIGPLAN International Workshop on State Of the Art in Java Program analysis
A formal semantics for isorecursive and equirecursive state abstractions
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Invariants synthesis over a combined domain for automated program verification
Theories of Programming and Formal Methods
Hi-index | 0.00 |
A program verifier is a tool that allows developers to prove that their code satisfies its specification for every possible input and every thread schedule. These lecture notes describe a verifier for concurrent programs called Chalice.Chalice's verification methodology centers around permissions and permission transfer. In particular, a memory location may be accessed by a thread only if that thread has permission to do so. Proper use of permissions allows Chalice to deduce upper bounds on the set of locations modifiable by a method and guarantees the absence of data races for concurrent programs. The lecture notes informally explain how Chalice works through various examples.