big step semantics
play

Big Step Semantics Dr. Mattox Beckman University of Illinois at - PowerPoint PPT Presentation

Introduction The Rules Proof Trees Conclusion Big Step Semantics Dr. Mattox Beckman University of Illinois at Urbana-Champaign Department of Computer Science Introduction The Rules Proof Trees Conclusion Objectives Describe the


  1. Introduction The Rules Proof Trees Conclusion Big Step Semantics Dr. Mattox Beckman University of Illinois at Urbana-Champaign Department of Computer Science

  2. Introduction The Rules Proof Trees Conclusion Objectives ◮ Describe the components of a big step semantic rule. ◮ Use semantic rules to document the meaning of simple programming language. ◮ Explain the correspondence between big step semantics and the eval function.

  3. skip Introduction The Rules Proof Trees Conclusion Grammar for Simple Imperative Programming Language The Language S ::= u := A | S 1 ; S 2 | if B then S 1 else S 2 fi | while B do S 1 od | B ::= E ∼ E | true | false E ::= u int | E ⊕ E | ◮ Let u be a possibly subscripted variable. ◮ E represents arithmetic expressions, ⊕ is an arithmetic operator. ◮ B represents boolean expressions, represents relationals.

  4. Introduction The Rules Proof Trees Conclusion The Downarrow Notation ◮ In small step semantics we use the → to represent one step of computations. ◮ In big step semantics we use ⇓ to represent an entire evaluation. Statements < S , σ > ⇓ σ ′ Expressions < E , σ > ⇓ e v Booleans < B , σ > ⇓ b b

  5. Introduction The Rules Proof Trees Conclusion Expressions Integers Variables Var Const < i , σ > ⇓ e i < u , σ > ⇓ e v if i is an integer. if u := v ∈ σ . Operations < e 1 , σ > ⇓ e v 1 < e 2 , σ > ⇓ e v 2 Arith < e 1 ⊕ e 2 , σ > ⇓ e v 1 ⊕ v 2 Here ⊕ represents typical binary operations like + , − , × , etc.

  6. Introduction The Rules Proof Trees Conclusion Boolean Expressions Booleans Variables Const Var < b , σ > ⇓ b b < u , σ > ⇓ b v if b is a boolean. if u := v ∈ σ . Relational Operators < e 1 , σ > ⇓ e v 1 < e 2 , σ > ⇓ e v 2 Rel < e 1 ∼ e 2 , σ > ⇓ b v 1 ∼ v 2 Here ∼ represents the binary relational operations = , ≤ , ≥ , � = , ≥ , ≤ , etc.

  7. Introduction The Rules Proof Trees Conclusion Skip and Assignment Skip < skip , σ > ⇓ σ < e , σ > ⇓ e v Assign < x := e , σ > ⇓ σ [ x := v ]

  8. Introduction The Rules Proof Trees Conclusion Skip and Assignment Skip < skip , σ > ⇓ σ < e , σ > ⇓ e v Assign < x := e , σ > ⇓ σ [ x := v ] Next is sequencing. See if you can guess what the rule looks like.

  9. Introduction The Rules Proof Trees Conclusion Sequencing < S 1 , σ > ⇓ σ ′ < S 2 , σ ′ > ⇓ σ ′′ Seq < S 1 ; S 2 , σ > ⇓ σ ′′

  10. Introduction The Rules Proof Trees Conclusion Sequencing < S 1 , σ > ⇓ σ ′ < S 2 , σ ′ > ⇓ σ ′′ Seq < S 1 ; S 2 , σ > ⇓ σ ′′ Next is if . There are two rules for this. See if you can guess what the rules looks like.

  11. Introduction The Rules Proof Trees Conclusion If Statements < B , σ > ⇓ b true < S 1 , σ > ⇓ σ ′ If 1 < if B then S 1 else S 2 fi , σ > ⇓ σ ′ < B , σ > ⇓ b false < S 2 , σ > ⇓ σ ′ If 2 < if B then S 1 else S 2 fi , σ > ⇓ σ ′

  12. Introduction The Rules Proof Trees Conclusion If Statements < B , σ > ⇓ b true < S 1 , σ > ⇓ σ ′ If 1 < if B then S 1 else S 2 fi , σ > ⇓ σ ′ < B , σ > ⇓ b false < S 2 , σ > ⇓ σ ′ If 2 < if B then S 1 else S 2 fi , σ > ⇓ σ ′ Next is while . There are two rules for this. See if you can guess what the rules looks like. The second one uses induction!

  13. Introduction The Rules Proof Trees Conclusion While Statements < B , σ > ⇓ b false While 1 < while B do S od , σ > ⇓ σ < B , σ > ⇓ b true < S , σ > ⇓ σ ′ < while B do S od , σ ′ > ⇓ σ ′′ While 2 < while B do S od , σ > ⇓ σ ′′

  14. Introduction The Rules Proof Trees Conclusion Proof Trees ◮ To show the effect of a program, we need to build proof trees. ◮ Let σ = { x := 3 , y := 4 } . ◮ We want to prove that 2 × y + 9 × x = 35 . Here is what we want to evaluate. What kind of expression is this? < 2 × y + 9 × x , σ > ⇓ e 35

  15. Introduction The Rules Proof Trees Conclusion Proof Trees ◮ To show the effect of a program, we need to build proof trees. ◮ Let σ = { x := 3 , y := 4 } . ◮ We want to prove that 2 × y + 9 × x = 35 . Because of precedence rules, we evaluate the + last. < 2 × y , σ > ⇓ e 8 < 9 × x , σ > ⇓ e 27 Arith < 2 × y + 9 × x , σ > ⇓ e 35

  16. Introduction The Rules Proof Trees Conclusion Proof Trees ◮ To show the effect of a program, we need to build proof trees. ◮ Let σ = { x := 3 , y := 4 } . ◮ We want to prove that 2 × y + 9 × x = 35 . We go up one more level, and then we are done. Var Const Const Var < y , σ > ⇓ e 4 Arith < x , σ > ⇓ e 3 Arith < 2 , σ > ⇓ e 2 < 9 , σ > ⇓ e 9 < 2 × y , σ > ⇓ e 8 < 9 × x , σ > ⇓ e 27 Arith < 2 × y + 9 × x , σ > ⇓ e 35

  17. Introduction The Rules Proof Trees Conclusion Statement Proof Tree ◮ Let σ = { x := 10 , y := 20 } . ◮ Let σ ′ = { x := 10 , y := 20 , m := 20 } . Here is an example that will use all three versions of ⇓ . < if x > y then m := x else m := 2 × x fi , σ > ⇓ σ ′ Can you fjgure out what this tree should look like?

  18. Introduction The Rules Proof Trees Conclusion Statement Proof Tree ◮ Let σ = { x := 10 , y := 20 } . ◮ Let σ ′ = { x := 10 , y := 20 , m := 20 } . Assign Rel < x > y , σ > ⇓ b false < m := 2 × x , σ > ⇓ σ ′ If 2 < if x > y then m := x else m := 2 × x fi , σ > ⇓ σ ′

  19. Introduction The Rules Proof Trees Conclusion Statement Proof Tree ◮ Let σ = { x := 10 , y := 20 } . ◮ Let σ ′ = { x := 10 , y := 20 , m := 20 } . Const Var Var Var < x , σ > ⇓ e 10 < y , σ > ⇓ e 20 Rel < x , σ > ⇓ e 10 Assign < 2 , σ > ⇓ e 2 < x > y , σ > ⇓ b false < m := 2 × x , σ > ⇓ σ ′ If 2 < if x > y then m := x else m := 2 × x fi , σ > ⇓ σ ′

  20. Introduction The Rules Proof Trees Conclusion Connecting to Interpreters ◮ The ⇓ is really just eval that you already know and love. ◮ The σ is just the env parameter.

Recommend


More recommend