Software Engineering using Formal Methods

Similar documents
Fundamentals of Software Engineering

Fundamentals of Software Engineering

Formal Methods for Java

Formal Methods for Java

Propositional and Predicate Logic

Introduction to Logic in Computer Science: Autumn 2006

Notes on Satisfiability-Based Problem Solving. First Order Logic. David Mitchell October 23, 2013

CS411 Notes 3 Induction and Recursion

Notation for Logical Operators:

First-Order Theorem Proving and Vampire. Laura Kovács (Chalmers University of Technology) Andrei Voronkov (The University of Manchester)

Applied Logic. Lecture 1 - Propositional logic. Marcin Szczuka. Institute of Informatics, The University of Warsaw

CHAPTER 10. Gentzen Style Proof Systems for Classical Logic

First-Order Theorem Proving and Vampire

Propositions and Proofs

First-Order Logic First-Order Theories. Roopsha Samanta. Partly based on slides by Aaron Bradley and Isil Dillig

Automated Reasoning Lecture 5: First-Order Logic

Logic for Computer Science - Week 4 Natural Deduction


Axiomatization of Typed First-Order Logic

ACLT: Algebra, Categories, Logic in Topology - Grothendieck's generalized topological spaces (toposes)

3. Only sequences that were formed by using finitely many applications of rules 1 and 2, are propositional formulas.

cis32-ai lecture # 18 mon-3-apr-2006

First-Order Logic. Chapter Overview Syntax

02 Propositional Logic

Herbrand Theorem, Equality, and Compactness

Informal Statement Calculus

Syntax. Notation Throughout, and when not otherwise said, we assume a vocabulary V = C F P.

Propositional Logic Language

Using the Prover I: Lee Pike. June 3, NASA Langley Formal Methods Group Using the Prover I:

Natural Deduction for Propositional Logic

Outline. Overview. Syntax Semantics. Introduction Hilbert Calculus Natural Deduction. 1 Introduction. 2 Language: Syntax and Semantics

Comp487/587 - Boolean Formulas

Chapter 2: Basic Notions of Predicate Logic

Mathematics 114L Spring 2018 D.A. Martin. Mathematical Logic

The Importance of Being Formal. Martin Henz. February 5, Propositional Logic

Propositional Logic: Deductive Proof & Natural Deduction Part 1

AAA615: Formal Methods. Lecture 2 First-Order Logic

INTRODUCTION TO PREDICATE LOGIC HUTH AND RYAN 2.1, 2.2, 2.4

MAI0203 Lecture 7: Inference and Predicate Calculus

Intelligent Agents. First Order Logic. Ute Schmid. Cognitive Systems, Applied Computer Science, Bamberg University. last change: 19.

Exercises 1 - Solutions

First order Logic ( Predicate Logic) and Methods of Proof

Outline. Formale Methoden der Informatik First-Order Logic for Forgetters. Why PL1? Why PL1? Cont d. Motivation

INTRODUCTION TO LOGIC. Propositional Logic. Examples of syntactic claims

CS 2800: Logic and Computation Fall 2010 (Lecture 13)

Uniform Schemata for Proof Rules

Logic and Modelling. Introduction to Predicate Logic. Jörg Endrullis. VU University Amsterdam

Propositional Logic: Part II - Syntax & Proofs 0-0

First Order Logic (FOL) 1 znj/dm2017

Mathematical Preliminaries. Sipser pages 1-28

CS1021. Why logic? Logic about inference or argument. Start from assumptions or axioms. Make deductions according to rules of reasoning.

Introduction to Logic in Computer Science: Autumn 2007

Syntax of FOL. Introduction to Logic in Computer Science: Autumn Tableaux for First-order Logic. Syntax of FOL (2)

Learning Goals of CS245 Logic and Computation

A Cut-Free Calculus for Second-Order Gödel Logic

Chapter 1. Logic and Proof

HANDOUT AND SET THEORY. Ariyadi Wijaya

Predicate Logic. Xinyu Feng 09/26/2011. University of Science and Technology of China (USTC)

Chapter 11: Automated Proof Systems (1)

Advanced Topics in LP and FP

Deductive Systems. Lecture - 3

First-Order Logic (FOL)

A Little Logic. Propositional Logic. Satisfiability Problems. Solving Sudokus. First Order Logic. Logic Programming

