Certifying Intermediate Programming Zhaopeng Li 2008-8-4.

Slides:



Advertisements
Similar presentations
Writing specifications for object-oriented programs K. Rustan M. Leino Microsoft Research, Redmond, WA, USA 21 Jan 2005 Invited talk, AIOOL 2005 Paris,
Advertisements

1 Towards a Verifying Compiler: The Spec# Approach Wolfram Schulte Microsoft Research Formal Methods 2006 Joint work with Rustan Leino, Mike Barnett, Manuel.
Automated Theorem Proving Lecture 1. Program verification is undecidable! Given program P and specification S, does P satisfy S?
Challenges in increasing tool support for programming K. Rustan M. Leino Microsoft Research, Redmond, WA, USA 23 Sep 2004 ICTAC Guiyang, Guizhou, PRC joint.
A Translation from Typed Assembly Language to Certified Assembly Programming Zhong Shao Yale University Joint work with Zhaozhong Ni Paper URL:
Copyright W. Howden1 Programming by Contract CSE 111 6/4/2014.
Synthesis, Analysis, and Verification Lecture 04c Lectures: Viktor Kuncak VC Generation for Programs with Data Structures “Beyond Integers”
Control Structures Ranga Rodrigo. Control Structures in Brief C++ or JavaEiffel if-elseif-elseif-else-end caseinspect for, while, do-whilefrom-until-loop-end.
PZ03D Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ03D - Program verification Programming Language Design.
Automatic Verification Book: Chapter 6. What is verification? Traditionally, verification means proof of correctness automatic: model checking deductive:
Automated Software Verification with a Permission-Based Logic 20 th June 2014, Zürich Malte Schwerhoff, ETH Zürich.
B. Sharma, S.D. Dhodapkar, S. Ramesh 1 Assertion Checking Environment (ACE) for Formal Verification of C Programs Babita Sharma, S.D.Dhodapkar RCnD, BARC,
Background information Formal verification methods based on theorem proving techniques and model­checking –to prove the absence of errors (in the formal.
ISBN Chapter 3 Describing Syntax and Semantics.
Dynamic semantics Precisely specify the meanings of programs. Why? –programmers need to understand the meanings of programs they read –programmers need.
Copyright © 2006 Addison-Wesley. All rights reserved. 3.5 Dynamic Semantics Meanings of expressions, statements, and program units Static semantics – type.
CS 330 Programming Languages 09 / 19 / 2006 Instructor: Michael Eckmann.
1 Semantic Description of Programming languages. 2 Static versus Dynamic Semantics n Static Semantics represents legal forms of programs that cannot be.
CS 355 – Programming Languages
Automated Soundness Proofs for Dataflow Analyses and Transformations via Local Rules Sorin Lerner* Todd Millstein** Erika Rice* Craig Chambers* * University.
Code-Carrying Proofs Aytekin Vargun Rensselaer Polytechnic Institute.
Proof translation from CVC3 to Hol light Yeting Ge Acsys Mar 5, 2008.
Proof-system search ( ` ) Interpretation search ( ² ) Main search strategy DPLL Backtracking Incremental SAT Natural deduction Sequents Resolution Main.
CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.
An Open Framework for Foundational Proof-Carrying Code Xinyu Feng Yale University Joint work with Zhaozhong Ni (Yale, now at MSR), Zhong Shao (Yale) and.
Building a program verifier K. Rustan M. Leino Microsoft Research, Redmond, WA 10 May 2006 Guest lecture, Shaz Qadeer’s cse599f, Formal Verification of.
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 18 Program Correctness To treat programming.
From last time S1: l := new Cons p := l S2: t := new Cons *p := t p := t l p S1 l p tS2 l p S1 t S2 l t S1 p S2 l t S1 p S2 l t S1 p L2 l t S1 p S2 l t.
ESC Java. Static Analysis Spectrum Power Cost Type checking Data-flow analysis Model checking Program verification AutomatedManual ESC.
CS 330 Programming Languages 09 / 16 / 2008 Instructor: Michael Eckmann.
Well-cooked Spaghetti: Weakest-Precondition of Unstructured Programs Mike Barnett and Rustan Leino Microsoft Research Redmond, WA, USA.
Chair of Software Engineering Automatic Verification of Computer Programs.
Describing Syntax and Semantics
Extensible Untrusted Code Verification Robert Schneck with George Necula and Bor-Yuh Evan Chang May 14, 2003 OSQ Retreat.
Computer Science School of Computing Clemson University Discrete Math and Reasoning about Software Correctness Murali Sitaraman
Crowfoot: a verifier for higher order store programs Billiejoe (Nathaniel) Charlton Ben Horsfall Bernhard Reus University of Sussex VMCAI 2012.
1 Program Correctness CIS 375 Bruce R. Maxim UM-Dearborn.
Introduction to Our Research on Certifying Compiler Zhaopeng Li (In Chinese: 李兆鹏 ) Certifying Compiler Group USTC-Yale Joint.
Proof Carrying Code Zhiwei Lin. Outline Proof-Carrying Code The Design and Implementation of a Certifying Compiler A Proof – Carrying Code Architecture.
1 Inference Rules and Proofs (Z); Program Specification and Verification Inference Rules and Proofs (Z); Program Specification and Verification.
Overview of Formal Methods. Topics Introduction and terminology FM and Software Engineering Applications of FM Propositional and Predicate Logic Program.
Proof-Carrying Code & Proof-Carrying Authentication Stuart Pickard CSCI 297 June 2, 2005.
Report on Project CComp Zhaopeng Li Joint work with Prof. Yiyun Chen, Zhong Zhuang, Simin Yang, Dawei Fan, Zhenting Zhang Software Security Lab., USTC,
ISBN Chapter 3 Describing Semantics -Attribute Grammars -Dynamic Semantics.
CS 363 Comparative Programming Languages Semantics.
A Certifying Compiler and Pointer Logic Zhaopeng Li Software Security Lab. Department of Computer Science and Technology, University of Science and Technology.
ISBN Chapter 3 Describing Semantics.
Chapter 3 Part II Describing Syntax and Semantics.
Semantics In Text: Chapter 3.
Verification & Validation By: Amir Masoud Gharehbaghi
13 Aug 2013 Program Verification. Proofs about Programs Why make you study logic? Why make you do proofs? Because we want to prove properties of programs.
Formal Specification: a Roadmap Axel van Lamsweerde published on ICSE (International Conference on Software Engineering) Jing Ai 10/28/2003.
Static Techniques for V&V. Hierarchy of V&V techniques Static Analysis V&V Dynamic Techniques Model Checking Simulation Symbolic Execution Testing Informal.
CSSE501 Object-Oriented Development. Chapter 10: Subclasses and Subtypes  In this chapter we will explore the relationships between the two concepts.
“Discipline is the refining fire by which talent becomes ability.” – Roy L. Smith Thought for the Day.
C HAPTER 3 Describing Syntax and Semantics. D YNAMIC S EMANTICS Describing syntax is relatively simple There is no single widely acceptable notation or.
VPERM: Variable Permissions for Concurrency Verification Duy-Khanh Le, Wei-Ngan Chin, Yong-Meng Teo ICFEM, Kyoto, Japan, Nov 2012.
Overview of Back-end for CComp Zhaopeng Li Software Security Lab. June 8, 2009.
Frederico Araujo CS6362 – Fall 2010 Automated Theorem Proving.
Introduction To Software Development Environment.
Mostly-Automated Verification of Low-Level Programs in Computational Separation Logic Adam Chlipala Harvard University PLDI 2011.
Weakest Precondition of Unstructured Programs
The Relationship Between Separation Logic and Implicit Dynamic Frames
State your reasons or how to keep proofs while optimizing code
Proof-Transforming Compilation of Programs with Abrupt Termination
Lecture 5 Floyd-Hoare Style Verification
Programming Languages 2nd edition Tucker and Noonan
Semantics In Text: Chapter 3.
Programming Languages and Compilers (CS 421)
Programming Languages 2nd edition Tucker and Noonan
Presentation transcript:

Certifying Intermediate Programming Zhaopeng Li

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?

Thanks!