+ All Categories
Home > Documents > 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... ·...

22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... ·...

Date post: 19-Aug-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
77
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 at Chalmers University and modified by Cesare Tinelli at the University of Iowa. These notes are copyrighted materials and may not be used in other course settings outside of the University of Iowa in their current form or modified form without the express written permission of one of the copyright holders. 22c181: Formal Methods in Software Engineering – p.1/31
Transcript
Page 1: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

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 at Chalmers Uni versity and modified by Cesare Tinelli at the University of Io wa. These notes

are copyrighted materials and may not be used in other course settings outside of the University of Iowa in their current f orm or modified

form without the express written permission of one of the cop yright holders.

22c181: Formal Methods in Software Engineering – p.1/31

Page 2: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Contents

Overview of KeY

UML and its semantics

Introduction to OCL

Specifying requirements with OCL

Modelling of Systems with Formal Semantics

Propositional & First-order logic, sequent calculus

OCL to Logic, horizontal proof obligations, using KeY

Dynamic logic, proving program correctness

Java Card DL

Vertical proof obligations, using KeY

Wrap-up, trends

22c181: Formal Methods in Software Engineering – p.2/31

Page 3: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Propositional Logic is insufficient

A ALL PERSONS ARE HAPPY

22c181: Formal Methods in Software Engineering – p.3/31

Page 4: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Propositional Logic is insufficient

A

B

ALL PERSONS ARE HAPPY

PAT IS A PERSON

22c181: Formal Methods in Software Engineering – p.3/31

Page 5: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Propositional Logic is insufficient

A

B

?

ALL PERSONS ARE HAPPY

PAT IS A PERSON

PAT IS HAPPY

Propositional logic lacks possibility to talk about indivi duals

In particular, need to model objects, attributes, associat ions, etc.

22c181: Formal Methods in Software Engineering – p.3/31

Page 6: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Propositional Logic is insufficient

A

B

?

ALL PERSONS ARE HAPPY

PAT IS A PERSON

PAT IS HAPPY

Propositional logic lacks possibility to talk about indivi duals

In particular, need to model objects, attributes, associat ions, etc.

⇒ First-Order Logic (FOL) with Types

22c181: Formal Methods in Software Engineering – p.3/31

Page 7: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Logic

I , |=

First-OrderFormulas

First-OrderModels

First-OrderSequentCalculus

22c181: Formal Methods in Software Engineering – p.4/31

Page 8: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

OO Type Hierarchy

Finite set T of static types , subtype relation ⊑,

Dynamic types Td ⊆ T , where ⊤ ∈ Td

Abstract types Ta ⊆ T , where ⊥ ∈ Ta

Td ∩ Ta = ∅, Td ∪ Ta = T , ⊥ ⊑ z ⊑ ⊤ for all z ∈ T

int

Object

AbstractCollection List

AbstractList

ArrayList

Null

⊥22c181: Formal Methods in Software Engineering – p.5/31

Page 9: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Signature of Typed First-Order Logic

Given type hierarchy (T , Td, Ta, ⊑), let Tq := T \{⊥}

Signature Σ = (V, P, F, α)

22c181: Formal Methods in Software Engineering – p.6/31

Page 10: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Signature of Typed First-Order Logic

Given type hierarchy (T , Td, Ta, ⊑), let Tq := T \{⊥}

Signature Σ = (V, P, F, α)

Variable Symbols V = {xi | i ∈ N}

Predicate Symbols P = {pi | i ∈ N}

Function Symbols F = {fi | i ∈ N}

22c181: Formal Methods in Software Engineering – p.6/31

Page 11: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Signature of Typed First-Order Logic

Given type hierarchy (T , Td, Ta, ⊑), let Tq := T \{⊥}

Signature Σ = (V, P, F, α)

Variable Symbols V = {xi | i ∈ N}

Predicate Symbols P = {pi | i ∈ N}

Function Symbols F = {fi | i ∈ N}

Typing function α for all symbols:

α(x) ∈ Tq for all x ∈ VWe write x:z instead of α(x) = z (in Java: “ z t;”)

α(p) ∈ T ∗q for all p ∈ P

We write p:z1, . . . , zr intead of α(p) = (z1, . . . , zr)

α(f) ∈ T ∗q ×Tq for all f ∈ F

We write f : z1, . . . , zr → z instead of α(f) = ((z1, . . . , zr), z)