First Order Logic: Syntax and Semantics

With Question/Answer Animations. Chapter 2

Chapter 11: Automated Proof Systems

Logic: Propositional Logic (Part I)

Relations to first order logic

PREDICATE LOGIC. Schaum's outline chapter 4 Rosen chapter 1. September 11, ioc.pdf

Section 5 Circumscription. Subsection 5.1 Introducing Circumscription. TU Dresden, WS 2017/18 Introduction to Nonmonotonic Reasoning Slide 128

Propositional Logic: Syntax

CS156: The Calculus of Computation Zohar Manna Winter 2010

Existence and Consistency in Bounded Arithmetic


Lecture 7. Logic. Section1: Statement Logic.

CS156: The Calculus of Computation

Introduction to Metalogic

Foundations of Mathematics MATH 220 FALL 2017 Lecture Notes

185.A09 Advanced Mathematical Logic

Classical First-Order Logic

Logic: The Big Picture

Part 2: First-Order Logic

Propositional Calculus - Hilbert system H Moonzoo Kim CS Division of EECS Dept. KAIST

GS03/4023: Validation and Verification Predicate Logic Jonathan P. Bowen Anthony Hall

Propositional Logic: Models and Proofs

Resolution for mixed Post logic

Predicate Logic. Xinyu Feng 11/20/2013. University of Science and Technology of China (USTC)

Logic Overview, I. and T T T T F F F T F F F F

Examples: P: it is not the case that P. P Q: P or Q P Q: P implies Q (if P then Q) Typical formula:

Introduction to Isabelle/HOL

3. The Logic of Quantified Statements Summary. Aaron Tan August 2017

Applied Logic for Computer Scientists. Answers to Some Exercises

A Short Introduction to Hoare Logic

Propositional Logic. Spring Propositional Logic Spring / 32

Description Logics. Foundations of Propositional Logic. franconi. Enrico Franconi

Predicate Logic: Sematics Part 1

Today. Proof using contrapositive. Compound Propositions. Manipulating Propositions. Tautology

Matching Logic: Syntax and Semantics

Notes. Corneliu Popeea. May 3, 2013

1. Introduction to commutative rings and fields

Transcription:

Software Engineering using Formal Methods First-Order Logic Wolfgang Ahrendt 26th September 2013 SEFM: First-Order Logic 130926 1 / 53

Install the KeY-Tool... KeY used in Friday s exercise Requires: Java 5 Follow instructions on course page, under: Links, Papers, and Software We recommend using Java Web Start: Start KeY with two clicks (you need to trust our self-signed certificate) Java Web Start installed with standard JDK/JRE Usually browsers know filetype. Otherwise open KeY.jnlp with javaws. If you want to intstall KeY locally instead, download from www.key-project.org. For this course, install version 1.6.x. SEFM: First-Order Logic 130926 2 / 53

Motivation for Introducing First-Order Logic 1) we specify Java programs with Java Modeling Language (JML) JML combines Java expressions First-Order Logic (FOL) 2) we verify Java programs using Dynamic Logic Dynamic Logic combines First-Order Logic (FOL) Java programs SEFM: First-Order Logic 130926 3 / 53

FOL: Language and Calculus we introduce: FOL as a language calculus for proving FOL formulas KeY system as propositional, and first-order, prover (for now) (formal semantics: if time) SEFM: First-Order Logic 130926 4 / 53

First-Order Logic: Signature Signature A first-order signature Σ consists of a set T Σ of types a set F Σ of function symbols a set P Σ of predicate symbols a typing α Σ intuitively, the typing α Σ determines for each function and predicate symbol: its arity, i.e., number of arguments its argument types for each function symbol its result type. formally: α Σ (p) T Σ for all p P Σ (arity of p is α Σ (p) ) α Σ (f ) T Σ T Σ for all f F Σ (arity of f is α Σ (f ) 1) SEFM: First-Order Logic 130926 5 / 53

Example Signature 1 + Constants T Σ1 = {int}, F Σ1 = {+, -} {..., -2, -1, 0, 1, 2,...}, P Σ1 = {<} α Σ1 (<) = (int,int) α Σ1 (+) = α Σ1 (-) = (int,int,int) α Σ1 (0) = α Σ1 (1) = α Σ1 (-1) =... = (int) Constant Symbols A function symbol f with α Σ1 (f ) = 1 (i.e., with arity 0) is called constant symbol. here, the constant symbols are:..., -2, -1, 0, 1, 2,... SEFM: First-Order Logic 130926 6 / 53

