190 likes | 431 Views
Programming Language Semantics Denotational Semantics. Chapter 5 Part II. Outline. Equivalence of Semantics Complete partial orders and continuous functions. Denotational semantics. A: Aexp (N) B : Bexp (T) C: Com ( ) Defined by structural induction.
E N D
Programming Language SemanticsDenotational Semantics Chapter 5 Part II
Outline • Equivalence of Semantics • Complete partial orders and continuous functions
Denotational semantics • A: Aexp (N) • B: Bexp (T) • C: Com() • Defined by structural induction
Denotational semantics of Aexp • A: Aexp (N) • An = {(, n) | } • AX = {(, (X)) | } • Aa0+a1 = {(, n0+n1) | (, n0)Aa0, (,n1)Aa1} • Aa0-a1 = {(, n0-n1) | (, n0)Aa0, (,n1)Aa1} • Aa0a1 = {(, n0 n1) | (, n0)Aa0, (,n1)Aa1} Lemma: A a is a function
Equivalence of Semantics • Lemma 5.3: For all a Aexp • Aa={(, n) | < a, > n} • Proof • P(a) Aa={(, n) | < a, > n} • Structural induction
Denotational semantics of Bexp • B: Bexp (T) • Btrue = {(, true) | } • Bfalse = {(, false) | } • Ba0=a1 = {(, true) | & Aa0=Aa1 }{(, false) | & Aa0Aa1 } • Ba0a1 = {(, true) | & Aa0 Aa1 }{(, false) | & Aa0Aa1 } • Bb = {(, T t) | , (, t) Bb} • Bb0b1 = {(, t0 Tt1) | , (, t0) Bb0, (, t1) Bb1 } • Bb0b1 = {(, t0 Tt1) | , (, t0) Bb0, (, t1) Bb1 } Lemma: Bb is a function
Equivalence of Semantics • Lemma 5.4: For all b Bexp • Bb={(, t) | < b, > t} • Proof • P(b) Bb={(, t) | < b, > n} • Structural induction
Denotational semantics of Com • Cskip={(, )| } • CX:=a = {(, [n/X]) | & n=Aa} • Cc0;c1 = Cc1 Cc0 • Cif b then c0 else c1 = {(, ’) | Bb=true & (, ’) Cc0}{(, ’) | Bb=false & (, ’) Cc1} • Cwhile b do c = fix() where() = {(, ’) | Bb=true & (, ’) Cc} {(, ) | Bb=false}
Operational Semantics of Commands /<skip, > {<a, > n}/<X:=a, > [n/X] {<c0, > ’’, <c1, ’’ > ’ }/<c0;c1, > ’ {<b, > true, <c0, > ’ }/<if b then c0 else c1, > ’ {<b, > false, <c1, > ’ }/<if b then c0 else c1, > ’ {<b, > false }/<while b do c , > {<b, > true, <c, > ’’, <while b do c, ’’ ’ >}/ <while b do c, > ’
Equivalence of Semantics • Lemma 5.6: For all c Com • <, c> ’ ( , ’) Cc • Proof • P(c, , ’) ( , ’) Cc • Rule induction
Equivalence of Semantics • Theorem 5.7 For all c Com • Cc = {( , ’) | <c, > ’ } • Proof • , ’: (, ’) Cc <c, > ’ • Structural++ induction
Partial Orders • A partial order (p.o.) is a set P with a binary relation • reflexive p: p P. pp • 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 XP • 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 d1 d2 … dn = {d1, d2, …, dn}
PartialOrders • A partial order (p.o.) is a set P with a binary relation • reflexive p: p P. pp • 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 XP • 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), ),
Complete Partial Orders • Let (D, ) be a partial order • An -chain is an increasing chain • d0d1 …dn .. • 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), ) • ([], )
Monotonic and Continuous Functions • A function f: DE between cpos D and E is monotonic if • d,d’ D.d d’ f(d) f(d’) • A function: DE between cpos D and E is continuous if for all chainsd0d1 …dn … in D: n f(dn) = f( n dn)
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
Fixed Points • Let f: D D be a continuous function on a cpo with D • A fixed point of fis an element d Dsuch that f(d) =d • A pre fixed point of fis an element d Dsuch that f(d) d • Thm: fix(f) = n fn()
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}
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