[MLton] cvs commit: mlb integration

Stephen Weeks MLton@mlton.org
Wed, 28 Jul 2004 15:28:28 -0700


--z1Zs30tUqd
Content-Type: text/plain; charset=us-ascii
Content-Description: message body text
Content-Transfer-Encoding: 7bit


> The only missing piece there is annotations.  

It is worth thinking about which annotations are "expert" and should
not be documented.

> Steve, can you check that this converts to HTML correctly? I don't
> have heava on any system I use.

Unfortunately, it doesn't convert very well.  There are a number of
symbols it gets confused on (<, >, psi, -->, ...).  I've attached the
html to this mail so you can have a look.

I'm not sure if it's worth fixing this.  It may be better to admit
that the semantics is a mathematical document, and distribute it as a
self-contained pdf.  It's not so clear it belongs in the user guide
anyways, since its audience may be too limited (not that I didn't
enjoy reading it :-).  My understanding is that we will add a section
(not appendix) with a gentle intro aimed at those wanting to
read/write their own mlbs.

>   Please report bugs or suggestions.

The usage message and other documentation (user guide, man page) needs
to refer to the ability to pass an mlb on the command line.


I'm wondering when we should start using mlbs to build mlton.  Since
we still need to use SML/NJ, the only way I see to do it is to
duplicate the information that is in the mlbs and the cm files.


--z1Zs30tUqd
Content-Type: text/html
Content-Disposition: inline;
	filename="Formal_Spec_MLBs.html"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
            "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>

<META http-equiv=3D"Content-Type" content=3D"text/html; charset=3DISO-8=
859-1">
<META name=3D"GENERATOR" content=3D"hevea 1.07">
<TITLE>
Formal Specification of MLBs
</TITLE>
</HEAD>
<BODY >
<A HREF=3D"main016.html"><IMG SRC =3D"previous_motif.gif" ALT=3D"Previo=
us"></A>
<A HREF=3D"index.html"><IMG SRC =3D"contents_motif.gif" ALT=3D"Up"></A>=

<A HREF=3D"Deviations_SML_NJ_from.html"><IMG SRC =3D"next_motif.gif" AL=
T=3D"Next"></A>
<HR>

<H2><A NAME=3D"htoc79">A</A>&nbsp;&nbsp;Formal Specification of MLBs</H=
2><A NAME=3D"section:mlb-formal"></A>
This section formally specifies the ML Basis system in MLton used
to program in the large. The system has been designed to be a natural
extension of Standard ML, and the specification is given in the style
of The Definition of Standard ML (henceforeth, the Definition). This
section adopts (often silently) abbreviations, conventions,
definitions, and notation from the Definition.
<A NAME=3D"toc64"></A>
<H3><A NAME=3D"htoc80">A.1</A>&nbsp;&nbsp;Syntax of MLBs</H3>
For MLBs there are further reserved words, identifier classes and
derived forms. There are no further special constants; comments and
lexical analysis are as for the Core and Modules. The derived forms
appear in Section&nbsp;<A HREF=3D"#sec:mlb:DerivedForms">A.4</A>.
<A NAME=3D"toc65"></A>
<H4><A NAME=3D"htoc81">A.1.1</A>&nbsp;&nbsp;Reserved Words</H4>
The following are the additional reserved words used in MLBs.
<DIV ALIGN=3Dcenter>
<TT><I>bas</I></TT> &nbsp;&nbsp;&nbsp;&nbsp; <TT><I>basis</I></TT>
</DIV>
Note that many of the reserved words from the Core and Modules are not
used by the grammar of MLBs. However, as the grammar includes
identifiers from the grammars of the Core and Modules, it is useful to
consider the reserved words from the Core and Modules to be reserved
in MLBs as well.
<A NAME=3D"toc66"></A>
<H4><A NAME=3D"htoc82">A.1.2</A>&nbsp;&nbsp;Identifiers</H4>
The additional identifier class for MLBs are <I>BasId</I> (basis
identifiers). Basis identifiers must be alphanumeric, not starting
with a prime. The class of each identifier occurence is determined by
the grammatical rules which follow. Henceforth, therefore, we
consider all identifier classes to be disjoint.
<A NAME=3D"toc67"></A>
<H4><A NAME=3D"htoc83">A.1.3</A>&nbsp;&nbsp;Infixed operators</H4>
The grammar of MLBs does not directly admit fixity directives.
However, the static and dynamic semantics for MLBs will import source
files that must be parsed in the scope of fixity directives and that
may introduce additional fixity directives into scope.
Figure&nbsp;<A HREF=3D"#fig:mlb:S:FixityEnv">1</A> formalizes the Defin=
ition's notion of
<EM>infix status</EM> as a <EM>fixity environment</EM>.
<BLOCKQUOTE><DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D2 CELLPADDING=3D0>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP><I>InfixStatus</I> =3D {<TT><I>nonfix</I=
></TT></TD>
<TD NOWRAP>} <FONT FACE=3Dsymbol>=C8</FONT> </TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD ALIGN=3Dcenter>&nbsp;</TD>
</TR>
<TR><TD ALIGN=3Dleft><FONT SIZE=3D7><FONT FACE=3Dsymbol>=C8</FONT></FON=
T></TD>
</TR>
<TR><TD ALIGN=3Dcenter><FONT SIZE=3D2><I>d</I> <FONT FACE=3Dsymbol>=CE<=
/FONT> {0,...,9}</FONT></TD>
</TR></TABLE></TD>
<TD NOWRAP> {<TT><I>infix</I></TT>&nbsp;<I>d</I>, <TT><I>infixr</I></TT=
>&nbsp;<I>d</I>}</TD>
</TR></TABLE></TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP><I><I>FE</I></I></TD>
<TD ALIGN=3Dcenter NOWRAP><FONT FACE=3Dsymbol>=CE</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I>FixEnv</I> =3D <I>VId</I> <I>fin</I> <I>Infi=
xStatus</I></TD>
</TR></TABLE></TD>
</TR></TABLE></DIV>
<BR>
<DIV ALIGN=3Dcenter>Figure 1: Fixity Environment</DIV><BR>
<A NAME=3D"fig:mlb:S:FixityEnv"></A>
<DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV></BLOCKQUOTE>
<A NAME=3D"toc68"></A>
<H4><A NAME=3D"htoc84">A.1.4</A>&nbsp;&nbsp;Grammar for MLBs</H4>
The phrase classes for MLBs are shown in
Figure&nbsp;<A HREF=3D"#fig:mlb:S:PhraseClasses">2</A>.
<BLOCKQUOTE><DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D2 CELLPADDING=3D0>
<TR><TD ALIGN=3Dleft NOWRAP><I>BasExp</I></TD>
<TD ALIGN=3Dleft NOWRAP>basis expressions</TD>
</TR>
<TR><TD ALIGN=3Dleft NOWRAP><I>BasDec</I></TD>
<TD ALIGN=3Dleft NOWRAP>basis-level declaration</TD>
</TR>
<TR><TD ALIGN=3Dleft NOWRAP><I>BasBind</I></TD>
<TD ALIGN=3Dleft NOWRAP>basis bindings</TD>
</TR>
<TR><TD ALIGN=3Dleft NOWRAP><I>BStrBind</I></TD>
<TD ALIGN=3Dleft NOWRAP>(basis) structure bindings</TD>
</TR>
<TR><TD ALIGN=3Dleft NOWRAP><I>BSigBind</I></TD>
<TD ALIGN=3Dleft NOWRAP>(basis) signature bindings</TD>
</TR>
<TR><TD ALIGN=3Dleft NOWRAP><I>BFunBind</I></TD>
<TD ALIGN=3Dleft NOWRAP>(basis) functor bindings</TD>
</TR></TABLE></TD>
</TR></TABLE></DIV>
<BR>
<DIV ALIGN=3Dcenter>Figure 2: MLBs Phrase Classes</DIV><BR>
<A NAME=3D"fig:mlb:S:PhraseClasses"></A>
<DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV></BLOCKQUOTE>
We use the variable <I><I>basexp</I></I> to range over <I>BasExp</I>, e=
tc.
The conventions adopted in presenting the grammatical rulse for MLBs
are the same as for the Core and Modules. The grammatical rules are
showin in Figure&nbsp;<A HREF=3D"#fig:mlb:S:GrammaticalRules">3</A>.
<BLOCKQUOTE><DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D2 CELLPADDING=3D0>
<TR><TD ALIGN=3Dright NOWRAP><I><I>basexp</I></I></TD>
<TD ALIGN=3Dcenter NOWRAP>::=3D</TD>
<TD ALIGN=3Dleft NOWRAP><TT><I>bas</I></TT>&nbsp; <I><I>basdec</I></I> =
&nbsp;<TT><I>end</I></TT></TD>
<TD ALIGN=3Dleft NOWRAP>basic</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP><I><I>basid</I></I></TD>
<TD ALIGN=3Dleft NOWRAP>basis identifier</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP><TT><I>let</I></TT>&nbsp; <I><I>basdec</I></I> =
&nbsp;<TT><I>in</I></TT>&nbsp; <I><I>basexp</I></I> &nbsp;<TT><I>end</I=
></TT></TD>
<TD ALIGN=3Dleft NOWRAP>local declaration</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP><I><I>basdec</I></I></TD>
<TD ALIGN=3Dcenter NOWRAP>::=3D</TD>
<TD ALIGN=3Dleft NOWRAP><TT><I>basis</I></TT>&nbsp; <I><I>basbind</I></=
I></TD>
<TD ALIGN=3Dleft NOWRAP>basis</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP><TT><I>local</I></TT>&nbsp; <I><I>basdec</I></I=
><SUB><FONT SIZE=3D2>1</FONT></SUB> &nbsp;<TT><I>in</I></TT>&nbsp; <I><=
I>basdec</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB> &nbsp;<TT><I>end</I>=
</TT></TD>
<TD ALIGN=3Dleft NOWRAP>local</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP><TT><I>open</I></TT>&nbsp; <I><I>basid</I></I><=
SUB><FONT SIZE=3D2>1</FONT></SUB> =B7=B7=B7 <I><I>basid</I></I><SUB><FO=
NT SIZE=3D2><I>n</I></FONT></SUB></TD>
<TD ALIGN=3Dleft NOWRAP>open (<I>n</I> <FONT FACE=3Dsymbol>=B3</FONT> 1=
)</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP><TT><I>structure</I></TT>&nbsp; <I><I>bstrbind<=
/I></I></TD>
<TD ALIGN=3Dleft NOWRAP>(basis) structure binding</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP><TT><I>signature</I></TT>&nbsp; <I><I>bsigbind<=
/I></I></TD>
<TD ALIGN=3Dleft NOWRAP>(basis) signature binding</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP><TT><I>functor</I></TT>&nbsp; <I><I>bfunbind</I=
></I></TD>
<TD ALIGN=3Dleft NOWRAP>(basis) functor binding</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP>&nbsp;&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP>empty</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP><I><I>basdec</I></I><SUB><FONT SIZE=3D2>1</FONT=
></SUB>&nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT>;</TT><FONT FACE=3Dsymbo=
l>=F1</FONT>&nbsp;<I><I>basdec</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB=
></TD>
<TD ALIGN=3Dleft NOWRAP>sequential</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP><FONT COLOR=3Dpurple><I>path</I>.<I>mlb</I></FO=
NT></TD>
<TD ALIGN=3Dleft NOWRAP>import ML basis</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dcenter NOWRAP>&nbsp;</TD>
<TD ALIGN=3Dleft NOWRAP><FONT COLOR=3Dpurple><I>path</I>.<I>sml</I></FO=
NT></TD>
<TD ALIGN=3Dleft NOWRAP>import source</TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP><I><I>basbind</I></I></TD>
<TD ALIGN=3Dcenter NOWRAP>::=3D</TD>
<TD ALIGN=3Dleft NOWRAP><I><I>basid</I></I> &nbsp;<TT>=3D</TT>&nbsp; <I=
><I>basexp</I></I> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></=
TT>&nbsp; <I><I>basbind</I></I><FONT FACE=3Dsymbol>=F1</FONT></TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP><I><I>bstrbind</I></I></TD>
<TD ALIGN=3Dcenter NOWRAP>::=3D</TD>
<TD ALIGN=3Dleft NOWRAP><I><I>strid</I></I><SUB><FONT SIZE=3D2>1</FONT>=
</SUB> &nbsp;<TT>=3D</TT>&nbsp; <I><I>strid</I></I><SUB><FONT SIZE=3D2>=
2</FONT></SUB> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></TT>&=
nbsp; <I><I>bstrbind</I></I><FONT FACE=3Dsymbol>=F1</FONT></TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP><I><I>bsigbind</I></I></TD>
<TD ALIGN=3Dcenter NOWRAP>::=3D</TD>
<TD ALIGN=3Dleft NOWRAP><I><I>sigid</I></I><SUB><FONT SIZE=3D2>1</FONT>=
</SUB> &nbsp;<TT>=3D</TT>&nbsp; <I><I>sigid</I></I><SUB><FONT SIZE=3D2>=
2</FONT></SUB> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></TT>&=
nbsp; <I><I>bsigbind</I></I><FONT FACE=3Dsymbol>=F1</FONT></TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP><I><I>bfunbind</I></I></TD>
<TD ALIGN=3Dcenter NOWRAP>::=3D</TD>
<TD ALIGN=3Dleft NOWRAP><I><I>funid</I></I><SUB><FONT SIZE=3D2>1</FONT>=
</SUB> &nbsp;<TT>=3D</TT>&nbsp; <I><I>funid</I></I><SUB><FONT SIZE=3D2>=
2</FONT></SUB> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></TT>&=
nbsp; <I><I>bfunbind</I></I><FONT FACE=3Dsymbol>=F1</FONT></TD>
</TR></TABLE></TD>
</TR></TABLE></DIV>
<BR>
<DIV ALIGN=3Dcenter>Figure 3: Grammar: Basis Expressions</DIV><BR>
<A NAME=3D"fig:mlb:S:GrammaticalRules"></A>
<DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV></BLOCKQUOTE>
<A NAME=3D"toc69"></A>
<H4><A NAME=3D"htoc85">A.1.5</A>&nbsp;&nbsp;Syntactic Restrictions</H4>=

