Programming Language Semantics
310 likes | 425 Vues
This course provides an in-depth exploration of programming language semantics, focusing on natural operational semantics. Key topics include commands, expression evaluation, abstract syntax for IMP, small-step operational semantics, and proofs of program properties. Students will learn to handle non-determinism, concurrency, and object-oriented programming while employing mathematical and structural induction for program verification. The course also emphasizes the importance of operational semantics in expressing program behavior and understanding its implications.
Programming Language Semantics
E N D
Presentation Transcript
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)