Semantics and Verification of Software Summer Semester 2019 Lecture - - PowerPoint PPT Presentation

semantics and verification of software
SMART_READER_LITE
LIVE PREVIEW

Semantics and Verification of Software Summer Semester 2019 Lecture - - PowerPoint PPT Presentation

Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions) Thomas Noll Software Modeling and Verification Group RWTH Aachen University


slide-1
SLIDE 1

Semantics and Verification of Software

Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions) Thomas Noll Software Modeling and Verification Group RWTH Aachen University

https://moves.rwth-aachen.de/teaching/ss-19/sv-sw/

slide-2
SLIDE 2

Recap: Syntax of WHILE Outline of Lecture 2 Recap: Syntax of WHILE Operational Semantics of WHILE Evaluation of Arithmetic Expressions Excursus: Proof by Structural Induction Evaluation of Boolean Expressions

2 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-3
SLIDE 3

Recap: Syntax of WHILE Syntactic Categories WHILE: simple imperative programming language without procedures or advanced data structures Syntactic categories: Category Domain Meta variable Numbers

Z = {0, 1, −1, . . .} z

Truth values

B = {true, false}

t Variables Var = {x, y, . . .} x Arithmetic expressions AExp (next slide) a Boolean expressions BExp (next slide) b Commands (statements) Cmd (next slide) c

3 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-4
SLIDE 4

Recap: Syntax of WHILE Syntax of WHILE Programs Definition (Syntax of WHILE) The syntax of WHILE Programs is defined by the following context-free grammar: a ::= z | x | a1+a2 | a1-a2 | a1*a2 ∈ AExp b ::= t | a1=a2 | a1>a2 | ¬b | b1 ∧ b2 | b1 ∨ b2 ∈ BExp c ::= skip | x := a | c1;c2 | if b then c1 else c2 end | while b do c end ∈ Cmd Remarks: we assume that

  • the syntax of numbers, truth values and variables is predefined

(i.e., no “lexical analysis”)

  • the syntactic interpretation of ambiguous constructs (expressions) is uniquely determined

(by brackets or priorities)

4 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-5
SLIDE 5

Operational Semantics of WHILE Outline of Lecture 2 Recap: Syntax of WHILE Operational Semantics of WHILE Evaluation of Arithmetic Expressions Excursus: Proof by Structural Induction Evaluation of Boolean Expressions

5 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-6
SLIDE 6

Operational Semantics of WHILE Operational Semantics of WHILE

  • Idea: define meaning of programs by specifying its behaviour being executed on an

(abstract) machine

6 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-7
SLIDE 7

Operational Semantics of WHILE Operational Semantics of WHILE

  • Idea: define meaning of programs by specifying its behaviour being executed on an

(abstract) machine

  • Here: evaluation/execution relation for program fragments (expressions, statements)

6 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-8
SLIDE 8

Operational Semantics of WHILE Operational Semantics of WHILE

  • Idea: define meaning of programs by specifying its behaviour being executed on an

(abstract) machine

  • Here: evaluation/execution relation for program fragments (expressions, statements)
  • Approach based on Structural Operational Semantics (SOS)

– G.D. Plotkin: A structural approach to operational semantics, DAIMI FN-19, Computer Science Department, Aarhus University, 1981

6 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-9
SLIDE 9

Operational Semantics of WHILE Operational Semantics of WHILE

  • Idea: define meaning of programs by specifying its behaviour being executed on an

(abstract) machine

  • Here: evaluation/execution relation for program fragments (expressions, statements)
  • Approach based on Structural Operational Semantics (SOS)

– G.D. Plotkin: A structural approach to operational semantics, DAIMI FN-19, Computer Science Department, Aarhus University, 1981

  • Employs derivation rules of the form

(Name) Premise(s)

Conclusion

[side conditions]

– meaning: if every premise [and all side conditions] are fulfilled, then the conclusion can be drawn – a rule with no premises is called an axiom

6 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-10
SLIDE 10

Operational Semantics of WHILE Operational Semantics of WHILE

  • Idea: define meaning of programs by specifying its behaviour being executed on an

(abstract) machine

  • Here: evaluation/execution relation for program fragments (expressions, statements)
  • Approach based on Structural Operational Semantics (SOS)

– G.D. Plotkin: A structural approach to operational semantics, DAIMI FN-19, Computer Science Department, Aarhus University, 1981

  • Employs derivation rules of the form