r = 0 ok, No overloading of variables, functions, predicates!22c181: Formal Methods in Software Engineering – p.6/31

Page 12: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Special Signature Symbols

An Equality symbol.= in P, with typing

.= : ⊤, ⊤

A type predicate symbol <−z in P for each z ∈ Tq.with typing <−z : ⊤

Type cast symbol (z) in F for each z ∈ Tq,with typing (z) : ⊤, z

22c181: Formal Methods in Software Engineering – p.7/31

Page 13: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Signature Example

Sticks and stones may break your bones, but flowers will never hurt

22c181: Formal Methods in Software Engineering – p.8/31

Page 14: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Signature Example

Sticks and stones may break your bones, but flowers will never hurt

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Functions F = {stick :→ Stick, stone :→ Stone, r :→ Flower}

Function with empty argument list: constant

22c181: Formal Methods in Software Engineering – p.8/31

Page 15: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Signature Example

Sticks and stones may break your bones, but flowers will never hurt

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Functions F = {stick :→ Stick, stone :→ Stone, r :→ Flower}

Function with empty argument list: constant

cf. KeY book p28

22c181: Formal Methods in Software Engineering – p.8/31

Page 16: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Terms of First-Order Logic

Given signature (V, P, F, α)

Terms: Set Termz of terms of type z, one for each static type z ∈ T

x is term of type z for each variable x : z

f(t1, . . . , tr) is term of type z for each function symbolf : z1, . . . , zr → z and terms ti of type z′i ⊑ zi for 1 ≤ i ≤ r

If f is constant ( r = 0) we write f instead of f()

22c181: Formal Methods in Software Engineering – p.9/31

Page 17: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Terms of First-Order Logic

Given signature (V, P, F, α)

Terms: Set Termz of terms of type z, one for each static type z ∈ T

x is term of type z for each variable x : z

f(t1, . . . , tr) is term of type z for each function symbolf : z1, . . . , zr → z and terms ti of type z′i ⊑ zi for 1 ≤ i ≤ r

If f is constant ( r = 0) we write f instead of f()

Example:

Td = {Car,Person,⊤} where Person ⊑ ⊤, Car ⊑ ⊤

F = {owner : Car → Person, pat :→ Person, herbie :→ Car}, x : Car

Terms: herbie, owner(herbie), owner((Car)pat) (!), owner(x)

Non-terms: Car, owner(pat), owner((Person)herbie)

22c181: Formal Methods in Software Engineering – p.9/31

Page 18: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Formulas of First-Order Logic

First-Order Formulas: Set For of (first-order) formulas

p(t1, . . . , tr) is an atomic formula for predicate symbolp : z1, . . . , zr and terms ti of type z′i ⊑ zi for 1 ≤ i ≤ r

Truth constants , connectives as in propositional logic

If x is any variable, φ a formula,then ∀x .φ and ∃x .φ are formulas

We call φ the scope of variable x. We say that x is bound by the

quantifier ∀ in ∀x .φ (similarly for ∃x .φ)

22c181: Formal Methods in Software Engineering – p.10/31

Page 19: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Formulas of First-Order Logic

First-Order Formulas: Set For of (first-order) formulas

p(t1, . . . , tr) is an atomic formula for predicate symbolp : z1, . . . , zr and terms ti of type z′i ⊑ zi for 1 ≤ i ≤ r

Truth constants , connectives as in propositional logic

If x is any variable, φ a formula,then ∀x .φ and ∃x .φ are formulas

We call φ the scope of variable x. We say that x is bound by the

quantifier ∀ in ∀x .φ (similarly for ∃x .φ)

Bound variables in quantified formulas are analogous to loca lvariables/formal parameters in programs

Use pathentheses and usual precedence rules to avoid syntac ticambiguity

22c181: Formal Methods in Software Engineering – p.10/31

Page 20: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Syntax Example

Sticks and stones may break your bones, but flowers will never hurt

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Functions F = {stick :→ Stick, stone :→ Stone, r :→ Flower}

Variables V = {x : Weapon, y : Flower}

Examples:

22c181: Formal Methods in Software Engineering – p.11/31

Page 21: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Syntax Example

Sticks and stones may break your bones, but flowers will never hurt

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Functions F = {stick :→ Stick, stone :→ Stone, r :→ Flower}

Variables V = {x : Weapon, y : Flower}

Examples:

∀x .hurts(x) & ∀y . !hurts(y)

