VeriML DARPA CRASH Project Progress Report Antonis Stampoulis October 5 th, 2012 A language-based, dependently-typed, user-extensible approach to proof.

Slides:



Advertisements
Similar presentations
Static and User-Extensible Proof Checking Antonis StampoulisZhong Shao Yale University POPL 2012.
Advertisements

Certified Typechecking in Foundational Certified Code Systems Susmit Sarkar Carnegie Mellon University.
Proofs and Programs Wei Hu 11/01/2007. Outline  Motivation  Theory  Lambda calculus  Curry-Howard Isomorphism  Dependent types  Practice  Coq Wei.
Introducing Formal Methods, Module 1, Version 1.1, Oct., Formal Specification and Analytical Verification L 5.
25 February 2009Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department.
Foundational Certified Code in a Metalogical Framework Karl Crary and Susmit Sarkar Carnegie Mellon University.
March 4, 2005Susmit Sarkar 1 A Cost-Effective Foundational Certified Code System Susmit Sarkar Thesis Proposal.
Towards a Practical Composition Language Oscar Nierstrasz Software Composition Group University of Bern.
VIDE als voortzetting van Cocktail SET Seminar 11 september 2008 Dr. ir. Michael Franssen.
VeriML: Revisiting the Foundations of Proof Assistants Zhong Shao Yale University MacQueen Fest May 13, 2012 (Joint work with Antonis Stampoulis)
An Integration of Program Analysis and Automated Theorem Proving Bill J. Ellis & Andrew Ireland School of Mathematical & Computer Sciences Heriot-Watt.
Formal Methods in Software Engineering Credit Hours: 3+0 By: Qaisar Javaid Assistant Professor Formal Methods in Software Engineering1.
S EMINAL : Searching for ML Type-Error Messages Benjamin Lerner, Dan Grossman, Craig Chambers University of Washington.
CLF: A Concurrent Logical Framework David Walker Princeton (with I. Cervesato, F. Pfenning, K. Watkins)
PROOF TRANSLATION AND SMT LIB CERTIFICATION Yeting Ge Clark Barrett SMT 2008 July 7 Princeton.
VIDE Integrated Environment for Development and Verification of Programs.
Architectural Reasoning in ArchJava Jonathan Aldrich Craig Chambers David Notkin University of Washington ECOOP ‘02, 13 June 2002.
Extensibility, Safety and Performance in the SPIN Operating System Bershad et al Presentation by norm Slides shamelessly “borrowed” from Stefan Savage’s.
A Type System for Expressive Security Policies David Walker Cornell University.
Chair of Software Engineering Automatic Verification of Computer Programs.
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
SE 555 Software Requirements & Specification 1 SE 555 Software Requirements & Specification Prototyping.
Implementation. We we came from… Planning Analysis Design Implementation Identify Problem/Value. Feasibility Analysis. Project Management. Understand.
Software Engineering Tools and Methods Presented by: Mohammad Enamur Rashid( ) Mohammad Rashim Uddin( ) Masud Ur Rahman( )
Introduction to Software Testing
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
Have Your Verified Compiler And Extend It Too Zachary Tatlock Sorin Lerner UC San Diego.
CSCE 221H-200Gregory Donelan II. Early Life Was Born in Yealmpton, England on January 13 th, 1934 Won a scholarship to Eton College in 1946, where he.
Software Configuration Management
CSCE 548 Code Review. CSCE Farkas2 Reading This lecture: – McGraw: Chapter 4 – Recommended: Best Practices for Peer Code Review,
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Types for Programs and Proofs Lecture 1. What are types? int, float, char, …, arrays types of procedures, functions, references, records, objects,...
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
 CS 5380 Software Engineering Chapter 8 Testing.