(Name) Premise(s)

Conclusion

[side conditions]

– meaning: if every premise [and all side conditions] are fulfilled, then the conclusion can be drawn – a rule with no premises is called an axiom

  • Derivation rules can be composed to form derivation trees with axioms as leaves (formal

definition later)

6 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-11
SLIDE 11

Evaluation of Arithmetic Expressions Outline of Lecture 2 Recap: Syntax of WHILE Operational Semantics of WHILE Evaluation of Arithmetic Expressions Excursus: Proof by Structural Induction Evaluation of Boolean Expressions

7 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-12
SLIDE 12

Evaluation of Arithmetic Expressions Program States

  • Meaning of expression = its value (in the usual sense)
  • Depends on the values of the variables in the expression

8 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-13
SLIDE 13

Evaluation of Arithmetic Expressions Program States

  • Meaning of expression = its value (in the usual sense)
  • Depends on the values of the variables in the expression

Definition 2.1 (Program state) A (program) state is an element of the set

Σ := {σ | σ : Var → Z},

called the state space. Thus σ(x) denotes the value of x ∈ Var in state σ ∈ Σ.

8 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-14
SLIDE 14

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions I Remember: a ::= z | x | a1+a2 | a1-a2 | a1*a2 ∈ AExp

9 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-15
SLIDE 15

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions I Remember: a ::= z | x | a1+a2 | a1-a2 | a1*a2 ∈ AExp Definition 2.2 (Evaluation relation for arithmetic expressions) If a ∈ AExp and σ ∈ Σ, then a, σ is called a configuration. Expression a evaluates to z ∈ Z in state σ (notation: a, σ → z) if this relationship is derivable by means of the following rules: Axioms: z, σ → z

x, σ → σ(x)

Rules: a1, σ → z1

a2, σ → z2 a1+a2, σ → z

where z := z1 + z2

a1, σ → z1 a2, σ → z2 a1-a2, σ → z

where z := z1 − z2

a1, σ → z1 a2, σ → z2 a1*a2, σ → z

where z := z1 · z2

9 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-16
SLIDE 16

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-17
SLIDE 17

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

(x+3)*(y-2), σ →

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-18
SLIDE 18

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

x+3, σ → y-2, σ → (x+3)*(y-2), σ → a1, σ → z1 a2, σ → z2 a1*a2, σ → z

where z := z1 · z2

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-19
SLIDE 19

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

x, σ → 3, σ → x+3, σ → y-2, σ → (x+3)*(y-2), σ → a1, σ → z1 a2, σ → z2 a1+a2, σ → z

where z := z1 + z2

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-20
SLIDE 20

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

x, σ → 3 3, σ → x+3, σ → y-2, σ → (x+3)*(y-2), σ → x, σ → σ(x)

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-21
SLIDE 21

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

x, σ → 3 3, σ → 3 x+3, σ → y-2, σ → (x+3)*(y-2), σ → z, σ → z

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-22
SLIDE 22

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

x, σ → 3 3, σ → 3 x+3, σ → 6 y-2, σ → (x+3)*(y-2), σ → a1, σ → z1 a2, σ → z2 a1+a2, σ → z

where z := z1 + z2

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-23
SLIDE 23

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

x, σ → 3 3, σ → 3 x+3, σ → 6 y, σ → 2, σ → y-2, σ → (x+3)*(y-2), σ → a1, σ → z1 a2, σ → z2 a1-a2, σ → z

where z := z1 − z2

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-24
SLIDE 24

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

x, σ → 3 3, σ → 3 x+3, σ → 6 y, σ → 9 2, σ → y-2, σ → (x+3)*(y-2), σ → x, σ → σ(x)

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-25
SLIDE 25

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

x, σ → 3 3, σ → 3 x+3, σ → 6 y, σ → 9 2, σ → 2 y-2, σ → (x+3)*(y-2), σ → z, σ → z

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-26
SLIDE 26

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

x, σ → 3 3, σ → 3 x+3, σ → 6 y, σ → 9 2, σ → 2 y-2, σ → 7 (x+3)*(y-2), σ → a1, σ → z1 a2, σ → z2 a1-a2, σ → z

where z := z1 − z2

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-27
SLIDE 27

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

x, σ → 3 3, σ → 3 x+3, σ → 6 y, σ → 9 2, σ → 2 y-2, σ → 7 (x+3)*(y-2), σ → 42 a1, σ → z1 a2, σ → z2 a1*a2, σ → z