We sometimes write the type of quantified variables explicit ly.

22c181: Formal Methods in Software Engineering – p.11/31

Page 22: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Syntax Example

Sticks and stones may break your bones, but flowers will never hurt

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Functions F = {stick :→ Stick, stone :→ Stone, r :→ Flower}

Variables V = {x : Weapon, y : Flower}

Examples:

∀x : Weapon .hurts(x) & ∀y : Flower . !hurts(y)

22c181: Formal Methods in Software Engineering – p.11/31

Page 23: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Syntax Example

Sticks and stones may break your bones, but flowers will never hurt

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Functions F = {stick :→ Stick, stone :→ Stone, r :→ Flower}

Variables V = {x : Weapon, y : Flower}

Examples:

∀x : Weapon .hurts(x) & ∀y : Flower . !hurts(y)

hurts(r) -> ∃y .hurts(y)

22c181: Formal Methods in Software Engineering – p.11/31

Page 24: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic

I , |=

First-OrderFormulas

First-OrderModels

First-OrderSequentCalculus

22c181: Formal Methods in Software Engineering – p.12/31

Page 25: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic

A model of FOL is a triple M = (D, δ,I) where

D is the universe or domain

Contains “objects” and “values”

δ is a dynamic typing function δ : D → Td

Each domain element has dynamic (“runtime”) type

I is an interpretation of the function and predicate symbols s.t.

• If p : z1, . . . , zr ∈ P, then I(p) ⊆ Dz1 × · · · ×Dzr

• If f : z1, . . . , zr → z ∈ F, then I(f) : Dz1 × · · · ×Dzr →Dz

Moreover, let Dz = {d ∈ D | δ(d) ⊑ z}

(the domain elements of type z).

The dynamic types z ∈ Td must be non-empty: Dz 6= ∅

22c181: Formal Methods in Software Engineering – p.13/31

Page 26: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of Special Symbols

Equality symbol.= in P, with typing

.=: ⊤, ⊤

Semantics: I(.=) = {(d,d) | d ∈ D} ⊆ D⊤ ×D⊤

“Referential Equality”

22c181: Formal Methods in Software Engineering – p.14/31

Page 27: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of Special Symbols

Equality symbol.= in P, with typing

.=: ⊤, ⊤

Semantics: I(.=) = {(d,d) | d ∈ D} ⊆ D⊤ ×D⊤

“Referential Equality”

Type predicate symbol <−z in P for each z ∈ Tq, with typing <−z : ⊤

Semantics: I(<−z) = Dz ⊆ D⊤

22c181: Formal Methods in Software Engineering – p.14/31

Page 28: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of Special Symbols

Equality symbol.= in P, with typing

.=: ⊤, ⊤

Semantics: I(.=) = {(d,d) | d ∈ D} ⊆ D⊤ ×D⊤

“Referential Equality”

Type predicate symbol <−z in P for each z ∈ Tq, with typing <−z : ⊤

Semantics: I(<−z) = Dz ⊆ D⊤

Type cast symbol (z) in F for each z ∈ Tq, with typing (z) : ⊤, z

Semantics: I((z)) is a function such that

I((z))(x) =

x if δ(x) ⊑ z

d otherwise

with d an arbitrary but fixed element of Dz

22c181: Formal Methods in Software Engineering – p.14/31

Page 29: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Example

Sticks and stones may break your bones, but flowers will never hurt

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Functions F = {stick :→ Stick, stone :→ Stone, r :→ Flower}

Variables V = {x : Weapon, y : Flower}

One of (infinitely) many possible models:

22c181: Formal Methods in Software Engineering – p.15/31

Page 30: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Example

Sticks and stones may break your bones, but flowers will never hurt

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Functions F = {stick :→ Stick, stone :→ Stone, r :→ Flower}

Variables V = {x : Weapon, y : Flower}

One of (infinitely) many possible models:

Domain D = {o1, o2, o3, o4}

22c181: Formal Methods in Software Engineering – p.15/31

Page 31: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Example

Sticks and stones may break your bones, but flowers will never hurt

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Functions F = {stick :→ Stick, stone :→ Stone, r :→ Flower}

Variables V = {x : Weapon, y : Flower}

One of (infinitely) many possible models:

Domain D = {o1, o2, o3, o4}

Typing δ(o1) = δ(o4) = Stick, δ(o2) = Stone, δ(o3) = FlowerDStick = {o1, o4}, DStone = {o2}, DFlower = {o3}, DAny = {o1, o2, o3, o4}

