# denotational semantics

Post on 19-Jan-2016

33 views

Embed Size (px)

DESCRIPTION

Denotational Semantics. COS 441 Princeton University Fall 2004. Denotational Semantics. Describe meaning of syntax by specifying the mathematical meaning of syntax tree as Function Function on functions Value, such as natural numbers or strings Sets of values etc - PowerPoint PPT PresentationTRANSCRIPT

Denotational SemanticsCOS 441Princeton UniversityFall 2004

Denotational SemanticsDescribe meaning of syntax by specifying the mathematical meaning of syntax tree asFunctionFunction on functionsValue, such as natural numbers or stringsSets of values etc defined by each construct

Original Motivation for TopicPrecisionUse mathematics instead of EnglishAvoid details of specific machinesAim to capture pure meaning apart from implementation detailsBasis for program analysisJustify program proof methodsSoundness of type system, control flow analysisProof of compiler correctnessLanguage comparisons

Denotational vs. Operational Denotational semantics are more abstract than operational approachesCannot reason about number of steps of a computation or algorithmic complexitySpecify what the answer should be not how a computation takes place

Principles of DSCompositionalityThe meaning of a compound program must be defined from the meanings of its parts (not the syntax of its parts).ExamplesP; Q composition of two functions, state stateletrec f(x) = e1 in e2 meaning of e2 where f denotes function ...

Notation and DefinitionsPhrase variable, expression, statement, declarations[[ e ]],[[ P ]] Syntax tree of a phraseE[[ e ]], C [[ P ]]Meaning functions (E,C) applied to syntax trees of phrases

Example: Binary NumbersSyntaxb ::= 0 | 1n ::= b | nbe ::= n | e_1 + e2Semantics E [[0]] 0 E [[1]] 1 E [[nb]] 2 E[[ n ]] + E[[ b ]] E [[e1 + e2]] E[[ e1 ]] + E[[ e2 ]]

DS of Regular ExpressionsSyntaxa,b 2 re ::= a | re1 + re2 | re1 . re2 | re*SemanticsE : Regular Exp ! *

Sets of StringsLet a,b 2 is an unspecified alphabet * is the set of strings made up from the alphabet 2 * a 2 * if a 2 s1 . s2 2 * if s1 2 * and s2 2 *

Equality on StringsLet s1,s2,s3 2 *

a=a . s=ss . =s(s1 . s2) . s3=s1 . (s2 . s3)s1 . s2=s1 . s2 if s1 = s1 and s2 = s2

Operations On Sets of Strings