where z := z1 · z2

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-28
SLIDE 28

Evaluation of Arithmetic Expressions Evaluation of Arithmetic Expressions II Example 2.3 a = (x+3)*(y-2), σ(x) = 3, σ(y) = 9:

x, σ → 3 3, σ → 3 x+3, σ → 6 y, σ → 9 2, σ → 2 y-2, σ → 7 (x+3)*(y-2), σ → 42

Here: structure of derivation tree = structure of program fragment (not generally true)

10 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-29
SLIDE 29

Evaluation of Arithmetic Expressions Free Variables I First formal result: value of an expression only depends on valuation of variables which occur (freely) in the expression

11 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-30
SLIDE 30

Evaluation of Arithmetic Expressions Free Variables I First formal result: value of an expression only depends on valuation of variables which occur (freely) in the expression Definition 2.4 (Free variables) The set of free variables of an expression is given by the function FV : AExp → 2Var where FV(z) := ∅ FV(a1+a2) := FV(a1) ∪ FV(a2) FV(x) := {x} FV(a1-a2) := FV(a1) ∪ FV(a2) FV(a1*a2) := FV(a1) ∪ FV(a2)

11 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-31
SLIDE 31

Evaluation of Arithmetic Expressions Free Variables I First formal result: value of an expression only depends on valuation of variables which occur (freely) in the expression Definition 2.4 (Free variables) The set of free variables of an expression is given by the function FV : AExp → 2Var where FV(z) := ∅ FV(a1+a2) := FV(a1) ∪ FV(a2) FV(x) := {x} FV(a1-a2) := FV(a1) ∪ FV(a2) FV(a1*a2) := FV(a1) ∪ FV(a2) Result will be shown by structural induction on the expression

11 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-32
SLIDE 32

Excursus: Proof by Structural Induction Outline of Lecture 2 Recap: Syntax of WHILE Operational Semantics of WHILE Evaluation of Arithmetic Expressions Excursus: Proof by Structural Induction Evaluation of Boolean Expressions

12 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-33
SLIDE 33

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction I Proof principle Given: an inductive set, i.e., a set S whose elements are either

  • atomic or
  • obtained from atomic elements by (finite) application of certain operations

To show: property P(s) applies to every s ∈ S Proof: we verify: Induction base: P(s) holds for every atomic element s Induction hypothesis: assume that P(s1), P(s2) etc. Induction step: then also P(f(s1, . . . , sn)) holds for every operation f of arity n

13 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-34
SLIDE 34

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction I Proof principle Given: an inductive set, i.e., a set S whose elements are either

  • atomic or
  • obtained from atomic elements by (finite) application of certain operations

To show: property P(s) applies to every s ∈ S Proof: we verify: Induction base: P(s) holds for every atomic element s Induction hypothesis: assume that P(s1), P(s2) etc. Induction step: then also P(f(s1, . . . , sn)) holds for every operation f of arity n Remark: structural induction is a special case of well-founded induction

13 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-35
SLIDE 35

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction II Application: natural numbers (“mathematical induction”) Definition: N is the least set which

  • contains 0 and
  • contains n + 1 whenever n ∈ N

Induction base: P(0) holds Induction hypothesis: P(n) holds Induction step: P(n + 1) holds

14 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-36
SLIDE 36

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction II Application: natural numbers (“mathematical induction”) Definition: N is the least set which

  • contains 0 and
  • contains n + 1 whenever n ∈ N

Induction base: P(0) holds Induction hypothesis: P(n) holds Induction step: P(n + 1) holds Generalisation: complete (strong, course-of-values) induction

  • induction step: P(0), P(1), . . . , P(n) ⇒ P(n + 1)
  • corresponds to well-founded induction over natural numbers

14 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-37
SLIDE 37

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction III Example 2.5 (Mathematical induction) We prove that P(n) : n

i=1 i = n(n+1) 2

holds for every n ∈ N.

15 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-38
SLIDE 38

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction III Example 2.5 (Mathematical induction) We prove that P(n) : n

i=1 i = n(n+1) 2

holds for every n ∈ N. P(0) holds: 0

i=1 i = 0 = 0(0+1) 2

  • 15 of 22

Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-39
SLIDE 39

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction III Example 2.5 (Mathematical induction) We prove that P(n) : n

i=1 i = n(n+1) 2

