Extreme predicates beyond continuity K. Rustan M. Leino Principal Researcher Research in Software Engineering (RiSE), Microsoft Research, Redmond Visiting.

Slides:



Advertisements
Similar presentations
A SAT characterization of boolean-program correctness K. Rustan M. Leino Microsoft Research, Redmond, WA 14 Nov 2002 IFIP WG 2.4 meeting, Schloβ Dagstuhl,
Advertisements

Hoare-style program verification K. Rustan M. Leino Guest lecturer Rob DeLines CSE 503, Software Engineering University of Washington 26 Apr 2004.
Technologies for finding errors in object-oriented software K. Rustan M. Leino Microsoft Research, Redmond, WA Lecture 2 Summer school on Formal Models.
Challenges in increasing tool support for programming K. Rustan M. Leino Microsoft Research, Redmond, WA, USA 23 Sep 2004 ICTAC Guiyang, Guizhou, PRC joint.
Formal techniques for getting software right: some old ideas and some new tools Applied Formal Methods Research Group David Lightfoot:
Program synthesis with Jennisys K. Rustan M. Leino Research in Software Engineering (RiSE), Microsoft Research, Redmond Aleksandar Milicevic MIT IFIP Working.
An Abstract Interpretation Framework for Refactoring P. Cousot, NYU, ENS, CNRS, INRIA R. Cousot, ENS, CNRS, INRIA F. Logozzo, M. Barnett, Microsoft Research.
School of Computing Clemson University Mathematical Reasoning  Goal: To prove correctness  Method: Use a reasoning table  Prove correctness on all valid.
Functional Verification III Prepared by Stephen M. Thebaut, Ph.D. University of Florida Software Testing and Verification Lecture Notes 23.
Formal Semantics of Programming Languages 虞慧群 Topic 5: Axiomatic Semantics.
1 Translation Validation: From Simulink to C Michael RyabtsevOfer Strichman Technion, Haifa, Israel Acknowledgement: sponsored by a grant from General.
Using and Building an Automatic Program Verifier K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Lecture 2 Marktoberdorf.
CS 355 – Programming Languages
Using and Building an Automatic Program Verifier K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Lecture 2 LASER.
K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond, WA part 0 International Summer School Marktoberdorf Marktoberdorf,
Induction Sections 41. and 4.2 of Rosen Fall 2008 CSCE 235 Introduction to Discrete Structures Course web-page: cse.unl.edu/~cse235 Questions:
Contracts, tools, verification K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Keynote, ASWEC 2010; Auckland, NZ;
Using and Building an Automatic Program Verifier K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Lecture 1 LASER.
K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond, WA part 0 Summer School on Logic and Theorem-Proving in Programming.
Using and Building an Automatic Program Verifier K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Lecture 0 LASER.
C SC 520 Principles of Programming Languages 1 C SC 520: Principles of Programming Languages Peter J. Downey Department of Computer Science Spring 2006.
Towards a HOL Framework for the Deductive Analysis of Hybrid Control Systems ADPM’2000 Norbert Völker University of Essex, England.
Using and Building an Automatic Program Verifier K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Lecture 4 LASER.
Formal Aspects of Computer Science – Week 12 RECAP Lee McCluskey, room 2/07
Describing Syntax and Semantics
Using and Building an Automatic Program Verifier K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Lecture 3 LASER.
1 Homework #1 Solutions 2 #1. True or False a)Given a language (set of strings) L, the question: “Is string w  L” is a decision problem: T F b)  =
K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Caltech Pasadena, CA 12 November 2009.
22C:19 Discrete Math Induction and Recursion Fall 2011 Sukumar Ghosh.
K. Rustan M. Leino RiSE, Microsoft Research, Redmond joint work with Peter Müller and Jan Smans Lecture 0 1 September 2009 FOSAD 2009, Bertinoro, Italy.
Refinement, reusable libraries, instantiable classes K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Joint work.
CSci 2011 Discrete Mathematics Lecture 3 CSci 2011.
Coinduction in a language and verifier K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond IFIP WG 2.3 meeting Seattle,
Database Management Systems, R. Ramakrishnan1 Relational Calculus Chapter 4.
CS 611: Lecture 6 Rule Induction September 8, 1999 Cornell University Computer Science Department Andrew Myers.
Program Verification K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond University of Washington CSE P January.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Recursive Solutions Recursion is an extremely powerful problem-solving.
1 Module 14 Regular languages –Inductive definitions –Regular expressions syntax semantics.
Lecture 7 All-Pairs Shortest Paths. All-Pairs Shortest Paths.
K. Rustan M. Leino RiSE, Microsoft Research 17 July 2009 JML seminar Dagstuhl, Germany.
Using and Building an Automatic Program Verifier K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Lecture 0 Marktoberdorf.
3.2 Semantics. 2 Semantics Attribute Grammars The Meanings of Programs: Semantics Sebesta Chapter 3.
8.4 Use Scientific Notation Algebra. Scientific Notation Numbers such as 1,000,000, 153,000 and are written in standard form. Another way to write.
October 3, 2001CSE 373, Autumn Mathematical Background Exponents X A X B = X A+B X A / X B = X A-B (X A ) B = X AB X N +X N = 2X N 2 N +2 N = 2 N+1.
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
Application: Algorithms Lecture 19 Section 3.8 Tue, Feb 20, 2007.
Course: Software Engineering – Design I IntroductionSlide Number 1 What is a specification Description of a (computer) system, which:  is precise;  defines.
Which list of numbers is ordered from least to greatest? 10 –3, , 1, 10, , 1, 10, 10 2, 10 – , 10 –3, 1, 10, , 10 –3,
Carnegie Mellon Vadim Zaliva, Franz Franchetti Carnegie Mellon University Department of Electrical and Computer Engineering Funded by the DARPA I2O HACMS.
1 CSE1301 Computer Programming: Where are we now in the CSE1301 syllabus?
1.5.3 Walkthrough #4 bouncing_ball.py wrapping_ball.py
The Church-Turing Thesis Chapter Are We Done? FSM  PDA  Turing machine Is this the end of the line? There are still problems we cannot solve:
Using and Building an Automatic Program Verifier
Formal Language & Automata Theory
Revisiting Predicate Logic LN chapters 3,4
Formal Methods in Software Engineering 1
Automating Induction for Solving Horn Clauses
CSE 311 Foundations of Computing I
Abstract Interpretation
Statements Containing Multiple Quantifiers
Functional Verification I
CSE 373 Data Structures and Algorithms
Discrete Mathematics Lecture 4 & 5: Predicate and Quantifier
Discrete Mathematics Lecture 4 & 5: Predicate and Quantifier
Predicates and Quantifiers
Application: Algorithms
Abstract Interpretation
Rich Model Toolkit – An Infrastructure for Reliable Computer Systems
Relational Calculus Chapter 4, Part B
Data Structures & Programming
Presentation transcript:

Extreme predicates beyond continuity K. Rustan M. Leino Principal Researcher Research in Software Engineering (RiSE), Microsoft Research, Redmond Visiting Professor Department of Computing, Imperial College London IFIP WG 2.3 meeting 57, Pasadena, CA, 11 January 2016

Motivation Reasoning about predicates defined as least/greatest fixpoints Language features that make definitions and proof look natural Translation to automated decisions procedure What I want: Syntactic detection of continuity Features that encapsulate “the workaround”

Even where x ranges over integers

Multiple solutions Least solution in P Greatest solution in P

Names and notational conventions LEAST SOLUTION GREATEST SOLUTION

Extreme predicates in Dafny LEAST SOLUTION GREATEST SOLUTION inductive predicate P(x: int) { x == 0 || P(x-2) } copredicate P(x: int) { x == 0 || P(x-2) }

Semantics of INC

Proofs What to proveHow to prove it

Proofs What to proveHow to prove it

Proofs What to proveHow to prove it via iterates

Proofs What to proveHow to prove it inductive lemma colemma

Iterates LEAST SOLUTION GREATEST SOLUTION

Example: Iterates of least solution of Even

Show and tell Language support: Even, INC

Enforcing continuity Syntactic restrictions: Inductive predicate is disallowed if recursive call sits inside a  Co-inductive predicate is disallowed if recursive call sits inside a  Example: copredicate P(x: int) { P(x+1) || exists m :: 0 <= m && P(m) }

Continuity is needed if 0 ≤ n if n < 0

Problem with continuity: Co-inductive big-step semantics

Show and tell Continuity workaround: move the quantification out

Summary Is continuity the same condition as “no recursive calls inside unbounded  /  ”? When is the distribution workaround for continuity safe? What language support would one want for it?