15 411 dynamic semantics
play

15-411: Dynamic Semantics Jan Ho ff mann Dynamic Semantics Static - PowerPoint PPT Presentation

15-411: Dynamic Semantics Jan Ho ff mann Dynamic Semantics Static semantics: definition of valid programs Dynamic semantics: definition of how programs are executed So far: Dynamic semantics is given in English on lab handouts This


  1. Example Evaluation ((4 + 5) ⇤ 10) + 2 · B (4 + 5) ⇤ 10 _ + 2 � ! B (4 + 5) ⇤ 10 _ + 2 � ! B 4 + 5 _ ⇤ 10 , _ + 2 � ! B 4 _ + 5 , _ ⇤ 10 , _ + 2 � ! B 5 4 + _ , _ ⇤ 10 , _ + 2 � ! B 9 _ ⇤ 10 , _ + 2 � ! B 10 9 ⇤ _ , _ + 2 � ! B 90 _ + 2 � ! B 2 90 + _ � ! B 92 · � ! B

  2. Example Evaluation ((4 + 5) ⇤ 10) + 2 · B (4 + 5) ⇤ 10 _ + 2 � ! B (4 + 5) ⇤ 10 _ + 2 � ! B 4 + 5 _ ⇤ 10 , _ + 2 � ! B 4 _ + 5 , _ ⇤ 10 , _ + 2 � ! B 5 4 + _ , _ ⇤ 10 , _ + 2 � ! B 9 _ ⇤ 10 , _ + 2 � ! B 10 9 ⇤ _ , _ + 2 � ! B 90 _ + 2 � ! B 2 90 + _ � ! B 92 · � ! B

  3. Example Evaluation ((4 + 5) ⇤ 10) + 2 · B (4 + 5) ⇤ 10 _ + 2 � ! B (4 + 5) ⇤ 10 _ + 2 � ! B 4 + 5 _ ⇤ 10 , _ + 2 � ! B 4 _ + 5 , _ ⇤ 10 , _ + 2 � ! B 5 4 + _ , _ ⇤ 10 , _ + 2 � ! B 9 _ ⇤ 10 , _ + 2 � ! B 10 9 ⇤ _ , _ + 2 � ! B 90 _ + 2 � ! B 2 90 + _ � ! B 92 · � ! B

  4. Example Evaluation ((4 + 5) ⇤ 10) + 2 · B (4 + 5) ⇤ 10 _ + 2 � ! B (4 + 5) ⇤ 10 _ + 2 � ! B 4 + 5 _ ⇤ 10 , _ + 2 � ! B 4 _ + 5 , _ ⇤ 10 , _ + 2 � ! B 5 4 + _ , _ ⇤ 10 , _ + 2 � ! B 9 _ ⇤ 10 , _ + 2 � ! B 10 9 ⇤ _ , _ + 2 � ! B 90 _ + 2 � ! B 2 90 + _ � ! B 92 · � ! B

  5. Example Evaluation ((4 + 5) ⇤ 10) + 2 · B (4 + 5) ⇤ 10 _ + 2 � ! B (4 + 5) ⇤ 10 _ + 2 � ! B 4 + 5 _ ⇤ 10 , _ + 2 � ! B 4 _ + 5 , _ ⇤ 10 , _ + 2 � ! B 5 4 + _ , _ ⇤ 10 , _ + 2 � ! B 9 _ ⇤ 10 , _ + 2 � ! B 10 9 ⇤ _ , _ + 2 � ! B 90 _ + 2 � ! B 2 90 + _ � ! B 92 · � ! B

  6. Example Evaluation ((4 + 5) ⇤ 10) + 2 · B (4 + 5) ⇤ 10 _ + 2 � ! B (4 + 5) ⇤ 10 _ + 2 � ! B 4 + 5 _ ⇤ 10 , _ + 2 � ! B 4 _ + 5 , _ ⇤ 10 , _ + 2 � ! B 5 4 + _ , _ ⇤ 10 , _ + 2 � ! B 9 _ ⇤ 10 , _ + 2 � ! B 10 9 ⇤ _ , _ + 2 � ! B 90 _ + 2 � ! B 2 90 + _ � ! B 92 · � ! B

  7. Example Evaluation ((4 + 5) ⇤ 10) + 2 · B (4 + 5) ⇤ 10 _ + 2 � ! B (4 + 5) ⇤ 10 _ + 2 � ! B 4 + 5 _ ⇤ 10 , _ + 2 � ! B 4 _ + 5 , _ ⇤ 10 , _ + 2 � ! B 5 4 + _ , _ ⇤ 10 , _ + 2 � ! B 9 _ ⇤ 10 , _ + 2 � ! B 10 9 ⇤ _ , _ + 2 � ! B 90 _ + 2 � ! B 2 90 + _ � ! B 92 · � ! B

  8. Example Evaluation ((4 + 5) ⇤ 10) + 2 · B (4 + 5) ⇤ 10 _ + 2 � ! B (4 + 5) ⇤ 10 _ + 2 � ! B 4 + 5 _ ⇤ 10 , _ + 2 � ! B 4 _ + 5 , _ ⇤ 10 , _ + 2 � ! B 5 4 + _ , _ ⇤ 10 , _ + 2 � ! B 9 _ ⇤ 10 , _ + 2 � ! B 10 9 ⇤ _ , _ + 2 � ! B 90 _ + 2 � ! B 2 90 + _ � ! B 92 · � ! B

  9. Evaluation Rules: End of and Evaluation If we reach a constant and the empty continuation then we stop value ( c ) c B · � !

  10. Evaluation Rules: Boolean Expressions e 1 B ( _ && e 2 , K ) e 1 && e 2 B K � ! B B � ! B B false B ( _ && e 2 , K ) false B K � ! B B � ! B B true B ( _ && e 2 , K ) e 2 B K � ! True and false are also values (We could also use 1 and 0 but distinguishing helps detect errors.)

  11. Evaluation Rules: Boolean Expressions e 1 B ( _ && e 2 , K ) e 1 && e 2 B K � ! B B � ! B B Notice the short- false B ( _ && e 2 , K ) false B K � ! cutting. B B � ! B B true B ( _ && e 2 , K ) e 2 B K � ! True and false are also values (We could also use 1 and 0 but distinguishing helps detect errors.)

  12. Variables and Environments How do we evaluate variable?

  13. Variables and Environments How do we evaluate variable? ? x B K − →

  14. Variables and Environments How do we evaluate variable? ? x B K − → Need to have a environment that maps variables to values

  15. Variables and Environments How do we evaluate variable? ? x B K − → Need to have a environment that maps variables to values η ::= · | η , x 7! v

  16. Variables and Environments How do we evaluate variable? ? x B K − → Need to have a environment that maps variables to values η ::= · | η , x 7! v The machine state consists now of an expression, a continuation, and an environment

  17. Variables and Environments How do we evaluate variable? ? x B K − → Need to have a environment that maps variables to values η ::= · | η , x 7! v The machine state consists now of an expression, a continuation, and an environment η ` e B K

  18. Variables and Environments II The rules we have seen so far just carry over η ` e 1 B ( _ � e 2 , K ) η ` e 1 � e 2 B K � ! ` � � ! ` � B B B B η ` c 1 B ( _ � e 2 , K ) η ` e 2 B ( c 1 � _ , K ) � ! ` � � ! ` � B B B B ( c = c 1 � c 2 mod 2 32 ) η ` c 2 B ( c 1 � _ , K ) � ! η ` c B K

  19. Variables and Environments II The rules we have seen so far just carry over η ` e 1 B ( _ � e 2 , K ) η ` e 1 � e 2 B K � ! ` � � ! ` � B B B B η ` c 1 B ( _ � e 2 , K ) η ` e 2 B ( c 1 � _ , K ) � ! ` � � ! ` � B B B B ( c = c 1 � c 2 mod 2 32 ) η ` c 2 B ( c 1 � _ , K ) � ! η ` c B K Variables are simply looked up η ` η ( x ) B K η ` x B K � !

  20. Variables and Environments II The rules we have seen so far just carry over η ` e 1 B ( _ � e 2 , K ) η ` e 1 � e 2 B K � ! ` � � ! ` � B B B B η ` c 1 B ( _ � e 2 , K ) η ` e 2 B ( c 1 � _ , K ) � ! ` � � ! ` � B B B B ( c = c 1 � c 2 mod 2 32 ) η ` c 2 B ( c 1 � _ , K ) � ! η ` c B K We assume programs Variables are simply looked up passed the semantic η ` η ( x ) B K check and vars are η ` x B K � ! always defined.

  21. Variables and Environments II The rules we have seen so far just carry over η ` e 1 B ( _ � e 2 , K ) η ` e 1 � e 2 B K � ! ` � � ! ` � B B B B η ` c 1 B ( _ � e 2 , K ) η ` e 2 B ( c 1 � _ , K ) � ! ` � � ! ` � B B B B ( c = c 1 � c 2 mod 2 32 ) η ` c 2 B ( c 1 � _ , K ) � ! η ` c B K We assume programs Variables are simply looked up passed the semantic η ` η ( x ) B K check and vars are η ` x B K � ! always defined. The environment never changes when evaluating expressions

  22. Executing Statements

  23. Executing Statements I Executions of statements don’t pass values to the continuation Statements have usually an e ff ect on the environment Machine configurations: η ` s I K

  24. Executing Statements I Executions of statements don’t pass values to the continuation Statements have usually an e ff ect on the environment Machine configurations: Continuations contain η ` s I K statements.

  25. Executing Statements I Executions of statements don’t pass values to the continuation Statements have usually an e ff ect on the environment Machine configurations: Continuations contain η ` s I K statements. Sequences: η ` seq ( s 1 , s 2 ) I K η ` s 1 I ( s 2 , K ) � ! ` � ! ` I I

  26. Executing Statements I Executions of statements don’t pass values to the continuation Statements have usually an e ff ect on the environment Machine configurations: Continuations contain η ` s I K statements. Sequences: η ` seq ( s 1 , s 2 ) I K η ` s 1 I ( s 2 , K ) � ! ` � ! ` I I Nops: ` � ! ` 2 I 1 I 1 2 η ` nop I ( s , K ) � ! η ` s I K

  27. Executing Statements I Executions of statements don’t pass values to the continuation Statements have usually an e ff ect on the environment Machine configurations: Continuations contain η ` s I K statements. Sequences: η ` seq ( s 1 , s 2 ) I K η ` s 1 I ( s 2 , K ) � ! ` � ! ` I I A terminating Nops: execution ends ` � ! ` 2 I 1 I 1 2 with a nop. η ` nop I ( s , K ) � ! η ` s I K

  28. Executing Statements II Interaction with expressions is straightforward Assignments: η ` assign ( x, e ) I K η ` e B ( assign ( x, _ ) , K ) � ! ` � ! ` ` � ! 7! ` I B B I η ` v B ( assign ( x, _ ) , K ) η [ x 7! v ] ` nop I K � !

  29. Executing Statements II Interaction with expressions is straightforward Assignments: η ` assign ( x, e ) I K η ` e B ( assign ( x, _ ) , K ) � ! ` � ! ` ` � ! 7! ` I B B I η ` v B ( assign ( x, _ ) , K ) η [ x 7! v ] ` nop I K � !

  30. Executing Statements II Interaction with expressions is straightforward Assignments: η ` assign ( x, e ) I K η ` e B ( assign ( x, _ ) , K ) � ! ` � ! ` ` � ! 7! ` I B B I η ` v B ( assign ( x, _ ) , K ) η [ x 7! v ] ` nop I K � ! Update the environment with new mapping.

  31. Executing Statements III Conditionals: η ` if ( e, s 1 , s 2 ) I K η ` e B ( if ( _ , s 1 , s 2 ) , K ) � ! ` � ! ` B I ` � ! ` I B η ` true B ( if ( _ , s 1 , s 2 ) , K ) � ! η ` s 1 I K η ` false B ( if ( , s , s ) , K ) � ! η ` s I K ` � ! ` B I η ` false B ( if ( _ , s 1 , s 2 ) , K ) � ! η ` s 2 I K

  32. Executing Statements IV Loops: η ` while ( e, s ) I K om? � !

  33. Executing Statements IV Loops: η ` while ( e, s ) I K om? � ! Not that the following statements are equivalent: while ( e, s ) ⌘ if ( e, seq ( s, while ( e, s )) , nop )

  34. Executing Statements IV Loops: η ` while ( e, s ) I K om? � ! Not that the following statements are equivalent: while ( e, s ) ⌘ if ( e, seq ( s, while ( e, s )) , nop ) η ` while ( e, s ) I K η ` if ( e, seq ( s, while ( e, s )) , nop ) I K � !

  35. Executing Statements IV Loops: η ` while ( e, s ) I K om? � ! Not that the following statements are equivalent: while ( e, s ) ⌘ if ( e, seq ( s, while ( e, s )) , nop ) η ` while ( e, s ) I K η ` if ( e, seq ( s, while ( e, s )) , nop ) I K � ! Non-termination: transitions s 0 · · · without � ! � ! � ! s 1 s 2 final states are just nop I · and except We can make an infinite number of steps without reaching a final state

  36. Executing Statements V Assertions: η ` assert ( e ) I K η ` e B ( assert ( _ ) , K ) � ! ` � ! ` I B B I η ` true B ( assert ( _ ) , K ) � ! η ` nop I K η ` true B ( assert ( _ ) , K ) B � ! η ` nop I K η ` false B ( assert ( _ ) , K ) exception ( abort ) � !

  37. Executing Statements V Assertions: η ` assert ( e ) I K η ` e B ( assert ( _ ) , K ) � ! ` � ! ` I B B I η ` true B ( assert ( _ ) , K ) � ! η ` nop I K η ` true B ( assert ( _ ) , K ) B � ! η ` nop I K η ` false B ( assert ( _ ) , K ) exception ( abort ) � ! Declarations: η ` decl ( x, τ , s ) I K � ! η [ x 7! nothing ] ` s I K

  38. Executing Statements V Assertions: η ` assert ( e ) I K η ` e B ( assert ( _ ) , K ) � ! ` � ! ` I B B I η ` true B ( assert ( _ ) , K ) � ! η ` nop I K η ` true B ( assert ( _ ) , K ) B � ! η ` nop I K η ` false B ( assert ( _ ) , K ) exception ( abort ) � ! Declarations: η ` decl ( x, τ , s ) I K � ! η [ x 7! nothing ] ` s I K If C0 had shadowing then we would have to save and restore the previous value of x.

  39. Executing Statements V Assertions: η ` assert ( e ) I K η ` e B ( assert ( _ ) , K ) � ! ` � ! ` I B B I η ` true B ( assert ( _ ) , K ) � ! η ` nop I K η ` true B ( assert ( _ ) , K ) B � ! η ` nop I K η ` false B ( assert ( _ ) , K ) exception ( abort ) � ! Declarations: η ` decl ( x, τ , s ) I K � ! η [ x 7! nothing ] ` s I K If C0 had shadowing then we would have to Final states: � ! save and restore the · · · and exception ( E ) , just nop I · and previous value of x. caused by a failing

  40. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  41. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  42. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  43. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  44. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  45. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  46. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  47. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  48. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  49. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  50. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  51. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  52. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  53. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  54. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  55. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  56. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  57. Example: Infinite Loop and η = [ x 7! 1] . statement while ( x > 0 , assign ( x, x + 1)) execution; where s ⌘ execution, we obtion the following execution; [ x 7! 1] ` while ( x > 0 , s ) I · � ! [ x 7! 1] ` if ( x> 0 , seq ( s, while ( x> 0 , s )) , nop ) I · � ! [ x 7! 1] ` x > 0 if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` x _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 1 _ > 0; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` 0 1 > _ ; if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` true if ( _ , seq ( s, while ( x > 0 , s )) , nop ) B � ! [ x 7! 1] ` seq ( s, while ( x > 0 , s )) I · � ! [ x 7! 1] ` assign ( x, x + 1)) while ( x > 0 , assign ( x, x + 1)) I � ! [ x 7! 1] ` x + 1 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` x _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 _ + 1; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 1 1 + _ ; assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 1] ` 2 assign ( x, _ )); while ( x > 0 , s ) B � ! [ x 7! 2] ` nop while ( x > 0 , s ) I � ! [ x 7! 2] ` while ( x > 0 , s ) I · · · ·

  58. Functions

  59. Function Calls What needs to happen at a function call?

  60. Function Calls What needs to happen at a function call? • Evaluate the arguments in left-to-right order

  61. Function Calls What needs to happen at a function call? • Evaluate the arguments in left-to-right order • Save the environment of the caller to continue the execution after the function call

  62. Function Calls What needs to happen at a function call? • Evaluate the arguments in left-to-right order • Save the environment of the caller to continue the execution after the function call • Save the continuation of the callee

  63. Function Calls What needs to happen at a function call? • Evaluate the arguments in left-to-right order • Save the environment of the caller to continue the execution after the function call • Save the continuation of the callee • Execute the body in a new environment that maps the formal parameters to the argument values

  64. Function Calls What needs to happen at a function call? • Evaluate the arguments in left-to-right order • Save the environment of the caller to continue the execution after the function call • Save the continuation of the callee • Execute the body in a new environment that maps the formal parameters to the argument values • Pass the return value the the environment of the caller

  65. Call Stack We need to keep track of continuations and environment in stack frames Call stack: ::= · | S , h η , K i S

  66. Call Stack We need to keep track of continuations and environment in stack frames Call stack: ::= · | S , h η , K i S Environment

  67. Call Stack We need to keep track of continuations and environment in stack frames Continuation Call stack: ::= · | S , h η , K i S Environment

  68. Call Stack We need to keep track of continuations and environment in stack frames Continuation Call stack: ::= · | S , h η , K i S Environment Configurations: Evaluation S ; η ` e B K ` B I Execution S ; η ` s I K

  69. Call Stack We need to keep track of continuations and environment in stack frames Continuation Call stack: ::= · | S , h η , K i S Environment Configurations: Evaluation S ; η ` e B K ` B I Execution S ; η ` s I K Existing rules can be lifted to the new configurations by 
 passing through the call stack

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend