CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When...

25
CS477 Formal Software Development Methods Elsa L Gunter 2112 SC, UIUC [email protected] http://courses.engr.illinois.edu/cs477 Slides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 Elsa L Gunter () CS477 Formal Software Development Methods Slides based in part on previous lectures by M /1

Transcript of CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When...

Page 1: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

CS477 Formal Software Development Methods

Elsa L Gunter2112 SC, UIUC

[email protected]://courses.engr.illinois.edu/cs477

Slides based in part on previous lectures by Mahesh Vishwanathan, andby Gul Agha

March 21, 2014

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 1

/ 1

Page 2: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Simple Imperative Programming Language #2

I ∈ Identifiers

N ∈ Numerals

E ::= N | I | E + E | E ∗ E | E − E | I ::= E

B ::= true | false | B&B | B or B | not B

| E < E | E = E

C ::= skip | C ; C | {C} | E

| if B then C else C fi

| while B do C

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 2

/ 1

Page 3: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Transition Semantics

Aka “small step semantics” or “Structured Operational Semantics”

Defines a relation of “one step” of computation, instead of completeevaluation

Determines granularity of atomic computations

Typically have two kinds of “result”: configurations and final values

Written (C ,m)→ (C ′,m′) or (C ,m)→ m′

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 3

/ 1

Page 4: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Simple Imperative Programming Language #1 (SIMPL1)

I ∈ Identifiers

N ∈ Numerals

E ::= N | I | E + E | E ∗ E | E − E

B ::= true | false | B&B | B or B | not B

| E < E | E = E

C ::= skip | C ; C | {C} | I ::= E

| if B then C else C fi

| while B do C

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 4

/ 1

Page 5: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Commands - in English

skip means done evaluating

When evaluating an assignment, evaluate expression first

If the expression being assigned is a value, update the memory withthe new value for the identifier

When evaluating a sequence, work on the first command in thesequence first

If the first command evaluates to a new memory (ie completes),evaluate remainder with new memory

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 5

/ 1

Page 6: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Commands

Skip: (skip,m) −→ m

Assignment:(E ,m) −→ (E ′,m)

(I ::= E ,m) −→ (I ::= E ′,m)

(I ::= V ,m) −→ m[I ← V ]

Sequencing:(C ,m) −→ (C ′′,m′)

(C ; C ′,m) −→ (C ′′; C ′,m′)

(C ,m) −→ m′

(C ; C ′,m) −→ (C ′,m′)

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 6

/ 1

Page 7: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Block Command

Choice of level of granularity:

Choice 1: Open a block is a unit of work

({C},m) −→ (C ,m)

Choice 2: Blocks are syntactic sugar

(C ,m) −→ (C ′,m′)

({C},m) −→ (C ′,m′)

(C ,m) −→ m′

({C},m) −→ m′

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 7

/ 1

Page 8: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

If Then Else Command - in English

If the boolean guard in an if then else is true, then evaluate thefirst branch

If it is false, evaluate the second branch

If the boolean guard is not a value, then start by evaluating it first.

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 8

/ 1

Page 9: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

If Then Else Command

(if true then C else C ′ fi,m) −→ (C ,m)

(if false then C else C ′ fi,m) −→ (C ′,m)

(B,m) −→ (B ′,m)

(if B then C else C ′ fi,m) −→ (if B ′ then C else C ′ fi,m)

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 9

/ 1

Page 10: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

While Command

(while B do C ,m)−→

(if B then C ; while B do C else skip fi,m)

In English: Expand a while into a test of the boolean guard, with thetrue case being to do the body and then try the while loop again, andthe false case being to stop.

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 10

/ 1

Page 11: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Example

(y := i; while i > 0 do {i := i - 1; y := y * i}, 〈i 7→ 3〉)

−→ ?

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 11

/ 1

Page 12: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Alternate Semantics for SIMPL1

Can mix Natural Semantics with Transition Semantics to get largeratomic computations

Use (E ,m) ⇓ v and (B,m) ⇓ b for arithmetics and booleanexpressions

Revise rules for commmands

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 12

/ 1

Page 13: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Revised Rules for SIMPL1

Skip: (skip,m) −→ m

Assignment:(E ,m) ⇓ v

(I ::= E ,m)−→ m[I ← V ]

Sequencing:(C ,m) −→ (C ′′,m′)

(C ; C ′,m) −→ (C ′′; C ′,m′)

(C ,m) −→ m′

(C ; C ′,m) −→ (C ′,m′)

Blocks:(C ,m) −→ (C ′,m′)

({C},m) −→ (C ′,m′)

(C ,m) −→ m′

({C},m) −→ m′

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 13

/ 1

Page 14: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

If Then Else Command

(B,m) ⇓ true

(if B then C else C ′ fi,m) −→ (C ,m)

(B,m) ⇓ false

(if B then C else C ′ fi,m) −→ (C ′,m)

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 14

