Abstract Object Creation in Dynamic Logic
|
|
- Joella Lucas
- 6 years ago
- Views:
Transcription
1 to be or not to be created Wolfgang Ahrendt 1 Frank S. de Boer 2 Immo Grabe 3 1 Chalmers University, Göteborg, Sweden 2 CWI, Amsterdam, The Netherlands 3 Christian-Albrechts-University Kiel, Germany KeY Symposium Speyer, 2009
2 Part I Motivation and Outline
3 Modeling Object Creation in Program Logics object-oriented programming languages (like Java): high-level way of creating objects abstract away from memory allocation programmer has no access to non-created (pre-)objects
4 Modeling Object Creation in Program Logics object-oriented programming languages (like Java): high-level way of creating objects abstract away from memory allocation programmer has no access to non-created (pre-)objects this abstraction not matched by program logics (incl. KeY): non-created objects can be referred to in the logic additional artifacts (ghost fields) to distinguish created objects consistency conditions on reachable states
5 Modeling Object Creation in Program Logics object-oriented programming languages (like Java): high-level way of creating objects abstract away from memory allocation programmer has no access to non-created (pre-)objects this abstraction not matched by program logics (incl. KeY): non-created objects can be referred to in the logic additional artifacts (ghost fields) to distinguish created objects consistency conditions on reachable states because of mismatch: loose full abstraction property additional complexity in formulas and proofs symbolic state bloated by createdness information
6 Approach Taken a logic that can only talk about created objects
7 Approach Taken a logic that can only talk about created objects problem: calculus cannot substitute new objects into pre-conditions
8 Approach Taken a logic that can only talk about created objects problem: calculus cannot substitute new objects into pre-conditions solution: non-standard substitution using meta-knowledge about newness
9 Approach Taken a logic that can only talk about created objects problem: calculus cannot substitute new objects into pre-conditions solution: non-standard substitution using meta-knowledge about newness carry over to symbolic execution paradigm
10 In the Following simple object-oriented while-language dynamic logic for that language abstract object creation semantics backwards reasoning calculus (wp-style) symbolic execution with abstract object creation
11 Relevance we examine object creation in simplified setting but: keep simplifications orthogonal to object creation issue
12 Relevance we examine object creation in simplified setting but: keep simplifications orthogonal to object creation issue applicable to full languages featuring abstract object creation (including Java)
13 Part II Syntax and Semantics
14 A Simple Object-Oriented While Language only one class: Object 3 types: Object, Integer, Boolean no methods variables (e.g. u, v, w) distinct from fields (e.g. x, y, z)
15 A Simple Object-Oriented While Language only one class: Object 3 types: Object, Integer, Boolean no methods variables (e.g. u, v, w) distinct from fields (e.g. x, y, z) statements: s ::= while e do s od if e 1 then s 2 else s 3 fi s 1 ; s 2 u := e e 1.x := e 2 u := new
16 A Simple Object-Oriented While Language only one class: Object 3 types: Object, Integer, Boolean no methods variables (e.g. u, v, w) distinct from fields (e.g. x, y, z) statements: s ::= while e do s od if e 1 then s 2 else s 3 fi s 1 ; s 2 u := e e 1.x := e 2 u := new expressions: e ::= u e.x null e 1 = e 2 (e 1? e 2 : e 3 ) op(e 1,..., e n )
17 A Simple Object-Oriented While Language only one class: Object 3 types: Object, Integer, Boolean no methods variables (e.g. u, v, w) distinct from fields (e.g. x, y, z) statements: s ::= while e do s od if e 1 then s 2 else s 3 fi s 1 ; s 2 u := e e 1.x := e 2 u := new expressions: e ::= u e.x null e 1 = e 2 (e 1? e 2 : e 3 ) op(e 1,..., e n ) to separate issues object creation and aliasing: no native statement e.x := new
18 A Simple Object-Oriented While Language only one class: Object 3 types: Object, Integer, Boolean no methods variables (e.g. u, v, w) distinct from fields (e.g. x, y, z) statements: s ::= while e do s od if e 1 then s 2 else s 3 fi s 1 ; s 2 u := e e 1.x := e 2 u := new expressions: e ::= u e.x null e 1 = e 2 (e 1? e 2 : e 3 ) op(e 1,..., e n ) to separate issues object creation and aliasing: no native statement e.x := new can be simulated by u := new; e.x := u (u fresh)
19 The Logic expressions may also contain logical variables (e.g., l) boolean expressions are formulas true, false are formulas logical connectives,,, quantified formulas l.φ, l.φ modal formulas (base cases): s φ, [s]φ, {U}φ, with s a statement and U (singular) update of form: u := e e 1.x := e 2 u := new
20 Semantics informal in this talk [[u := new]] σ : create new object and assign it to u
21 Semantics informal in this talk [[u := new]] σ : create new object and assign it to u terminology: in a state σ: current references = created objects plus null
22 Semantics informal in this talk [[u := new]] σ : create new object and assign it to u terminology: in a state σ: current references = created objects plus null [[e]] σ current references
23 Semantics informal in this talk [[u := new]] σ : create new object and assign it to u terminology: in a state σ: current references = created objects plus null [[e]] σ current references [[ l.φ]] σ : φ holds for all current references l
24 Semantics informal in this talk [[u := new]] σ : create new object and assign it to u terminology: in a state σ: current references = created objects plus null [[e]] σ current references [[ l.φ]] σ : φ holds for all current references l [[ l.φ]] σ : φ holds for some current reference l e, l of type Object
25 Semantics informal in this talk [[u := new]] σ : create new object and assign it to u terminology: in a state σ: current references = created objects plus null [[e]] σ current references [[ l.φ]] σ : φ holds for all current references l [[ l.φ]] σ : φ holds for some current reference l e, l of type Object examples: l. u := new (u = l)
26 Semantics informal in this talk [[u := new]] σ : create new object and assign it to u terminology: in a state σ: current references = created objects plus null [[e]] σ current references [[ l.φ]] σ : φ holds for all current references l [[ l.φ]] σ : φ holds for some current reference l e, l of type Object examples: l. u := new (u = l) true in all states
27 Semantics informal in this talk [[u := new]] σ : create new object and assign it to u terminology: in a state σ: current references = created objects plus null [[e]] σ current references [[ l.φ]] σ : φ holds for all current references l [[ l.φ]] σ : φ holds for some current reference l e, l of type Object examples: l. u := new (u = l) u := new l. (u = l) true in all states
28 Semantics informal in this talk [[u := new]] σ : create new object and assign it to u terminology: in a state σ: current references = created objects plus null [[e]] σ current references [[ l.φ]] σ : φ holds for all current references l [[ l.φ]] σ : φ holds for some current reference l e, l of type Object examples: l. u := new (u = l) true in all states u := new l. (u = l) false in all states
29 Part III Calculus
30 Sequent Calculus rules triggered by top-level formulas only: propositional rules, first-order rules, induction all these are standard!
31 Sequent Calculus rules triggered by top-level formulas only: propositional rules, first-order rules, induction all these are standard! in particular: quantifier rules are standard!
32 Sequent Calculus rules triggered by top-level formulas only: propositional rules, first-order rules, induction all these are standard! in particular: quantifier rules are standard! rules triggered also by sub-formulas: program rules, update application rule notation used: φ φ meaning: premis obtained from conclusion by replacing any φ with φ
33 Sequent Calculus rules triggered by top-level formulas only: propositional rules, first-order rules, induction all these are standard! in particular: quantifier rules are standard! rules triggered also by sub-formulas: program rules, update application rule notation used: φ φ meaning: premis obtained from conclusion by replacing any φ with φ ( \find(φ) \replacewith(φ ) )
34 Dynamic Logic Rules split [s 1 ] [s 2 ] φ [s 1 ; s 2 ] φ if (e [s 1 ] φ) ( e [s 2 ] φ) [if e then s 1 else s 2 fi] φ unwind [if e then s; while e do s od else skip fi] φ [while e do s od] φ assignvar {u := e}φ [u := e] φ assignfield {e 1.x := e 2 }φ [e 1.x := e 2 ] φ createobj {u := new}φ [u := new] φ
35 Update Application Rule for certain formulas {U}φ, the U can be applied (resovled)
36 Update Application Rule for certain formulas {U}φ, the U can be applied (resovled) φ applyupd {U}φ if {U}φ φ
37 Update Application Rule for certain formulas {U}φ, the U can be applied (resovled) φ applyupd {U}φ if {U}φ φ now define relation, resolving updates in a single step following slides: big-step definition of
38 Part IV Update Application
39 Update Application: Standard Cases I {U}φ φ {U}φ 1 {U}φ 2 φ {U}( φ) φ {U}(φ 1 φ 2 ) φ with {,, } op({u}e 1,..., {U}e n ) e ({U}e 1? {U}e 2 : {U}e 3 ) e {U}op(e 1,..., e n ) e {U}(e 1? e 2 : e 3 ) e {U}α α with α {true, false, null, l} this slide: U matches all updates
40 Update Application: Standard Cases II {u := e}u e {u := α}v v u v α e new ({u := e 1 }e 2 ).x e {u := e 1 }(e 2.x) e ( ({e.x := e 1 }e 2 ) = e? e 1 : ({e.x := e 1 }e 2 ).x ) e {e.x := e 1 }(e 2.x) e ({e.x := e 1 }e 2 ).y e {e.x := e 1 }(e 2.y) e x y
41 Update Application: Restricted Standard Cases The standard rules for quantifiers and equality are restricted to non-creating updates U nc of the forms u := e, e 1.x := e 2. ( u := new excluded from these rules.) l. {U nc }φ φ {U nc }( l. φ) φ l. {U nc }φ φ {U nc }( l. φ) φ {U nc }e 1 = {U nc }e 2 e {U nc }(e 1 = e 2 ) e
42 Object Creating Update Application: the Issue recall: {U}φ is the (explicit) weakest precondition wp(u, φ) applying U to φ (via ) computes weakest precondition
43 Object Creating Update Application: the Issue recall: {U}φ is the (explicit) weakest precondition wp(u, φ) applying U to φ (via ) computes weakest precondition problem: result of {u := new}φ, i.e., wp({u := new}, φ), cannot talk about new object because it does not exist in pre-state in particular: {u := new}u?
44 Object Creating Update Application: the Issue recall: {U}φ is the (explicit) weakest precondition wp(u, φ) applying U to φ (via ) computes weakest precondition problem: result of {u := new}φ, i.e., wp({u := new}, φ), cannot talk about new object because it does not exist in pre-state in particular: {u := new}u? basic approach: totally avoid {u := new}u
45 Object Creating Update Application: the Issue recall: {U}φ is the (explicit) weakest precondition wp(u, φ) applying U to φ (via ) computes weakest precondition problem: result of {u := new}φ, i.e., wp({u := new}, φ), cannot talk about new object because it does not exist in pre-state in particular: {u := new}u? basic approach: totally avoid {u := new}u observation: the only operations on objects are de-referencing fields test for equality
46 Object Creating Update Application: the Issue recall: {U}φ is the (explicit) weakest precondition wp(u, φ) applying U to φ (via ) computes weakest precondition problem: result of {u := new}φ, i.e., wp({u := new}, φ), cannot talk about new object because it does not exist in pre-state in particular: {u := new}u? basic approach: totally avoid {u := new}u observation: the only operations on objects are de-referencing fields test for equality quantification
47 Object Creating Update Application: the Issue recall: {U}φ is the (explicit) weakest precondition wp(u, φ) applying U to φ (via ) computes weakest precondition problem: result of {u := new}φ, i.e., wp({u := new}, φ), cannot talk about new object because it does not exist in pre-state in particular: {u := new}u? basic approach: totally avoid {u := new}u observation: the only operations on objects are de-referencing fields test for equality quantification in all cases, wp computation can employ meta knowledge
48 Object Creating Update Application: Field Access ({u := new}e).x e {u := new}(e.x) e e neither u nor conditional {u := new}u.x init T (x) init T (x) null 0 false ({u := new}b? {u := new}(e 1.x) : {u := new}(e 2.x)) e {u := new}((b? e 1 : e 2 ).x) e
49 Object Creating Update Application: Equality ({u := new}e 1 ) = ({u := new}e 2 ) e {u := new}(e 1 = e 2 ) e e 1, e 2 neither u nor conditional {u := new}(u = e) false e neither u nor conditional {u := new}(u = u) true ({u := new}b? {u := new}(e 1 = e 3 ) : {u := new}(e 2 = e 3 )) e {u := new}((b? e 1 : e 2 ) = e 3 ) e
50 Object Creating Update Application: Quantifiers ({u := new}φ[l/u]) l.({u := new}φ) φ {u := new} l.φ φ
51 Object Creating Update Application: Quantifiers ({u := new}φ[l/u]) l.({u := new}φ) φ {u := new} l.φ φ ({u := new}φ[l/u]) l.({u := new}φ) φ {u := new} l.φ φ
52 Example Proof 1 closefalse notright false = applyupd = false = {u := new} (u = c) assignvar = u := new (u = c) allright = l.( u := new (u = l))
53 Example Proof 2 closetrue notleft l. false = true (true), l. false = andleft (true) l. false = applyupd {u := new} l. (u = l) = assignvar u := new l. (u = l)) = notright = u := new l. (u = l)
54 (applyupd step in Example Proof 2) {u := new}(u = u) true {u := new} (u = u) (true) {u := new}(u = l) false {u := new} (u = l) false l.{u := new} (u = l) l. false {u := new} (u = u) l.{u := new} (u = l) (true) l. false {u := new} l. (u = l) (true) l. false
55 Part V Abstract Object Creation in Symbolic Execution
56 KeY-style Symbolic Execution up to here, backwards reasoning only KeYapproach: forward symbolic execution using update parallelisation
57 KeY-style Symbolic Execution up to here, backwards reasoning only KeYapproach: forward symbolic execution using update parallelisation * close applyupd u < v = u < v u < v = {w := u u := v v := u}v < u mergeupd u < v = {w := u u := v}{v := w}v < u assignvar u < v = {w := u u := v} v := w v < u mergeupd,assignvar u < v = {w := u}{u := v} v := w v < u split,assignvar u < v = {w := u} u := v; v := w v < u split,assignvar u < v = w := u; u := v; v := w v < u
58 Problem: Parallelising Object Creating Updates no natural way of merging {u := new} with other updates consider the two formulas (one true, one false): u := new; v := u (u = v) u := new; v := new (u = v) symbolic execution generates: {u := new}{v := u}(u = v) {u := new}{v := new}(u = v) merging updates, both result in: {u := new v := new}(u = v) cannot be true and false
59 Solution not merge object creation with other updates
60 Solution not merge object creation with other updates split {u := new} into creation and (mergable) assignment to u
61 Solution not merge object creation with other updates split {u := new} into creation and (mergable) assignment to u new object creation rule: createobj {a := new}{u := a}φ u := new φ a a fresh program variable
62 Solution not merge object creation with other updates split {u := new} into creation and (mergable) assignment to u new object creation rule: createobj {a := new}{u := a}φ u := new φ a a fresh program variable facilitate merging of all non-creating updates by shifting creation shiftcreation {u := new}{u nc}φ {U nc }{u := new}φ u not appearing in (non-creating) U nc
63 Symbolic Execuion Proof notright, closefalse * applyupd = false = {a := new} (v = a) applyupd = {a := new}{u := v v := a w := u} (w = v) assignvar,mergeupd = {a := new}{u := v v := a} w := u (w = v) mergeupd = {a := new}{u := v}{v := a} w := u (w = v) shiftcreation = {u := v}{a := new}{v := a} w := u (w = v) createobj = {u := v} v := new w := u (w = v) split,assignvar,split = u := v; v := new; w := u (w = v)
64 Part VI Object Creation vs. Object Activation
65 Abstract Object Creation Proof reconsider proof from above closefalse notright false = applyupd = false = {u := new} (u = c) assignvar = u := new (u = c) allright = l.( u := new (u = l))
66 Object Activation Proof close c.cre, obj(next)=c = c.cre equality c.cre, obj(next)=c = obj(next).cre notleft obj(next).cre, c.cre, obj(next) = c = ( 2 rules) (obj(next).cre next < next), c.cre, obj(next)=c = allleft n.(obj(n).cre n < next), c.cre, obj(next)=c = inreachablestate c.cre, obj(next)=c = notright c.cre = (obj(next) = c) applyupd c.cre = {u :=obj(next); u.cre:=true; next:=next+1} (u =c) createobj c.cre = u :=new (u =c) impright = c.cre u :=new (u =c) allright = l. (l.cre u :=new (u =l))
67 Part VII Reflections
68 Reflections abstraction level of logic matches programming language changes to standard treatment very local additional update type, not mergable with others, but shiftable to the front update application differs only in few cases formulas and proofs are simpler symbolic state representation: not diluted by createdness bookkeeping separates out 1. newly created objects (shifted forward) 2. symbolic value of fields and variables
Formal Systems II: Applications
Formal Systems II: Applications Functional Verification of Java Programs: Java Dynamic Logic Bernhard Beckert Mattias Ulbrich SS 2017 KIT INSTITUT FÜR THEORETISCHE INFORMATIK KIT University of the State
More informationFundamentals of Software Engineering
Fundamentals of Software Engineering Reasoning about Programs - Selected Features Ina Schaefer Institute for Software Systems Engineering TU Braunschweig, Germany Slides by Wolfgang Ahrendt, Richard Bubel,
More informationFundamentals of Software Engineering
Fundamentals of Software Engineering Reasoning about Programs with Dynamic Logic - Part II Ina Schaefer Institute for Software Systems Engineering TU Braunschweig, Germany Slides by Wolfgang Ahrendt, Richard
More informationTRIAL EXAM C Software Engineering using Formal Methods TDA293 / DIT270
TRIAL EXAM C Software Engineering using Formal Methods TDA293 / DIT270 also serving as additional training material for the course Formal Methods for Software Development, TDA294/DIT271 1 Exam/Tenta SEFM
More informationIntroduction to Axiomatic Semantics
Introduction to Axiomatic Semantics Meeting 10, CSCI 5535, Spring 2009 Announcements Homework 3 due tonight Homework 2 is graded 13 (mean), 14 (median), out of 21 total, but Graduate class: final project
More informationFundamentals of Software Engineering
Fundamentals of Software Engineering Reasoning about Programs with Dynamic Logic - Part II Ina Schaefer Institute for Software Systems Engineering TU Braunschweig, Germany Slides by Wolfgang Ahrendt, Richard
More informationHoare Logic: Proving Programs Correct
Hoare Logic: Proving Programs Correct 17-654/17-765 Analysis of Software Artifacts Jonathan Aldrich Reading: C.A.R. Hoare, An Axiomatic Basis for Computer Programming Some presentation ideas from a lecture
More informationSoftware Engineering using Formal Methods
Software Engineering using Formal Methods Reasoning about Programs with Dynamic Logic Wolfgang Ahrendt & Richard Bubel & Wojciech Mostowski 5 October 2011 SEFM: Java DL /GU 111005 1 / 45 Dynamic Logic
More informationNote that in this definition, n + m denotes the syntactic expression with three symbols n, +, and m, not to the number that is the sum of n and m.
CS 6110 S18 Lecture 8 Structural Operational Semantics and IMP Today we introduce a very simple imperative language, IMP, along with two systems of rules for evaluation called small-step and big-step semantics.
More informationFundamentals of Software Engineering
Fundamentals of Software Engineering Reasoning about Programs with Dynamic Logic - Part I Ina Schaefer Institute for Software Systems Engineering TU Braunschweig, Germany Slides by Wolfgang Ahrendt, Richard
More informationPart II. Hoare Logic and Program Verification. Why specify programs? Specification and Verification. Code Verification. Why verify programs?
Part II. Hoare Logic and Program Verification Part II. Hoare Logic and Program Verification Dilian Gurov Props: Models: Specs: Method: Tool: safety of data manipulation source code logic assertions Hoare
More informationDenotational Semantics of a Simple Imperative Language Using Intensional Logic
Denotational Semantics of a Simple Imperative Language Using Intensional Logic Marc Bender bendermm@mcmaster.ca CAS 706 - Programming Languages Instructor: Dr. Jacques Carette Dept. of Computing and Software
More informationCOMBINING PARTIAL EVALUATION AND SYMBOLIC EXECUTION
COMBINING PARTIAL EVALUATION AND SYMBOLIC EXECUTION Reiner Hähnle & Richard Bubel Chalmers University Symposium 09 Speyer CONTROL CIRCUIT y = 80; threshold = 100; if (y > threshold) { decrease = true;
More informationReminder of the last lecture. Aliasing Issues: Call by reference, Pointer programs. Introducing Aliasing Issues. Home Work from previous lecture
Reminder of the last lecture Aliasing Issues: Call by reference, Pointer programs Claude Marché Cours MPRI 2-36-1 Preuve de Programme 18 janvier 2017 Additional features of the specification language Abstract
More informationAn Annotated Language
Hoare Logic An Annotated Language State and Semantics Expressions are interpreted as functions from states to the corresponding domain of interpretation Operators have the obvious interpretation Free of
More informationWeak Arithmetic Completeness of Object-Oriented First-Order Assertion Networks
Weak Arithmetic Completeness of Object-Oriented First-Order Assertion Networks Stijn de Gouw 2,3, Frank de Boer 2,3, Wolfgang Ahrendt 1, and Richard Bubel 4 1 Chalmers University, Göteborg, Sweden 2 CWI,
More informationCMPS 277 Principles of Database Systems. https://courses.soe.ucsc.edu/courses/cmps277/fall11/01. Lecture #3
CMPS 277 Principles of Database Systems https://courses.soe.ucsc.edu/courses/cmps277/fall11/01 Lecture #3 1 Summary of Lectures #1 and #2 Codd s Relational Model based on the concept of a relation (table)
More informationProgramming Languages Third Edition
Programming Languages Third Edition Chapter 12 Formal Semantics Objectives Become familiar with a sample small language for the purpose of semantic specification Understand operational semantics Understand
More informationInductive Proof Outlines for Multithreaded Java with Exceptions
Inductive Proof Outlines for Multithreaded Java with Exceptions Extended Abstract 30. April, 2004 Erika Ábrahám1, Frank S. de Boer 2, Willem-Paul de Roever 1, and Martin Steffen 1 1 Christian-Albrechts-University
More informationModal Logic: Implications for Design of a Language for Distributed Computation p.1/53
Modal Logic: Implications for Design of a Language for Distributed Computation Jonathan Moody (with Frank Pfenning) Department of Computer Science Carnegie Mellon University Modal Logic: Implications for
More informationMathematically Rigorous Software Design Review of mathematical prerequisites
Mathematically Rigorous Software Design 2002 September 27 Part 1: Boolean algebra 1. Define the Boolean functions and, or, not, implication ( ), equivalence ( ) and equals (=) by truth tables. 2. In an
More informationIntroduction to dependent types in Coq
October 24, 2008 basic use of the Coq system In Coq, you can play with simple values and functions. The basic command is called Check, to verify if an expression is well-formed and learn what is its type.
More informationTyped First-order Logic
22c181: Formal Methods in Software Engineering The University of Iowa Spring 2008 Typed First-order Logic Copyright 2007-8 Reiner Hähnle and Cesare Tinelli. Notes originally developed by Reiner Hähnle
More informationAn IPS for TQBF Intro to Approximability
An IPS for TQBF Intro to Approximability Outline Proof that TQBF (the language of true (valid) quantified Boolean formulas) is in the class IP Introduction to approximation algorithms for NP optimization
More informationDynamic Logic with Non-rigid Functions
Dynamic Logic with Non-rigid Functions A Basis for Object-oriented Program Verification Bernhard Beckert 1 André Platzer 2 1 University of Koblenz-Landau, Department of Computer Science beckert@uni-koblenz.de
More informationFormal Specification and Verification
Formal Specification and Verification Proof Obligations Bernhard Beckert Based on a lecture by Wolfgang Ahrendt and Reiner Hähnle at Chalmers University, Göteborg Formal Specification and Verification:
More informationShared Variables and Interference
Solved Shared Variables and Interference CS 536: Science of Programming, Fall 2018 A. Why Parallel programs can coordinate their work using shared variables, but it s important for threads to not interfere
More informationHOL DEFINING HIGHER ORDER LOGIC LAST TIME ON HOL CONTENT. Slide 3. Slide 1. Slide 4. Slide 2 WHAT IS HIGHER ORDER LOGIC? 2 LAST TIME ON HOL 1
LAST TIME ON HOL Proof rules for propositional and predicate logic Safe and unsafe rules NICTA Advanced Course Forward Proof Slide 1 Theorem Proving Principles, Techniques, Applications Slide 3 The Epsilon
More informationReasoning About Imperative Programs. COS 441 Slides 10
Reasoning About Imperative Programs COS 441 Slides 10 The last few weeks Agenda reasoning about functional programming It s very simple and very uniform: substitution of equal expressions for equal expressions
More informationThis is already grossly inconvenient in present formalisms. Why do we want to make this convenient? GENERAL GOALS
1 THE FORMALIZATION OF MATHEMATICS by Harvey M. Friedman Ohio State University Department of Mathematics friedman@math.ohio-state.edu www.math.ohio-state.edu/~friedman/ May 21, 1997 Can mathematics be
More informationProgramming Languages and Compilers Qualifying Examination. Answer 4 of 6 questions.1
Programming Languages and Compilers Qualifying Examination Monday, September 19, 2016 Answer 4 of 6 questions.1 GENERAL INSTRUCTIONS 1. Answer each question in a separate book. 2. Indicate on the cover
More informationMeta-programming with Names and Necessity p.1
Meta-programming with Names and Necessity Aleksandar Nanevski Carnegie Mellon University ICFP, Pittsburgh, 05 October 2002 Meta-programming with Names and Necessity p.1 Meta-programming Manipulation of
More informationHigher-Order Logic. Specification and Verification with Higher-Order Logic
Higher-Order Logic Specification and Verification with Higher-Order Logic Arnd Poetzsch-Heffter (Slides by Jens Brandt) Software Technology Group Fachbereich Informatik Technische Universität Kaiserslautern
More informationGoals: Define the syntax of a simple imperative language Define a semantics using natural deduction 1
Natural Semantics Goals: Define the syntax of a simple imperative language Define a semantics using natural deduction 1 1 Natural deduction is an instance of first-order logic; that is, it is the formal
More informationA CRASH COURSE IN SEMANTICS
LAST TIME Recdef More induction NICTA Advanced Course Well founded orders Slide 1 Theorem Proving Principles, Techniques, Applications Slide 3 Well founded recursion Calculations: also/finally {P}... {Q}
More informationLecture 5 - Axiomatic semantics
Program Verification March 2014 Lecture 5 - Axiomatic semantics Lecturer: Noam Rinetzky Scribes by: Nir Hemed 1.1 Axiomatic semantics The development of the theory is contributed to Robert Floyd, C.A.R
More informationShared Variables and Interference
Illinois Institute of Technology Lecture 24 Shared Variables and Interference CS 536: Science of Programming, Spring 2018 A. Why Parallel programs can coordinate their work using shared variables, but
More informationFrom OCL to Propositional and First-order Logic: Part I
22c181: Formal Methods in Software Engineering The University of Iowa Spring 2008 From OCL to Propositional and First-order Logic: Part I Copyright 2007-8 Reiner Hähnle and Cesare Tinelli. Notes originally
More informationPropositional Logic. Part I
Part I Propositional Logic 1 Classical Logic and the Material Conditional 1.1 Introduction 1.1.1 The first purpose of this chapter is to review classical propositional logic, including semantic tableaux.
More informationHandling Integer Arithmetic in the Verification of Java Programs
Handling Integer Arithmetic in the Verification of Java Programs Steffen Schlager 1st Swedish-German KeY Workshop Göteborg, Sweden, June 2002 KeY workshop, June 2002 p.1 Introduction UML/OCL specification
More informationProgramming Languages and Compilers Qualifying Examination. Answer 4 of 6 questions.
Programming Languages and Compilers Qualifying Examination Fall 2017 Answer 4 of 6 questions. GENERAL INSTRUCTIONS 1. Answer each question in a separate book. 2. Indicate on the cover of each book the
More informationLecture 4. First order logic is a formal notation for mathematics which involves:
0368.4435 Automatic Software Verification April 14, 2015 Lecture 4 Lecturer: Mooly Sagiv Scribe: Nimrod Busany, Yotam Frank Lesson Plan 1. First order logic recap. 2. The SMT decision problem. 3. Basic
More informationUsing ASF+SDF for the Verification of Annotated Java Programs
Using ASF+SDF for the Verification of Annotated Java Programs Robbert de Haan Faculteit der Natuurwetenschappen, Wiskunde en Informatica Supervisors: Prof. dr. P. Klint and dr. F.S. de Boer Afstudeerrichting:
More informationThe Rule of Constancy(Derived Frame Rule)
The Rule of Constancy(Derived Frame Rule) The following derived rule is used on the next slide The rule of constancy {P } C {Q} {P R} C {Q R} where no variable assigned to in C occurs in R Outline of derivation
More informationSoftware Verification for Java 5
Software Verification for Java 5 KeY Symposium 2007 Mattias Ulbrich June 14, 2007 Content KeY + Java 5 Typesafe Enumeration Datatypes Enhanced For Loops Generic Classes 1. Keep pace with the progress of
More informationFormal Systems and their Applications
Formal Systems and their Applications Dave Clarke (Dave.Clarke@cs.kuleuven.be) Acknowledgment: these slides are based in part on slides from Benjamin Pierce and Frank Piessens 1 Course Overview Introduction
More informationSoftwaretechnik. Program verification. Albert-Ludwigs-Universität Freiburg. June 28, Softwaretechnik June 28, / 24
Softwaretechnik Program verification Albert-Ludwigs-Universität Freiburg June 28, 2012 Softwaretechnik June 28, 2012 1 / 24 Road Map Program verification Automatic program verification Programs with loops
More informationSECTION 1: CODE REASONING + VERSION CONTROL
SECTION 1: CODE + OUTLINE Introductions Code Reasoning Forward Reasoning Backward Reasoning Weaker vs. Stronger statements Version control CSE 331 Summer 2018 slides borrowed and adapted from Alex Mariakis
More informationSECTION 1: CODE REASONING + VERSION CONTROL
SECTION 1: CODE + OUTLINE Introductions Code Reasoning Forward Reasoning Backward Reasoning Weaker vs. Stronger statements Version control CSE 331 Spring 2018 slides borrowed and adapted from Alex Mariakis
More informationIntroduction to Linear-Time Temporal Logic. CSE 814 Introduction to LTL
Introduction to Linear-Time Temporal Logic CSE 814 Introduction to LTL 1 Outline Motivation for TL in general Types of properties to be expressed in TL Structures on which LTL formulas are evaluated Syntax
More informationHoare Logic. COMP2600 Formal Methods for Software Engineering. Rajeev Goré
Hoare Logic COMP2600 Formal Methods for Software Engineering Rajeev Goré Australian National University Semester 2, 2016 (Slides courtesy of Ranald Clouston) COMP 2600 Hoare Logic 1 Australian Capital
More informationCS 125 Section #4 RAMs and TMs 9/27/16
CS 125 Section #4 RAMs and TMs 9/27/16 1 RAM A word-ram consists of: A fixed set of instructions P 1,..., P q. Allowed instructions are: Modular arithmetic and integer division on registers; the standard
More informationLectures 20, 21: Axiomatic Semantics
Lectures 20, 21: Axiomatic Semantics Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Static Analysis Based on slides by George Necula Pratikakis (CSD) Axiomatic Semantics
More informationInduction and Semantics in Dafny
15-414 Lecture 11 1 Instructor: Matt Fredrikson Induction and Semantics in Dafny TA: Ryan Wagner Encoding the syntax of Imp Recall the abstract syntax of Imp: a AExp ::= n Z x Var a 1 + a 2 b BExp ::=
More informationChapter 3. Describing Syntax and Semantics
Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs:
More informationHoare logic. WHILE p, a language with pointers. Introduction. Syntax of WHILE p. Lecture 5: Introduction to separation logic
Introduction Hoare logic Lecture 5: Introduction to separation logic In the previous lectures, we have considered a language, WHILE, where mutability only concerned program variables. Jean Pichon-Pharabod
More informationHarvard School of Engineering and Applied Sciences CS 152: Programming Languages
Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Lecture 19 Tuesday, April 3, 2018 1 Introduction to axiomatic semantics The idea in axiomatic semantics is to give specifications
More informationHoare logic. Lecture 5: Introduction to separation logic. Jean Pichon-Pharabod University of Cambridge. CST Part II 2017/18
Hoare logic Lecture 5: Introduction to separation logic Jean Pichon-Pharabod University of Cambridge CST Part II 2017/18 Introduction In the previous lectures, we have considered a language, WHILE, where
More informationEncryption as an Abstract Datatype:
June 2003 1/18 Outline Encryption as an Abstract Datatype: an extended abstract Dale Miller INRIA/Futurs/Saclay and École polytechnique 1. Security protocols specified using multisets rewriting. 2. Eigenvariables
More informationRuntime Checking for Program Verification Systems
Runtime Checking for Program Verification Systems Karen Zee, Viktor Kuncak, and Martin Rinard MIT CSAIL Tuesday, March 13, 2007 Workshop on Runtime Verification 1 Background Jahob program verification
More informationClassical Planning Problems: Representation Languages
jonas.kvarnstrom@liu.se 2017 Classical Planning Problems: Representation Languages History: 1959 3 The language of Artificial Intelligence was/is logic First-order, second-order, modal, 1959: General
More informationOperational Semantics 1 / 13
Operational Semantics 1 / 13 Outline What is semantics? Operational Semantics What is semantics? 2 / 13 What is the meaning of a program? Recall: aspects of a language syntax: the structure of its programs
More informationFormal Specification and Verification
Formal Specification and Verification Formal Specification, Part III Bernhard Beckert Adaptation of slides by Wolfgang Ahrendt Chalmers University, Gothenburg, Sweden Formal Specification and Verification:
More informationSpring 2018 PhD Qualifying Exam in Languages
Spring 2018 PhD Qualifying Exam in Languages Illinois Institute of Technology Department of Computer Science Monday, January 29, 2018 Instructions This exam is closed book and closed notes. Read each problem
More informationVerifying Java Programs Verifying Java Programs with KeY
Verifying Java Programs Verifying Java Programs with KeY Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.jku.at
More information15-819M: Data, Code, Decisions
15-819M: Data, Code, Decisions 08: First-Order Logic André Platzer aplatzer@cs.cmu.edu Carnegie Mellon University, Pittsburgh, PA André Platzer (CMU) 15-819M/08: Data, Code, Decisions 1 / 40 Outline 1
More informationNegations in Refinement Type Systems
Negations in Refinement Type Systems T. Tsukada (U. Tokyo) 14th March 2016 Shonan, JAPAN This Talk About refinement intersection type systems that refute judgements of other type systems. Background Refinement
More informationHoare logic. A proof system for separation logic. Introduction. Separation logic
Introduction Hoare logic Lecture 6: Examples in separation logic In the previous lecture, we saw how reasoning about pointers in Hoare logic was problematic, which motivated introducing separation logic.
More informationModules, Structs, Hashes, and Operational Semantics
CS 152: Programming Language Paradigms Modules, Structs, Hashes, and Operational Semantics Prof. Tom Austin San José State University Lab Review (in-class) Modules Review Modules from HW 1 (in-class) How
More informationOverview. CS389L: Automated Logical Reasoning. Lecture 6: First Order Logic Syntax and Semantics. Constants in First-Order Logic.
Overview CS389L: Automated Logical Reasoning Lecture 6: First Order Logic Syntax and Semantics Işıl Dillig So far: Automated reasoning in propositional logic. Propositional logic is simple and easy to
More informationOverview. Why Pointers?
Overview CS345H: Programming Languages Lecture 16: Imperative Languages II Thomas Dillig Last time, we have seen how we can give meaning to a simple imperative Specifically, we wrote operational semantics
More informationFormal specification of semantics of UML 2.0 activity diagrams by using Graph Transformation Systems
Formal specification of semantics of UML 2.0 activity diagrams by using Graph Transformation Systems Somayeh Azizi 1, Vahid Panahi 2 Computer science department, Sama Technical and vocational, Training
More informationaxiomatic semantics involving logical rules for deriving relations between preconditions and postconditions.
CS 6110 S18 Lecture 18 Denotational Semantics 1 What is Denotational Semantics? So far we have looked at operational semantics involving rules for state transitions, definitional semantics involving translations
More informationCS4215 Programming Language Implementation. Martin Henz
CS4215 Programming Language Implementation Martin Henz Thursday 26 January, 2012 2 Chapter 4 The Language simpl In this chapter, we are exting the language epl in order to provide a more powerful programming
More informationSoftware Model Checking. From Programs to Kripke Structures
Software Model Checking (in (in C or or Java) Java) Model Model Extraction 1: int x = 2; int y = 2; 2: while (y
More informationChapter 3 (part 3) Describing Syntax and Semantics
Chapter 3 (part 3) Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings
More informationChecks and Balances - Constraint Solving without Surprises in Object-Constraint Programming Languages: Full Formal Development
Checks and Balances - Constraint Solving without Surprises in Object-Constraint Programming Languages: Full Formal Development Tim Felgentreff, Todd Millstein, Alan Borning and Robert Hirschfeld Viewpoints
More informationFormal Specification and Verification
Formal Specification and Verification Model Checking with Temporal Logic Bernhard Beckert Based on a lecture by Wolfgang Ahrendt and Reiner Hähnle at Chalmers University, Göteborg Formal Specification
More informationCSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer Science (Arkoudas and Musser) Chapter p. 1/27
CSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer Science (Arkoudas and Musser) Chapter 2.1-2.7 p. 1/27 CSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer
More informationOperational Semantics. One-Slide Summary. Lecture Outline
Operational Semantics #1 One-Slide Summary Operational semantics are a precise way of specifying how to evaluate a program. A formal semantics tells you what each expression means. Meaning depends on context:
More informationFrom OCL to Typed First-order Logic
22c181: Formal Methods in Software Engineering The University of Iowa Spring 2008 From OCL to Typed First-order Logic Copyright 2007-8 Reiner Hähnle and Cesare Tinelli. Notes originally developed by Reiner
More informationProgramming Languages and Compilers (CS 421)
Programming Languages and Compilers (CS 421) Elsa L Gunter 2112 SC, UIUC http://courses.engr.illinois.edu/cs421 Based in part on slides by Mattox Beckman, as updated by Vikram Adve and Gul Agha 10/3/17
More informationFormal Methods. CITS5501 Software Testing and Quality Assurance
Formal Methods CITS5501 Software Testing and Quality Assurance Pressman, R. Software Engineering: A Practitioner s Approach. Chapter 28. McGraw-Hill, 2005 The Science of Programming, David Gries, 1981
More informationChapter 3. Semantics. Topics. Introduction. Introduction. Introduction. Introduction
Topics Chapter 3 Semantics Introduction Static Semantics Attribute Grammars Dynamic Semantics Operational Semantics Axiomatic Semantics Denotational Semantics 2 Introduction Introduction Language implementors
More informationForward Assignment; Strongest Postconditions
3/1 new version Forward Assignment; Strongest Postconditions CS 536: Science of Programming, Spring 2018 A. Why? At times, a forward version of the assignment rule is more appropriate than the backward
More informationHoare Logic and Model Checking
Hoare Logic and Model Checking Kasper Svendsen University of Cambridge CST Part II 2016/17 Acknowledgement: slides heavily based on previous versions by Mike Gordon and Alan Mycroft Pointers Pointers and
More informationComparing procedure specifications
Comparing procedure specifications CSE 331 University of Washington Michael Ernst Outline Satisfying a specification; substitutability Stronger and weaker specifications Comparing by hand Comparing via
More informationHandout 9: Imperative Programs and State
06-02552 Princ. of Progr. Languages (and Extended ) The University of Birmingham Spring Semester 2016-17 School of Computer Science c Uday Reddy2016-17 Handout 9: Imperative Programs and State Imperative
More informationA First-Order Logic with First-Class Types
A First-Order Logic with First-Class Types joint work with Peter H. Schmitt and Mattias Ulbrich Institute for Theoretical Computer Science The 8th KeY Symposium, Speyer, 2009 Java Card DL modal logic based
More informationLecture 15 CIS 341: COMPILERS
Lecture 15 CIS 341: COMPILERS Announcements HW4: OAT v. 1.0 Parsing & basic code generation Due: March 28 th No lecture on Thursday, March 22 Dr. Z will be away Zdancewic CIS 341: Compilers 2 Adding Integers
More informationApplication: Programming Language Semantics
Chapter 8 Application: Programming Language Semantics Prof. Dr. K. Madlener: Specification and Verification in Higher Order Logic 527 Introduction to Programming Language Semantics Programming Language
More informationIntroductory logic and sets for Computer scientists
Introductory logic and sets for Computer scientists Nimal Nissanke University of Reading ADDISON WESLEY LONGMAN Harlow, England II Reading, Massachusetts Menlo Park, California New York Don Mills, Ontario
More informationVerifying Java Programs with KeY
Verifying Java Programs with KeY Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.jku.at Wolfgang
More informationSemantic Processing (Part 2)
Semantic Processing (Part 2) All Projects Due: Fray 12-2-05, Noon Final: Monday, December 5, 2005, 10:15-12:05 Comprehensive 1 Recursive Type Definitions type MyRec is record f1: integer; f2: array of
More informationSyntax vs. semantics. Detour: Natural deduction. Syntax vs. semantics (cont d) Syntax = grammatical structure Semantics = underlying meaning
Syntax vs. semantics CMSC 631 Program nalysis and Understanding Spring 2013 Operational Semantics Syntax = grammatical structure Semantics = underlying meaning Sentences in a language can be syntactically
More informationPropositional Calculus: Boolean Algebra and Simplification. CS 270: Mathematical Foundations of Computer Science Jeremy Johnson
Propositional Calculus: Boolean Algebra and Simplification CS 270: Mathematical Foundations of Computer Science Jeremy Johnson Propositional Calculus Topics Motivation: Simplifying Conditional Expressions
More informationCIS 890: Safety Critical Systems
CIS 890: Safety Critical Systems Lecture: SPARK -- Analysis Tools Copyright 2007, John Hatcliff. The syllabus and all lectures for this course are copyrighted materials and may not be used in other course
More informationSECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE
SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE cse331-staff@cs.washington.edu slides borrowed and adapted from Alex Mariakis and CSE 390a OUTLINE Introductions Code Reasoning Version control IDEs
More informationThe Substitution Model
The Substitution Model Prof. Clarkson Fall 2017 Today s music: Substitute by The Who Review Previously in 3110: simple interpreter for expression language abstract syntax tree (AST) evaluation based on
More informationFinite Model Generation for Isabelle/HOL Using a SAT Solver
Finite Model Generation for / Using a SAT Solver Tjark Weber webertj@in.tum.de Technische Universität München Winterhütte, März 2004 Finite Model Generation for / p.1/21 is a generic proof assistant: Highly
More information