Introduction to Our Research on Certifying Compiler Zhaopeng Li (In Chinese: 李兆鹏 ) Certifying Compiler Group USTC-Yale Joint.
FPGA-Based System Design: Chapter 6 Copyright  2004 Prentice Hall PTR Topics n Design methodologies.
WSMX Execution Semantics Executable Software Specification Eyal Oren DERI
An overview of Coq Xinyu Feng USTC Erasmus Mundus NordSecMob Scholar at DTU.
TEST-1 6. Testing & Refactoring. TEST-2 How we create classes? We think about what a class must do We focus on its implementation We write fields We write.
Logic in Computer Science - Overview Sep 1, 2009 박성우.
Formal Methods in Software Engineering Credit Hours: 3+0 By: Qaisar Javaid Assistant Professor.
Tool Support for proof Engineering Anne Mulhern Computer Sciences Department University of Wisconsin-Madison Madison, WI USA
Automated tactics for separation logic VeriML Reconstruct Z3 Proof Safe incremental type checker Certifying code transformation Proof carrying hardware.
Formal Specification: a Roadmap Axel van Lamsweerde published on ICSE (International Conference on Software Engineering) Jing Ai 10/28/2003.
Aspect Oriented Security Tim Hollebeek, Ph.D.
SAFE KERNEL EXTENSIONS WITHOUT RUN-TIME CHECKING George C. Necula Peter Lee Carnegie Mellon U.
Static Techniques for V&V. Hierarchy of V&V techniques Static Analysis V&V Dynamic Techniques Model Checking Simulation Symbolic Execution Testing Informal.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CSE 60641: Operating Systems George C. Necula and Peter Lee, Safe Kernel Extensions Without Run-Time Checking, OSDI ‘96 –SIGOPS Hall of fame citation:
Lectures 2 & 3: Software Process Models Neelam Gupta.
FUNCTIONAL PROGRAMING AT WORK - HASKELL AND DOMAIN SPECIFIC LANGUAGES Dr. John Peterson Western State Colorado University.
CHESS Methodology and Tool Federico Ciccozzi MBEES Meeting Sälen, January 2011 January 2011.
Thoughts on Programming with Proof Assistants Adam Chlipala University of California, Berkeley PLPV Workshop.
Genie Pal A Versatile Intelligent Assistant To Help Both Work And Personal life.
Definition CASE tools are software systems that are intended to provide automated support for routine activities in the software process such as editing.
Types for Programs and Proofs
Sparkle a functional theorem prover
(One-Path) Reachability Logic
Jared Davis The University of Texas at Austin April 6, 2006
Jared Davis CyberTrust Meeting March 1, 2006
An overview of Coq Xinyu Feng USTC.
Introduction To software engineering
Software Verification and Validation
Software Verification and Validation
Department of Computer Science Abdul Wali Khan University Mardan
Software Verification and Validation
Follow-up of MoU objectives
Drew Wyborski Programming Languages
An overview of Coq.
Presentation transcript:

VeriML DARPA CRASH Project Progress Report Antonis Stampoulis October 5 th, 2012 A language-based, dependently-typed, user-extensible approach to proof assistants

Software certification —CompCert [Leroy et al] —seL4 microkernel [Klein et al] Mathematical theorems —Four-color theorem [Gonthier et al] —Feit-Thompson (Odd Order Theorem) [same team] Proof – to – code size ratio: ~ 8 lines – to p.y. of proof for 2 p.y. of development Started May 2006 Finished last week! ~1.3 weeks per page Large formal proofs are possible and useful! require huge manual effort

—can use domain- specific automation —yet automation reconstructs full details —validity fixed —proofs and automation hard to write Informal proofs —use “trivially”, “similarly”, omit unnecessary details —require domain-specific intuition —validity extensible calculus reals basic reasoning Formal proofs

VeriML -easy to develop new automation and extend background reasoning -extensible notion of formal proof (no trivial details!) -novel programming language -focus on writing automation procedures -more generally: programs that construct proofs -serves as a novel proof assistant Rich types Rich programming model First-class support for logic Safety Expressiveness Convenience

Comparison of Architecture “ proof by juxtaposition ” Traditional proof assistants ML type- checking Tactic definition Tactic invocation Proof object Proof checking ? HOL4, HOL-Light Isabelle Coq NuPRL PVS, ACL2 don’t do that! (unsafe) Proof scripts invoke tactics Tactics contain proof scripts Every invocation can fail! Proof scripts invoke tactics Tactics contain proof scripts Every invocation can fail!

Comparison of Architecture Traditional proof assistants VeriML ML type- checking Tactic definition Tactic invocation Proof object Proof checking ?

Comparison of Architecture “ proof by juxtaposition ” Traditional proof assistants VeriML ML type- checking Tactic definition Tactic invocation Proof object Proof checking ? VeriML type checking Proof checking Tactic definition Tactic invocation Proof object OK! -Reduce possibility of error -Leverage information to help user while writing tactic -Extend traditional interactivity model -Don’t need to produce proof objects

Normal type-checking Stage one evaluation without producing proof objects Stage one evaluation without producing proof objects Normal evaluation Normal evaluation Background reasoning in VeriML VeriML proofs, tactics, etc. VeriML Type- & Proof- checking -smaller proof checker -can still generate full proof objects -soundness guaranteed -extensions to background reasoning are cheap -extensible static checking for proofs and tactics as well! arithmetic simplification equational reasoning normal conversion base VeriML typing

Recent progress -main milestone: wrote my dissertation on VeriML and defended it! (400 pages and counting…) -implementation milestones: VeriML 0.5 -completed new compilation-based backend for VeriML -proper staging support -separate compilation of VeriML modules -cleaned up various features in the implementation and the examples -technical milestones -cleaned-up presentation of metatheory -initial investigation of user-defined representations for VeriML pattern matching

VeriML proofs, tactics, etc. VeriML Type- & Proof- checking Recent progress: Compilation VeriML proofs, tactics, etc. VeriML Type- & Proof- checking VeriML to OCaml Residual program ~6mins ~15 sec

Example: Arithmetic simplification

Further extensions to type inference Figure out user-defined representations for pattern matching Pattern matching for inductive definitions SMT-like cooperating decision procedures Future work