programming language semantics mooly sagiveran yahav msagiv@postmsagiv@postyahave@post schrirber...

35
Programming Language Semantics Mooly Sagiv Eran Yahav msagiv@post yahave@post Schrirber 317 Open space 03-640-7606 03-640-5358 html://www.cs.tau.ac.il/~msagiv/courses/ sem03.html Textbook:Winskel The Formal Semantics of Programming Languages

Post on 21-Dec-2015

220 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Programming Language Semantics

Mooly Sagiv Eran Yahavmsagiv@post yahave@postSchrirber 317 Open space03-640-7606 03-640-5358

html://www.cs.tau.ac.il/~msagiv/courses/sem03.html

Textbook:Winskel The Formal Semantics of Programming Languages

CS [email protected]

Page 2: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Outline• Course requirements• What is semantics• Who needs semantics• Forms of semantics• Tentative Plan• Introduction to operational semantics

Page 3: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Course Requirements• Prerequisites

– Compiler Course– Basic set theory and logic

• A theoretical course– Forms of induction– Domain theory– No algorithms

• Grade– Course Notes 10%– Assignments 60%

• Mostly theoretical with some programming

– Home exam 30%

Page 4: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Modern Programming Languages

• Imperative– PL/1– Pascal– C

• Object Oriented– C++– Java– C#

• Functional– Scheme– ML

• Logic– Prolog

Page 5: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Programming Languages• Syntax

– Which string is a legal program?

– Usually defined using context free grammar+ contextual constraints

• Semantics– What does a program mean?

– What is the output of the program on a given run?

– When does a runtime error occur?

– A formal definition

Page 6: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Benefits of Formal Semantics• Programming language design

– hard- to-define= hard-to-implement=hard-to-use

– Avoid design mistakes

• Programming language implementation– Compiler Correctness

• Correctness of program optimizations

• Design of Static Analysis

• Programming language understanding• Program correctness• Program equivalence• Automatic generation of interpreter• Techniques used in software engineering

Page 7: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Desired Features of PL Semantics

• Tractable– as simple as possible without losing the ability to express

behavior accurately

• Abstract– uncluttered by irrelevant detail

• Computational– an accurate abstraction from runtime behavior

• Compositional– The meaning of compound language construct is defined using

the meaning of subconstructs– Supports modular reasoning

Page 8: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Alternative Formal Semantics• Operational Semantics [Plotkin]

– The meaning of the program is described “operationally”

– Structural Operational Semantics

• Denotational Semantics [Strachey, Scott]– The meaning of the program is an input/output relation

• Axiomatic Semantics [Floyd, Hoare]– The meaning of the program is observed properties

– Proof rules to show that the program is correct

• Complement each other

Page 9: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Tentative Plan• A simple programming language IMP

– Structural operational Semantics of IMP– Denotational Semantics of IMP– [Axiomatic Semantics of IMP]– Non-Determinism and Parallelism

• Advanced programming languages– Java byte code

Page 10: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Chapter 2

Introduction to

Operational Semantics

Page 11: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

IMP: A Simple Imperative Language

• numbers N– Positive and negative numbers– n, m N

• truth values T={true, false}• locations Loc

– X, Y Loc• arithmetic Aexp

– a Aexp• boolean expressions Bexp

– b Bexp• commands Com

– c Com

Page 12: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

(3+5 ) 3 + 5

3 + 5 5+ 3

Abstract Syntax for IMP• Aexp

– a ::= n | X | a0 + a1 | a0 – a1 | a0 a1

• Bexp– b ::= true | false | a0 = a1 | a0 a1 | b | b0 b1

| b0 b1

• Com– c ::= skip | X := a | c0 ; c1 | if b then c0 else c1

| while b do c

2+34-5

(2+(34))-5 ((2+3)4))-5

Page 13: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Example Program

Y := 1;

while (X=1) do

Y := Y * X;

X := X - 1

Page 14: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

But what about semantics

Page 15: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Expression Evaluation • States

– Mapping locations to values - The set of states

: Loc N(X)= X=value of X in = [ X 5, Y 7]

– The value of X is 5– The value of Y is 7– The value of Z is undefined

– For a Exp, , n N,• <a, > n

– a is evaluated in to n

