Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 655: Programming Languages David Evans Office 236A, 982-2218 University of Virginia Computer.

Similar presentations


Presentation on theme: "CS 655: Programming Languages David Evans Office 236A, 982-2218 University of Virginia Computer."— Presentation transcript:

1

2 CS 655: Programming Languages David Evans Office 236A, 982-2218 evans@cs.virginia.edu http://www.cs.virginia.edu/~evans University of Virginia Computer Science Lecture 2: Operational Semantics “Then you should say what you mean,” the March Hare went on. “I do,” Alice hastily replied; “at least – at least I mean what I say – that’s the same thing, you know.” “Not the same thing a bit!” said the Hatter. “Why, you might as well say that ‘I see what I eat’ is the same thing as ‘I eat what I see’!" Lewis Carrol, Alice in Wonderland “When I use a word,” Humpty Dumpty said, in a rather scornful tone, “it means just what I choose it to mean – neither more nor less.” Lewis Carroll, Through the Looking Glass

3 27 Jan 2000CS 655: Lecture 22 Menu Survey Summary Position Papers Results Intro to Formal Semantics Operational Semantics

4 27 Jan 2000CS 655: Lecture 23 Students’ Experience C- 92.5 years, C++ - 78, BASIC 64, Pascal – 45, Java - 26.5, assemblies – 26, FORTRAN – 22, LISP – 17, Perl – 14.5 Ada, ADAMS, Common LISP, Delphi, Elf, Forth, Haskell, HP Calculator, Hypertalk, JavaScript (large system for DOD!), ksh, LOGO, ML, nawk, ObjectPal, Python, Prolog, REBOL, Relay Ladder Logic, Sather, Scheme, Smalltalk, SQL, Tcl/Tk

5 27 Jan 2000CS 655: Lecture 24 No  +, 5  + 2 (= = 1.4…) Our not favorite languages: BASIC (1)C (8 - 1) C++ (3)FORTRAN (2) Java (8 - 2)Perl (2 - 2) Good papers had to get at underlying issues, not just symptoms Some misconceptions about GC Position Paper 1

6 27 Jan 2000CS 655: Lecture 25 Project Teams You have until noon Monday to submit team requests Use the discussion board if you are looking for teammates (link off ~cs655 page)

7 27 Jan 2000CS 655: Lecture 26 Formal Semantics

8 27 Jan 2000CS 655: Lecture 27 What does a program mean? Compile and run –Implementation dependencies –Not useful for reasoning Informal Semantics –Natural language description of PL Formal Semantics –Description in terms of notation with formally understood meaning

9 27 Jan 2000CS 655: Lecture 28 Why not informal semantics? Two types have compatible types if their types are the same [footnote: Two types need not be identical to be compatible.]. ANSI C Standard, 3.1.2.6

10 27 Jan 2000CS 655: Lecture 29 Formal Semantics Approaches Operational –Map to execution of a virtual machine –Easier to understand, harder to reason about –Depends on informal understanding of machine Denotational –Map parts to mathematical meanings, rules for composing meanings of pieces –Harder to understand, easier to reason about –Depends on informal understanding of mathematics Lots of others: Algebraic, Translator, etc.

11 27 Jan 2000CS 655: Lecture 210 A Toy Language: BARK Program ::= Instruction*Program is a sequence of instructions Instructions are numbered from 0. Instruction ::= STORE Loc Literal Loc gets the value of Literal | ADD Loc 1 Loc 2 Loc 1 gets the value of Loc 1 + Loc 2 | MUL Loc 1 Loc 2 Loc 1 gets the value of Loc 1 * Loc 2 | HALT Stop program execution, answer in R0 | ERROR Stop program execution, error | GOTO LocJump to instruction corresponding to value in Loc. | IF Loc 1 THEN Loc 1 If value in Loc 1 is non-zero, jump to instruction corresponding to value in Loc 2. Loc ::= R[ - ] ? [ 0 - 9 ][ 0 - 9 ]* Literal ::= [ - ] ? [ 0 - 9 ][ 0 - 9 ]* (Beginner’s All-Purpose Register Kode)

12 27 Jan 2000CS 655: Lecture 211 A BARK Program [0]STORE R0 1 [1]STORE R1 10 [3]STORE R2 –1 [4] STORE R3 6 [5] STORE R4 8 [6]IF R1 THEN R4 [7]HALT [8] MUL R0 R1 [9]ADD R1 R2 [10]GOTO R3

13 27 Jan 2000CS 655: Lecture 212 Operational Semantics Game Input Function Abstract Machine Initial Configuration Final Configuration Output Function Answer Intermediate Configuration Intermediate Configuration Transition Rules Real World Program

14 27 Jan 2000CS 655: Lecture 213 Structured Operational Semantics SOS for a language is five-tuple: C Set of configurations for an abstract machine  Transition relation (subset of C x C ) I Program  C (input function) F Set of final configurations OF  Answer(output function)

15 27 Jan 2000CS 655: Lecture 214 Abstract Machine: Register Virtual Machine (RVM) Configuration defined by: –Array of Instructions –Program counter –Values in registers (any integer) C = Instructions x PC x RegisterFile Instruction[0] Instruction[1] Instruction[2] …. Instruction[-1] …. PC Register[0] Register[1] Register[2] …. Register[-1] ….

16 27 Jan 2000CS 655: Lecture 215 Input Function: I : Program  C C = Instructions x PC x RegisterFile where For a Program with n instructions numbered from 0 to n - 1: Instructions[m] = Program[m] for m >= 0 && m < n Instructions[m] = ERROR otherwise PC = 0 RegisterFile[n] = 0 for all integers n