<UL><LI>
No binding <I><I>basbind</I></I> may bind the same identifier twice.
<LI>No binding <I><I>bstrbind</I></I>, <I><I>bsigbind</I></I> or <I><I>=
bfunbind</I></I> may bind the same identifier twice.
<LI>MLBs may not be cyclic; i.e., successively replacing
 <FONT COLOR=3Dpurple><I>path</I>.<I>mlb</I></FONT> with it's parsed <I=
>BasDec</I> must terminate.
</UL>
<A NAME=3D"toc70"></A>
<H4><A NAME=3D"htoc86">A.1.6</A>&nbsp;&nbsp;Parsing</H4>
The static and dynamic semantics for MLBs will interpret
<FONT COLOR=3Dpurple><I>path</I>.<I>sml</I></FONT> as a parsed <I>TopDe=
c</I> and
<FONT COLOR=3Dpurple><I>path</I>.<I>mlb</I></FONT> as a parsed <I>BasDe=
c</I>. Parsing a <I>TopDec</I>
must be performed against a fixity environment, and may result in a
modified fixity environment. <BR>
<BR>
Paths and parsers are given in Figure&nbsp;<A HREF=3D"#fig:mlb:S:PathsP=
arser">4</A>. A
(fixed) <I>Parser</I> <FONT COLOR=3Dred><I>P</I></FONT> provides the in=
terpretation of
<FONT COLOR=3Dpurple><I>path</I>.<I>sml</I></FONT> and <FONT COLOR=3Dpu=
rple><I>path</I>.<I>mlb</I></FONT> imports.
<BLOCKQUOTE><DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D2 CELLPADDING=3D0>
<TR><TD ALIGN=3Dcenter NOWRAP><TABLE CELLSPACING=3D2 CELLPADDING=3D0>
<TR><TD ALIGN=3Dright NOWRAP><FONT COLOR=3Dpurple><I>path</I>.<I>sml</I=
></FONT></TD>
<TD ALIGN=3Dcenter NOWRAP><FONT FACE=3Dsymbol>=CE</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I>SourcePath</I></TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP><FONT COLOR=3Dpurple><I>path</I>.<I>mlb</I=
></FONT></TD>
<TD ALIGN=3Dcenter NOWRAP><FONT FACE=3Dsymbol>=CE</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I>MLBasisPath</I></TD>
</TR></TABLE></TD>
</TR>
<TR><TD ALIGN=3Dcenter NOWRAP><TABLE CELLSPACING=3D2 CELLPADDING=3D0>
<TR><TD ALIGN=3Dright NOWRAP><FONT COLOR=3Dred><I>P</I></FONT></TD>
<TD ALIGN=3Dcenter NOWRAP><FONT FACE=3Dsymbol>=CE</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I>Parser</I> =3D=20
((<I>FixEnv</I> =D7 <I>SourcePath</I>)
 <I>fin</I> (<I>FixEnv</I> =D7 <I>TopDec</I>))=20