Syntax of First-Order Logic: Signature Cont d Type declaration of signature symbols Write τ x; to declare variable x of type τ Write p(τ 1,..., τ r ); for α(p) = (τ 1,..., τ r ) Write τ f (τ 1,..., τ r ); for α(f ) = (τ 1,..., τ r, τ) r = 0 is allowed, then write f instead of f (), etc. Example Variables integerarray a; int i; Predicate Symbols isempty(list); alerton; Function Symbols int arraylookup(int); Object o; SEFM: First-Order Logic 130926 7 / 53

Example Signature 1 + Notation typing of Signature 1: α Σ1 (<) = (int,int) α Σ1 (+) = α Σ1 (-) = (int,int,int) α Σ1 (0) = α Σ1 (1) = α Σ1 (-1) =... = (int) can alternatively be written as: <(int,int); int +(int,int); int 0; int 1; int -1;... SEFM: First-Order Logic 130926 8 / 53

Example Signature 2 T Σ2 = {int, LinkedIntList}, F Σ2 = {null, new, elem, next} {...,-2,-1,0,1,2,...} P Σ2 = {} intuitively, elem and next model fields of LinkedIntList objects type declarations: LinkedIntList null; LinkedIntList new(int,linkedintlist); int elem(linkedintlist); LinkedIntList next(linkedintlist); and as before: int 0; int 1; int -1;... SEFM: First-Order Logic 130926 9 / 53

First-Order Terms We assume a set V of variables (V (F Σ P Σ ) = ). Each v V has a unique type α Σ (v) T Σ. Terms are defined recursively: Terms A first-order term of type τ T Σ is either a variable of type τ, or has the form f (t 1,..., t n ), where f F Σ has result type τ, and each t i is term of the correct type, following the typing α Σ of f. If f is a constant symbol, the term is written f, instead of f (). SEFM: First-Order Logic 130926 10 / 53

Terms over Signature 1 example terms over Σ 1 : (assume variables int v 1 ; int v 2 ;) -7 +(-2, 99) -(7, 8) +(-(7, 8), 1) +(-(v 1, 8), v 2 ) some variants of FOL allow infix notation of functions: -2 + 99 7-8 (7-8) + 1 (v 1-8) + v 2 SEFM: First-Order Logic 130926 11 / 53

Terms over Signature 2 example terms over Σ 2 : (assume variables LinkedIntList o; int v;) -7 null new(13, null) elem(new(13, null)) next(next(o)) for first-order functions modeling object fields, we allow dotted postfix notation: new(13, null).elem o.next.next SEFM: First-Order Logic 130926 12 / 53

Atomic Formulas Atomic Formulas Given a signature Σ. An atomic formula has either of the forms true false t 1 = t 2 ( equality ), where t 1 and t 2 are first-order terms of the same type. p(t 1,..., t n ) ( predicate ), where p P Σ, and each t i is term of the correct type, following the typing α Σ of p. SEFM: First-Order Logic 130926 13 / 53

Atomic Formulas over Signature 1 example formulas over Σ 1 : (assume variable int v;) 7 = 8 7 < 8-2 - v < 99 v < (v + 1) SEFM: First-Order Logic 130926 14 / 53

Atomic Formulas over Signature 2 example formulas over Σ 2 : (assume variables LinkedIntList o; int v;) new(13, null) = null elem(new(13, null)) = 13 next(new(13, null)) = null next(next(o)) = o SEFM: First-Order Logic 130926 15 / 53

First-order Formulas Formulas each atomic formula is a formula with φ and ψ formulas, x a variable, and τ a type, the following are also formulas: φ ( not φ ) φ ψ ( φ and ψ ) φ ψ ( φ or ψ ) φ ψ ( φ implies ψ ) φ ψ ( φ is equivalent to ψ ) τ x; φ ( for all x of type τ holds φ ) τ x; φ ( there exists an x of type τ such that φ ) In τ x; φ and τ x; φ the variable x is bound (i.e., not free ). Formulas with no free variable are closed. SEFM: First-Order Logic 130926 16 / 53

