<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple style='word-wrap: break-word;
-webkit-nbsp-mode: space;-webkit-line-break: after-white-space'>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I don&#8217;t think we would need attribute values like &#8220;public_private&#8221;
or &#8220;both&#8221;, since I think &#8220;public&#8221; access should imply &#8220;private&#8221; access, similar
to say c++ or Java&#8217;s use of those terms.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>&nbsp;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
cellml-discussion-bounces@cellml.org
[mailto:cellml-discussion-bounces@cellml.org] <b>On Behalf Of </b>Poul Nielsen<br>
<b>Sent:</b> Sunday, 23 December 2007 10:25 p.m.<br>
<b>To:</b> CellML Discussion List<br>
<b>Subject:</b> Re: [cellml-discussion] A list of proposed changes to semantics
to makein CellML 1.2<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Yes, the scheme that I proposed would not allow variables to
'pass through' the public_interface and private_interface of a component. I
imagine that this could be inconvenient in some situations. We could enable
this by adding a fourth value, 'public_private', to the attribute list.<o:p></o:p></p>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Best wishes<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Poul<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<div>

<p class=MsoNormal>On 2007 Dec 22, at 20:21, Jonathan Cooper wrote:<o:p></o:p></p>

</div>

<p class=MsoNormal><br>
<br>
<o:p></o:p></p>

<div>

<p class=MsoNormal>On Sat, Dec 22, 2007 at 11:19:52AM +1300, Poul Nielsen
wrote:<o:p></o:p></p>

</div>

<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>

<div>

<p class=MsoNormal>I think that Jonathan is correct - the concept of 'in' and
'out'<span class=apple-converted-space>&nbsp; &nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>does not make sense in a declarative description. One way to
remedy <span class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>this would be to remove the 'public_interface' and <span
class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>'private_interface' attributes from the &lt;variable&gt;
element and <span class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>replace them with an 'interface' attribute which could
assume values <span class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&quot;public&quot;, &quot;private&quot;, or
&quot;none&quot;. This is a pretty fundamental change <span
class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>to the specification but I think that it better reflects the
<span class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>declarative intent of CellML model descriptions.<o:p></o:p></p>

</div>

</blockquote>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>How would that work for a component like B below, which has
both a public<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>and private interface for the same variable?<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Jonathan.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>

<div>

<p class=MsoNormal>On 2007 Dec 22, at 03:20, Jonathan Cooper wrote:<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>

<div>

<p class=MsoNormal>On Thu, Dec 20, 2007 at 12:30:32AM +0800, David Nickerson
wrote:<o:p></o:p></p>

</div>

<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>

<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>

<div>

<p class=MsoNormal>* The current specification says:<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>&quot;A
variable with either a private_interface or public_interface <span
class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>attribute<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp;&nbsp; </span>value
of &quot;in&quot; must be mapped to no more than one other <span
class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>variable in the<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp;&nbsp; </span>model.
[ Note that a similar restriction does not apply to <span
class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>variables with<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp;&nbsp; </span>interface
values of &quot;out&quot;. An output variable can be mapped to <span
class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>multiple<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp;&nbsp; </span>input
variables in various components in the current model. ]&quot;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>The problem with this is that it doesn't properly account
for<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>mappings where a variable is forwarded into an encapsulated <span
class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>block. As<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>an example, consider the following encapsulation hierarchy
(higher<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>components encapsulate lower ones)...<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span>A<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span>|<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span>B<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span>/ \<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span>C <span class=apple-converted-space>&nbsp;
</span>D<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>Suppose that
component A has, for variable v,<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>public_interface=&quot;none&quot;,
private_interface=&quot;out&quot;, and B has for<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>variable v,
public_interface=&quot;in&quot;, private_interface=&quot;out&quot;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>(connected
to A), and C and D have public_interface=&quot;in&quot;,<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>private_interface=&quot;none&quot;,
both of which are connected to B.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>There is no
reason why this should not be valid. However, the<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>specification
contradicts itself on whether this is allowed. On <span
class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>one<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>hand,
because B has private_interface=&quot;out&quot;, it &quot;can be mapped to<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>multiple
input variables in various components in the current<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>model.&quot;,
but because it has a public interface of in, it &quot;must be<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>mapped to no
more than one other variable in the model&quot;.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>This can be
fixed by firstly defining the interpretation of<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>connections
and interfaces, and then adding constraints based on<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>that which
actually describe which connections are allowed to each<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-converted-space>&nbsp; </span>set of
variables.<o:p></o:p></p>