17 27 Jan 2000CS 655: Lecture 216 Final Configurations F = Instructions x PC x RegisterFile where Instructions[PC] = HALT Output Function O : F  Answer Answer = value in RegisterFile[0]

18 27 Jan 2000CS 655: Lecture 217 Operational Semantics Game Input Function Abstract Machine Initial Configuration Final Configuration Output Function Answer Intermediate Configuration Intermediate Configuration Transition Rules Real World Program

19 27 Jan 2000CS 655: Lecture 218 Form of Transition Rules Antecedents c  c ’ Where c is a member of C.

20 27 Jan 2000CS 655: Lecture 219 STORE Loc Literal Instructions[PC] = STORE Loc Literal  where PC’ = PC + 1 RegisterFile’[n] = RegisterFile[n] if n  Loc RegisterFile’[n] = value of Literal if n  Loc

21 27 Jan 2000CS 655: Lecture 220 ADD Loc 1 Loc 2 Instructions[PC] = ADD Loc 1 Loc 2  where PC’ = PC + 1 RegisterFile’[n] = RegisterFile[n] if n  Loc RegisterFile’[n] = RegisterFile[Loc 2 ] if n  Loc 1

22 27 Jan 2000CS 655: Lecture 221 GOTO Loc Instructions[PC] = GOTO Loc  where PC’ = value in RegisterFile[Loc]

23 27 Jan 2000CS 655: Lecture 222 IF Loc 1 THEN Loc 2 Instructions[PC] = IF Loc 1 THEN Loc 2  where PC’ = value in RegisterFile[Loc 2 ] if Loc 1 is non-zero PC’ = PC + 1 otherwise

24 27 Jan 2000CS 655: Lecture 223 What’s it good for? Understanding programs Write a compiler or interpreter (?) Prove properties about programs and languages

25 27 Jan 2000CS 655: Lecture 224 Variation: BARK-forward Same as BARK except: GOTO LocJump forward Loc instructions. Loc must be positive. | IF Loc 1 THEN Loc 2 If value in Loc 1 is non-zero, jump forward value in Loc 2. instructions. Loc 2 must be positive.

26 27 Jan 2000CS 655: Lecture 225 GOTO Loc Instructions[PC] = GOTO Loc  where PC’ = value in RegisterFile[Loc] BARK: Instructions[PC] = GOTO Loc,value in Loc > 0  where PC’ = PC + value in RegisterFile[Loc]

27 27 Jan 2000CS 655: Lecture 226 Proving Termination Idea: Prove by Induction –Define a function Energy: C  positive integer –Show Energy of all Initial Configurations is finite –Show there are no transitions from a configuration with Energy = 0 –If C  C’ is a valid transition step, Energy of C’ must be less than Energy of C

28 27 Jan 2000CS 655: Lecture 227 Energy Function Energy: C  positive integer C = Energy = h – PC where h is an integer such that Instructions[k] = error for all k >= h

29 27 Jan 2000CS 655: Lecture 228 Initial Configurations For all Initial Configurations C, Energy is finite. Consider Input Function: C = Instructions x PC x RegisterFile where For a Program with n instructions numbered from 0 to n - 1: Instructions[m] = Program[m] for m >= 0 && m < n Instructions[m] = ERROR otherwise PC = 0 RegisterFile[n] = 0 for all integers n

30 27 Jan 2000CS 655: Lecture 229 Initial Configuration Energy Energy ( C ) = n where n is number of program instructions PC = 0 Instruction[m] = ERROR for m >= n

31 27 Jan 2000CS 655: Lecture 230 Energy = 0  Terminated Energy = h – PC where h is an integer such that Instructions[k] = error for all k >= h so, Energy = 0  h = PC and Instructions[PC] = ERROR No transitions for configuration where Instructions[PC] = ERROR

32 27 Jan 2000CS 655: Lecture 231 STORE reduces Energy Instructions[PC] = STORE Loc Literal  where PC’ = PC + 1 RegisterFile’[n] = RegisterFile[n] if n  Loc RegisterFile’[n] = value of Literal if n  Loc Energy ( ) =h – PC Energy ( ) = h – (PC + 1) h depends only on Instructions, doesn’t change Therefore: Energy’ < Energy

33 27 Jan 2000CS 655: Lecture 232 GOTO reduces Energy Instructions[PC] = GOTO Loc,value in Loc > 0  where PC’ = PC + value in RegisterFile[Loc] Energy( ) = h - PC Energy( ) = h – (PC + RegisterFile[Loc]) but antecedent says RegisterFile[Loc] > 0, so PC + RegisterFile[Loc] > PC and Energy’ < Energy.

34 27 Jan 2000CS 655: Lecture 233 To complete proof… Show the same for every transition rule. Then: –Start with finite energy, –Every transition reduces energy, –Energy must eventually reach 0. –And energy 0 means we terminated. Minor flaw? could skip 0 (e.g., Energy = –1)

35 27 Jan 2000CS 655: Lecture 234 Charge Problem Set 1: –Develop Operational Semantics for simplified PostFix using RVM –Prove termination property Final project team requests by Monday Next time: –Projects –Discuss Wenger paper: come to class prepared to discuss how well his milestones work today


Download ppt "CS 655: Programming Languages David Evans Office 236A, 982-2218 University of Virginia Computer."

Similar presentations


Ads by Google