holds for every n ∈ N. P(0) holds: 0

i=1 i = 0 = 0(0+1) 2

  • Assume P(n): n

i=1 i = n(n+1) 2

15 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-40
SLIDE 40

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction III Example 2.5 (Mathematical induction) We prove that P(n) : n

i=1 i = n(n+1) 2

holds for every n ∈ N. P(0) holds: 0

i=1 i = 0 = 0(0+1) 2

  • Assume P(n): n

i=1 i = n(n+1) 2

Show P(n + 1): n+1

i=1 i = n i=1 i + (n + 1)

15 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-41
SLIDE 41

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction III Example 2.5 (Mathematical induction) We prove that P(n) : n

i=1 i = n(n+1) 2

holds for every n ∈ N. P(0) holds: 0

i=1 i = 0 = 0(0+1) 2

  • Assume P(n): n

i=1 i = n(n+1) 2

Show P(n + 1): n+1

i=1 i = n i=1 i + (n + 1)

= n(n+1)

2

+ (n + 1)

15 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-42
SLIDE 42

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction III Example 2.5 (Mathematical induction) We prove that P(n) : n

i=1 i = n(n+1) 2

holds for every n ∈ N. P(0) holds: 0

i=1 i = 0 = 0(0+1) 2

  • Assume P(n): n

i=1 i = n(n+1) 2

Show P(n + 1): n+1

i=1 i = n i=1 i + (n + 1)

= n(n+1)

2

+ (n + 1) = n(n+1)

2

+ 2(n+1)

2

15 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-43
SLIDE 43

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction III Example 2.5 (Mathematical induction) We prove that P(n) : n

i=1 i = n(n+1) 2

holds for every n ∈ N. P(0) holds: 0

i=1 i = 0 = 0(0+1) 2

  • Assume P(n): n

i=1 i = n(n+1) 2

Show P(n + 1): n+1

i=1 i = n i=1 i + (n + 1)

= n(n+1)

2

+ (n + 1) = n(n+1)

2

+ 2(n+1)

2

= (n+2)(n+1)

2

15 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-44
SLIDE 44

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction III Example 2.5 (Mathematical induction) We prove that P(n) : n

i=1 i = n(n+1) 2

holds for every n ∈ N. P(0) holds: 0

i=1 i = 0 = 0(0+1) 2

  • Assume P(n): n

i=1 i = n(n+1) 2

Show P(n + 1): n+1

i=1 i = n i=1 i + (n + 1)

= n(n+1)

2

+ (n + 1) = n(n+1)

2

+ 2(n+1)

2

= (n+2)(n+1)

2

= (n+1)((n+1)+1)

2

  • 15 of 22

Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-45
SLIDE 45

Excursus: Proof by Structural Induction Excursus: Proof by Structural Induction IV Application: arithmetic expressions (Def. 2.1) Definition: AExp is the least set which

  • contains all integers z ∈ Z and all variables x ∈ Var and
  • contains a1+a2, a1-a2 and a1*a2 whenever a1, a2 ∈ AExp

Induction base: P(z) and P(x) holds (for every z ∈ Z and x ∈ Var) Induction hypothesis: P(a1) and P(a2) holds Induction step: P(a1+a2), P(a1-a2) and P(a1*a2) holds

16 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-46
SLIDE 46

Excursus: Proof by Structural Induction Free Variables II Lemma 2.6 Let a ∈ AExp and σ, σ′ ∈ Σ such that σ(x) = σ′(x) for every x ∈ FV(a). Then, for every z ∈ Z,

a, σ → z ⇐ ⇒ a, σ′ → z.

17 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-47
SLIDE 47

Excursus: Proof by Structural Induction Free Variables II Lemma 2.6 Let a ∈ AExp and σ, σ′ ∈ Σ such that σ(x) = σ′(x) for every x ∈ FV(a). Then, for every z ∈ Z,

a, σ → z ⇐ ⇒ a, σ′ → z.

Proof. by structural induction on a (on the board)

17 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-48
SLIDE 48

Evaluation of Boolean Expressions Outline of Lecture 2 Recap: Syntax of WHILE Operational Semantics of WHILE Evaluation of Arithmetic Expressions Excursus: Proof by Structural Induction Evaluation of Boolean Expressions

18 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-49
SLIDE 49

Evaluation of Boolean Expressions Evaluation of Boolean Expressions I

