310 likes | 413 Views
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
E N D
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 CS 0368-4348-01@listserv.tau.ac.il
Outline • Course note summary • Natural operational semantics • Commands • Example • Proving simple properties • Small step operational semantics • The main ideas • Proving properties of programs (Chapter 3)
Course note summary • Word format • Add examples for every term • Add strawman examples • Self contained
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 c0elsec1| while b do c
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
Expression Evaluation Rules • Numbers • <n, > n • Locations • <X, > (X) • Sums • Subtractions • Products Axioms
Equivalence of IMP expressions iff a0 a1 2+3 ~ 5 exp1+ exp2 ~ exp2 + exp1
Boolean Expression Evaluation Rules • <true, > true • <false, > false
Equivalence of Boolean expressions iff b0b1
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, > ’ • <X:=5, > [5/X]
Rules for commands Atomic • <skip, > • Sequencing: • Conditionals:
Rules for commands (while) Euclid while (M=N) do if M N then N := N – M else M := M - N =[M6, N9]
Rules for commands (while) Loop while true do skip
Equivalence of commands iff c0c1
Proposition 2.8 while b do c if b then (c; while b do c) else skip
Theorem 3.10 For all states : (M) 1 & (N) 1 ’ : <Euclid, > ’
Small Step Operational Semantics • The natural semantics defines 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 ’
Small Step Semantics for Additions Homework
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
Induction • Proving of program properties often uses mathematical induction • Prove properties of a programming language by proving a small finite set of claims • If a property is violated then there is a small finite set in which it is violated • Examples • <a, > m & <a, > m m = n • Euclid terminates • <c, > ’ & <c, ’’> ’ = ’’
Forms of induction • Mathematical induction • (P(0) & (m w. P(m) P(m+1))) m w. P(m) • Structural induction • Well-founded induction
Structural Induction • Proposition 3.3 • <a, > m & <a, > m m = n • Bad example • <c, > ’ & <c, > ’’ ’ = ’’
Well-Founded Induction • A well-founded relation on a set A if • there are no infinite decreasing chains • … ai … a2 a1 • a b • a is a predecessor of b • Proposition 3.7 a binary relation on A is well-founded iffany nonempty subset Q of A has a minimal element, m Q: b m. b Q
The Principle of Well Founded Induction • is a well founded relation on A • P is property • Then • a A: P(a) • Iff • a A: ([b a. P(b)] P(a)
Applications of the well founded induction principle • Mathematical induction • Course-of-values induction • Structural induction • …
Induction on Derivations • A set of rule instancesR consists pairs X/y where X is a finite set and y is an element • X/y – rule instance • X – premises • y – conclusion • d R y – d is an R-derivation of y • (/y) R y if (/y) R • ({d1, …, dn}/y) R y if ({x1, …, xn}/y) R andd1 R x1 & … & dn R xn • R y – for some d d R y • Sub-derivation d 1 d’ if d(D/y) with d’ D • = 1+ • is well-founded
Theorem 3.10 For all states : (M) 1 & (N) 1 ’ : <Euclid, > ’
Theorem 3.11 • For all states ,’, ’’: • <c, > ’ & <c, > ’’ ’ = ’’
Proposition 3.12 For all states ,’: <while true do skip, > ’
Summary • Induction is a powerful tool in proving semantic properties • Can also be used in definitions • length(a)= # of operators in a • LocL(c) = left-hand-side variables • Lval(a) • Rval(a)