150 likes | 258 Views
This outline addresses the certification of system software through Hoare-style program verification. It discusses the limitations of existing frameworks such as CAPs and SCAPs, particularly regarding expressiveness and proof development challenges. By proposing a new framework that supports intermediate languages and incorporates separation logic, it aims to facilitate easier automation in proof generation. Open problems are identified, including language selection and the connection with low-level CAP-like frameworks. This work seeks to enhance the field of program verification, making it more practical and applicable.
E N D
Certifying Intermediate Programming Zhaopeng Li 2008-8-4
Outline • Big Picture • Related Work • What To Do and Open Problems
Big Picture • Goal Certifying System Software • Method Hoare-style Program Verification
Related Work • CAP / SCAP /…/ OCAP /… • Separation Logic / Smallfoot / SLAyer • Spec# (Boogie, Z3, Terminator…) • And more…
Related Work (cont.) • Main shortcomings of non-CAPs • Not so expressive logic Only prove simple properties of programs Not support system level certification well • No solid proofs Using decision procedures automated theorem provers But automation is one of their strongpoint.
Related Work (cont.) • Main shortcomings of CAPs • Assembly level code and proof Unfriendly to programmers hard to figure out and debug specifications • Costly proof development Lengthy proof , and not easy to provide Nearly impossible to be applied to practice
What to do • Based on methods of CAPs • Propose framework that supports: • Source (high-level)/intermediate language • Expressive logic • Automated or semi-automated proof development • Connection with low-level CAP-like framework
What to do : language • Which language to choose? • Source language • Intermediate language • First-step choice : Intermediate language • A better try to overcome shortcomings of CAPs • Easy to connect with low-level CAPs
What to do : program logic • Assertion language • Asserts on the program state Heap, Store, Data Stack,… • Uses Separation logic connectives ? Deal with program with mutable shared structures • Specification • Traditional pre- and post-conditions {P}C{Q} • Guarantee from SCAP {g}C • Single two-state-related pre-condition from FCAP {p}C • Inference rules • Depend on what specification we choose
What to do : proof method • Proof Method • VCGen and Automated Theorem Prover • Coq and Semi-automated Proof • Combination? • Techniques to split VC
What to do : connect with CAP • Translation • Language • Specification • Proof • Generation • Specification • Proof
Open Problems • What kind of Language? • Key features: • Assignment statement • Function call and return • Goto statement • Explicit or implicit data stack? • And more? • What kind of Logic? • Assertion • Specification • Traditional pre- and post-conditions • Guarantee from SCAP • Single two-state-related pre-condition from FCAP
Open Problems (cont.) • How to connect with CAP? • Translation • Generation • Build higher framework based this one? • C language • …
Discussion • Any suggestions? • Or any options, ideas?