First-order Formulas: Examples (signatures/types left out here) Example (There are at least two elements) x, y; (x = y) Example (Strict partial order) Irreflexivity x; (x < x) Asymmetry x; y; (x < y (y < x)) Transitivity x; y; z; (x < y y < z x < z) (is any of the three formulas redundant?) SEFM: First-Order Logic 130926 17 / 53

Semantics (briefly here, more thorough later) Domain A domain D is a set of elements which are (potentially) the meaning of terms and variables. Interpretation An interpretation I (over D) assigns meaning to the symbols in F Σ P Σ (assigning functions to function symbols, relations to predicate symbols). Valuation In a given D and I, a closed formula evaluates to either T or F. Validity A closed formula is valid if it evaluates to T in all D and I. In the context of specification/verification of programs: each (D, I) is called a state. SEFM: First-Order Logic 130926 18 / 53

Useful Valid Formulas Let φ and ψ be arbitrary, closed formulas (whether valid of not). The following formulas are valid: (φ ψ) φ ψ (φ ψ) φ ψ (true φ) φ (false φ) φ true φ (false φ) (φ ψ) ( φ ψ) φ true false φ (true φ) φ (φ false) φ SEFM: First-Order Logic 130926 19 / 53

Useful Valid Formulas Assume that x is the only variable which may appear freely in φ or ψ. The following formulas are valid: ( τ x; φ) τ x; φ ( τ x; φ) τ x; φ ( τ x; φ ψ) ( τ x; φ) ( τ x; ψ) ( τ x; φ ψ) ( τ x; φ) ( τ x; ψ) Are the following formulas also valid? ( τ x; φ ψ) ( τ x; φ) ( τ x; ψ) ( τ x; φ ψ) ( τ x; φ) ( τ x; ψ) SEFM: First-Order Logic 130926 20 / 53

Remark on Concrete Syntax Text book Spin KeY Negation!! Conjunction && & Disjunction Implication, > > Equivalence < > < > Universal Quantifier x; φ n/a \forall τ x; φ Existential Quantifier x; φ n/a \exists τ x; φ Value equality = == = SEFM: First-Order Logic 130926 21 / 53

Part I Sequent Calculus for FOL SEFM: First-Order Logic 130926 22 / 53