/ 1

Page 15: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

While Command

(B,m) ⇓ true

(while B do C ,m) −→ (C ; while B do C ,m)

(B,m) ⇓ false

(while B do C ,m) −→ m

Other more fine grained options exist (eg rule given before)

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 15

/ 1

Page 16: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Transition Semantics for SIMPL2?

What are the choices and consequences for giving a transitionsemantics for the Simple Concurrent Imperative ProgrammingLanguage #2, SIMP2?

For finest grain transitions, summary:

Each rule for aritmetic or boolean expression must propagate changesto memory; instead of transitioning to a value, go to a value - memorypair

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 16

/ 1

Page 17: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Transition Semantics for SIMPL2

Second assignment rule returns value:

(I ::= V ,m) −→ (V ,m[I ← V ])

Expressions as commands need two rules:

(E ,m) −→ (E ′,m′)

(E ,m) −→ (E ′,m′)

(E ,m) −→ (V ,m′)

(E ,m) −→ m′

Exp. as Comm.:(E ,m) −→ (E ′,m′)

(E ,m) −→ (E ′,m)

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 17

/ 1

Page 18: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Simple Concurrent Imperative Programming Language(SCIMP1)

I ∈ Identifiers

N ∈ Numerals

E ::= N | I | E + E | E ∗ E | E − E

B ::= true | false | B&B | B or B | not B

| E < E | E = E

C ::= skip | C ; C | {C} | I ::= E | C‖C ′

| if B then C else C fi

| while B do C

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 18

/ 1

Page 19: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Semantics for ‖

C1‖C2 means that the actions of C1 and done at the same time as,“in parallel” with, those of C2

True parallelism hard to model; must handle collisions on resources

What is the meaning ofx := 1‖ x := 0

True parallelism exists in real world, so important to model correctly

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 19

/ 1

Page 20: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Interleaving Semantics

Weaker alternative: interleving semantics

Each process gets a turn to commit some atomic steps; no presetorder of turns, no preset number of actions

No collision for x := 1‖ x := 0

Yields only 〈x 7→ 1〉 and 〈x 7→ 0〉; no collision

No simultaneous substitution: x := y‖ y := x results in x and y havingthe same value; not in swapping their values.

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 20

/ 1

Page 21: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Coarse-Grained Interleaving Semantics for SCIMPL1Commands

Skip, Assignment, Sequencing, Blocks, If Then Else, While unchanged

Need rules for ‖

(C1,m) −→ (C ′1,m

′)

(C1‖C2,m) −→ (C ′1‖C2,m

′)

(C1,m) −→ m′

(C1‖C2,m) −→ (C2,m′)

(C2,m) −→ (C ′2,m

′)

(C1‖C2,m) −→ (C1‖C ′2,m

′)

(C2,m) −→ m′

(C1‖C2,m) −→ (C1,m′)

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 21

/ 1

Page 22: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Simple Concurrent Imperative Programming Language #2(SCIMP2)

I ∈ Identifiers

N ∈ Numerals

E ::= N | I | E + E | E ∗ E | E − E

B ::= true | false | B&B | B or B | not B

| E < E | E = E

C ::= skip | C ; C | {C} | I ::= E | C‖C ′ | sync(E )

| if B then C else C fi

| while B do C

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 22

/ 1

Page 23: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Informal Semantics of sync

sync(E ) evaluates E to a value v

Waits for another parallel command waiting to synchronize on v

When two parallel commands are both waiting to synchronize on avalue v , they may both stop waiting, move past the synchronization,and carry on with whatever commands they each have left

Only two processes may synchronize at a time (in this version).

Problem: How to formalize?

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 23

/ 1

Page 24: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Labeled Transition System (LTS)

A labeled tranistion system (LTS) is a 4-tuple (Q,Σ, δ, I )where

Q set of statesQ finite or countably infinite

Σ set of labels (aka actions)Σ finite or countably infinite

δ ⊆ Q × Σ× Q transition relation

I ⊆ Q initial states

Note: Write qα−→ q′ for (q, α, q′) ∈ δ.

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 24

/ 1

Page 25: CS477 Formal Software Development MethodsCommands - in English skip means done evaluating When evaluating an assignment, evaluate expression rst If the expression being assigned is

Example: Candy Machine

Q = {Start,Select,GetMarsBar,GetKitKatBar}I = {Start}Σ = {Pay,ChooseMarsBar,ChooseKitKatBar,TakeCandy}

δ =

(Start,Pay,Select)(Select,ChooseMarsBar,GetMarsBar)(Select,ChooseKitKatBar,GetKitKatBar)(GetMarsBar,TakeCandy,Start)(GetKitKatBar,TakeCandy,Start)

Elsa L Gunter () CS477 Formal Software Development MethodsSlides based in part on previous lectures by Mahesh Vishwanathan, and by Gul Agha March 21, 2014 25

/ 1