• Keine Ergebnisse gefunden

Semantics of Programming Languages

N/A
N/A
Protected

Academic year: 2022

Aktie "Semantics of Programming Languages"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Systeme Hoher Sicherheit und Qualität Universität Bremen WS 2015/2016

Lecture 12 (18.01.2016)

Semantics of Programming Languages

Christoph Lüth Jan Peleska Dieter Hutter

Where are we?

I 01: Concepts of Quality

I 02: Legal Requirements: Norms and Standards I 03: The Software Development Process I 04: Hazard Analysis

I 05: High-Level Design with SysML I 06: Formal Modelling with SysML and OCL I 07: Detailed Specification with SysML I 08: Testing

I 09: Program Analysis

I 10: Foundations of Software Verification I 11: Verification Condition Generation I 12: Semantics of Programming Languages I 13: Model-Checking

I 14: Conclusions and Outlook

SSQ, WS 15/16 2 [27]

Semantics in the Development Process

SSQ, WS 15/16 3 [27]

Semantics — what does that mean?

”Semantics: The meaning of words, phrases or systems. “

— Oxford Learner’s Dictionaries I In mathematics and computer science, semantics is giving a meaning

in mathematical terms. It can be contrasted withsyntax, which specifies the notation.

I Here, we will talk about the meaning ofprograms. Their syntax is described by formal grammars, and their semantics in terms of mathematical structures.

I Why would we want to do that?

SSQ, WS 15/16 4 [27]

Why Semantics?

Semantics describes the meaning of a program (written in a

programming language) in mathematicalpreciseandunambiguousway.

Here are three reasons why this is a good idea:

I It lets us write bettercompilers. In particular, it makes the language independentof a particular compiler implementation.

I If we know the precise meaning of a program, we know when it should produce a result and when not. In particular, we know which situations the program should avoid.

I Finally, it lets us reason about programcorrectness.

Empfohlene Literatur: Glynn Winskel.The Formal Semantics of Programming Languages: An Introduction.The MIT Press, 1993.

SSQ, WS 15/16 5 [27]

Semantics of Programming Languages

Historically, there are three ways to write down the semantics of a programming language:

I Operational semanticsdescribes the meaning of a program by specifying how it executes on an abstract machine.

I Denotational semanticsassigns each program to a partial function on the system state.

I Axiomatic semanticstries to give a meaning of a programming construct by giving proof rules. A prominent example of this is the Floyd-Hoare logic of previous lectures.

SSQ, WS 15/16 6 [27]

A Tale of Three Semantics

P := 1;

C := 1;

while C <= N { P := P * C;

C := C + 1 }

Operational

Axiomatic Denotational

Programs

IEach semantics should be considered aviewof the program.

IImportantly, all semantics should beequivalent. This means we have to put them into relation with each other, and show that they agree. Doing so is an importantsanity checkfor the semantics.

IIn the particular case of axiomatic semantics (Floyd-Hoare logic), it is the question ofcorrectness of the rules.

SSQ, WS 15/16 7 [27]

Operational Semantics

I Evaluation is directed by the syntax.

I We inductively define relations→betweenconfigurations(a command or expression together with a state) to an integer, boolean or a state:

A⊆(AExp,Σ)×Z

B⊆(BExp,Σ)×Bool

S⊆(Com,Σ)×Σ where the system state is defined as as

Σdef=Loc*Z

I (p, σ)→Sσ0means that evaluating the programpin stateσresults in stateσ0, and (a, σ)→Aimeans evaluating expressionain stateσ results in integer valuei.

SSQ, WS 15/16 8 [27]

(2)

Structural Operational Semantics

I The evaluation relation is defined by rules of the form ha, σi →Ai

hpa1, σi →Af(i)

for each programming language construct p. This means that when the argumentaof the construct has been evaluated, we can evaluate the whole expression.

I This is calledstructural operational semantics.

I Note that this does not specify an evaluationstrategy.

I This evaluation ispartialand can benon-deterministic.

SSQ, WS 15/16 9 [27]

IMP: Arithmetic Expressions

Numbers: hn, σi →An Variables: hX, σi →Aσ(X)

Addition:

ha0, σi →An ha1, σi →Am ha0+a1, σi →An+m

Subtraction:

ha0, σi →An ha1, σi →Am ha0-a1, σi →Anm

Multiplication:

ha0, σi →An ha1, σi →Am ha0*a1, σi →An·m

SSQ, WS 15/16 10 [27]

IMP: Boolean Expressions (Constants, Relations)

htrue, σi →BTrue hfalse, σi →False

hb, σi →BFalse hnotb, σi →BTrue

hb, σi →BTrue hnotb, σi →BFalse

ha0, σi →An ha1, σi →Am

ha0=a1, σi →BTrue n=m ha0, σi →An ha1, σi →Am ha0=a1, σi →BFalse n6=m ha0, σi →An ha1, σi →Am

ha0<a1, σi →BTrue n<m ha0, σi →An ha1, σi →Am ha0<a1, σi →BFalse nm

SSQ, WS 15/16 11 [27]

IMP: Boolean Expressions (Operators)

hb0, σi →BFalse hb1, σi →BFalse hb0andb1, σi →BFalse

hb0, σi →BFalse hb1, σi →BTrue hb0andb1, σi →BFalse hb0, σi →BTrue hb1, σi →BFalse

hb0andb1, σi →BFalse

hb0, σi →BTrue hb1, σi →BTrue hb0andb1, σi →BTrue

hb0, σi →BTrue hb1, σi →BTrue hb0orb1, σi →BTrue

hb0, σi →BTrue hb1, σi →BFalse hb0orb1, σi →BTrue hb0, σi →BFalse hb1, σi →BTrue

hb0orb1, σi →BTrue

hb0, σi →BFalse hb1, σi →BFalse hb0orb1, σi →BFalse

SSQ, WS 15/16 12 [27]

IMP: Boolean Expressions (Operators — Variation)

hb0, σi →BFalse hb0andb1, σi →BFalse

hb1, σi →BFalse hb0andb1, σi →BFalse hb0, σi →BTrue hb1, σi →BFalse

hb0andb1, σi →BFalse

hb0, σi →BTrue hb1, σi →BTrue hb0andb1, σi →BTrue

hb0, σi →BTrue hb0orb1, σi →BTrue

hb1, σi →BTrue hb0orb1, σi →BTrue hb0, σi →BFalse hb1, σi →BTrue

hb0orb1, σi →BTrue

hb0, σi →BFalse hb1, σi →BFalse hb0orb1, σi →BFalse

What is the difference?

SSQ, WS 15/16 13 [27]

Operational Semantics of IMP: Statements

hskip, σi →Sσ

ha, σi →Sn hX:=a, σi →Sσ[n/X]

hc0, σi →Sτ hc1, τi →Sτ0 hc0;c1, σi →Sτ0 hb, σi →BTrue hc0, σi →Sτ

hif b{c0} else{c1}, σi →Sτ

hb, σi →False hc1, σi →Sτ hif b{c0} else{c1}, σi →Sτ

hb, σi →BFalse hwhileb{c}, σi →Sσ

hb, σi →BTrue hc, σi →Sτ0 hwhileb{c}, τ0i →Sτ hwhileb{c}, σi →Sτ

SSQ, WS 15/16 14 [27]

Why Denotational Semantics?

I Denotational semantics takes anabstract viewof program: ifc1c2, they have the “same meaning”.

I This allows us, for example, to compare programs in different programming languages.

I It also accommodates reasoning about programs far better than operational semantics. In particular, we can prove the correctness of the Floyd-Hoare rules.

I It gives us compositionality and referential transparency, mapping programming language construct p to denotationφ:

D[[p(e1, . . . ,en)]] =φ(D[[e1]], . . . ,D[[en]])

SSQ, WS 15/16 15 [27]

Denotational Semantics

I Programs are denoted byfunctionson states Σ =Loc*Z. I Semantic functionsassign a meaning to statements and expressions:

Arithmetic expressions: E:AExp→(Σ→Z) Boolean expressions: B:BExp→(Σ→Bool)

Statements: D:Com→(Σ*Σ)

I Note the meaning of a programpis apartialfunction, reflecting the fact that programs may not terminate.