=D7=20
(<I>MLBasisPath</I> <I>fin</I> <I>BasDec</I>)</TD>
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE></DIV>
<BR>
<DIV ALIGN=3Dcenter>Figure 4: Parser</DIV><BR>
<A NAME=3D"fig:mlb:S:PathsParser"></A>
<DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV></BLOCKQUOTE>
For a file extension <FONT COLOR=3Dpurple>.<I>ext</I></FONT>, <FONT COL=
OR=3Dpurple><I>path</I>.<I>ext</I></FONT> denotes either an
absolute path or a relative path (relative to the <I>BasDec</I> being
parsed) to a file in the underlying file system. An implementation
may allow additional extensions (e.g., <TT>.<I>ML</I></TT>, <TT>.<I>fun=
</I></TT>,
<TT>.<I>sig</I></TT>) in elements of <I>SourcePath</I>. An implementati=
on
may additionally allow system environment variables to appear in
paths. <I>Parser</I> could be refined by a <EM>current working
directory</EM>, to formally specify the interpretation of relative path=
s,
and an <EM>system environment</EM>, to formally specify the
interpretation of system environment variables, but the above suffices
for the development in the following sections.<BR>
<BR>
<A NAME=3D"toc71"></A>
<H3><A NAME=3D"htoc87">A.2</A>&nbsp;&nbsp;Static Semantics for MLBs</H3=
>
<A NAME=3D"toc72"></A>
<H4><A NAME=3D"htoc88">A.2.1</A>&nbsp;&nbsp;Semantic Objects</H4>
The simple objects for the MLBs static semantics are exactly as for
Modules. The compound objects are those for Modules, augmented by
those in Figure&nbsp;<A HREF=3D"#fig:mlb:SS:CompoundObjects">5</A>.
<BLOCKQUOTE><DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D2 CELLPADDING=3D0>
<TR><TD ALIGN=3Dright NOWRAP><I><I>BE</I></I></TD>
<TD ALIGN=3Dcenter NOWRAP><FONT FACE=3Dsymbol>=CE</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I>BasEnv</I> =3D <I>BasId</I> <I>fin</I> <I>MB=
asis</I></TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP><I><I>M</I></I> &nbsp;<I>or</I>&nbsp; <I><=
I>FE</I></I>,<I><I>BE</I></I>,<I><I>B</I></I></TD>
<TD ALIGN=3Dcenter NOWRAP><FONT FACE=3Dsymbol>=CE</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I>MBasis</I> =3D <I>FixEnv</I> =D7 <I>BasEnv</=
I> =D7 <I>Basis</I></TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP><FONT FACE=3Dsymbol>Y</FONT></TD>
<TD ALIGN=3Dcenter NOWRAP><FONT FACE=3Dsymbol>=CE</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I>BasCache</I> =3D <I>MLBasisPath</I> <I>fin</=
I> <I>MBasis</I></TD>
</TR></TABLE></TD>
</TR></TABLE></DIV>
<BR>
<DIV ALIGN=3Dcenter>Figure 5: Compound Semantic Objects</DIV><BR>
<A NAME=3D"fig:mlb:SS:CompoundObjects"></A>
<DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV></BLOCKQUOTE>
The operations of projection, injection and modification are as for
Modules.
<A NAME=3D"toc73"></A>
<H4><A NAME=3D"htoc89">A.2.2</A>&nbsp;&nbsp;Inference Rules</H4>
As for the Core and for Modules, the rules for MLBs static semantics
allow sentences of the form
<DIV ALIGN=3Dcenter>
<I>A</I> |- <I><I>phrase</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I>A=
</I>'
</DIV>
to be inferred. Some hypotheses in rules are not of this form; they
are called <EM>side-conditions</EM>. The convention for options is as
in the Core and Modules semantics.<FONT SIZE=3D4><BR>
<BR>
<B>Basis Expressions</B> <BR>
<BR>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |-</FONT><FONT SIZE=3D4> =
<I><I>basexp</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I>'=
, <FONT FACE=3Dsymbol>Y</FONT>'</FONT><FONT SIZE=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basdec</I></I> <=
FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I>', <FONT FACE=3Dsymbol>=
Y</FONT>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>bas</I></TT>&nb=
sp; <I><I>basdec</I></I> &nbsp;<TT><I>end</I></TT> <FONT FACE=3Dsymbol>=
=BE=AE</FONT> <I><I>M</I></I>', <FONT FACE=3Dsymbol>Y</FONT>'
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(1)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>(<I><I>basid</I></I>) =3D <I><I>M</I></I>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basid</I></I> <F=
ONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I>', <FONT FACE=3Dsymbol>Y=
</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(2)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
<A NAME=3D"eqn:mlb:SS:localDeclaration"></A>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basdec</I></I> <=
FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I><SUB><FONT SIZE=3D2>1</=
FONT></SUB>, <FONT FACE=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D2>1</FONT></=
SUB> &nbsp;&nbsp;
<I><I>M</I></I> <FONT FACE=3Dsymbol>=C5</FONT> <I><I>M</I></I><SUB><FON=
T SIZE=3D2>1</FONT></SUB>, <FONT FACE=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D=
2>1</FONT></SUB> |- <I><I>basexp</I></I> <FONT FACE=3Dsymbol>=BE=AE</FO=
NT> <I><I>M</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>, <FONT FACE=3Dsym=
bol>Y</FONT><SUB><FONT SIZE=3D2>2</FONT></SUB>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>let</I></TT>&nb=
sp; <I><I>basdec</I></I> &nbsp;<TT><I>in</I></TT>&nbsp; <I><I>basexp</I=
></I> &nbsp;<TT><I>end</I></TT> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I=
>M</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>, <FONT FACE=3Dsymbol>Y</FO=
NT><SUB><FONT SIZE=3D2>2</FONT></SUB>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(3)</TD>
</TR></TABLE></DIV><BR>
<I>Comments</I>:
<UL><LI>
(<A HREF=3D"#eqn:mlb:SS:localDeclaration">3</A>) The use of <FONT FACE=3D=
symbol>=C5</FONT>, here
 and elsewhere, ensures that the type names generated by the first
 sub-phrase are distinct from the names generated by the second sub-phr=
ase.
</UL><FONT SIZE=3D4>
<B>Basis-level Declarations</B> <I><I>M</I></I>, <FONT FACE=3Dsymbol>Y<=
/FONT> |-</FONT><FONT SIZE=3D4> <I><I>basdec</I></I> <FONT FACE=3Dsymbo=
l>=BE=AE</FONT> <I><I>M</I></I>', <FONT FACE=3Dsymbol>Y</FONT>'</FONT><=
FONT SIZE=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basbind</I></I> =
<FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>BE</I></I>', <FONT FACE=3Dsymbo=
l>Y</FONT>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <FONT COLOR=3Dpurple><=
I>basis</I></FONT>&nbsp; <I><I>basbind</I></I> <FONT FACE=3Dsymbol>=BE=AE=
</FONT> <I><I>BE</I></I>' &nbsp;<I>in</I>&nbsp; <I>MBasis</I>, <FONT FA=
CE=3Dsymbol>Y</FONT>'
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(4)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basdec</I></I><S=
UB><FONT SIZE=3D2>1</FONT></SUB> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><=
I>M</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB>, <FONT FACE=3Dsymbol>Y</F=
ONT><SUB><FONT SIZE=3D2>2</FONT></SUB> &nbsp;&nbsp;
<I><I>M</I></I> <FONT FACE=3Dsymbol>=C5</FONT> <I><I>M</I></I><SUB><FON=
T SIZE=3D2>1</FONT></SUB>, <FONT FACE=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D=
2>1</FONT></SUB> |- <I><I>basdec</I></I><SUB><FONT SIZE=3D2>2</FONT></S=
UB> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I><SUB><FONT SIZE=3D=
2>2</FONT></SUB>, <FONT FACE=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D2>2</FO=
NT></SUB> &nbsp;&nbsp;
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>local</I></TT>&=
nbsp; <I><I>basdec</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> &nbsp;<TT>=
<I>in</I></TT>&nbsp; <I><I>basdec</I></I><SUB><FONT SIZE=3D2>2</FONT></=
SUB> &nbsp;<TT><I>end</I></TT> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>=
M</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>, <FONT FACE=3Dsymbol>Y</FON=
T><SUB><FONT SIZE=3D2>2</FONT></SUB>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(5)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>(<I><I>basid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB>) =
=3D <I><I>M</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> &nbsp;&nbsp; =B7=B7=
=B7 &nbsp;&nbsp;
<I><I>M</I></I>(<I><I>basid</I></I><SUB><FONT SIZE=3D2><I>n</I></FONT><=
/SUB>) =3D <I><I>M</I></I><SUB><FONT SIZE=3D2><I>n</I></FONT></SUB>=20
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>open</I></TT>&n=
bsp; <I><I>basid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> =B7=B7=B7 <I=
><I>basid</I></I><SUB><FONT SIZE=3D2><I>n</I></FONT></SUB> <FONT FACE=3D=
symbol>=BE=AE</FONT> <I><I>M</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> =
<FONT FACE=3Dsymbol>=C5</FONT> =B7=B7=B7 <FONT FACE=3Dsymbol>=C5</FONT>=
 <I><I>M</I></I><SUB><FONT SIZE=3D2><I>n</I></FONT></SUB>, <FONT FACE=3D=
symbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(6)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I>&nbsp;<I>of</I>&nbsp;<I><I>M</I></I> |- <I><I>bstrbind</=
I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I>SE</I>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>structure</I></=
TT>&nbsp; <I><I>bstrbind</I></I>
<FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>SE</I></I> &nbsp;<I>in</I>&nbsp=
; <I>MBasis</I>, <FONT FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(7)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I>&nbsp;<I>of</I>&nbsp;<I><I>M</I></I> |- <I><I>bsigbind</=
I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I>G</I>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>signature</I></=
TT>&nbsp; <I><I>bsigbind</I></I>
<FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>G</I> </I> &nbsp;<I>in</I>&nbsp=
; <I>MBasis</I>, <FONT FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(8)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I>&nbsp;<I>of</I>&nbsp;<I><I>M</I></I> |- <I><I>bfunbind</=
I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I>F</I>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>functor</I></TT=
>&nbsp; <I><I>bfunbind</I></I>
<FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>F</I></I> &nbsp;<I>in</I>&nbsp;=
 <I>MBasis</I>, <FONT FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(9)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter></TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- &nbsp;&nbsp; <FONT FAC=
E=3Dsymbol>=BE=AE</FONT> {} &nbsp;<I>in</I>&nbsp; <I>MBasis</I>, <FONT =
FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(10)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basdec</I></I><S=
UB><FONT SIZE=3D2>1</FONT></SUB> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><=
I>M</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB>, <FONT FACE=3Dsymbol>Y</F=
ONT><SUB><FONT SIZE=3D2>2</FONT></SUB> &nbsp;&nbsp;
<I><I>M</I></I> <FONT FACE=3Dsymbol>=C5</FONT> <I><I>M</I></I><SUB><FON=
T SIZE=3D2>1</FONT></SUB>, <FONT FACE=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D=
2>1</FONT></SUB> |- <I><I>basdec</I></I><SUB><FONT SIZE=3D2>2</FONT></S=
UB> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I><SUB><FONT SIZE=3D=
2>2</FONT></SUB>, <FONT FACE=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D2>2</FO=
NT></SUB>=20
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basdec</I></I><S=
UB><FONT SIZE=3D2>1</FONT></SUB> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><T=
T>;</TT><FONT FACE=3Dsymbol>=F1</FONT>&nbsp; <I><I>basdec</I></I><SUB><=
FONT SIZE=3D2>2</FONT></SUB> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M<=
/I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> <FONT FACE=3Dsymbol>=C5</FONT=
> <I><I>M</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>, <FONT FACE=3Dsymbo=
l>Y</FONT><SUB><FONT SIZE=3D2>2</FONT></SUB>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(11)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<FONT COLOR=3Dred><I>P</I></FONT>(<I><I>FE</I></I>&nbsp;<I>of</I>&nbsp;=
<I><I>M</I></I>, <FONT COLOR=3Dpurple><I>path</I>.<I>sml</I></FONT>) =3D=
 (<I><I>FE</I></I>', <I><I>topdec</I></I>) &nbsp;&nbsp;
<I><I>B</I></I>&nbsp;<I>of</I>&nbsp;<I><I>M</I></I> |- <I><I>topdec</I>=
</I> <FONT FACE=3Dsymbol>=DE</FONT> <I><I>B</I></I>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <FONT COLOR=3Dpurple><=
I>path</I>.<I>sml</I></FONT> <FONT FACE=3Dsymbol>=BE=AE</FONT> (<I><I>F=
E</I></I>',{},<I><I>B</I></I>'), <FONT FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(12)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<FONT FACE=3Dsymbol>Y</FONT>(<FONT COLOR=3Dpurple><I>path</I>.<I>mlb</I=
></FONT>) =3D <I><I>M</I></I>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <FONT COLOR=3Dpurple><=
I>path</I>.<I>mlb</I></FONT> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M<=
/I></I>', <FONT FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(13)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<FONT COLOR=3Dpurple><I>path</I>.<I>mlb</I></FONT> <FONT FACE=3Dsymbol>=
=CF</FONT> <I>Dom</I>&nbsp;<FONT FACE=3Dsymbol>Y</FONT> &nbsp;&nbsp;
<FONT COLOR=3Dred><I>P</I></FONT>(<FONT COLOR=3Dpurple><I>path</I>.<I>m=
lb</I></FONT>) =3D <I><I>basdec</I></I> &nbsp;&nbsp;
{} &nbsp;<I>in</I>&nbsp; <I>MBasis</I>, <FONT FACE=3Dsymbol>Y</FONT> |-=
 <I><I>basdec</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I>=
', <FONT FACE=3Dsymbol>Y</FONT>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <FONT COLOR=3Dpurple><=
I>path</I>.<I>mlb</I></FONT> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M<=
/I></I>', <FONT FACE=3Dsymbol>Y</FONT>' + {<FONT COLOR=3Dpurple><I>path=
</I>.<I>mlb</I></FONT> |<FONT FACE=3Dsymbol>=AE</FONT> <I><I>M</I></I>'=
}=20
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(14)</TD>
</TR></TABLE></DIV><FONT SIZE=3D4><BR>
<B>Basis Bindings</B> <I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |-<=
/FONT><FONT SIZE=3D4> <I><I>basbind</I></I> <FONT FACE=3Dsymbol>=BE=AE<=
/FONT> <I><I>BE</I></I>', <FONT FACE=3Dsymbol>Y</FONT>'</FONT><FONT SIZ=
E=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basexp</I></I> <=
FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I>', <FONT FACE=3Dsymbol>=
Y</FONT>' &nbsp;&nbsp;
<FONT FACE=3Dsymbol>=E1</FONT><I><I>M</I></I> + <I>tynames</I>&nbsp;<I>=
<I>M</I></I>', <FONT FACE=3Dsymbol>Y</FONT>' |- <I><I>basbind</I></I> <=
FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>BE</I></I>'', <FONT FACE=3Dsymbo=
l>Y</FONT>''<FONT FACE=3Dsymbol>=F1</FONT>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basid</I></I> &n=
bsp;<TT>=3D</TT>&nbsp; <I><I>basexp</I></I> &nbsp;<FONT FACE=3Dsymbol>=E1=
</FONT><TT><I>and</I></TT>&nbsp;<I><I>basbind</I></I><FONT FACE=3Dsymbo=
l>=F1</FONT> <FONT FACE=3Dsymbol>=BE=AE</FONT>=20
{<I><I>basid</I></I> |<FONT FACE=3Dsymbol>=AE</FONT> <I><I>M</I></I>'} =
<FONT FACE=3Dsymbol>=E1</FONT>+ <I><I>BE</I></I>''<FONT FACE=3Dsymbol>=F1=
</FONT>, <FONT FACE=3Dsymbol>Y</FONT>'<FONT FACE=3Dsymbol>=E1</FONT>'<F=
ONT FACE=3Dsymbol>=F1</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(15)</TD>
</TR></TABLE></DIV><FONT SIZE=3D4><BR>
<B>(Basis) Structure Bindings</B> <I><I>B</I></I> |-</FONT><FONT SIZE=3D=
4> <I><I>bstrbind</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>SE</I=
></I></FONT><FONT SIZE=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
<A NAME=3D"eqn:mlb:SS:bstrbind"></A>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I>(<I><I>strid</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>) =
=3D <I>E</I> &nbsp;&nbsp;
<FONT FACE=3Dsymbol>=E1</FONT><I><I>B</I></I> + <I>tynames</I>&nbsp;<I>=
<I>E</I></I> |- <I><I>bstrbind</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT=
> <I><I>SE</I></I><FONT FACE=3Dsymbol>=F1</FONT>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I> |- <I><I>strid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB=
> &nbsp;<TT>=3D</TT>&nbsp; <I><I>strid</I></I><SUB><FONT SIZE=3D2>2</FO=
NT></SUB> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></TT>&nbsp;=
<I><I>bstrbind</I></I><FONT FACE=3Dsymbol>=F1</FONT> <FONT FACE=3Dsymbo=
l>=BE=AE</FONT>=20
{<I><I>strid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> |<FONT FACE=3Dsy=
mbol>=AE</FONT> <I><I>E</I></I>} <FONT FACE=3Dsymbol>=E1</FONT>+ <I><I>=
SE</I></I><FONT FACE=3Dsymbol>=F1</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(16)</TD>
</TR></TABLE></DIV><BR>
<I>Comments</I>:
<UL><LI>
(<A HREF=3D"#eqn:mlb:SS:bstrbind">16</A>) Note that <I><I>fstrbind</I><=
/I> <FONT FACE=3Dsymbol>=CC</FONT>
<I><I>strbind</I></I>. Hence, this rule can be derived from the
Definition's <I>B</I> |- <I><I>strbind</I></I> <FONT FACE=3Dsymbol>=DE<=
/FONT> <I>SE</I>.
</UL><FONT SIZE=3D4>
<B>(Basis) Signature Bindings</B> <I><I>B</I></I> |-</FONT><FONT SIZE=3D=
4> <I><I>bsigbind</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>G</I>=
</I></FONT><FONT SIZE=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
<A NAME=3D"eqn:mlb:SS:bsigbind"></A>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D2 CELLPADDING=3D0>
<TR><TD ALIGN=3Dcenter NOWRAP><I><I>B</I></I>(<I><I>strid</I></I><SUB><=
FONT SIZE=3D2>2</FONT></SUB>) =3D <FONT FACE=3Dsymbol>S</FONT> &nbsp;&n=
bsp; <FONT FACE=3Dsymbol>S</FONT> =3D (<I><I>T</I></I>)<I><I>E</I></I> =
&nbsp;&nbsp;
<I><I>T</I></I> <FONT FACE=3Dsymbol>=C7</FONT> (<I><I>T</I></I>&nbsp;<I=
>of</I>&nbsp;<I><I>B</I></I>) =3D =D8</TD>
</TR>
<TR><TD ALIGN=3Dcenter NOWRAP><I><I>T</I></I> =3D <I>tynames</I>&nbsp;<=
I><I>E</I></I> \ (<I><I>T</I></I>&nbsp;<I>of</I>&nbsp;<I><I>B</I></I>) =
&nbsp;&nbsp;
<FONT FACE=3Dsymbol>=E1</FONT><I><I>B</I></I> |- <I><I>bsigbind</I></I>=
 <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>G</I></I><FONT FACE=3Dsymbol>=F1=
</FONT></TD>
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I> |- <I><I>sigid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB=
> &nbsp;<TT>=3D</TT>&nbsp; <I><I>sigid</I></I><SUB><FONT SIZE=3D2>2</FO=
NT></SUB> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></TT>&nbsp;=
<I><I>bsigbind</I></I><FONT FACE=3Dsymbol>=F1</FONT> <FONT FACE=3Dsymbo=
l>=BE=AE</FONT>=20
{<I><I>sigid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> |<FONT FACE=3Dsy=
mbol>=AE</FONT> <FONT FACE=3Dsymbol>S</FONT>} <FONT FACE=3Dsymbol>=E1</=
FONT>+ <I><I>G</I></I><FONT FACE=3Dsymbol>=F1</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(17)</TD>
</TR></TABLE></DIV><BR>
<I>Comments</I>:
<UL><LI>
(<A HREF=3D"#eqn:mlb:SS:bsigbind">17</A>) Note that <I><I>fsigbind</I><=
/I> <FONT FACE=3Dsymbol>=CC</FONT>
<I><I>sigbind</I></I>. Hence, this rule can be derived from the
Definition's <I>B</I> |- <I><I>sigbind</I></I> <FONT FACE=3Dsymbol>=DE<=
/FONT> <I>G</I>. As such, the
following comment from the Definition applies:
<BLOCKQUOTE>
The bound names of <I><I>B</I></I>(<I><I>sigid</I></I><SUB><FONT SIZE=3D=
2>2</FONT></SUB>) can always be renamed to
satisfy <I><I>T</I></I> <FONT FACE=3Dsymbol>=C7</FONT> (<I><I>T</I></I>=
&nbsp;<I>of</I>&nbsp;<I><I>B</I></I>) =3D =D8, if necessary.
</BLOCKQUOTE>
</UL><FONT SIZE=3D4>
<B>(Basis) Functor Bindings</B> <I><I>B</I></I> |-</FONT><FONT SIZE=3D4=
> <I><I>bfunbind</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>F</I><=
/I></FONT><FONT SIZE=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D2 CELLPADDING=3D0>
<TR><TD ALIGN=3Dcenter NOWRAP><I><I>B</I></I>(<I><I>funid</I></I><SUB><=
FONT SIZE=3D2>2</FONT></SUB>) =3D <FONT FACE=3Dsymbol>F</FONT> &nbsp;&n=
bsp; <FONT FACE=3Dsymbol>F</FONT> =3D (<I><I>T</I></I>)(<I><I>E</I></I>=
,(<I><I>T</I></I>')<I><I>E</I></I>') &nbsp;&nbsp;
<I><I>T</I></I> <FONT FACE=3Dsymbol>=C7</FONT> (<I><I>T</I></I>&nbsp;<I=
>of</I>&nbsp;<I><I>B</I></I>) =3D =D8</TD>
</TR>
<TR><TD ALIGN=3Dcenter NOWRAP><I><I>T</I></I>' =3D <I>tynames</I>&nbsp;=
<I><I>E</I></I>' \ ((<I><I>T</I></I>&nbsp;<I>of</I>&nbsp;<I><I>B</I></I=
>) <FONT FACE=3Dsymbol>=C8</FONT> <I><I>T</I></I>) &nbsp;&nbsp;
<FONT FACE=3Dsymbol>=E1</FONT><I><I>B</I></I> |- <I><I>bfunbind</I></I>=
 <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>F</I></I><FONT FACE=3Dsymbol>=F1=
</FONT></TD>
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I> |- <I><I>funid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB=
> &nbsp;<TT>=3D</TT>&nbsp; <I><I>funid</I></I><SUB><FONT SIZE=3D2>2</FO=
NT></SUB> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></TT>&nbsp;=
<I><I>bfunbind</I></I><FONT FACE=3Dsymbol>=F1</FONT> <FONT FACE=3Dsymbo=
l>=BE=AE</FONT>=20
{<I><I>funid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> |<FONT FACE=3Dsy=
mbol>=AE</FONT> <FONT FACE=3Dsymbol>F</FONT>} <FONT FACE=3Dsymbol>=E1</=
FONT>+ <I><I>F</I></I><FONT FACE=3Dsymbol>=F1</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(18)</TD>
</TR></TABLE></DIV><BR>
<A NAME=3D"toc74"></A>
<H3><A NAME=3D"htoc90">A.3</A>&nbsp;&nbsp;Dynamic Semantics for MLBs</H=
3>
<A NAME=3D"toc75"></A>
<H4><A NAME=3D"htoc91">A.3.1</A>&nbsp;&nbsp;Reduced Syntax</H4>
The syntax of MLBs is unchanged for the purposes of the dynamic
semantics for MLBs. However, the <I>Parser</I> <FONT COLOR=3Dred><I>P</=
I></FONT> returns a
<I><I>topdec</I></I> in the reduced syntax of Modules.<BR>
<BR>
<A NAME=3D"toc76"></A>
<H4><A NAME=3D"htoc92">A.3.2</A>&nbsp;&nbsp;Compound Objects</H4>
The compound objects for the MLBs dynamic semantics, extra to those
for the Modules dynamic semantics, are shown in Figure&nbsp;<A HREF=3D"=
#fig:mlb:DS:CompoundObjects">6</A>.
<BLOCKQUOTE><DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D2 CELLPADDING=3D0>
<TR><TD ALIGN=3Dright NOWRAP><I><I>BE</I></I></TD>
<TD ALIGN=3Dcenter NOWRAP><FONT FACE=3Dsymbol>=CE</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I>BasEnv</I> =3D <I>BasId</I> <I>fin</I> <I>MB=
asis</I></TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP><I><I>M</I></I> &nbsp;<I>or</I>&nbsp; <I><=
I>FE</I></I>,<I><I>BE</I></I>,<I><I>B</I></I></TD>
<TD ALIGN=3Dcenter NOWRAP><FONT FACE=3Dsymbol>=CE</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I>MBasis</I> =3D
<I>FixEnv</I> =D7 <I>BasEnv</I> =D7 <I>Basis</I></TD>
</TR>
<TR><TD ALIGN=3Dright NOWRAP><FONT FACE=3Dsymbol>Y</FONT></TD>
<TD ALIGN=3Dcenter NOWRAP><FONT FACE=3Dsymbol>=CE</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I>BasCache</I> =3D <I>MLBasisPath</I> <I>fin</=
I> <I>MBasis</I></TD>
</TR></TABLE></TD>
</TR></TABLE></DIV>
<BR>
<DIV ALIGN=3Dcenter>Figure 6: Compound Semantic Objects</DIV><BR>
<A NAME=3D"fig:mlb:DS:CompoundObjects"></A>
<DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV></BLOCKQUOTE>
<A NAME=3D"toc77"></A>
<H4><A NAME=3D"htoc93">A.3.3</A>&nbsp;&nbsp;Inference Rules</H4>
The semantic rules allow sentences of the form
<DIV ALIGN=3Dcenter>
<I>s</I>, <I>A</I> |- <I><I>phrase</I></I> <FONT FACE=3Dsymbol>=BE=AE</=
FONT> <I>A</I>', <I>s</I>'
</DIV>
to be inferred, where <I>s</I>, <I>s</I>' are the states before and aft=
er the
evaluation represented by the sentence. Some hypotheses in rules are
not of this form; they are called <EM>side-conditions</EM>. The
convention for options is as in the Core and Modules semantics.<BR>
<BR>
The state and exception conventions are adopted as in the Core and
Modules dynamic semantics. However, it may be shown that the only
MLBs phrases whose evaluation may cause a side-effect or generate an
exception packet are of the form <I><I>basexp</I></I>, <I><I>basdec</I>=
</I> or
<I><I>basbind</I></I>.<FONT SIZE=3D4><BR>
<BR>
<B>Basis Expressions</B> <I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> =
|-</FONT><FONT SIZE=3D4> <I><I>basexp</I></I> <FONT FACE=3Dsymbol>=BE=AE=
</FONT> <I><I>M</I></I>', <FONT FACE=3Dsymbol>Y</FONT>' / <I>p</I></FON=
T><FONT SIZE=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basdec</I></I> <=
FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I>', <FONT FACE=3Dsymbol>=
Y</FONT>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>bas</I></TT>&nb=
sp; <I><I>basdec</I></I> &nbsp;<TT><I>end</I></TT> <FONT FACE=3Dsymbol>=
=BE=AE</FONT> <I><I>M</I></I>', <FONT FACE=3Dsymbol>Y</FONT>'
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(19)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>(<I><I>basid</I></I>) =3D <I><I>M</I></I>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basid</I></I> <F=
ONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I>', <FONT FACE=3Dsymbol>Y=
</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(20)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basdec</I></I> <=
FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I><SUB><FONT SIZE=3D2>1</=
FONT></SUB>, <FONT FACE=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D2>1</FONT></=
SUB> &nbsp;&nbsp;
<I><I>M</I></I> <FONT FACE=3Dsymbol>=C5</FONT> <I><I>M</I></I><SUB><FON=
T SIZE=3D2>1</FONT></SUB>, <FONT FACE=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D=
2>1</FONT></SUB> |- <I><I>basexp</I></I> <FONT FACE=3Dsymbol>=BE=AE</FO=
NT> <I><I>M</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>, <FONT FACE=3Dsym=
bol>Y</FONT><SUB><FONT SIZE=3D2>2</FONT></SUB>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>let</I></TT>&nb=
sp; <I><I>basdec</I></I> &nbsp;<TT><I>in</I></TT>&nbsp; <I><I>basexp</I=
></I> &nbsp;<TT><I>end</I></TT> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I=
>M</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>, <FONT FACE=3Dsymbol>Y</FO=
NT><SUB><FONT SIZE=3D2>2</FONT></SUB>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(21)</TD>
</TR></TABLE></DIV><FONT SIZE=3D4><BR>
<B>Basis-level Declarations</B> <I><I>M</I></I>, <FONT FACE=3Dsymbol>Y<=
/FONT> |-</FONT><FONT SIZE=3D4> <I><I>basdec</I></I> <FONT FACE=3Dsymbo=
l>=BE=AE</FONT> <I><I>M</I></I>', <FONT FACE=3Dsymbol>Y</FONT>' / <I>p<=
/I></FONT><FONT SIZE=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basbind</I></I> =
<FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>BE</I></I>', <FONT FACE=3Dsymbo=
l>Y</FONT>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <FONT COLOR=3Dpurple><=
I>basis</I></FONT>&nbsp; <I><I>basbind</I></I> <FONT FACE=3Dsymbol>=BE=AE=
</FONT> <I><I>BE</I></I>' &nbsp;<I>in</I>&nbsp; <I>MBasis</I>, <FONT FA=
CE=3Dsymbol>Y</FONT>'
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(22)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basdec</I></I><S=
UB><FONT SIZE=3D2>1</FONT></SUB> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><=
I>M</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB>, <FONT FACE=3Dsymbol>Y</F=
ONT><SUB><FONT SIZE=3D2>2</FONT></SUB> &nbsp;&nbsp;
<I><I>M</I></I> + <I><I>M</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB>, <F=
ONT FACE=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D2>1</FONT></SUB> |- <I><I>b=
asdec</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB> <FONT FACE=3Dsymbol>=BE=
=AE</FONT> <I><I>M</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>, <FONT FAC=
E=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D2>2</FONT></SUB> &nbsp;&nbsp;
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>local</I></TT>&=
nbsp; <I><I>basdec</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> &nbsp;<TT>=
<I>in</I></TT>&nbsp; <I><I>basdec</I></I><SUB><FONT SIZE=3D2>2</FONT></=
SUB> &nbsp;<TT><I>end</I></TT> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>=
M</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>, <FONT FACE=3Dsymbol>Y</FON=
T><SUB><FONT SIZE=3D2>2</FONT></SUB>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(23)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>(<I><I>basid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB>) =
=3D <I><I>M</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> &nbsp;&nbsp; =B7=B7=
=B7 &nbsp;&nbsp;
<I><I>M</I></I>(<I><I>basid</I></I><SUB><FONT SIZE=3D2><I>n</I></FONT><=
/SUB>) =3D <I><I>M</I></I><SUB><FONT SIZE=3D2><I>n</I></FONT></SUB>=20
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>open</I></TT>&n=
bsp; <I><I>basid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> =B7=B7=B7 <I=
><I>basid</I></I><SUB><FONT SIZE=3D2><I>n</I></FONT></SUB> <FONT FACE=3D=
symbol>=BE=AE</FONT> <I><I>M</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> =
+ =B7=B7=B7 + <I><I>M</I></I><SUB><FONT SIZE=3D2><I>n</I></FONT></SUB>,=
 <FONT FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(24)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I>&nbsp;<I>of</I>&nbsp;<I><I>M</I></I> |- <I><I>bstrbind</=
I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I>SE</I>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>structure</I></=
TT>&nbsp; <I><I>bstrbind</I></I>
<FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>SE</I></I> &nbsp;<I>in</I>&nbsp=
; <I>MBasis</I>, <FONT FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(25)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I>Inter</I>&nbsp;(<I><I>B</I></I>&nbsp;<I>of</I>&nbsp;<I><I>M</I></I>)=
 |- <I><I>bsigbind</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I>G</I>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>signature</I></=
TT>&nbsp; <I><I>bsigbind</I></I>
<FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>G</I> </I> &nbsp;<I>in</I>&nbsp=
; <I>MBasis</I>, <FONT FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(26)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I>&nbsp;<I>of</I>&nbsp;<I><I>M</I></I> |- <I><I>bfunbind</=
I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I>F</I>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <TT><I>functor</I></TT=
>&nbsp; <I><I>bfunbind</I></I>
<FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>F</I></I> &nbsp;<I>in</I>&nbsp;=
 <I>MBasis</I>, <FONT FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(27)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter></TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- &nbsp;&nbsp; <FONT FAC=
E=3Dsymbol>=BE=AE</FONT> {} &nbsp;<I>in</I>&nbsp; <I>MBasis</I>, <FONT =
FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(28)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basdec</I></I><S=
UB><FONT SIZE=3D2>1</FONT></SUB> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><=
I>M</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB>, <FONT FACE=3Dsymbol>Y</F=
ONT><SUB><FONT SIZE=3D2>2</FONT></SUB> &nbsp;&nbsp;
<I><I>M</I></I> + <I><I>M</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB>, <F=
ONT FACE=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D2>1</FONT></SUB> |- <I><I>b=
asdec</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB> <FONT FACE=3Dsymbol>=BE=
=AE</FONT> <I><I>M</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>, <FONT FAC=
E=3Dsymbol>Y</FONT><SUB><FONT SIZE=3D2>2</FONT></SUB>=20
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basdec</I></I><S=
UB><FONT SIZE=3D2>1</FONT></SUB> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><T=
T>;</TT><FONT FACE=3Dsymbol>=F1</FONT>&nbsp; <I><I>basdec</I></I><SUB><=
FONT SIZE=3D2>2</FONT></SUB> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M<=
/I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> <FONT FACE=3Dsymbol>=C5</FONT=
> <I><I>M</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>, <FONT FACE=3Dsymbo=
l>Y</FONT><SUB><FONT SIZE=3D2>2</FONT></SUB>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(29)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<FONT COLOR=3Dred><I>P</I></FONT>(<I><I>FE</I></I>&nbsp;<I>of</I>&nbsp;=
<I><I>M</I></I>, <FONT COLOR=3Dpurple><I>path</I>.<I>sml</I></FONT>) =3D=
 (<I><I>FE</I></I>', <I><I>topdec</I></I>) &nbsp;&nbsp;
<I><I>B</I></I>&nbsp;<I>of</I>&nbsp;<I><I>M</I></I> |- <I><I>topdec</I>=
</I> <FONT FACE=3Dsymbol>=DE</FONT> <I><I>B</I></I>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <FONT COLOR=3Dpurple><=
I>path</I>.<I>sml</I></FONT> <FONT FACE=3Dsymbol>=BE=AE</FONT> (<I><I>F=
E</I></I>',{},<I><I>B</I></I>'), <FONT FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(30)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<FONT FACE=3Dsymbol>Y</FONT>(<FONT COLOR=3Dpurple><I>path</I>.<I>mlb</I=
></FONT>) =3D <I><I>M</I></I>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <FONT COLOR=3Dpurple><=
I>path</I>.<I>mlb</I></FONT> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M<=
/I></I>', <FONT FACE=3Dsymbol>Y</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(31)</TD>
</TR></TABLE></DIV><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<FONT COLOR=3Dpurple><I>path</I>.<I>mlb</I></FONT> <FONT FACE=3Dsymbol>=
=CF</FONT> <I>Dom</I>&nbsp;<FONT FACE=3Dsymbol>Y</FONT> &nbsp;&nbsp;
<FONT COLOR=3Dred><I>P</I></FONT>(<FONT COLOR=3Dpurple><I>path</I>.<I>m=
lb</I></FONT>) =3D <I><I>basdec</I></I> &nbsp;&nbsp;
{} &nbsp;<I>in</I>&nbsp; <I>MBasis</I>, <FONT FACE=3Dsymbol>Y</FONT> |-=
 <I><I>basdec</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I>=
', <FONT FACE=3Dsymbol>Y</FONT>'
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <FONT COLOR=3Dpurple><=
I>path</I>.<I>mlb</I></FONT> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M<=
/I></I>', <FONT FACE=3Dsymbol>Y</FONT>' + {<FONT COLOR=3Dpurple><I>path=
</I>.<I>mlb</I></FONT> |<FONT FACE=3Dsymbol>=AE</FONT> <I><I>M</I></I>'=
}=20
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(32)</TD>
</TR></TABLE></DIV><FONT SIZE=3D4><BR>
<B>Basis Bindings</B> <I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |-<=
/FONT><FONT SIZE=3D4> <I><I>basbind</I></I> <FONT FACE=3Dsymbol>=BE=AE<=
/FONT> <I><I>BE</I></I>', <FONT FACE=3Dsymbol>Y</FONT>' / <I>p</I></FON=
T><FONT SIZE=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basexp</I></I> <=
FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>M</I></I>', <FONT FACE=3Dsymbol>=
Y</FONT>' &nbsp;&nbsp;
<FONT FACE=3Dsymbol>=E1</FONT><I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</F=
ONT>' |- <I><I>basbind</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>=
BE</I></I>'', <FONT FACE=3Dsymbol>Y</FONT>''<FONT FACE=3Dsymbol>=F1</FO=
NT>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>M</I></I>, <FONT FACE=3Dsymbol>Y</FONT> |- <I><I>basid</I></I> &n=
bsp;<TT>=3D</TT>&nbsp; <I><I>basexp</I></I> &nbsp;<FONT FACE=3Dsymbol>=E1=
</FONT><TT><I>and</I></TT>&nbsp;<I><I>basbind</I></I><FONT FACE=3Dsymbo=
l>=F1</FONT> <FONT FACE=3Dsymbol>=BE=AE</FONT>=20
{<I><I>basid</I></I> |<FONT FACE=3Dsymbol>=AE</FONT> <I><I>M</I></I>'} =
<FONT FACE=3Dsymbol>=E1</FONT>+ <I><I>BE</I></I>''<FONT FACE=3Dsymbol>=F1=
</FONT>, <FONT FACE=3Dsymbol>Y</FONT>'<FONT FACE=3Dsymbol>=E1</FONT>'<F=
ONT FACE=3Dsymbol>=F1</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(33)</TD>
</TR></TABLE></DIV><FONT SIZE=3D4><BR>
<B>(Basis) Structure Bindings</B> <I><I>B</I></I> |-</FONT><FONT SIZE=3D=
4> <I><I>bstrbind</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>SE</I=
></I></FONT><FONT SIZE=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
<A NAME=3D"eqn:mlb:DS:bstrbind"></A>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I>(<I><I>strid</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>) =
=3D <I>E</I> &nbsp;&nbsp;
<FONT FACE=3Dsymbol>=E1</FONT><I><I>B</I></I> |- <I><I>bstrbind</I></I>=
 <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>SE</I></I><FONT FACE=3Dsymbol>=
=F1</FONT>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I> |- <I><I>strid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB=
> &nbsp;<TT>=3D</TT>&nbsp; <I><I>strid</I></I><SUB><FONT SIZE=3D2>2</FO=
NT></SUB> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></TT>&nbsp;=
<I><I>bstrbind</I></I><FONT FACE=3Dsymbol>=F1</FONT> <FONT FACE=3Dsymbo=
l>=BE=AE</FONT>=20
{<I><I>strid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> |<FONT FACE=3Dsy=
mbol>=AE</FONT> <I><I>E</I></I>} <FONT FACE=3Dsymbol>=E1</FONT>+ <I><I>=
SE</I></I><FONT FACE=3Dsymbol>=F1</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(34)</TD>
</TR></TABLE></DIV><BR>
<I>Comments</I>:
<UL><LI>
(<A HREF=3D"#eqn:mlb:DS:bstrbind">34</A>) Note that <I><I>fstrbind</I><=
/I> <FONT FACE=3Dsymbol>=CC</FONT>
<I><I>strbind</I></I>. Hence, this rule can be derived from the
Definition's <I>B</I> |- <I><I>strbind</I></I> <FONT FACE=3Dsymbol>=DE<=
/FONT> <I>SE</I> / <I>p</I>, noting that
the derivation may neither cause a side-effect nor generate an
exception packet.
</UL><FONT SIZE=3D4>
<B>(Basis) Signature Bindings</B> <I><I>IB</I></I> |-</FONT><FONT SIZE=3D=
4> <I><I>bsigbind</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>G</I>=
</I></FONT><FONT SIZE=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
<A NAME=3D"eqn:mlb:DS:bsigbind"></A>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>IB</I></I>(<I><I>strid</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>)=
 =3D <I>I</I> &nbsp;&nbsp;=20
<FONT FACE=3Dsymbol>=E1</FONT><I><I>IB</I></I> |- <I><I>bsigbind</I></I=
> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>G</I></I><FONT FACE=3Dsymbol>=
=F1</FONT>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>IB</I></I> |- <I><I>sigid</I></I><SUB><FONT SIZE=3D2>1</FONT></SU=
B> &nbsp;<TT>=3D</TT>&nbsp; <I><I>sigid</I></I><SUB><FONT SIZE=3D2>2</F=
ONT></SUB> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></TT>&nbsp=
;<I><I>bsigbind</I></I><FONT FACE=3Dsymbol>=F1</FONT> <FONT FACE=3Dsymb=
ol>=BE=AE</FONT>=20
{<I><I>sigid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> |<FONT FACE=3Dsy=
mbol>=AE</FONT> <I>I</I>} <FONT FACE=3Dsymbol>=E1</FONT>+ <I><I>G</I></=
I><FONT FACE=3Dsymbol>=F1</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(35)</TD>
</TR></TABLE></DIV><BR>
<I>Comments</I>:
<UL><LI>
(<A HREF=3D"#eqn:mlb:DS:bsigbind">35</A>) Note that <I><I>fsigbind</I><=
/I> <FONT FACE=3Dsymbol>=CC</FONT>
<I><I>sigbind</I></I>. Hence, this rule can be derived from the
Definition's <I>IB</I> |- <I><I>sigbind</I></I> <FONT FACE=3Dsymbol>=DE=
</FONT> <I>G</I>, noting that
the derivation may neither cause a side-effect nor generate an
exception packet.
</UL><FONT SIZE=3D4>
<B>(Basis) Functor Bindings</B> <I><I>B</I></I> |-</FONT><FONT SIZE=3D4=
> <I><I>bfunbind</I></I> <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>F</I><=
/I></FONT><FONT SIZE=3D4>
</FONT><BR>
<DIV ALIGN=3Dcenter><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR VALIGN=3Dmiddle><TD NOWRAP>
</TD>
<TD NOWRAP><TABLE CELLSPACING=3D0 CELLPADDING=3D0>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I>(<I><I>funid</I></I><SUB><FONT SIZE=3D2>2</FONT></SUB>) =
=3D (<I><I>strid</I></I>:<I><I>I</I></I>,<I><I>strexp</I></I>,<I><I>B</=
I></I>) &nbsp;&nbsp;
<FONT FACE=3Dsymbol>=E1</FONT><I><I>B</I></I> |- <I><I>bfunbind</I></I>=
 <FONT FACE=3Dsymbol>=BE=AE</FONT> <I><I>F</I></I><FONT FACE=3Dsymbol>=F1=
</FONT>
</TD>
</TR>
<TR><TD BGCOLOR=3Dblack><TABLE BORDER=3D0 WIDTH=3D"100%" CELLSPACING=3D=
0 CELLPADDING=3D1><TR><TD></TD></TR></TABLE></TD>
</TR>
<TR><TD NOWRAP ALIGN=3Dcenter>
<I><I>B</I></I> |- <I><I>funid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB=
> &nbsp;<TT>=3D</TT>&nbsp; <I><I>funid</I></I><SUB><FONT SIZE=3D2>2</FO=
NT></SUB> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></TT>&nbsp;=
<I><I>bfunbind</I></I><FONT FACE=3Dsymbol>=F1</FONT> <FONT FACE=3Dsymbo=
l>=BE=AE</FONT>=20
{<I><I>funid</I></I><SUB><FONT SIZE=3D2>1</FONT></SUB> |<FONT FACE=3Dsy=
mbol>=AE</FONT> (<I><I>strid</I></I>:<I><I>I</I></I>,<I><I>strexp</I></=
I>,<I><I>B</I></I>)} <FONT FACE=3Dsymbol>=E1</FONT>+ <I><I>F</I></I><FO=
NT FACE=3Dsymbol>=F1</FONT>
</TD>
</TR></TABLE></TD>
<TD NOWRAP>
&nbsp;&nbsp;&nbsp;&nbsp;(36)</TD>
</TR></TABLE></DIV><BR>
<A NAME=3D"toc78"></A>
<H3><A NAME=3D"htoc94">A.4</A>&nbsp;&nbsp;Derived Forms</H3>
<A NAME=3D"sec:mlb:DerivedForms"></A>
Figure&nbsp;<A HREF=3D"#fig:mlb:DF:bindings">7</A> shows derived forms =
for structure,
signature, and functor bindings in MLBs. These derived forms are
a useful shorthand for specifying import and export filters.
<BLOCKQUOTE><DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV>
<DIV ALIGN=3Dcenter>
<TABLE BORDER=3D1 CELLSPACING=3D0 CELLPADDING=3D1>
<TR><TD ALIGN=3Dcenter NOWRAP>Derived Form</TD>
<TD ALIGN=3Dcenter NOWRAP>Equivalent Form</TD>
</TR>
<TR><TD ALIGN=3Dcenter NOWRAP COLSPAN=3D2>&nbsp;</TD>
</TR>
<TR><TD ALIGN=3Dleft NOWRAP COLSPAN=3D2><B>(Basis) Structure Bindings</=
B> <I><I>bstrbind</I></I></TD>
</TR>
<TR><TD ALIGN=3Dleft NOWRAP><I><I>strid</I></I> &nbsp;<FONT FACE=3Dsymb=
ol>=E1</FONT><TT><I>and</I></TT>&nbsp; <I><I>bstrbind</I></I><FONT FACE=
=3Dsymbol>=F1</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I><I>strid</I></I> &nbsp;<TT>=3D</TT>&nbsp; <I=
><I>strid</I></I> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></T=
T>&nbsp; <I><I>bstrbind</I></I><FONT FACE=3Dsymbol>=F1</FONT></TD>
</TR>
<TR><TD ALIGN=3Dcenter NOWRAP COLSPAN=3D2>&nbsp;</TD>
</TR>
<TR><TD ALIGN=3Dleft NOWRAP COLSPAN=3D2><B>(Basis) Signature Bindings</=
B> <I><I>bsigbind</I></I></TD>
</TR>
<TR><TD ALIGN=3Dleft NOWRAP><I><I>sigid</I></I> &nbsp;<FONT FACE=3Dsymb=
ol>=E1</FONT><TT><I>and</I></TT>&nbsp; <I><I>bsigbind</I></I><FONT FACE=
=3Dsymbol>=F1</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I><I>sigid</I></I> &nbsp;<TT>=3D</TT>&nbsp; <I=
><I>sigid</I></I> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></T=
T>&nbsp; <I><I>bsigbind</I></I><FONT FACE=3Dsymbol>=F1</FONT></TD>
</TR>
<TR><TD ALIGN=3Dcenter NOWRAP COLSPAN=3D2>&nbsp;</TD>
</TR>
<TR><TD ALIGN=3Dleft NOWRAP COLSPAN=3D2><B>(Basis) Functor Bindings</B>=
 <I><I>bfunbind</I></I></TD>
</TR>
<TR><TD ALIGN=3Dleft NOWRAP><I><I>funid</I></I> &nbsp;<FONT FACE=3Dsymb=
ol>=E1</FONT><TT><I>and</I></TT>&nbsp; <I><I>bfunbind</I></I><FONT FACE=
=3Dsymbol>=F1</FONT></TD>
<TD ALIGN=3Dleft NOWRAP><I><I>funid</I></I> &nbsp;<TT>=3D</TT>&nbsp; <I=
><I>funid</I></I> &nbsp;<FONT FACE=3Dsymbol>=E1</FONT><TT><I>and</I></T=
T>&nbsp; <I><I>bfunbind</I></I><FONT FACE=3Dsymbol>=F1</FONT></TD>
</TR></TABLE>
</DIV>
<BR>
<DIV ALIGN=3Dcenter>Figure 7: Derived forms of (Basis) Structure, Signa=
ture, and Functor Bindings</DIV><BR>
<A NAME=3D"fig:mlb:DF:bindings"></A>
<DIV ALIGN=3Dcenter><HR WIDTH=3D"80%" SIZE=3D2></DIV></BLOCKQUOTE>

<HR>
<A HREF=3D"main016.html"><IMG SRC =3D"previous_motif.gif" ALT=3D"Previo=
us"></A>
<A HREF=3D"index.html"><IMG SRC =3D"contents_motif.gif" ALT=3D"Up"></A>=

<A HREF=3D"Deviations_SML_NJ_from.html"><IMG SRC =3D"next_motif.gif" AL=
T=3D"Next"></A>
</BODY>
</HTML>

--z1Zs30tUqd--