iProve: A Scalable Technique for Consumer-Verifiable Software GuaranteesSilviu Andrica, Horatiu Jula, and George Candea Proc. Intl. Conf. on Dependable Systems and Networks (DSN), Chicago, IL, June 2010 [ PDF ] Formally proving complex program properties is still considered impractical for systems with over a million lines of code. We present iProve, an approach that enables guaranteeing useful properties in large Java systems. Desired properties are proven in iProve as a combination of two proofs: one of a complex property applied to a small piece of code – a nucleus – using existing theorem provers, and a proof of a simple property applied to the rest of the code – the program body – using iProve. We show how iProve can be used to guarantee properties such as communication security, deadlock immunity, data privacy, and resource usage bounds in Java programs with millions of lines of code. iProve scales well, requires no access to source code, and allows nuclei to be reused with an unlimited number of systems and to be written in verification-friendly languages. |