</div>

</blockquote>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>will be interesting to see how such a definition ties in
with the <span class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>idea<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>of input variables becoming output variables based on the
way the<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>components are hooked together :)<o:p></o:p></p>

</div>

</blockquote>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Indeed.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>The use of &quot;in&quot; and &quot;out&quot; on interfaces
very strongly implies that<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>connections have a directionality, and this is also
reflected in the<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>quote from the specification above - it assumes that
variables are <span class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>only<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>defined in one place, and hence it doesn't make sense to
import a<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>variable (via an &quot;in&quot; interface) from multiple
locations.<span class=apple-converted-space>&nbsp; </span>It does<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>however make sense to export a variable to multiple
locations, or <span class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>forward<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>an imported variable to multiple locations (the example
Andrew gives).<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>If we don't want connections to have directionality, then I
think this<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>requires quite a major change in the specification, even if
only to <span class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>avoid<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>user confusion.<span class=apple-converted-space>&nbsp; </span>For
example, I would want to deprecate the use of <span
class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&quot;in&quot;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>and &quot;out&quot;, and instead allow
public_interface=&quot;yes&quot; or<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>public_interface=&quot;no&quot; (perhaps a synonym for
&quot;none&quot;) and similarly for<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>private interfaces.<span class=apple-converted-space>&nbsp; </span>The
terms used in the language then reflect the<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>nature of the interfaces - if connections are bidirectional,
then it<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>doesn't make sense to talk of an &quot;in&quot; interface,
since it may function<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>either as input or output depending on the other components
in the<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>system.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Jonathan.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>--<span class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Jonathan Cooper<span class=apple-converted-space>&nbsp;
&nbsp; &nbsp; </span>MSN: <a href="mailto:msn@jonc.me.uk">msn@jonc.me.uk</a><span
class=apple-converted-space>&nbsp; &nbsp; &nbsp; </span>www: jonc.me.uk/<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>We are tribbles of Borg. Prepare to be replicated.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>_______________________________________________<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>cellml-discussion mailing list<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><a href="mailto:cellml-discussion@cellml.org">cellml-discussion@cellml.org</a><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><a
href="http://www.cellml.org/mailman/listinfo/cellml-discussion">http://www.cellml.org/mailman/listinfo/cellml-discussion</a><o:p></o:p></p>

</div>

</blockquote>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>_______________________________________________<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>cellml-discussion mailing list<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><a href="mailto:cellml-discussion@cellml.org">cellml-discussion@cellml.org</a><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><a
href="http://www.cellml.org/mailman/listinfo/cellml-discussion">http://www.cellml.org/mailman/listinfo/cellml-discussion</a><o:p></o:p></p>

</div>

</blockquote>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>--<span class=apple-converted-space>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Jonathan Cooper<span class=apple-converted-space>&nbsp;
&nbsp; &nbsp; </span>MSN: <a href="mailto:msn@jonc.me.uk">msn@jonc.me.uk</a><span
class=apple-converted-space>&nbsp; &nbsp; &nbsp; </span>www: jonc.me.uk/<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>I haven't lost my mind... It's backed up on tape somewhere.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>_______________________________________________<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>cellml-discussion mailing list<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><a href="mailto:cellml-discussion@cellml.org">cellml-discussion@cellml.org</a><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><a
href="http://www.cellml.org/mailman/listinfo/cellml-discussion">http://www.cellml.org/mailman/listinfo/cellml-discussion</a><o:p></o:p></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</div>

</body>

</html>