THE LOGIC IN COMPUTER SCIENCE COLUMN

by

Yuri GUREVICH

Electrical Engineering and Computer Science Department

University of Michigan Ann Arb or MI USA

Forms of Semantic Sp ecication

Carl A Gunter

UniversityofPennsylvania

The way to sp ecify a programming language has b een a topic of heated debate for some

decades and at present there is no consensus on how this is b est done Real languages are

almost always sp ecied informally nevertheless precision is often enough lacking that more

formal approaches could b enet b oth programmers and language implementors My purp ose

in this column is to lo ok at a few of these formal approaches in hop e of establishing some

distinctions or at least stirring some discussion

Perhaps the crudest form of semantics for a programming language could b e given by

providing a compiler for the language on a sp ecic physical machine If the machine archi

tecture is easy to understand then this could b e viewed as a way of explaining the meaning

of a program in terms of a translation into a simple mo del This view has the advantage

that every higherlevel programming language of any use has a compiler for at least one

machine and this sp ecication is entirely formal Moreover the sp ecication makes it known

to the programmer how eciency is b est achieved when writing programs in the language

and compiling on that machine On the other hand there are several problems with this

technique and I do not knowofany programming language that is really sp ecied in this

way although Im told that such sp ecications do exist First of all the purp ose of a

higherlevel programming language is usually to provide some mediation b etween the waya

programmer would liketoprovide instructions and the way a machine needs to have them If

the programmer is forced to think of the meanings of his programs in terms of how they will

b e compiled then most of the advantage of having a higherlevel language is lost Second

a description of how to compile the language on architecture X may not b e convenient for

understanding the b est way to compile it for architecture Y The temptation would b e to

simulate X on Y but this may not b e ecient and an attempt to implementitby some more

direct means must cop e with the question of what are the invariants that must b e preserved

Table ALGOL semantics for assignments

Examples

s p n n s

n n

A BC v q S

S v k arctan s zeta

V QY Z

Semantics

Assignment statements serve for assigning the value of an expression to one or several

variables or pro cedure identiers Assignment to a pro cedure identier may only o ccur

within the b o dy of a pro cedure dening the value of a function designator cf section

The pro cess will in the general case b e understo o d to take place in three steps as follows

Any subscript expressions o ccurring in the left part variables are evaluated in

sequence from left to right

The expression of the statementisevaluated

The value of the expression is assigned to all the left part variables with any

subscript expressions having values as evaluated in step

For this the X compiler alone will provide no clue

One approach to resolving this problem is to give a compiler for the language to an

abstract machine rather than a physically existent piece of hardware If this abstract machine

is cleverly chosen then it may b e p ossible to simulate it on a wide range of concrete actual

machines in an acceptably ecient manner This will aid the p ortability of the language

and if the abstract machine is easy to understand it will free implementers from the need

to deal with a p ossibly more complex compilation for a machine they do not need to know

ab out Moreover a programmer could safely think in terms of the abstract machine and

still write ecient programs Now the notion of an abstract machine could corresp ond

to just ab out anything but the nature of this ob jective suggests that an abstract machine

must b e fairly similar to the architectures on whichitistobeimplemented In short an

abstract machine is a least common denominator for the class of machines over whichitis

an abstraction

The problem with abstract machines therefore is that they may b e abstract enough

for some but still to o lowlevel for others Every programmer who uses a higherlevel

language must understand its semantics at some level of abstraction A compiler for an

abstract machine is likely to b e hard to understand in detail even for the clearest language

and simplest abstract machine Hence programmers ordinarily understand the semantics

Table Syntax for a simple imp erative programming language

I identier

N numeral

B true j false j B and B j B or B j not B j

EE j E E

E N j I j E E j E E j E E jE

C skip j C C j I E j

if B then C else C j while B do C od

of a language through examples intuitions ab out the underlying machine mo del and some

kind of informal semantic description By way of illustration an excerpt from one such

sp ecication app ears in Figure The example is taken from page of the Algol

revised rep ort Nau and describ es the semantics of the assignment statements in that

