Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming Language Semantics Denotational Semantics Chapter 5 Part II.

Similar presentations


Presentation on theme: "Programming Language Semantics Denotational Semantics Chapter 5 Part II."— Presentation transcript:

1 Programming Language Semantics Denotational Semantics Chapter 5 Part II

2 Outline Equivalence of Semantics Complete partial orders and continuous functions

3 Denotational semantics A: Aexp  (  N) B: Bexp  (  T) C: Com  (    ) Defined by structural induction

4 Denotational semantics of Aexp A: Aexp  (  N) A  n  = {( , n) |   } A  X  = {( ,  (X)) |   } A  a 0 +a 1  = {( , n 0 +n 1 ) | ( , n 0 )  A  a 0 , ( ,n 1 )  A  a 1  } A  a 0 -a 1  = {( , n 0 -n 1 ) | ( , n 0 )  A  a 0 , ( ,n 1 )  A  a 1  } A  a 0  a 1  = {( , n 0  n 1 ) | ( , n 0 )  A  a 0 , ( ,n 1 )  A  a 1  } Lemma: A  a  is a function

5 Equivalence of Semantics Lemma 5.3: For all a  Aexp –A  a  ={( , n) |  n} Proof –P(a)  A  a  ={( , n) |  n} –Structural induction

6 Denotational semantics of Bexp B: Bexp  (  T) B  true  = {( , true) |   } B  false  = {( , false) |   } B  a 0 =a 1  = {( , true) |   & A  a 0   =A  a 1   }  {( , false) |   & A  a 0   A  a 1   } B  a 0  a 1  = {( , true) |   & A  a 0    A  a 1   }  {( , false) |   & A  a 0    A  a 1   } B  b  = {( ,  T t) |  , ( , t)  B  b  } B  b 0  b 1  = {( , t 0  T t 1 ) |  , ( , t 0 )  B  b 0 , ( , t 1 )  B  b 1  } B  b 0  b 1  = {( , t 0  T t 1 ) |  , ( , t 0 )  B  b 0 , ( , t 1 )  B  b 1  } Lemma: B  b  is a function

7 Equivalence of Semantics Lemma 5.4: For all b  Bexp –B  b  ={( , t) |  t} Proof –P(b)  B  b  ={( , t) |  n} –Structural induction

8 Denotational semantics of Com C  skip  ={( ,  )|  } C  X:=a  = {( ,  [n/X]) |   & n=A  a   } C  c 0 ;c 1  = C  c 1   C  c 0  C  if b then c 0 else c 1  = {( ,  ’) | B  b   =true & ( ,  ’)  C  c 0  }  {( ,  ’) | B  b   =false & ( ,  ’)  C  c 1  } C  while b do c  = fix(  ) where  (  ) = {( ,  ’) | B  b   =true & ( ,  ’)    C  c  }  {( ,  ) |  B  b   =false}

9 Operational Semantics of Commands  /   {  n}/   [n/X] {   ’’,   ’ }/   ’ {  true,   ’ }/   ’ {  false,   ’ }/   ’ {  false }/   {  true,   ’’, }/   ’

10 Equivalence of Semantics Lemma 5.6: For all c  Com –   ’  ( ,  ’)  C  c  Proof –P(c, ,  ’)  ( ,  ’)  C  c  –Rule induction

11 Equivalence of Semantics Theorem 5.7 For all c  Com –C  c  = {( ,  ’) |   ’ } Proof – ,  ’  : ( ,  ’)  C  c     ’ –Structural++ induction

12 Partial Orders A partial order (p.o.) is a set P with a binary relation  –reflexive  p: p  P. p  p –transitive:  p, q, r  P. p  q & q  r  p  r –antisymmetric:  p, q  P. p  q & q  p  p=q For a partial order (P,  ) and a subset X  P –p is an upper bound of X  q  X. q  p –p is a least upper bound of X (denoted by  X) if p is an upper bound of X For all upper bounds q of X: p  q d 1  d 2  … d n =  {d 1, d 2, …, d n }

13 Partial Orders A partial order (p.o.) is a set P with a binary relation  –reflexive  p: p  P. p  p –transitive:  p, q, r  P. p  q & q  r  p  r –antisymmetric:  p, q  P. p  q & q  p  p=q For a partial order (P,  ) and a subset X  P –p is an upper bound of X  q  X. q  p –p is a least upper bound of X (denoted by  X) if p is an upper bound of X For all upper bounds q of X: p  q –p is an lower bound of X  q  X. p  q –p is a greatest upper bound of X (denoted by  X) if p is a lower bound of X For all lower bounds q of X: q  p Examples –(Pow(X),  ) –(Pow(X),  ),

14 Complete Partial Orders Let (D,  ) be a partial order –An  -chain is an increasing chain d 0  d 1  …d n .. –D is a complete partial order (c.p.o) if every  -chain has a least upper bound –D is a complete partial order with  if is a c.p.o. with a minimum element  –D is a complete lattice if every subset has both greatest and lower bounds Examples –(Pow(X),  ) –([   ],  )

15 Monotonic and Continuous Functions A function f: D  E between cpos D and E is monotonic if –  d,d’  D.d  d’  f(d)  f(d’) A function: D  E between cpos D and E is continuous if for all chains d 0  d 1  …d n  … in D:  n  f(d n ) = f(  n  d n )

16 Scott’ Thesis Any computable function is continuous –preserve information order More information as input gives more information as output –preserve limits The total information obtainable as output from an infinite sequence of input elements with refinement information is the sum of total of all information obtainable from each input seperately

17 Fixed Points Let f: D  D be a continuous function on a cpo with  D A fixed point of f is an element d  D such that f(d) =d A pre fixed point of f is an element d  D such that f(d)  d Thm: fix(f) =  n  f n (  )

18 Knaster-Tarski Theorem Let f: L  L be a monotonic function on a complete lattice L The least fixed point lfp(f) exists –lfp(f) =  {x  L: f(x)  x}

19 Summary Denotational semantics provides a way to declare the meaning of programs in an abstract way –Can handle side-effects –Loops –Recursion –Gotos Fixed point theory provides a declarative way to specify computations –Many usages


Download ppt "Programming Language Semantics Denotational Semantics Chapter 5 Part II."

Similar presentations


Ads by Google