22c181: Formal Methods in Software Engineering – p.15/31

Page 32: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Example

Sticks and stones may break your bones, but flowers will never hurt

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Functions F = {stick :→ Stick, stone :→ Stone, r :→ Flower}

Variables V = {x : Weapon, y : Flower}

One of (infinitely) many possible models:

Domain D = {o1, o2, o3, o4}

Typing δ(o1) = δ(o4) = Stick, δ(o2) = Stone, δ(o3) = FlowerDStick = {o1, o4}, DStone = {o2}, DFlower = {o3}, DAny = {o1, o2, o3, o4}

Interpretation I(hurts) = {o1, o2, o4}I(stick) = o1, I(stone) = o2, I(r) = o3

22c181: Formal Methods in Software Engineering – p.15/31

Page 33: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic, Cont’d

Assigning meaning to variables

Let x be variable of static type z

A Variable Assignment β maps x to an element of Dz

22c181: Formal Methods in Software Engineering – p.16/31

Page 34: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic, Cont’d

Assigning meaning to variables

Let x be variable of static type z

A Variable Assignment β maps x to an element of Dz

Assigning meaning to terms: a mapping valM,β from Termz(t) to Dz

(dependind on model M and variable assignment β) such that

valM,β(x) = β(x) (element in Dz , where x has type z)

valM,β(f(t1, . . . , tr)) = I(f)(valM,β(t1), . . . , valM,β(tr))

22c181: Formal Methods in Software Engineering – p.16/31

Page 35: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic, Cont’d

Assigning meaning to variables

Let x be variable of static type z

A Variable Assignment β maps x to an element of Dz

Assigning meaning to terms: a mapping valM,β from Termz(t) to Dz

(dependind on model M and variable assignment β) such that

valM,β(x) = β(x) (element in Dz , where x has type z)

valM,β(f(t1, . . . , tr)) = I(f)(valM,β(t1), . . . , valM,β(tr))

Modified variable assignment :

For d ∈ Dz let βdy(x) :=

β(x) if x 6= y

d if x = y22c181: Formal Methods in Software Engineering – p.16/31

Page 36: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic, Cont’d

Assigning meaning to formulas

Validity relation: M, β |= φ for φ ∈ For

M, β |= p(t1, . . . , tr) iff (valM,β(t1), . . . , valM,β(tr)) ∈ I(p)

M, β |= φ&ψ iff M, β |= φ and M, β |= ψ

. . .

M, β |= ∀x .φ iff M, βdx |= φ for all d ∈ Dz

where the type of x is z

M, β |= ∃x .φ iff M, βdx |= φ for at least one d ∈ Dz

where the type of x is z

22c181: Formal Methods in Software Engineering – p.17/31

Page 37: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Example

Sticks and stones may break your bones, but flowers will never hurt

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Functions F = {stick :→ Stick, stone :→ Stone, r :→ Flower}

Variables V = {x : Weapon, y : Flower}

In our previous model M:

DStick = {o1, o4}, DStone = {o2}, DFlower = {o3}

DWeapon = {o1, o2, o4}, I(hurts) = {o1, o2, o4} ⊆ DAny

Evaluate these formulas: ∃x .hurts(x), ∀x .hurts(x), ∃y .hurts(y)

22c181: Formal Methods in Software Engineering – p.18/31

Page 38: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Evaluation Example

Let β be arbitrary.

M, β |= ∃x : Weapon .hurts(x) iff

Semantic Rule

Information from model (D, δ, I)

22c181: Formal Methods in Software Engineering – p.19/31

Page 39: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Evaluation Example

Let β be arbitrary.

M, β |= ∃x : Weapon .hurts(x) iff

There exists d ∈ DWeapon such that M, βdx |= hurts(x) if

Semantic Rule

M, β |= ∃x .φ iff M, βdx |= φ for at least one d ∈ Dz

where the type of x is z

Information from model (D, δ, I)22c181: Formal Methods in Software Engineering – p.19/31

Page 40: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Evaluation Example

Let β be arbitrary.

M, β |= ∃x : Weapon .hurts(x) iff

There exists d ∈ DWeapon such that M, βdx |= hurts(x) if

M, βo1

x |= hurts(x) iff

Semantic Rule

Information from model (D, δ, I)

DWeapon = {o1, o2, o4} 22c181: Formal Methods in Software Engineering – p.19/31

Page 41: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Evaluation Example

Let β be arbitrary.

M, β |= ∃x : Weapon .hurts(x) iff

There exists d ∈ DWeapon such that M, βdx |= hurts(x) if

M, βo1

x |= hurts(x) iff

valM,β

o1x

(x) ∈ I(hurts)

Semantic Rule

M, β |= p(t1, . . . , tr) iff (valM,β(t1), . . . , valM,β(tr)) ∈ I(p)

Information from model (D, δ, I)

22c181: Formal Methods in Software Engineering – p.19/31

Page 42: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Evaluation Example

Let β be arbitrary.

M, β |= ∃x : Weapon .hurts(x) iff

There exists d ∈ DWeapon such that M, βdx |= hurts(x) if

M, βo1

x |= hurts(x) iff

valM,β

o1x

(x) ∈ I(hurts)

since valM,β

o1x

(x) = βo1

x (x) = o1 iff

Semantic Rule

valM,β(x) = β(x), βdy(x) :=

β(x) x 6= y

d x = y

Information from model (D, δ, I) 22c181: Formal Methods in Software Engineering – p.19/31

Page 43: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Evaluation Example

Let β be arbitrary.

M, β |= ∃x : Weapon .hurts(x) iff

There exists d ∈ DWeapon such that M, βdx |= hurts(x) if

M, βo1

x |= hurts(x) iff

valM,β

o1x

(x) ∈ I(hurts)

since valM,β

o1x

(x) = βo1

x (x) = o1 iff

o1 ∈ I(hurts) = {o1, o2, o4}

Semantic Rule

Information from model (D, δ, I)

I(hurts) = {o1, o2, o4}

22c181: Formal Methods in Software Engineering – p.19/31

Page 44: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Semantics of First-Order Logic: Evaluation Example

Let β be arbitrary.

M, β |= ∃x : Weapon .hurts(x) iff

There exists d ∈ DWeapon such that M, βdx |= hurts(x) if

M, βo1

x |= hurts(x) iff

valM,β

o1x

(x) ∈ I(hurts)

since valM,β

o1x

(x) = βo1

x (x) = o1 iff

o1 ∈ I(hurts) = {o1, o2, o4} ok!

Semantic Rule

Information from model (D, δ, I)

22c181: Formal Methods in Software Engineering – p.19/31

Page 45: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Semantic Notions

Satisfiability , truth , and validity

M, β |= φ (φ is satisfiable )

M |= φ iff for all β : M, β |= φ (φ is true in M)

|= φ iff for all M : M |= φ (φ is valid )

Formula containing only variables in scope of a quantifier is closed

Closed formulas that are satisfiable are also true: only one n otion

From now on only closed formulas are considered.

22c181: Formal Methods in Software Engineering – p.20/31

Page 46: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Logic Example

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Variables V = {x : Weapon, y : Flower}

22c181: Formal Methods in Software Engineering – p.21/31

Page 47: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Logic Example

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Variables V = {x : Weapon, y : Flower}

∀x : Weapon .hurts(x) & ∀y : Flower . !hurts(y)

Satisfiable? True? Valid?

22c181: Formal Methods in Software Engineering – p.21/31

Page 48: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Logic Example

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Variables V = {x : Weapon, y : Flower}

∀x : Weapon .hurts(x) & ∀y : Flower . !hurts(y)

Satisfiable? True? Valid?

Model:

D = {o1, o2}, δ(o1) = Stone, δ(o2) = Flower

I(hurts) = {o1}

22c181: Formal Methods in Software Engineering – p.21/31

Page 49: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Logic Example

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Variables V = {x : Weapon, y : Flower}

∀x : Weapon .hurts(x) & ∀y : Flower . !hurts(y)

Satisfiable? True? Valid?

Counter-model:

D = {o1, o2}, δ(o1) = Stone, δ(o2) = Flower

I(hurts) = {}

22c181: Formal Methods in Software Engineering – p.21/31

Page 50: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Logic Example

Types Td = {Stick,Stone,Flower}, Ta = {Weapon,Any}

Stick,Stone ⊑ Weapon ⊑ Any, Flower ⊑ Any

Predicates P = {hurts : Any}

Variables V = {x : Weapon, y : Flower}

∀x : Weapon .hurts(x) & ∀y : Flower . !hurts(y)

