Programming language semantics
Download
1 / 31

Programming Language Semantics - PowerPoint PPT Presentation


  • 83 Views
  • Uploaded on

Programming Language Semantics. Mooly Sagiv Eran Yahav [email protected] [email protected] 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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Programming Language Semantics ' - lelia


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Programming language semantics

Programming Language Semantics

Mooly Sagiv Eran Yahav

[email protected] [email protected]

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 [email protected]


Outline
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
Course note summary

  • Word format

  • Add examples for every term

  • Add strawman examples

  • Self contained


Abstract syntax for imp
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
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
Expression Evaluation Rules

  • Numbers

    • <n, >  n

  • Locations

    • <X, > (X)

  • Sums

  • Subtractions

  • Products

Axioms


Equivalence of imp expressions
Equivalence of IMP expressions

iff

a0 a1

2+3 ~ 5

exp1+ exp2 ~ exp2 + exp1


Boolean expression evaluation rules
Boolean Expression Evaluation Rules

  • <true, >  true

  • <false, >  false




The execution of commands
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
Rules for commands

Atomic

  • <skip, >  

  • Sequencing:

  • Conditionals:


Rules for commands while
Rules for commands (while)

Euclid  while (M=N) do

if M  N

then N := N – M

else M := M - N

=[M6, N9]


Rules for commands while1
Rules for commands (while)

Loop  while true do skip



Proposition 2 8
Proposition 2.8

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


Theorem 3 10
Theorem 3.10

For all states :

(M)  1 & (N) 1  ’ : <Euclid, > ’


Small step operational semantics
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 ’



Summary
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
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
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
Structural Induction

  • Proposition 3.3

    • <a, >  m & <a, >  m  m = n

  • Bad example

    • <c, >  ’ & <c, >  ’’  ’ = ’’


Well founded induction
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
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
Applications of the well founded induction principle

  • Mathematical induction

  • Course-of-values induction

  • Structural induction


Induction on derivations
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 101
Theorem 3.10

For all states :

(M)  1 & (N) 1  ’ : <Euclid, > ’


Theorem 3 11
Theorem 3.11

  • For all states ,’, ’’:

    • <c, >  ’ & <c, >  ’’  ’ = ’’


Proposition 3 12
Proposition 3.12

For all states ,’:

<while true do skip, >  ’


Summary1
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)


ad