Page 16: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Evaluating (a0 + a1) at • Evaluate a0 to get a number n0 at

• Evaluate a1 to get a number n1 at

• Add n0 and n1

Page 17: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Expression Evaluation Rules

• Numbers– <n, > n

• Locations– <X, > (X)

• Sums

• Subtractions

• Products

10,10

1,1,0,0nnnwhere

naa

nana

10,10

1,1,0,0nnnwhere

naa

nana

10,10

1,1,0,0nnnwhere

naa

nana

Axiom

s

Page 18: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Derivations• A rule instance

– Instantiating meta variables with corresponding values

632

3322

,

0,,0,

1232

4332

,

0,,0,

Page 19: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Derivation (Tree)

• Axioms in the leafs• Rule instances at

internal nodes

0Init 0 , 55 0 , 77 0 , 99 0 ,

55)Init( 0 , 1697 0 ,

219)(75)Init( 0 ,

Page 20: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Computing a derivation

• We write <a, > n when there exists a derivation tree whose root is <a, > n

• Can be computed in a top-down manner• At every node try all derivations “in parallel”

0Init 0 , 55 0 , 77 0 , 99 0 ,

?5)Init( 0 , ?97 0 ,

?9)(75)Init( 0 ,

5 16

21

Page 21: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Recap

• Operational Semantics– The rules can be implemented easily– Define interpreter

• Structural Operational Semantics– Syntax directed

• Natural semantics

Page 22: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Equivalence of IMP expressions

a0 a1 iff

nanaNn ,,. 10

Page 23: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Boolean Expression Evaluation Rules• <true, > true• <false, > false

mnifaa

mana

true

,10

,1,,0

mnifaa

mana

false

,10

,1,,0

mnifaa

mana

true,10

,1,,0

mnnotifaa

mana

true

,10

,1,,0

Page 24: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Boolean Expression Evaluation Rules(cont)

otherwisetand

whentwhere 10

,10

,1,0,0 1

false

truetrue

tt

tbb

tbtb

false

true

,

,

b

b

true

false

,

,

b

b

otherwisetand

whentwhere 10

,10

,1,0,0 1

true

falsefalse

tt

tbb

tbtb

Page 25: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Equivalence of Boolean expressions

b0 b1 iff

tbtbTt ,,. 10

Page 26: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Extensions

• Shortcut evaluation of Boolean expressions

• “Parallell” evaluation of Boolean expressions

• Other data types

Page 27: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

The execution of commands• <c, > ’

– c terminates on in a final state ’

• Initial state 0

0(X)=0 for all X

• Handling assignments <X:=5, > ’•

XY

XYmYXm

if(Y)

if{)](/[

•<X:=5, > [5/X]

Page 28: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Rules for commands

• <skip, >

• Sequencing:

• Conditionals:

]/[: ,

,

XmaX

na

'

'

,10

,0,

ccb

cb

elsethenif

true

Atom

ic

'

'

,10

,1,

ccb

cb

elsethenif

false

'

'''1''1

,10

,,

cc

cc

;

Page 29: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Rules for commands (while)

,

,

cb

b

dowhile

false

'

'''

,

,,

cb

cbb

dowhile

dowhile '' c, true

Page 30: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Example Program

Y := 1;

while (X=1) do

Y := Y * X;

X := X - 1

Page 31: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Equivalence of commands

c0 c1 iff

',',.', 10 cc

Page 32: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Proposition 2.8

while b do c if then (c; while b do c) else skip

Page 33: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Small Step Operational Semantics

• The natural semantics define evaluation in large steps– Abstracts “computation time”

• It is possible to define a small step operational semantics– <a, > 1 <a’, ’>

• “one” step of executing a in a state yields a’ in a state ’

Page 34: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Small Step Semantics for Additions

,101,10

,01,0

'

'

aaaa

aa

,11,1

,11,1

'

'

anan

aa

mnpwherepmn

,1,

Page 35: Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber 317Open space 03-640-760603-640-5358 html://msagiv/courses/sem03.html

Summary• Operational semantics enables to naturally

express program behavior• Can handle

– Non determinism– Concurrency– Procedures– Object oriented– Pointers and dynamically allocated structures

• But remains very closed to the implementation– Two programs which compute the same

functions are not necessarily equivalent