Satisfiable? True? Valid?

Another Counter-model:

D = {o1, o2, o3}, δ(o1) = Stone, δ(o2) = δ(o3) = Flower

I(hurts) = {o1, o3}

22c181: Formal Methods in Software Engineering – p.21/31

Page 51: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Untyped First-Order Logic

Standard FOL (as in most logic textbooks is untyped [single t yped])

Obtained as special case of typed signature:

Td = {⊤}, Ta = {⊥}

Hence, D = D⊤ 6= ∅, δ(d) = ⊤ for all d ∈ D

All variables, predicate and function symbols declared on ⊤

Don’t need type information of variables (omit)

Only arity in signature of function/predicate symbols matt ers

22c181: Formal Methods in Software Engineering – p.22/31

Page 52: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Untyped First-Order Logic

Standard FOL (as in most logic textbooks is untyped [single t yped])

Obtained as special case of typed signature:

Td = {⊤}, Ta = {⊥}

Hence, D = D⊤ 6= ∅, δ(d) = ⊤ for all d ∈ D

All variables, predicate and function symbols declared on ⊤

Don’t need type information of variables (omit)

Only arity in signature of function/predicate symbols matt ers

Example : P = {person/1, happy/1}, F = {pat/0}

22c181: Formal Methods in Software Engineering – p.22/31

Page 53: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Untyped First-Order Logic

Standard FOL (as in most logic textbooks is untyped [single t yped])

Obtained as special case of typed signature:

Td = {⊤}, Ta = {⊥}

Hence, D = D⊤ 6= ∅, δ(d) = ⊤ for all d ∈ D

All variables, predicate and function symbols declared on ⊤

Don’t need type information of variables (omit)

Only arity in signature of function/predicate symbols matt ers

Example : P = {person/1, happy/1}, F = {pat/0}

∀x . (person(x) -> happy(x)) ALL PERSONS ARE HAPPY

22c181: Formal Methods in Software Engineering – p.22/31

Page 54: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Untyped First-Order Logic

Standard FOL (as in most logic textbooks is untyped [single t yped])

Obtained as special case of typed signature:

Td = {⊤}, Ta = {⊥}

Hence, D = D⊤ 6= ∅, δ(d) = ⊤ for all d ∈ D

All variables, predicate and function symbols declared on ⊤

Don’t need type information of variables (omit)

Only arity in signature of function/predicate symbols matt ers

Example : P = {person/1, happy/1}, F = {pat/0}

∀x . (person(x) -> happy(x))

person(pat)

ALL PERSONS ARE HAPPY

PAT IS A PERSON

22c181: Formal Methods in Software Engineering – p.22/31

Page 55: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Untyped First-Order Logic

Standard FOL (as in most logic textbooks is untyped [single t yped])

Obtained as special case of typed signature:

Td = {⊤}, Ta = {⊥}

Hence, D = D⊤ 6= ∅, δ(d) = ⊤ for all d ∈ D

All variables, predicate and function symbols declared on ⊤

Don’t need type information of variables (omit)

Only arity in signature of function/predicate symbols matt ers

Example : P = {person/1, happy/1}, F = {pat/0}

∀x . (person(x) -> happy(x))

person(pat)

happy(pat)

ALL PERSONS ARE HAPPY

PAT IS A PERSON

PAT IS HAPPY

22c181: Formal Methods in Software Engineering – p.22/31

Page 56: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Types and Symbols with Fixed Interpretation

Certain symbols should have “standard” meaning in all inter pretations

So far:.=, <−z , (z)

For certain types we also fix domain and dynamic typing:

Dint = {d ∈ D | δ(d) = int} = ZThese types appear between ⊥ and ⊤, uncomparable to others

Examples of types, function/predicate symbols with fixed me aning

I(17) should be always 17, not e.g. towel

int KeY can switch between J AVA 32-bit integers and Z

but in FOL always math integers I(+) = +Z, I(*) = ∗Z, . . .

boolean

22c181: Formal Methods in Software Engineering – p.23/31

Page 57: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Some Predefined Symbols in KeY FO Logic

Types

int, short, byte, boolean with standard meaning

All classes of current UML context diagram and Null

If T is one of these types then also Set(T ), Bag(T ), Sequence(T )

Predicates on integer types with standard meaning

>, <, >=, <=, . . . (infix)

Functions and Constants with standard meaning

+, -, div, mod, 0, 1, . . .