Definition 2.7 ((Strict) evaluation relation for Boolean expressions) For b ∈ BExp, σ ∈ Σ, and t ∈ B, the evaluation relation b, σ → t is defined by:

t, σ → t a1, σ → z a2, σ → z a1=a2, σ → true a1, σ → z1 a2, σ → z2 a1=a2, σ → false

if z1 = z2

a1, σ → z1 a2, σ → z2 a1>a2, σ → true

if z1 > z2

a1, σ → z1 a2, σ → z2 a1>a2, σ → false

if z1 ≤ z2

b, σ → false ¬b, σ → true b, σ → true ¬b, σ → false b1, σ → true b2, σ → true b1 ∧ b2, σ → true b1, σ → true b2, σ → false b1 ∧ b2, σ → false b1, σ → false b2, σ → true b1 ∧ b2, σ → false b1, σ → false b2, σ → false b1 ∧ b2, σ → false

(∨ analogously)

19 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-50
SLIDE 50

Evaluation of Boolean Expressions Evaluation of Boolean Expressions II Remarks:

  • Binary Boolean operators ∧ and ∨ are interpreted as strict, i.e., always evaluate both

arguments. Important in situations like

while p <> nil and p^.key < val do ...!

(see following slides for alternatives)

20 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-51
SLIDE 51

Evaluation of Boolean Expressions Evaluation of Boolean Expressions II Remarks:

  • Binary Boolean operators ∧ and ∨ are interpreted as strict, i.e., always evaluate both

arguments. Important in situations like

while p <> nil and p^.key < val do ...!

(see following slides for alternatives)

  • FV : BExp → 2Var can be defined in analogy to Def. 2.4.

20 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-52
SLIDE 52

Evaluation of Boolean Expressions Evaluation of Boolean Expressions II Remarks:

  • Binary Boolean operators ∧ and ∨ are interpreted as strict, i.e., always evaluate both

arguments. Important in situations like

while p <> nil and p^.key < val do ...!

(see following slides for alternatives)

  • FV : BExp → 2Var can be defined in analogy to Def. 2.4.
  • Lemma 2.6 holds analogously for Boolean expressions, i.e., the value of b ∈ BExp does not

depend on variables in Var \ FV(b).

20 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-53
SLIDE 53

Evaluation of Boolean Expressions Evaluation of Boolean Expressions III Definition 2.8 (Sequential evaluation of Boolean expressions) For b ∈ BExp, σ ∈ Σ, and t ∈ B, the sequential evaluation relation b, σ → t is defined by the following rules (truth values/relational expressions/negation as before): . . .

b1, σ → false b1 ∧ b2, σ → false b1, σ → true b2, σ → t b1 ∧ b2, σ → t b1, σ → true b1 ∨ b2, σ → true b1, σ → false b2, σ → t b1 ∨ b2, σ → t

21 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-54
SLIDE 54

Evaluation of Boolean Expressions Evaluation of Boolean Expressions III Definition 2.8 (Sequential evaluation of Boolean expressions) For b ∈ BExp, σ ∈ Σ, and t ∈ B, the sequential evaluation relation b, σ → t is defined by the following rules (truth values/relational expressions/negation as before): . . .

b1, σ → false b1 ∧ b2, σ → false b1, σ → true b2, σ → t b1 ∧ b2, σ → t b1, σ → true b1 ∨ b2, σ → true b1, σ → false b2, σ → t b1 ∨ b2, σ → t

Remarks: yields same result as strict evaluation for our simple language

  • (Boolean) expressions have no side effects (assignments, exceptions, ...)
  • evaluation always terminates

21 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)

slide-55
SLIDE 55

Evaluation of Boolean Expressions Evaluation of Boolean Expressions IV Definition 2.9 (Parallel evaluation of Boolean expressions) For b ∈ BExp, σ ∈ Σ, and t ∈ B, the parallel evaluation relation b, σ → t is defined by the following rules (truth values/relational expressions/negation as before): . . .

b1, σ → false b1 ∧ b2, σ → false b2, σ → false b1 ∧ b2, σ → false b1, σ → true b2, σ → true b1 ∧ b2, σ → true b1, σ → true b1 ∨ b2, σ → true b2, σ → true b1 ∨ b2, σ → true b1, σ → false b2, σ → false b1 ∨ b2, σ → false

22 of 22 Semantics and Verification of Software Summer Semester 2019 Lecture 2: Operational Semantics of WHILE I (Evaluation of Expressions)