Abstract Object Creation in Dynamic Logic

Size: px
Start display at page:

Download "Abstract Object Creation in Dynamic Logic"

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 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 information

Fundamentals of Software Engineering

Fundamentals 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 information

Fundamentals of Software Engineering

Fundamentals 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 information

TRIAL EXAM C Software Engineering using Formal Methods TDA293 / DIT270

TRIAL 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 information

Introduction to Axiomatic Semantics

Introduction 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 information

Fundamentals of Software Engineering

Fundamentals 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 information

Hoare Logic: Proving Programs Correct

Hoare 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 information

Software Engineering using Formal Methods

Software 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 information

Note 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.

Note 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 information

Fundamentals of Software Engineering

Fundamentals 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 information

Part II. Hoare Logic and Program Verification. Why specify programs? Specification and Verification. Code Verification. Why verify programs?

Part 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 information

Denotational Semantics of a Simple Imperative Language Using Intensional Logic

Denotational 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 information

COMBINING PARTIAL EVALUATION AND SYMBOLIC EXECUTION

COMBINING 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 information

Reminder 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. 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 information

An Annotated Language

An 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 information

Weak Arithmetic Completeness of Object-Oriented First-Order Assertion Networks

Weak 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 information

CMPS 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 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 information

Programming Languages Third Edition

Programming 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 information

Inductive Proof Outlines for Multithreaded Java with Exceptions

Inductive 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 information

Modal Logic: Implications for Design of a Language for Distributed Computation p.1/53

Modal 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 information

Mathematically Rigorous Software Design Review of mathematical prerequisites

Mathematically 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 information

Introduction to dependent types in Coq

Introduction 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 information

Typed First-order Logic

Typed 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 information

An IPS for TQBF Intro to Approximability

An 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 information

Dynamic Logic with Non-rigid Functions

Dynamic 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 information

Formal Specification and Verification

Formal 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 information

Shared Variables and Interference

Shared 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 information

HOL 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

HOL 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 information

Reasoning About Imperative Programs. COS 441 Slides 10

Reasoning 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 information

This is already grossly inconvenient in present formalisms. Why do we want to make this convenient? GENERAL GOALS

This 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 information

Programming Languages and Compilers Qualifying Examination. Answer 4 of 6 questions.1

Programming 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 information

Meta-programming with Names and Necessity p.1

Meta-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 information

Higher-Order Logic. Specification and Verification with Higher-Order Logic

Higher-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 information

Goals: Define the syntax of a simple imperative language Define a semantics using natural deduction 1

Goals: 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 information

A CRASH COURSE IN SEMANTICS

A 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 information

Lecture 5 - Axiomatic semantics

Lecture 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 information

Shared Variables and Interference

Shared 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 information

From OCL to Propositional and First-order Logic: Part I

From 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 information

Propositional Logic. Part I

Propositional 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 information

Handling Integer Arithmetic in the Verification of Java Programs

Handling 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 information

Programming Languages and Compilers Qualifying Examination. Answer 4 of 6 questions.

Programming 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 information

Lecture 4. First order logic is a formal notation for mathematics which involves:

Lecture 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 information

Using ASF+SDF for the Verification of Annotated Java Programs

Using 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 information

The Rule of Constancy(Derived Frame Rule)

The 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 information

Software Verification for Java 5

Software 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 information

Formal Systems and their Applications

Formal 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 information

Softwaretechnik. Program verification. Albert-Ludwigs-Universität Freiburg. June 28, Softwaretechnik June 28, / 24

Softwaretechnik. 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 information

SECTION 1: CODE REASONING + VERSION CONTROL

SECTION 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 information

SECTION 1: CODE REASONING + VERSION CONTROL

SECTION 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 information

Introduction to Linear-Time Temporal Logic. CSE 814 Introduction to LTL

Introduction 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 information

Hoare Logic. COMP2600 Formal Methods for Software Engineering. Rajeev Goré

Hoare 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 information

CS 125 Section #4 RAMs and TMs 9/27/16

CS 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 information

Lectures 20, 21: Axiomatic Semantics

Lectures 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 information

Induction and Semantics in Dafny

Induction 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 information

Chapter 3. Describing Syntax and Semantics

Chapter 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 information

Hoare logic. WHILE p, a language with pointers. Introduction. Syntax of WHILE p. Lecture 5: Introduction to separation logic

Hoare 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 information

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages

Harvard 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 information

Hoare 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 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 information

Encryption as an Abstract Datatype:

Encryption 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 information

Runtime Checking for Program Verification Systems

Runtime 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 information

Classical Planning Problems: Representation Languages

Classical 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 information

Operational Semantics 1 / 13

Operational 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 information

Formal Specification and Verification

Formal 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 information

Spring 2018 PhD Qualifying Exam in Languages

Spring 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 information

Verifying Java Programs Verifying Java Programs with KeY

Verifying 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 information

15-819M: Data, Code, Decisions

15-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 information

Negations in Refinement Type Systems

Negations 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 information

Hoare logic. A proof system for separation logic. Introduction. Separation logic

Hoare 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 information

Modules, Structs, Hashes, and Operational Semantics

Modules, 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 information

Overview. 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. 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 information

Overview. Why Pointers?

Overview. 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 information

Formal 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 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 information

axiomatic semantics involving logical rules for deriving relations between preconditions and postconditions.

axiomatic 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 information

CS4215 Programming Language Implementation. Martin Henz

CS4215 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 information

Software Model Checking. From Programs to Kripke Structures

Software 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 information

Chapter 3 (part 3) Describing Syntax and Semantics

Chapter 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 information

Checks 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 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 information

Formal Specification and Verification

Formal 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 information

CSCI.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 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 information

Operational Semantics. One-Slide Summary. Lecture Outline

Operational 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 information

From OCL to Typed First-order Logic

From 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 information

Programming Languages and Compilers (CS 421)

Programming 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 information

Formal Methods. CITS5501 Software Testing and Quality Assurance

Formal 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 information

Chapter 3. Semantics. Topics. Introduction. Introduction. Introduction. Introduction

Chapter 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 information

Forward Assignment; Strongest Postconditions

Forward 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 information

Hoare Logic and Model Checking

Hoare 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 information

Comparing procedure specifications

Comparing 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 information

Handout 9: Imperative Programs and State

Handout 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 information

A First-Order Logic with First-Class Types

A 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 information

Lecture 15 CIS 341: COMPILERS

Lecture 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 information

Application: Programming Language Semantics

Application: 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 information

Introductory logic and sets for Computer scientists

Introductory 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 information

Verifying Java Programs with KeY

Verifying 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 information

Semantic Processing (Part 2)

Semantic 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 information

Syntax vs. semantics. Detour: Natural deduction. Syntax vs. semantics (cont d) Syntax = grammatical structure Semantics = underlying meaning

Syntax 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 information

Propositional 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: Boolean Algebra and Simplification CS 270: Mathematical Foundations of Computer Science Jeremy Johnson Propositional Calculus Topics Motivation: Simplifying Conditional Expressions

More information

CIS 890: Safety Critical Systems

CIS 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 information

SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE

SECTION 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 information

The Substitution Model

The 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 information

Finite Model Generation for Isabelle/HOL Using a SAT Solver

Finite 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