TRUE, FALSE

Notation for quantifiers , variables declared at quantifier symbol

\forall Type Variable; ScopeFormula

22c181: Formal Methods in Software Engineering – p.24/31

Page 58: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

First-Order Problems in KeY Syntax: .key

\sorts { // types are called ’sorts’

person; // one declaration per line, end with ’;’

}

\functions { // ResultType FctSymbol(ParType,..,ParType)

int age(person); // ’int’ predefined type

}

\predicates { // PredSymbol(ParType,..,ParType)

parent(person,person);

}

\problem { // Goal formula

\forall person son; \forall person father;

(parent(father,son) -> age(father) > age(son)) }22c181: Formal Methods in Software Engineering – p.25/31

Page 59: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Contents

Overview of KeY

UML and its semantics

Introduction to OCL

Specifying requirements with OCL

Modelling of Systems with Formal Semantics

Propositional & First-order logic, sequent calculus

OCL to Logic, horizontal proof obligations, using KeY

Dynamic logic, proving program correctness

Java Card DL

Vertical proof obligations, using KeY

Wrap-up, trends

22c181: Formal Methods in Software Engineering – p.26/31

Page 60: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Sequent Calculus for FOL

left side, antecedent right side, succedent

[t/t′]φ is result of replacing each occurrence of t in φ with t′

sz, tz′

and t are arbitrary variable free termsx and sz have static type z and tz

has static type z′⊑zcz new constant of type z (does not occur in current proof branch)Equations can be reversed (by symmetry of equality)

22c181: Formal Methods in Software Engineering – p.27/31

Page 61: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Sequent Calculus for FOL

left side, antecedent right side, succedent

∀Γ, ∀x .φ,

h

x/tz′

i

φ ==> ∆

Γ,∀x .φ ==> ∆

Γ ==> [x/cz]φ,∆

Γ ==> ∀x .φ, ∆

[t/t′]φ is result of replacing each occurrence of t in φ with t′

sz, tz′

and t are arbitrary variable free termsx and sz have static type z and tz

has static type z′⊑zcz new constant of type z (does not occur in current proof branch)Equations can be reversed (by symmetry of equality)

22c181: Formal Methods in Software Engineering – p.27/31

Page 62: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Sequent Calculus for FOL

left side, antecedent right side, succedent

∀Γ, ∀x .φ,

h

x/tz′

i

φ ==> ∆

Γ,∀x .φ ==> ∆

Γ ==> [x/cz]φ,∆

Γ ==> ∀x .φ, ∆

∃Γ, [x/cz]φ ==> ∆

Γ, ∃x .φ ==> ∆

Γ ==>h

x/tz′

i

φ, ∃x .φ, ∆

Γ ==> ∃x .φ,∆

[t/t′]φ is result of replacing each occurrence of t in φ with t′

sz, tz′

and t are arbitrary variable free termsx and sz have static type z and tz

has static type z′⊑zcz new constant of type z (does not occur in current proof branch)Equations can be reversed (by symmetry of equality)

22c181: Formal Methods in Software Engineering – p.27/31

Page 63: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Sequent Calculus for FOL

left side, antecedent right side, succedent

∀Γ, ∀x .φ,

h

x/tz′

i

φ ==> ∆

Γ,∀x .φ ==> ∆

Γ ==> [x/cz]φ,∆

Γ ==> ∀x .φ, ∆

∃Γ, [x/cz]φ ==> ∆

Γ, ∃x .φ ==> ∆

Γ ==>h

x/tz′

i

φ, ∃x .φ, ∆

Γ ==> ∃x .φ,∆

.=

Γ, sz .= tz

,h

sz/tz′

i

ψ ==>h

sz/tz′

i

φ,∆

Γ, sz .= tz

,ψ ==> φ,∆ Γ ==> t.= t,∆

[t/t′]φ is result of replacing each occurrence of t in φ with t′

sz, tz′

and t are arbitrary variable free termsx and sz have static type z and tz

has static type z′⊑zcz new constant of type z (does not occur in current proof branch)Equations can be reversed (by symmetry of equality)

22c181: Formal Methods in Software Engineering – p.27/31

Page 64: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

A Simple Proof (Exercises p3.key)

∃x .∀y . p(x,y) ==> ∀y .∃x .p(x,y)

Let static type of x and y be ⊤

22c181: Formal Methods in Software Engineering – p.28/31

Page 65: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