Reasoning by Syntactic Transformation Prove Validity of φ by syntactic transformation of φ Logic Calculus: Sequent Calculus based on notion of sequent: ψ 1,..., ψ m }{{} Antecedent = φ 1,..., φ n }{{} Succedent has same meaning as (ψ 1 ψ m ) (φ 1 φ n ) which has (for closed formulas ψ i, φ i ) same meaning as {ψ 1,..., ψ m } = φ 1 φ n SEFM: First-Order Logic 130926 23 / 53

Notation for Sequents ψ 1,..., ψ m = φ 1,..., φ n Consider antecedent/succedent as sets of formulas, may be empty Schema Variables φ, ψ,... match formulas, Γ,,... match sets of formulas Characterize infinitely many sequents with single schematic sequent, e.g., Γ = φ ψ, Matches any sequent with occurrence of conjunction in succedent Call φ ψ main formula and Γ, side formulas of sequent Any sequent of the form Γ, φ = φ, is logically valid: axiom SEFM: First-Order Logic 130926 24 / 53

Sequent Calculus Rules Write syntactic transformation schema for sequents that reflects semantics of connectives as closely as possible Premisses {}}{ Γ 1 = 1 Γ r = r RuleName Γ } = {{ } Conclusion Meaning: For proving the Conclusion, it suffices to prove all Premisses. Example andright Γ = φ, Γ = ψ, Γ = φ ψ, Admissible to have no premisses (iff conclusion is valid, e.g., axiom) A rule is sound (correct) iff the validity of its premisses implies the validity of its conclusion. SEFM: First-Order Logic 130926 25 / 53

Propositional Sequent Calculus Rules main left side (antecedent) right side (succedent) Γ = φ, Γ, φ = not Γ, φ = Γ = φ, and or imp Γ, φ, ψ = Γ, φ ψ = Γ, φ = Γ, ψ = Γ, φ ψ = Γ = φ, Γ, ψ = Γ, φ ψ = Γ = φ, Γ = ψ, Γ = φ ψ, Γ = φ, ψ, Γ = φ ψ, Γ, φ = ψ, Γ = φ ψ, close Γ, φ = φ, true Γ = true, false Γ, false = SEFM: First-Order Logic 130926 26 / 53

Sequent Calculus Proofs Goal to prove: G = ψ 1,..., ψ m = φ 1,..., φ n find rule R whose conclusion matches G instantiate R such that its conclusion is identical to G apply that instantiation to all premisses of R, resulting in new goals G 1,..., G r recursively find proofs for G 1,..., G r tree structure with goal as root close proof branch when rule without premiss encountered Goal-directed proof search In KeY tool proof displayed as Java Swing tree SEFM: First-Order Logic 130926 27 / 53

A Simple Proof Close p = p, q p, q = q Close p, (p q) = q p (p q) = q = (p (p q)) q Demo A proof is closed iff all its branches are closed prop.key SEFM: First-Order Logic 130926 28 / 53

Proving Validity of First-Order Formulas Proving a universally quantified formula Claim: τ x; φ is true How is such a claim proved in mathematics? All even numbers are divisible by 2 int x; (even(x) divbytwo(x)) Let c be an arbitrary number Declare unused constant int c The even number c is divisible by 2 prove even(c) divbytwo(c) Sequent rule -right forallright Γ = [x/c] φ, Γ = τ x; φ, [x/c] φ is result of replacing each occurrence of x in φ with c c new constant of type τ SEFM: First-Order Logic 130926 29 / 53

Proving Validity of First-Order Formulas Cont d Proving an existentially quantified formula Claim: τ x; φ is true How is such a claim proved in mathematics? There is at least one prime number int x; prime(x) Provide any witness, say, 7 Use variable-free term int 7 7 is a prime number prime(7) Sequent rule -right existsright Γ = [x/t] φ, τ x; φ, Γ = τ x; φ, t any variable-free term of type τ Proof might not work with t! Need to keep premise to try again SEFM: First-Order Logic 130926 30 / 53

Proving Validity of First-Order Formulas Cont d Using a universally quantified formula We assume τ x; φ is true How is such a fact used in a mathematical proof? We know that all primes are odd int x; (prime(x) odd(x)) In particular, this holds for 17 Use variable-free term int 17 We know: if 17 is prime it is odd prime(17) odd(17) Sequent rule -left forallleft Γ, τ x; φ, [x/t ] φ = Γ, τ x; φ = t any variable-free term of type τ We might need other instances besides t! Keep premise τ x; φ SEFM: First-Order Logic 130926 31 / 53

Proving Validity of First-Order Formulas Cont d Using an existentially quantified formula We assume τ x; φ is true How is such a fact used in a mathematical proof? We know such an element exists. Let s give it a new name for future reference. Sequent rule -left existsleft Γ, [x/c] φ = Γ, τ x; φ = c new constant of type τ SEFM: First-Order Logic 130926 32 / 53

Proving Validity of First-Order Formulas Cont d Using an existentially quantified formula Let x, y denote integer constants, both are not zero. We know further that x divides y. Show: (y/x) x = y ( / is division on integers, i.e. the equation is not always true, e.g. x = 2, y = 1) Proof: We know x divides y, i.e. there exists a k such that k x = y. Let now c denote such a k. Hence we can replace y by c x on the right side (see slide 35)..... (x = 0), (y = 0), c x = y = ((c x)/x) x = y (x = 0), (y = 0), c x = y = (y/x) x = y (x = 0), (y = 0), int k; k x = y = (y/x) x = y SEFM: First-Order Logic 130926 33 / 53

Untyped logic: let static type of x and y be -left: substitute new constant c of type for x -right: substitute new constant d of type for y -left: free to substitute any term of type for y, choose d -right: free to substitute any term of type for x, choose c Close Demo SEFM: First-Order Logic 130926 34 / 53 Proving Validity of First-Order Formulas Cont d Example (A simple theorem about binary relations) p(c, d), y; p(c, y) = p(c, d), x; p(x, y) p(c, d), y; p(c, y) = x; p(x, d) y; p(c, y) = x; p(x, d) y; p(c, y) = y; x; p(x, y) x; y; p(x, y) = y; x; p(x, y)

Proving Validity of First-Order Formulas Cont d Using an equation between terms We assume t = t is true How is such a fact used in a mathematical proof? Use x = y 1 to simplify x+1/y x = y 1 = 1 = x+1/y Replace x in conclusion with right-hand side of equation We know: x+1/y equal to y 1+1/y x = y 1 = 1 = y 1+1/y Sequent rule =-left applyeql Γ, t = t, [t/t ] φ = Γ, t = t, φ = applyeqr Γ, t = t = [t/t ] φ, Γ, t = t = φ, Always replace left- with right-hand side (use eqsymm if necessary) t,t variable-free terms of the same type SEFM: First-Order Logic 130926 35 / 53

Proving Validity of First-Order Formulas Cont d Closing a subgoal in a proof We derived a sequent that is obviously valid close Γ, φ = φ, true Γ = true, false Γ, false = We derived an equation that is obviously valid eqclose Γ = t = t, SEFM: First-Order Logic 130926 36 / 53

Sequent Calculus for FOL at One Glance left side, antecedent Γ, τ x; φ, [x/t ] φ = Γ, τ x; φ = Γ, [x/c] φ = Γ, τ x; φ = right side, succedent Γ = [x/c] φ, Γ = τ x; φ, Γ = [x/t ] φ, τ x; φ, Γ = τ x; φ, = Γ, t = t = [t/t ] φ, Γ, t = t = φ, Γ = t = t, (+ application rule on left side) [t/t ] φ is result of replacing each occurrence of t in φ with t t,t variable-free terms of type τ c new constant of type τ (occurs not on current proof branch) Equations can be reversed by commutativity SEFM: First-Order Logic 130926 37 / 53

Recap: Propositional Sequent Calculus Rules main left side (antecedent) right side (succedent) Γ = φ, Γ, φ = not Γ, φ = Γ = φ, and or imp Γ, φ, ψ = Γ, φ ψ = Γ, φ = Γ, ψ = Γ, φ ψ = Γ = φ, Γ, ψ = Γ, φ ψ = Γ = φ, Γ = ψ, Γ = φ ψ, Γ = φ, ψ, Γ = φ ψ, Γ, φ = ψ, Γ = φ ψ, close Γ, φ = φ, true Γ = true, false Γ, false = SEFM: First-Order Logic 130926 38 / 53

Features of the KeY Theorem Prover Demo rel.key, twoinstances.key Feature List Can work on multiple proofs simultaneously (task list) Proof trees visualized as Java Swing tree Point-and-click navigation within proof Undo proof steps, prune proof trees Pop-up menu with proof rules applicable in pointer focus Preview of rule effect as tool tip Quantifier instantiation and equality rules by drag-and-drop Possible to hide (and unhide) parts of a sequent Saving and loading of proofs SEFM: First-Order Logic 130926 39 / 53

Literature for this Lecture essential: W. Ahrendt Using KeY Chapter 10 in [KeYbook] further reading: M. Giese First-Order Logic Chapter 2 in [KeYbook] KeYbook B. Beckert, R. Hähnle, and P. Schmitt, editors, Verification of Object-Oriented Software: The KeY Approach, vol 4334 of LNCS (Lecture Notes in Computer Science), Springer, 2006 (access via Chalmers library E-books Lecture Notes in Computer Science) SEFM: First-Order Logic 130926 40 / 53

Part II First-Order Semantics SEFM: First-Order Logic 130926 41 / 53

First-Order Semantics From propositional to first-order semantics In prop. logic, an interpretation of variables with {T, F } sufficed In first-order logic we must assign meaning to: variables bound in quantifiers constant and function symbols predicate symbols Each variable or function value may denote a different item Respect typing: int i, List l must denote different items What we need (to interpret a first-order formula) 1. A collection of typed universes of items 2. A mapping from variables to items 3. A mapping from function arguments to function values 4. The set of argument tuples where a predicate is true SEFM: First-Order Logic 130926 42 / 53

First-Order Domains/Universes 1. A collection of typed universes of items Definition (Universe/Domain) A non-empty set D of items is a universe or domain Each element of D has a fixed type given by δ : D τ Notation for the domain elements of type τ T : D τ = {d D δ(d) = τ} Each type τ T must contain at least one domain element: D τ SEFM: First-Order Logic 130926 43 / 53

First-Order States 3. A mapping from function arguments to function values 4. The set of argument tuples where a predicate is true Definition (First-Order State) Let D be a domain with typing function δ Let f be declared as τ f (τ 1,..., τ r ); Let p be declared as p(τ 1,..., τ r ); Let I(f ) : D τ 1 D τr D τ Let I(p) D τ 1 D τr Then S = (D, δ, I) is a first-order state SEFM: First-Order Logic 130926 44 / 53

First-Order States Cont d Example Signature: int i; short j; int f(int); Object obj; <(int,int); D = {17, 2, o} where all numbers are short I(i) = 17 I(j) = 17 I(obj) = o D int I(f ) 2 2 17 2 D int D int in I(<)? (2, 2) F (2, 17) T (17, 2) F (17, 17) F One of uncountably many possible first-order states! SEFM: First-Order Logic 130926 45 / 53

Semantics of Reserved Signature Symbols Definition Equality symbol = declared as = (, ) Interpretation is fixed as I(=) = {(d, d) d D} Referential Equality (holds if arguments refer to identical item) Exercise: write down the predicate table for example domain SEFM: First-Order Logic 130926 46 / 53

Signature Symbols vs. Domain Elements Domain elements different from the terms representing them First-order formulas and terms have no access to domain Example Signature: Object obj1, obj2; Domain: D = {o} In this state, necessarily I(obj1) = I(obj2) = o SEFM: First-Order Logic 130926 47 / 53

Variable Assignments 2. A mapping from variables to objects Think of variable assignment as environment for storage of local variables Definition (Variable Assignment) A variable assignment β maps variables to domain elements It respects the variable type, i.e., if x has type τ then β(x) D τ Definition (Modified Variable Assignment) Let y be variable of type τ, β variable assignment, d D τ : { βy d β(x) x y (x) := d x = y SEFM: First-Order Logic 130926 48 / 53

Semantic Evaluation of Terms Given a first-order state S and a variable assignment β it is possible to evaluate first-order terms under S and β Definition (Valuation of Terms) val S,β : Term D such that val S,β (t) D τ for t Term τ : val S,β (x) = β(x) val S,β (f (t 1,..., t r )) = I(f )(val S,β (t 1 ),..., val S,β (t r )) SEFM: First-Order Logic 130926 49 / 53

Semantic Evaluation of Terms Cont d Example Signature: int i; short j; int f(int); D = {17, 2, o} where all numbers are short Variables: Object obj; int x; I(i) = 17 I(j) = 17 D int I(f) 2 17 17 2 Var β obj o x 17 val S,β (f(f(i)))? val S,β (x)? SEFM: First-Order Logic 130926 50 / 53

Semantic Evaluation of Formulas Definition (Valuation of Formulas) val S,β (φ) for φ For val S,β (p(t 1,..., t r ) = T iff (val S,β (t 1 ),..., val S,β (t r )) I(p) val S,β (φ ψ) = T iff val S,β (φ) = T and val S,β (ψ) = T... as in propositional logic val S,β ( τ x; φ) = T iff val S,β d x ( τ x; φ) = T for all d D τ val S,β ( τ x; φ) = T iff val S,β d x ( τ x; φ) = T for at least one d D τ SEFM: First-Order Logic 130926 51 / 53

Semantic Evaluation of Formulas Cont d Example Signature: short j; int f(int); Object obj; <(int,int); D = {17, 2, o} where all numbers are short I(j) = 17 I(obj) = o D int I(f ) 2 2 17 2 D int D int in I(<)? (2, 2) F (2, 17) T (17, 2) F (17, 17) F val S,β (f (j) < j)? val S,β ( int x; f (x) = x)? val S,β ( Object o1; Object o2; o1 = o2)? SEFM: First-Order Logic 130926 52 / 53

Semantic Notions Definition (Satisfiability, Truth, Validity) val S,β (φ) = T (φ is satisfiable) S = φ iff for all β : val S,β (φ) = T (φ is true in S) = φ iff for all S : S = φ (φ is valid) Closed formulas that are satisfiable are also true: one top-level notion Example f (j) < j is true in S int x; i = x is valid int x; (x = x) is not satisfiable SEFM: First-Order Logic 130926 53 / 53