{a}is{ x | x = a }S1 [ S2is{ x | x 2 S1 x 2 S2 }S1 . S2is{ x | s1 2 S1 s2 2 S2 x = s1 . s2 }S0is{ }Sn+1is{ x | x 2 S . Sn }S*is{ x | 9n. x 2 Sn }

Some Theorems

E[[a + b]]{a , b}E[[a . (b + c)]]{ab, ac}E[[(a + b) . c]]{ac, bc}E[[re1 . (re2 + re3)]]E[[(re1 . re2) + (re1 . re3)]]E[[a**]]E[[a*]]

DS for Regular Expressions

E[[a]]{a}E[[re1 + re2]]{ x | x 2 E[[re1]] [ E[[re2]] }E[[re1 . re2]]{ x | x 2 E[[re1]] . E[[re2]] }E[[re*]]{ x | x 2 E[[re]]* }

Another DS for REsWe can given an equivalent semantics by relating regular expressions to Non-deterministic Finite Automata (NFAs)Equivalent meansAny theorem about meanings in one semantics is true iff the same theorem is true in the other model

NFAq0,q1,,qn 2 QStatesqinit 2 QInitial StateF QFinal States Q ( [ {}) Q Transition RelationM is (qinit,F,) NFA

NFA Accepting a String 2 L(qinit,F,) if (qinit, , qf) 2 and qf 2 F

a 2 L(qinit,F,) if (qinit, a, qf) 2 and qf 2 F

x . s 2 L(qinit,F,) if (qinit, x, q) 2 and s 2 L(q,F,)

Semantics of Regular ExpressionsNFA[[a]] (qi, {qf}, {(qi,a,qf)})qfaqi

Semantics of Regular ExpressionsNFA[[re1 + re2]] let q be a unique new statelet (qi1, F1, 1) = NFA[[re1]] let (qi2, F2, 2) = NFA[[re2]]let = 1 [ 2 [ {(q,,qi1),(q,,qi2)})(q, F1 [ F2,)qNFA[[re1]]NFA[[re2]]

Semantics of Regular ExpressionsNFA[[re1 . re2]] let (qi1, F1, 1) = NFA[[re1]] let (qi2, F2, 2) = NFA[[re2]]let = 1 [ 2 [ {(qf,,qi2) | qf 2 F1}(qi1, F2,)NFA[[re1]]NFA[[re2]]

Semantics of Regular ExpressionsNFA[[re*]] let q,qf be new stateslet (qi, F, ) = NFA[[re]]let = [ {(q,,qi), (q,,qf)} [ { (qf,,qi) | qf 2 F }(q, {qf},)NFA[[re]]qqf

Some More Theorems

L(NFA[[a + b]]){a , b}L(NFA[[a . (b + c)]]){ab, ac}L(NFA[[(a + b) . c]]){ac, bc}

L(NFA[[re]])E[[re]]

E[[re]] L(NFA[[re]]) We can prove the NFA semantics is equivalent to the set theoretic semantics via induction on the definition of the meaning function EProof relies on compositional definition of meaning function E!

Which Semantics?Set of string semantics clearly easier to reason about!This is what denotation semantics was designed forNFA semantics can be transformed into efficient of regular expression matcherOur theorem is a correctness proof about the implementation of our NFA conversion function

DS for Programming LanguagesWe can build a DS for a programming languageAllows us to reason about program equivalenceUseful to prove compiler optimizations is safeProvides framework for reason about abstract properties of programs statically

DS of Imperative ProgramsSyntaxn 2 Numbersx 2 Varse ::= false | true | n | x | e1 + e2 | e1 e2 P ::= x := e | if e then P1 else P2 | P1;P2 | while e do P

Semantics for Expression Meaning function for expressionsState = Vars ! NumbersE : Expressions ! State ! Numbers

E[[false]](s)0E[[true]](s)1E[[n]](s)nE[[x]](s)s(x)E[[e1 + e2]](s)E[[e1]](s) + E[[e2]](s) E[[e1 e2]](s)if E[[e1]] E[[e2]] then 1 else 0

Semantics for Programs Meaning function for programsCommand = State ! State C : Programs ! Command C[[P;Q]](s) C[[Q]](C[[P]](s)) C[[if e then P else Q]](s) C[[P]](s) if E [[e]](s) = 1 C[[Q]](s) if E [[e]](s) = 0

Semantics of Assignmentmodify : State Vars Numbers Statemodify(s,x,a) = y. if y = x then a else s(y)

C[[x:= e]](s) modify(s,x,E[[e]](s))

Semantics of IterationC[[while e do P]](s) The function f such that f(s) = sif E[[e]](s) = 0 f(s) = f(C[[P]](s))if E[[e]] = 1 Mathematics of denotational semantics: prove that there is such a function and that it is uniquely determined. Beyond scope of this course.

Mathematical FoundationsA full DS for imperative programs requires the definition of a special class of sets called domains

From Wikipedia, the free encyclopedia.Dana S. Scott is the incumbent Hillman University Professor of Computer Science, Philosophy, and Mathematical Logic at Carnegie Mellon University. His contributions include early work in automata theory, for which he received the ACM Turing Award in 1976, and the independence of the Boolean prime ideal theorem.Scott is also the founder of domain theory, a branch of order theory that is used to model computation and approximation, and that provides the denotational semantics for the lambda calculus.He received his Bachelor's degree from the University of California, Berkeley in 1954, and his Ph.D. from Princeton University in 1958

Abstract Interpretation From Wikipedia, the free encyclopedia.Abstract interpretation is a theory of sound approximation of the semantics of computer programs, based on monotonic functions over ordered sets, especially lattices. It can be viewed as a partial execution of a computer program which gains information about its semantics (e.g. control structure, flow of information) without performing all the calculations.Abstract interpretation was formalized by Patrick Cousot.

Abstract vs. Standard SemanticsGiven a standard semantics abstract interpretation approximates the standard semantics in a way that guarantees the abstract interpretation is correct with respect to the original semanticsThe original DS semantics again is used as part of a correctness criterion for the abstract semantics

The Meaning of MeaningThe denotational relates of syntax trees to objects in mathematical functions expressed using a metalanguage for defining functions Strachey and Scott used the mathematical theory of continuous function over partially ordered sets (domains) as their target semanticsWe can explain the meaning of programs in using the Strachey and Scott metalanguage

DS SchemeFormal semantics of Scheme is defined using the Strachey and Scott metalanguage

http://www.schemers.org/Documents/Standards/R5RS/r5rs.pdf

A non-trivial semantics language

Abstract Syntax of Scheme

Semantic Values

Semantic Values (cont.)

Semantic Functions

Semantic Functions (cont.)

Semantic Functions (cont.)

SML as a Metalanguage Scheme semantics looks awfully like a complicated program written in a obscure language of functions which happen to have a precise well-understood meaning (If youre a mathematician that is)

We could also use SML as a metalanguage to express semantics!

Semantics of Expressions in SML type var = stringdatatype exp = | True | False| N of int | V of var | Plus of exp * exp | Minus of exp * exp | Leq of exp * exp

- Semantics of Expressions in SML type value = int type state = var -> value (* val expSem : exp -> state -> value *) fun expSem (True)(s) = 1 | expSem (False)(s) = 0 | expSem (N i)(s) = i | expSem (V v)(s:state) = s v | expSem (Plus(e1,e2))(s) = expSem(e1)(s) + expSem(e2)(s) | expSem (Minus(e1,e2))(s) = expSem(e1)(s) - expSem(e2)(s) | expSem (Leq(e1,e2))(s) = if expSem(e1)(s)
SummaryDenotational techniques provide give meaning to programs by relating syntax to the semantics of some well-defined metalanguageDS are abstract semantics that are good to reason about correctness of implementations or static analysis

Next LectureUsing denotationial techniques to specify the semantics of resolution independent graphical objectsHomework for this week turn our semantics into SML code that takes a simple picture language into an image!

Recommended