A Simple Proof (Exercises p3.key)

∀y . p(c, y) ==> ∀y .∃x .p(x,y)

∃x .∀y . p(x,y) ==> ∀y .∃x .p(x,y)

ex left: substitute new constant c of type ⊤ for x

22c181: Formal Methods in Software Engineering – p.28/31

Page 66: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

A Simple Proof (Exercises p3.key)

∀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)

all right: substitute new constant d of type ⊤ for y

22c181: Formal Methods in Software Engineering – p.28/31

Page 67: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

A Simple Proof (Exercises p3.key)

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)

all left: free to substitute any term of type ⊤ for y, choose d

22c181: Formal Methods in Software Engineering – p.28/31

Page 68: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

A Simple Proof (Exercises p3.key)

p(c, d) ==> ∃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)

all left not needed anymore (hide)

22c181: Formal Methods in Software Engineering – p.28/31

Page 69: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

A Simple Proof (Exercises p3.key)

p(c, d) ==> p(c, d), ∃x .p(x,y)

p(c, d) ==> ∃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)

ex right: free to substitute any term of type ⊤ for x, choose c

22c181: Formal Methods in Software Engineering – p.28/31

Page 70: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

A Simple Proof (Exercises p3.key)

p(c, d) ==> p(c, d)

p(c, d) ==> ∃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)

ex right not needed anymore (hide)

22c181: Formal Methods in Software Engineering – p.28/31

Page 71: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

A Simple Proof (Exercises p3.key)

p(c, d) ==> p(c, d)

p(c, d) ==> ∃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)

Close

22c181: Formal Methods in Software Engineering – p.28/31

Page 72: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Rules for Type Casts and Type Predicates

Type predicate formulas t<− ztrue iff dynamic type valM(t) is subtype of z

Type cast terms (z)tevaluates to valM(t) if cast succeeds, arb. element otherwise

22c181: Formal Methods in Software Engineering – p.29/31

Page 73: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Rules for Type Casts and Type Predicates

Type predicate formulas t<− ztrue iff dynamic type valM(t) is subtype of z

Type cast terms (z)tevaluates to valM(t) if cast succeeds, arb. element otherwise

Typical rule:

22c181: Formal Methods in Software Engineering – p.29/31

Page 74: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Rules for Type Casts and Type Predicates

Type predicate formulas t<− ztrue iff dynamic type valM(t) is subtype of z

Type cast terms (z)tevaluates to valM(t) if cast succeeds, arb. element otherwise

Typical rule:

The dynamic type of a term must be typeable to its static type

TYPESTATICΓ, t<− z ==> ∆

Γ ==> ∆z static (declared) type of t

Expresses type-safety of typed first-order logic

22c181: Formal Methods in Software Engineering – p.29/31

Page 75: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Rules for Type Casts and Type Predicates

Type predicate formulas t<− ztrue iff dynamic type valM(t) is subtype of z

Type cast terms (z)tevaluates to valM(t) if cast succeeds, arb. element otherwise

Typical rule:

The dynamic type of a term must be typeable to its static type

TYPESTATICΓ, t<− z ==> ∆

Γ ==> ∆z static (declared) type of t

Expresses type-safety of typed first-order logic

KeY first-order strategy applies suitable typing rules auto matically

22c181: Formal Methods in Software Engineering – p.29/31

Page 76: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Sequent Proofs: Important Issues

Rules are applied to top-most connective/quantifier

exLeft and allRight substitute new constant

exRight and allLeft allow to substitute any variable-free term

Formulas that are not needed in remaining proof may be hidden

All branches must be closed with axiom

There are many different possible proofs for a valid sequent

KeY FO strategy applies all but exRight and allLeft automatically

22c181: Formal Methods in Software Engineering – p.30/31

Page 77: 22c181: Formal Methods in Software Engineeringhomepage.divms.uiowa.edu/~tinelli/classes/181/... · Formulas of First-Order Logic First-Order Formulas:Set Forof (first-order) formulas

Another Proof Example

Types T = {⊥, ⊤}

Predicates PSym = {p}, p : ⊤,⊤

Functions FSym = {}

(∃x .∃y . p(x,y) & ∀x . !p(x,x)) -> ∃x .∃y . (!x.= y)

Intuitive Meaning? Satisfiable? True? Valid?

DemooclFol/rel.key

22c181: Formal Methods in Software Engineering – p.31/31


Recommended