IOur expressions always do, but that is because our language is quite simple.

SSQ, WS 15/16 16 [27]

(3)

Denotational Semantics of IMP: Arithmetic Expressions

E[[n]] def= λσ∈Σ.n E[[X]] def= λσ∈Σ.σ(X)

E[[a0+a1]] def= λσ∈Σ.(E[[a0]]σ+E[[a1]]σ) E[[a0-a1]] def= λσ∈Σ.(E[[a0]]σ− E[[a1]]σ) E[[a0*a1]] def= λσ∈Σ.(E[[a0]]σ· E[[a1]]σ)

SSQ, WS 15/16 17 [27]

Denotational Semantics of IMP: Boolean Expressions

B[[true]] def= λσ∈Σ.True B[[false]] def= λσ∈Σ.False B[[notb]] def= λσ∈Σ.¬B[[b]]σ B[[a0=a1]] def= λσ∈Σ.

(True E[[a0]]σ=E[[a1]]σ False E[[a0]]σ6=E[[a1]]σ B[[a0<a1]] def= λσ∈Σ.

(True E[[a0]]σ <E[[a1]]σ False E[[a0]]σ≥ E[[a1]]σ B[[b0andb1]] def= λσ∈Σ.B[[b0]]σ∧ B[[b1]]σ

B[[b0orb1]] def= λσ∈Σ.B[[b0]]σ∨ B[[b1]]σ

SSQ, WS 15/16 18 [27]

Denotational Semantics of IMP: Statements

The simple part:

D[[skip]] def= λσ∈Σ. σ D[[X:=a]] def= λσ∈Σ. σ[E[[a]]σ/X]

D[[c0;c1]] def= D[[c1]]◦ D[[c0]]

D[[if b{c0} else{c1}]] def= λσ∈Σ.

(D[[c0]]σ B[[b]]σ=True D[[c1]]σ B[[b]]σ=False The hard part:

D[[whileb{c}]] =λσ∈Σ.

(σ B[[b]]σ=False

(D[[whileb{c}]]◦ D[[c]])σ B[[b]]σ=True Thisrecursivedefinition is notconstructive— it does not tell us how to construct the function. Worse, it is unclear it even exists in general.

SSQ, WS 15/16 19 [27]

Partial Orders and Least Upper Bounds

To construct fixpoints of the formx=f(x), we need the theory of complete partial orders (cpo’s).

Definition (Partial Order)

Given a setX, apartial orderv ⊆X×Xis (i) transitive: ifxvy,yvz, thenxvz (ii)reflexive:xvx

(iii) anti-symmetric: ifxvy,yvxthenx=y

Definition (Least Upper Bound) ForYX, theleast upper boundF

YX is:

(i) ∀y∈Y.yvF Y

(ii)for anyzXsuch that∀y∈Y.yvz, we haveF Yvz

SSQ, WS 15/16 20 [27]

Complete Partial Orders

Definition (Complete Partial Order)

A partial orderviscomplete(acpo) if anyω-chain x1vx2vx3vx4. . .={xi|iω}has a least upper bound F

i∈ωxiX.

A cpo is called pointed (pcpo), if there is a smallest element⊥ ∈X.

(Note some authors assume all cpos to be pointed.) Definition (Continuous Function)

Given cpos (X,v) and (Y,≤). A functionf:XY is (i) monotone, ifxvythenf(x)≤f(y)

(ii) continuous, if monotone andf(F

i∈ωxi) =F i∈ωf(xi)

SSQ, WS 15/16 21 [27]

Fixpoints

Theorem (Each continuous function has a least fixpoint)

Let(X,v)be a pcpo, and f :XX continuous, then f has a least fixpoint fix(f),given as

fix(f) =G n∈ω

fn(⊥)

I In our case, the state Σ is made into a pcpo Σby ’adjoining’ a new element⊥, ordered as⊥ vσ.

I This models partial functions: Σ*Σ∼= Σ→Σ I Σ→Σist a pcpo, ordered as

f vg←→ ∀x.f(x)vg(x)

Concretely,f vgmeans that f is defined on fewer states thang.

SSQ, WS 15/16 22 [27]

Denotational Semantics of IMP: Statements

D[[skip]] def= λσ∈Σ. σ D[[X:=a]] def= λσ∈Σ. σ[E[[a]]σ/X]

D[[c0;c1]] def= D[[c1]]◦ D[[c0]]

D[[if b{c0} else{c1}]] def= λσ∈Σ.

(D[[c0]]σ B[[b]]σ=True D[[c1]]σ B[[b]]σ=False

D[[whileb{c}]] def= fix(Γ) where Γ(φ) def= λσ∈Σ.

(φ◦ D[[c]]σ B[[b]]σ=True σ B[[b]]σ=False

SSQ, WS 15/16 23 [27]

Equivalence of Semantics

Lemma

(i) For aAexp, n∈N,E[[a]]σ=n iffha, σi →An (ii)For bBExp, tBool,B[[b]]σ=t iffhb, σi →Bt Proof: Structural Induction onaandb.

Lemma

For cCom, ifhc, σi →Sσ0thenD[[c]]σ=σ0 Proof: Induction over deriviation ofhc, σi →Sσ0. Theorem (Equivalence of Semantics)

For cCom, andσ, σ0∈Σ,

hc, σi →Sσ0iffD[[c]]σ=σ0

The proof of this theorem requires a technique called fixpoint induction which we will not go into detail about here.

SSQ, WS 15/16 24 [27]

(4)

Correctness of Floyd-Hoare Rules

Denotational semantics allows us toprovethe correctness of the Floyd-Hoare rules.

I We extend the boolean semantic functionsEandBtoAExpvand BExpv, respectively.

I We can then define the validity of a Hoare triple in terms of denotations:

|={P}c{Q}iff∀σ.B[[P]]σ∧ D[[c]]σ6=⊥ −→ B[[Q]](D[[c]]σ)

I We can now show the rules preserve validity,i.e.if the preconditions are valid Hoare triples, then so is the conclusion.

SSQ, WS 15/16 25 [27]

Remarks

I Our language and semantics is quite simple-minded. We have not take into account:

Iundefined expressions (such as division by 0 or accessing an undefined variable),

Iside effects in expressions,

Ideclaration of variables,

Ipointers, references, pointer arithmetic,

Iinput/output (what is the semantic model?), or

Iconcurrency.

I However, there are formal semantics for languages such as

StandardML, C, or Java, although most of them concentrate on some aspect of the language (e.g.Java concurrency is not very well defined in the standard). Only StandardML has a languagestandardwhich is written as an operational semantics.

SSQ, WS 15/16 26 [27]

Conclusion

I Programming semantics come in three flavours:operational, denotational,axiomatic.

I Each of these has their own use case:

I Operational semantics gives details about evaluation of programs, and is good forimplementingthe programming language.

I Denotational semantics is abstract and good forhigh-levelreasoning (e.g.

correctness of program logics or tools).

I Axiomatic semantics is about program logics, and reasoning about programs.

I Denotational semantics needs the mathematical toolkit ofcposto construct fixpoints.

SSQ, WS 15/16 27 [27]

Referenzen

ÄHNLICHE DOKUMENTE

The Formal Semantics of Programming Languages: An Introduction.. •

7.3.1 Small-step semantics of IMP 7.3.2 Proving properties of the semantics 7.3.3 Extensions of IMP. ©Arnd Poetzsch-Heffter

A regular expression is deterministic if the FSA built from it using the construction in the lecture has no two transitions (q, σ, q ′ ) and (q, σ, q ′′ ) with q ′ 6= q

Is it then possible to detect, among those only, the string representations of tree documents valid with respect to d.. Try to formalize a notion of weak validation capturing the

Give the unabbreviated versions of the following CoreXPath queries, and describe their semantics relative to a context node n:1. .//σ/ ancestor - or - self ::

Discuss the general complexity, in terms of query size and data size, of query evaluation using the alternative CoreXPath semantics, under the assumption that operations like F axis ,

Check query containment for each combination of the following CoreXPath expressions: a/b/c, a/b[c]/∗, a/b[∗]/c, a/∗/c,

Abstract— In this paper we present the operational semantics of RFuzzy, a fuzzy Logic Programming framework that represents thruth values using real numbers from the unit