Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber...
-
date post
21-Dec-2015 -
Category
Documents
-
view
216 -
download
1
Transcript of Programming Language Semantics Mooly SagivEran Yahav msagiv@postmsagiv@postyahave@post Schrirber...
![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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/1.jpg)
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
![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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/2.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/3.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/4.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/5.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/6.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/7.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/8.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/9.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/10.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/11.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/12.jpg)
(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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/13.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/14.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/15.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/16.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/17.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/18.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/19.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/20.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/21.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/22.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/23.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/24.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/25.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/26.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/27.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/28.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/29.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/30.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/31.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/32.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/33.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/34.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032704/56649d565503460f94a33cd0/html5/thumbnails/35.jpg)
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