language The example is not chosen to p ointoutany particular strength or failing of such

informal semantic descriptions but merely to give a go o d example of one In the b est

circumstances an exp erienced programmers intuition ab out the meanings of the phrases

lls in any omissions in the description and it can b e viewed as a simple succinct and

readable account of the meanings of language constructs Atworst however the description

can b e fatally ambiguous or misleading and programming errors or compiler implementation

errors could result

Research in the semantics of programming languages has sought to nd alternatives

to lowlevel abstract machines and informal unrigorous semantic descriptions One of the

earliest ideas for another approachwas that of a metacircular evaluator in which the meaning

of a language construct of language L is explained in terms of an interpreter written in

language L itself Such a program can b e illuminating but it cannot explain all of the details

ab out the semantics of the language and must therefore serve as an auxiliary form of semantic

description Another somewhat idealistic approach to the semantics of a programming

language is to see it as a vo cabulary for describing elements of a mathematical mo del For

example a program mightbeviewed as a term in an algebra with an appropriate signature

and mo delled by a standard choice of algebra having that signature Ideas such as this date

back to the late s but b efore discussing it in more detail I would liketolookata

more recent form of sp ecication

The syntax for a simple language app ears in Table The semantics of the language could

no doubt b e describ ed quite clearly using computerese but it is not much harder to givea

formal semantics for this language Our semantics will b e dened in terms of an abstract

representation of a machine memory as an assignmentofinteger values to identiers of the

language

mem identier Z

Assume that semantic functions for arithmetic expressions and b o olean expressions are al

ready known

B mem ftrue falseg

E mem Z

It can b e assumedfor the sake of uniformitythat these semantic functions were also

dened by a means similar to that b eing used here for commands The meaning C ofa

command C will b e dened as a partial function from mem input to mem output We

will dene the semantic function in terms of a concept of a machine conguration consisting

of a p ossibly empty control part and a data part representing the current memory More

preciselya conguration is either

a pair C s consisting of a command C and a memory sor

a memory s

Rules for evaluating a program of the simple imp erative language are given in terms of a

binary relation on congurations this is dened to b e the least relation that satises

the rules in Table In the transition rules for assignment the evaluation of the command

results in a new memory in whichthevalue asso ciated with the identier I is b ound to the

value of the expression E in memory s The notation used there is dened as follows for a

value n Z



n if I J

snI J



sJ otherwise

Now let b e the transitive closure of the relation that is is the least transitive

relation that contains

Lemma If s and s for a conguration then s s

The meaning of a program C can now b e dened by



s if C s s

C s



undened otherwise

where the symbol is b eing used rather than to emphasize that C isa partial function

whichmay b e undened on some memories s

Table Transition semantics for a simple imp erative programming language

skips s

C s C s





C C s C C s

  



C s s



C C s C s

  

I E s sE sI

if B then C else C s C s if B s true

  

if B then C else C s C s if B s false

  

while B do C ods s if B s false

while B do C ods C while B do C ods if B s true

This semantic description now gives rise to a set of equations b etween programs if we take

C to b e equivalentto C when C C It is a virtue of this equivalence that it ignores

imp ortant asp ects of a program such as its eciency It is this separation of concerns that

makes it p ossible to develop a theory of program transformations we could not saywhen

the replacement of one program by another is legitimate without saying what prop ertyisto

b e preserved under such a replacement

The form of semantics I have just describ ed is usually called a structural operational



semantics or SOS It is sometimes also called a Plotkin style op erational semantics b ecause

of an inuential DAIMI technical rep ort of Gordon Plotkin Plo and several pap ers in

which he used this form of sp ecication I prefer to use the term transition semantics for

the kind of op erational semantics given in Table since transition is more descriptivein

this context than structural or Plotkinstyle The terminology is also familiar from the

use of similar systems in the study of pro cess algebras see Hen for example On the

other hand this more general term has the drawback of including a range of op erational

semanticssuch as those for automata and Petri netsthat seem quite dierent from the

semantics in Table

In lo oking at the transition semantics it is natural to wonder if it is p ossible to describ e

the relation C s s more directly Rather than using rules to describ e transition steps

Ihave sometimes also seen the term structured op erational semantics Is this terminology meantto

suggest that other forms of op erational semantics are unstructured

Table Natural semantics for a simple imp erative programming language

skips s

C s s C s s

 

C C s s

 

I E s sE sI

B s true C s s



if B then C else C s s

 

B s false C s s



if B then C else C s s

 

B s false

while B do C ods s

B s true C s s while B do C ods s

while B do C ods s

why not use rules to describ e itself This is indeed p ossible and one way of doing it

app ears in Table The desired connection can b e describ ed precisely

Lemma For any program C and memory s C s s if and only if C s s

This approach to op erational semantic description is very p opular now and has many

app ealing characteristics which I will discuss briey b elow It is sometimes called a structural

op erational semantics since the rules follow the structure of the terms of the language just

as for the transition semantics This clash of nomenclature can b e confusing though since

the binary relations and are very dierent from one another I do not know full details

of the history of the use of the form of semantic sp ecication It is largely avoided by

Plotkin in Plo Here is a short passage from that rep ort discussing the tradeo involved

in directly establishing rules for whole derivations as opp osed to axiomatizing via sequences

of steps

It could well b e argued that our formalization is not really that direct A more

direct approachwould b e to give rules for the transition sequences themselves

the evaluations For the intuitive sp ecication refers to these evaluations rather

than anyhyp othetical atomic actions from which they are comp osed However

axiomatizing a step is intuitively simpler and we prefer to follow a simple ap

proachuntil it leads us into such diculties that it is b etter to consider whole

derivations

The form of semantic description do es app ear in an article of MartinLof see page

of Mar

Toexecuteca rst execute cIfyou get xb as a result then continue by

executing bax Thus cahasvalue d if c has value xb and bax has

value d

This is the callbyname rule with has value for the relation The rule for callbyvalue

in this form app ears in Plo as part of the discussion there of Landins SECD machine

Such a semantics is sometimes termed a natural semantics and has b een carefully studied

and used by Gilles Kahn and others see DDDK for example There are those who take

exception to this term is it really the most natural form of semantic description but in

its favor there is also a similaritybetween derivations of relations and pro ofs in natural

deduction When the binary relation M V is instead the relation M t between a term and

its typ e then the connection with natural deduction has some technical basis the Curry

Howard corresp ondence Those who have attempted to nd another terminology seem to

leap from the frying pan into the re by using vague and misleading terms like relational

semantics For practical applications the use of natural semantics is so robust and easy

to work with that it has b een used to provide a formal semantic sp ecication for Standard

ML MTH MT

Now thinking as a logician let me note that the function while B do C odwas

not explicitly dened from the functions B and C using a semantic function W and an

equation such as

while B do C od W B C

This is inconsistent with the way a semantics is ordinarily given for an ob ject language in

logic Consider for example the wayTarskis semantics of rst order logic is given If and

are rst order formulae and is an assignment of meanings in the universe of the mo del

is true if and only if and are b oth true For a variable xx then

is true if and only if for every element a of the mo del ax is true Other meanings

are dened similarly

Indeed in research on natural language this form of semantic description is also stressed

The idea that the meaning of the whole should b e describ ed in terms of the meanings of

the parts using semantic functions is called compositionality and the idea dates back at least

to the writings of Frege at the turn of the centuryFrom a computer science engineering

p ersp ective the goal is at least in principle a very desirable one Comp ositionality can b e an

excellent prop erty for controlling complexity although attempts to achieve comp ositionality

can also introduce complexity So let us see howfarwe can go in getting a comp ositional

semantics from what wehave done so far in Tables and

As b efore let us treat the meaning of a command C as a partial function C onmem

ories Clearly skips s Sequencing is interpreted by comp osition of partial functions

C C s C C s and assignment is up dating I E s sE sI Weinterpret

   

branching by



C s if B s true



if B then C else C s

 



C s if B s false



So far so go o d However when we write down the intuitive explanation of the meaning of

the while lo op a problem app ears



s if B s false

while B do C ods



while B do C odC s if B s true

In particular the expression while B do C od whichwe are trying to dene app ears on

both sides of the equation What wemeanisthatwhile B do C od is some form of

canonical xedpoint of this equational characterization To put it another wayitisaxed

p oint of the functional F mem mem mem memwhere



s if B s false

F f s



f C s if B s true

Nowwhile B do C odx F really is a comp ositional description b ecause the denition

of F was made in terms of C andB only

w that sucha xedpointeven exists If it do es is there a canonical But howdowekno

choice of such xed p oint that will match the meaning that wegave with our op erational

semantics ab ove These are the central questions that the theory of semantic domains and its

asso ciated techniques for relating op erational and xedp ointsemantics are meant to address

There is an elegant and simple mathematical theory that provides the necessary xedp oints

as elements of certain kinds of spaces called domains The spaces typically used maybe

viewed as partially ordered sets or sometimes as metric spaces or top ological spaces This

form of semantic description has sometimes b een called mathematical semantics It has

its origins in the work of Scott and Strachey in the late s SS Sto I dislikethe

dening term mathematical since the op erational descriptions ab ove transition semantics

and natural semantics are themselves mathematically rigorous and abstract It has also

b een called comp ositional semantics for the reasons I outlined ab ove I prefer to call it

a xedp oint semantics since that provides a helpful description of the primary to ol that

underlies the metho d

The most common term for descriptions in the style of Scott and Strachey which Ive

rarely heard called a ScottStracheystyle semantics is denotational semantics With the

examples wehave at hand it is hard to see why this term distinguishes xedp ointsemantics

from op erational semantics It app ears to me that the equation



s if C s s

C s



undened otherwise

indicates that C is the denotation for a particular function from memories to memories

In the case of a natural op erational semantics I have sometimes heard it claimed that the

relation M V indicates that V is the meaning or value of M and hence M is a denotation for

V Thus natural op erational semantics is denotational While this intuition is an attractive

one I b elieve that it breaks down in nontrivial cases To illustrate the p oint let me intro duce

a slightly more substantial toy programming language

The syntax for PCF is given as follows

t num j bool j t t

M j succM j predM j true j false j zeroM j

x t j x t M j M M j x t M j if M then M else M

where x ranges over a primitive syntax class of variables This language is essentially the

one intro duced by Gordon Plotkin in Plo mo dulo a recasting of numerals and a binding

construct x t M in place of a constant Y A natural op erational semantics for the terms

of the language can b e found in Table The expression MxN denotes the result of

substituting term M for free o ccurrences of variable x in term N with the usual conventions

insuring that free variables of M are not captured by bindings of N If weread M V

as an assertion that V is the value of M then the rules tell us the meaning of M in terms

of its structure This assignment of meaning is not comp ositional though since the rule

for recursion do es not dene the meaning for x t M in terms of the meaning of a

sub expression but instead in terms of the p ossibly more complex expression x t M xM

On the other hand the xedp oint semantics of PCF does dene the meanings of PCF

programs comp ositionally using a xedp oint op erator to dene the meaning of x t M in

terms of the meaning of M

My primary interest in intro ducing this example was not to remake the p ointabout

comp ositionalitythe p oint here concerns denotation If M V is supp osed to indicate the

meaning of M as V then the semantics in Table is a very disapp ointing one Note in

particular that the value of x t M is simply x t M This form of denotation in

which a term denotes itself might b e termed fully concrete bycontrast with the notion

of a fully abstract xedp oint semantics and do es not directly provide anyusefulideaof

identication b etween programs of higher typ e This notion must come through some other

Table Callbyname evaluation for PCF

true true false false

M M succV M V

predM predM V succM succ V

M succV M

zeroM true zeroM false

M x t M NxM V

x t M x t M

M N V

M true M V M false M V

   

if M then M else M V if M then M else M V

     

x t M xM V

x t M V

means in which the meaning of a function is given by the rule for application with the idea

that x t M denes a function from input values to output values If t happ ens to b e itself

a higher typ e this view is problematic since a value of typ e t needs to b e a function rather

than an expression if we are to get a reasonable theory

I am not arguing that one cannot use natural op erational semantics to reason ab out

programs indeed it can b e very useful for proving certain prop erties I am arguing that for

higher typ es the op erational rules in Table do not really saythat M denotes V if M V

unless denotation is here b eing taken in a trival sense and I see no immediate wayof

repairing this shortcoming bysay a reshuing of the form of the rules Togetasemantics

in which a program is asso ciated via a semantic function with an element of an abstract

realm of mathematical meanings requires some further elab oration of the signicance of the

op erational rules

Despite these equivo cations on what is denotational it is certainly the case that natural

semantics and xedp oint semantics have great similarity when viewed as interpreters It is

often remarked that the descriptive comp onent of a denotational semantics as one nds in

references such as Gor is likea calculus evaluator for the language b eing interpreted

Indeed the functional fragment of a language like ML is excellent for writing interpreters for

other languages On the other hand the natural semantics for a language is likeaninterpreter

written with Horn clauses and can b e evaluated by a form of pro of search familiar from logic

programming In my exp erience such semantic descriptions do not use unication b eyond

pattern matching or do any backtracking so the interpreter involved is simpler than that

required for prolog

The traditional view of xedp oint semantics as comp ositional semantics has b een chal

lenged by recent developments in the semantics of programming languages In languages

suchasPCF as describ ed ab ove there is a close relationship b etween the syntactic struc

ture of a term and the typing rule that applies to the term For example there is exactly

one typing rule for application which has the following form

H M s t H N s

H M N t

where H isatyp e assignment asso ciating typ es with free variables in M N If the typ es of

M and N are uniquely determined by the terms then so to o is the typ e t of the application

Since the meaning of M N isgiven by a xedp oint semantics in terms of the meanings of

M and N wemay think of the semantics as following the structure of the typing rules just

as well as thinking of them as following the structure of the term In the case of PCF this

simply provides twoways of thinking of the same inductive denition But for most of the

calculi that involve subtyping this coincidence breaks down The problem can usually b e

traced to the subsumption rule

M s st

M t

where stmeans that s is a subtyp e of t If subtyping is nontrivial then some terms

will have more than one typ e But more signicantly in most calculi with such a rule a

given typing judgement M t mayhave more than one proof In particular there is a real

dierence b etween dening the meaning of a term inductively in its structure and dening

its meaning inductively in terms of a pro of of a typing judgement for it Moreover if an

assignment of meaning follows the structure of a pro of then it is necessary to show that the

meaning attached to a term is the same regardless of the choice of the pro of This is called

the coherenceproblem for the semantic function The reader can nd some discussion of this

in BCGS there has b een substantial progress on understanding the role of coherence

results in calculi without subtyp es as well

Discussions of the kinds of formal sp ecication techniques for programming languages

often divide these into three categories op erational including structural denotational

xedp oint and axiomatic The term axiomatic semantics sounds likeanoxymoron to

a logician of course but it sometimes has a certain legitimacy Hoare triples for example

emb ed the programming language in a logic whose semantics is understo o d and thereby

indirectly impart meaning to programs It is worth noting that such an axiomatic semantics

is usually given compositional ly using rules that explain prop erties of programs in terms of

prop erties enjoyed by comp onent parts On the other hand there are cases where the rules

are not comp ositional esp ecially for logics of concurrent programs

Let me turn now to a discussion of abstract machines and how they are related to other

forms of op erational semantics The most familiar example of an abstract machine in the

context of is Landins SECD machine Lan Lan for callby



value evaluation of the untyp ed or typ ed calculus As I discussed earlier for abstract

machines in general a characteristic of the SECD machine is the similarity of its basic

instructions to those of standard computer architectures The SECD machine is describ ed

in dozens of sources so let just very briey recall a variant of it here A state of the machine

is a four tuple S E C D where S is the Stack E is the Environment C is the Code and

D is the Dump The action of the machine is describ ed by a collection of transitions driven

by the next op eration in the co de list C Instructions in the co de list can b e formed from

the terms together with a primitive instruction ap for application The stack comp onent

S is simply a stack of closures ie terms paired with environments An environment E is

a partial function from variables to closures The dump is either nil or it is an S E C D

tuple The following transition rules cover all of the cases that can arise starting from a

tuple nil Mnil where M is a closed term

Cl S E nil S E C D Cl S E C D

S E x C D E xS E C D

S E x M C D x M ES E C D

x M E Cl S E ap C D nil E ClxMS E C D

S E N M ap C D S E M N C D

The double colon denotes cons for lists here b oth S and C are b eing represented as lists

The thing to notice ab out this SECD semantics is that there are no rules with hyp otheses

just transitions The representation of a term includes its own stacks for holding intermedi

ate values during computation By contrast at the opp osite extreme a natural op erational

semantics suppresses as much detail ab out this asp ect of computation as p ossible Instead

of using rewriting as the driving force of computation it uses search for a pro of The tran

sition semantics provides a sort of halfway house in which computation is a combination

of rewriting and pro of search If we think of rewriting as a horizontal kind of computa

tion represented as a sequence of arrows from left to right and searchasa vertical kind

of computation represented with a tree then the dierence b etween abstract machines

transition semantics and natural semantics can b e graphically illustrated as in Figure

A detailed intro ductory exp osition of many of the relationships I have discussed here

for the Simple Imp erative Language in Table can b e found in the new b o ok of Hanne and



It is also p ossible to adapt the callbyvalue machine to callbyname execution thereby more closely

matching the evaluation for PCF in Table

M M M M M

    n

Abstract Machine

M M M M M

    n

Transition Semantics

M V

Natural Semantics

Figure Three forms of op erational semantics

Flemming Nielson NN similar languages are examined in Ten My own b o ok Gun

fo cuses on the language PCF and its extensions There is a growing literature on the

relationships b etween various forms of op erational semantics Research of John Han

nan Han HM has help ed to clarify some of the distinctions b etween these dierent

forms of op erational semantics and I refer the reader to his work for a further treatment

There is also an approach to op erational semantics that fo cuses on evaluation contexts it

has b een used to study the relationships b etween dierent forms of semantic sp ecication in

languages that include control constructs FFKD and the approach seems to work well

for pro ofs that typ e systems exclude certain kinds of errors WF

Before closing let me make a comment on a metho dology implicit in the discussion

ab ove the use of toy languages such as the simple imp erative programming language

Can we really learn anything ab out the semantics of real languages by studying rareed

theoretical ones The question is a serious one b ecause the control of complexityisa key

element of a clear description of a language Two metho ds that lo ok equally reasonable for

a language with a grammar less than a halfpage long may not b e so for a language times

as complex Do all of the semantics discussed ab ove scale up equally well Opinions seem

to vary on the matter but I think most researchers in semantics will agree that complexity

is a serious problem for the formal semantics of a substantial languageno matter what

approach is used

Nevertheless there is a strong case for the study of toy languages aside from the obvious

fact that the complete semantics for a real language will not t in a journallength article

When there is a fo cus on conceptual issues a simple language can illustrate the basic question

in isolation where it can b e studied in some depth In a real language one has trouble seeing

the forest b ecause of all the trees I b elieve that programmers implicitly use what they

understand ab out toy sublanguages as a way of reasoning ab out their very real programs

If a comp onent of a program has b een written in a small fragmentofamuch larger language

then one can employ reasoning principles that apply to that small fragment For example if a

pro cedure in a larger program is written in a purely functional fragment of the programming

language then certain reasoning principles will b e available for that pro cedure The full

language sp ecication is likely to hide these principles under the bulk of state and control

features usually included in a real language In this way one trys to pro ceed by conceptual

layers in reasoning from the simple to the complex

In writing on the topic of forms of semantic sp ecication one is forced into a certain

immo desty Since there are so many dierent approaches it seems that the ones mentioned

are distinguished unfairly from those omitted For example there are suchtechniques as the

Vienna Denition Language VDM Weg the action semantics of Peter Mosses see the

references in Mos the evolving algebras of Yuri Gurevich Gur and many others In

the end I b elieve that no single approach to semantic sp ecication is b est for all tasks The

practical application of formal sp ecications relies on a variety of sp ecication tec hniques

an understanding of which purp oses are b est served byeach and a foundational theory

of the relationships b etween them I hop e that the discussion in this column can provide

some imp etus for further comparison and analysis of the varieties of semantic sp ecication

techniques nowavailable

Iwould like to express my appreciation to the p eople who made many helpful comments

and suggestions based on an earlier draft of this note Peter Baumann Bard Blo om Matthias

Felleisen Yuri Gurevich James Huggins Gilles Kahn Gordon Plotkin Jon Riecke and

Rob ert Tennent Not everyone agreed with me on every p oint or agreed with one another for

that matter but their views contributed substantially to the p ersp ectiveofmy exp osition

References

BCGS V BreazuTannen T Co quand C A Gunter and A Scedrov Inheritance as

implicit co ercion Information and Computation

DDDK D Clement J Desp eyroux T Desp eyroux and G Kahn A simple applica

tive language miniML In Symposium on LISP and Functional Programming

pages ACM

FFKD M Felleisen D PFriedman E E Kohlb ecker and B Duba A syntactic theory

of sequential control Theoretical Computer Science

Gor M J C Gordon The Denotational Description of Programming Languages

Springer

Gun C A Gunter Semantics of Programming Languages Structures and Techniques

To b e published by the MIT Press

Gur Y Gurevich Logic and the challenge of computer science In E Boger editor

Trends in Theoretical Computer Science pages Computer Science Press

Han J Hannan Making abstract machines less abstract In J Hughes editor Proceed

ings of the ConferenceonFunctional Programming and Computer Architecture

SpringerVerlag LNCS

Hen M Hennessy Algebraic Theory of Processes MIT Press

HM J Hannan and D Miller From op erational semantics to abstract machines

Mathematical Structures in Computer Science To app ear

Lan P Landin The mechanical evaluation of expressions Comput J

Lan J Landin An abstract machine for designers of computing languages In IFIP

Congress pages NorthHolland

Mar Per MartinLof Constructive mathematics and computer programming In Inter

national Congress for Logic Methodology and Philosophy of Science pages

NorthHolland

Mos P Mosses Denotational semantics In J van Leeuwen editor Handbook of

Theoretical Computer Science pages North Holland

MT R Milner and M Tofte Commentary on StandardML MIT Press

MTH R Milner M Tofte and R Harp er The Denition of StandardML MIT Press

Nau P Naur Revised rep ort on the algorithmic language ALGOL Communica

tions of the ACM

NN H R Nielson and F Nielson Semantics with Applications A Formal Introduc

tion for Computer ScienceTo b e published by the Wiley Press

Plo G D Plotkin Callbyname callbyvalue and the lamb da calculus Theoretical

Computer Science

Plo G D Plotkin LCF considered as a programming language Theoretical Com

puter Science

Plo G D Plotkin A Structural Approach to Operational Semantics Tech

nical Rep ort FN Computer Science Department Aarhus University Ny

MunkegadeDK Aarhus CDenmark

SS D S Scott and C StracheyTowards a mathematical semantics for computer

languages In J Fox editor Computers and Automata pages Polytechnic

Institute of Bro oklyn Press

Sto J E Stoy Denotational Semantics The ScottStrachey Approach to Pr ogram

ming Language Semantics MIT Press

Ten R D Tennent Semantics of Programming Languages PrenticeHall

Weg PWegner The Vienna Denition Language ACM Computing Surveys

WF A K Wright and M Felleisen A syntactic approach to type soundnessTechnical

Rep ort COMP TR Department of Computer Rice University