<pclass="purpose">To infer facts about the model world, or take other action, based on sentences asserted as being true in the source text.</p>
<ulclass="toc"><li><ahref="4-ass.html#SP1">§1. Existential assertions</a></li><li><ahref="4-ass.html#SP2">§2. Appearance assertions</a></li><li><ahref="4-ass.html#SP3">§3. Copula</a></li><li><ahref="4-ass.html#SP4">§4. The Matrix</a></li><li><ahref="4-ass.html#SP6">§6. Splitting into cases</a></li><li><ahref="4-ass.html#SP6_3_1">§6.3.1. Case 1</a></li><li><ahref="4-ass.html#SP6_3_2">§6.3.2. Case 2</a></li><li><ahref="4-ass.html#SP6_3_3">§6.3.3. Case 3</a></li><li><ahref="4-ass.html#SP6_3_4">§6.3.4. Case 4</a></li><li><ahref="4-ass.html#SP6_3_5">§6.3.5. Case 5</a></li><li><ahref="4-ass.html#SP6_3_6">§6.3.6. Case 6</a></li><li><ahref="4-ass.html#SP6_3_7">§6.3.7. Case 7</a></li><li><ahref="4-ass.html#SP6_3_8">§6.3.8. Case 8. "A is a kind of B"</a></li><li><ahref="4-ass.html#SP6_3_9">§6.3.9. Case 9</a></li><li><ahref="4-ass.html#SP6_3_10">§6.3.10. Case 10</a></li><li><ahref="4-ass.html#SP6_3_11">§6.3.11. Case 11. This is a catch-all sort of error</a></li><li><ahref="4-ass.html#SP6_3_12">§6.3.12. Case 12</a></li><li><ahref="4-ass.html#SP6_3_13">§6.3.13. Case 13</a></li><li><ahref="4-ass.html#SP6_3_14">§6.3.14. Case 14</a></li><li><ahref="4-ass.html#SP6_3_15">§6.3.15. Case 15</a></li><li><ahref="4-ass.html#SP6_3_16">§6.3.16. Case 16</a></li><li><ahref="4-ass.html#SP6_3_17">§6.3.17. Case 17</a></li><li><ahref="4-ass.html#SP6_3_18">§6.3.18. Case 18</a></li><li><ahref="4-ass.html#SP6_3_19">§6.3.19. Case 19</a></li><li><ahref="4-ass.html#SP6_3_20">§6.3.20. Case 20</a></li><li><ahref="4-ass.html#SP6_3_21">§6.3.21. Case 21</a></li><li><ahref="4-ass.html#SP6_3_22">§6.3.22. Case 22</a></li><li><ahref="4-ass.html#SP6_3_23">§6.3.23. Case 23</a></li><li><ahref="4-ass.html#SP6_3_24">§6.3.24. Case 24</a></li><li><ahref="4-ass.html#SP6_3_25">§6.3.25. Case 25</a></li><li><ahref="4-ass.html#SP6_3_26">§6.3.26. Case 26</a></li><li><ahref="4-ass.html#SP6_3_27">§6.3.27. Case 27</a></li><li><ahref="4-ass.html#SP6_3_28">§6.3.28. Case 28</a></li><li><ahref="4-ass.html#SP6_3_29">§6.3.29. Case 29</a></li><li><ahref="4-ass.html#SP6_3_30">§6.3.30. Case 30</a></li><li><ahref="4-ass.html#SP6_3_31">§6.3.31. Case 31</a></li><li><ahref="4-ass.html#SP6_3_32">§6.3.32. Case 32</a></li><li><ahref="4-ass.html#SP6_3_33">§6.3.33. Case 33</a></li><li><ahref="4-ass.html#SP6_3_34">§6.3.34. Case 34</a></li><li><ahref="4-ass.html#SP6_3_35">§6.3.35. Case 35</a></li><li><ahref="4-ass.html#SP6_3_36">§6.3.36. Case 36</a></li><li><ahref="4-ass.html#SP6_3_37">§6.3.37. Case 37</a></li><li><ahref="4-ass.html#SP6_3_38">§6.3.38. Case 38</a></li><li><ahref="4-ass.html#SP6_3_39">§6.3.39. Case 39</a></li><li><ahref="4-ass.html#SP6_3_40">§6.3.40. Case 40</a></li><li><ahref="4-ass.html#SP6_3_41">§6.3.41. Case 41</a></li><li><ahref="4-ass.html#SP6_3_42">§6.3.42. Case 42</a></li><li><ahref="4-ass.html#SP9">§9. Instantiation of related kinds</a></li><li><ahref="4-ass.html#SP10">§10. Adjective list trees</a></li></ul><hrclass="tocbar">
<pclass="commentary firstcommentary"><aid="SP1"class="paragraph-anchor"></a><b>§1. Existential assertions. </b>These are very much simpler than coupling assertions, and the tree <spanclass="extract"><spanclass="extract-syntax">py</span></span>
can contain only a common noun together with requirements on it: for
<spanclass="reserved-syntax">void</span><spanclass="plain-syntax"></span><spanclass="function-syntax">Assertions::make_existential</span><buttonclass="popup"onclick="togglePopup('usagePopup1')"><spanclass="comment-syntax">?</span><spanclass="popuptext"id="usagePopup1">Usage of <spanclass="code-font"><spanclass="function-syntax">Assertions::make_existential</span></span>:<br/>Passes through Major Nodes - <ahref="2-ptmn.html#SP3_1_2_3">§3.1.2.3</a></span></button><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">parse_node</span><spanclass="plain-syntax"> *</span><spanclass="identifier-syntax">py</span><spanclass="plain-syntax">) {</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'there is...' can only be used to create objects"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"and not instances of other kinds.'"</span><spanclass="plain-syntax">);</span>
<pclass="commentary firstcommentary"><aid="SP2"class="paragraph-anchor"></a><b>§2. Appearance assertions. </b>The "appearance" is not a property as such. When a quoted piece of text
is given as a whole sentence, it might be:
</p>
<ulclass="items"><li>(a) the "description" of a room or thing;
</li><li>(b) the title of the whole work, if at the top of the main source; or
</li><li>(c) the rubric of the extension, or the additional credits for an extension,
if near the top of an extension file.
</li></ul>
<pclass="commentary">The title of the work is handled elsewhere, so we worry only about (a) and (c).
<spanclass="reserved-syntax">void</span><spanclass="plain-syntax"></span><spanclass="function-syntax">Assertions::make_appearance</span><buttonclass="popup"onclick="togglePopup('usagePopup2')"><spanclass="comment-syntax">?</span><spanclass="popuptext"id="usagePopup2">Usage of <spanclass="code-font"><spanclass="function-syntax">Assertions::make_appearance</span></span>:<br/>Passes through Major Nodes - <ahref="2-ptmn.html#SP3_1_2">§3.1.2</a></span></button><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">parse_node</span><spanclass="plain-syntax"> *</span><spanclass="identifier-syntax">p</span><spanclass="plain-syntax">) {</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP2_1"class="named-paragraph-link"><spanclass="named-paragraph">This is rubric or credit text for an extension</span><spanclass="named-paragraph-number">2.1</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">if</span><spanclass="plain-syntax"> (</span><spanclass="identifier-syntax">infs</span><spanclass="plain-syntax"> == </span><spanclass="identifier-syntax">NULL</span><spanclass="plain-syntax">) </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP2_2"class="named-paragraph-link"><spanclass="named-paragraph">Issue a problem for appearance without object</span><spanclass="named-paragraph-number">2.2</span></a></span><spanclass="plain-syntax">;</span>
<pclass="commentary firstcommentary"><aid="SP2_1"class="paragraph-anchor"></a><b>§2.1. </b>The variable <spanclass="extract"><spanclass="extract-syntax">global_pass_state.near_start_of_extension</span></span> is always 0 except
at the start of an extension (immediately after the header line), when it is set
to 1. The following increments it to 2 to allow for up to two quoted lines; the
first is the rubric, the second the credit line.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">This is rubric or credit text for an extension</span><spanclass="named-paragraph-number">2.1</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP2">§2</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP2_2"class="paragraph-anchor"></a><b>§2.2. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Issue a problem for appearance without object</span><spanclass="named-paragraph-number">2.2</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP2">§2</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP3"class="paragraph-anchor"></a><b>§3. Copula. </b>We now come to the main business, which is to act on "copula", that is,
couplings of two subtrees <spanclass="extract"><spanclass="extract-syntax">px</span></span> and <spanclass="extract"><spanclass="extract-syntax">py</span></span> representing things which are linked
by a copular verb. For example, in:
</p>
<blockquote>
<p>The white marble is a thing.</p>
</blockquote>
<pclass="commentary"><spanclass="extract"><spanclass="extract-syntax">px</span></span> would be the proper noun "white marble", <spanclass="extract"><spanclass="extract-syntax">py</span></span> the common noun "thing",
and the sentence is telling is what kind of value something has.
</p>
<pclass="commentary">It is usually said that "to be" is the only copular verb in English, but it
got that way by blurring together several quite different meanings: consider
"I am 5", "I am happy" and "I am Chloe". (In French, for example, one would
say "I have five".) The definition of "to be" occupies 12 columns of the
Oxford English Dictionary; most computer programming languages implement only
<spanclass="extract"><spanclass="extract-syntax">=</span></span> and <spanclass="extract"><spanclass="extract-syntax">==</span></span>, which correspond to OED's meaning 10, "to exist as the thing
known by a certain name; to be identical with". But Inform implements a much
broader set of meanings. For example, its distinction between spatial and
property knowledge reflects the OED's distinction between meanings 5a ("to
have or occupy a place somewhere") and 9b ("to have a place among the things
distinguished by a specified quality") respectively.
</p>
<pclass="commentary">Besides that, we expand the range of possible copula by considering sentences
like:
</p>
<blockquote>
<p>The white marble is in the bamboo box.</p>
</blockquote>
<pclass="commentary">as also being copula, but where <spanclass="extract"><spanclass="extract-syntax">py</span></span> is now a <spanclass="extract"><spanclass="extract-syntax">RELATIONSHIP_NT</span></span> subtree
expressing the sense of being inside the box.
</p>
<pclass="commentary">So dealing with copula is not as simple as asserting that two things are
equal, and what we do falls into numerous cases.
</p>
<pclass="commentary firstcommentary"><aid="SP4"class="paragraph-anchor"></a><b>§4. The Matrix. </b>What we do depends in the first instance on the node types of the head nodes of
the <spanclass="extract"><spanclass="extract-syntax">px</span></span> and <spanclass="extract"><spanclass="extract-syntax">py</span></span> subtrees. We want to be sure that we completely understand
this process and that no possibilities escape notice; we therefore use a matrix
of possible cases, as follows. <spanclass="extract"><spanclass="extract-syntax">py</span></span> specifies the row and <spanclass="extract"><spanclass="extract-syntax">px</span></span> the column.
</p>
<pclass="commentary">The record size of this matrix in Inform's history is \(15\times 15\) with
58 numbered cases, but today there are "only" 42 cases in a \(12\times 12\)
grid. The cases are numbered upwards from 1, contiguously. There is no
significance to their ordering so far as the program's working is concerned;
but they are arranged in what seemed the best systematic way to group like
with like, by numbering from the top left to bottom right, and within each
cross-diagonal numbering from the centre outwards. The cases generally
increase in difficulty, with elementary syntax at the top left and quite
<ulclass="endnotetexts"><li>The structure matrix_entry is private to this section.</li></ul>
<pclass="commentary firstcommentary"><aid="SP5"class="paragraph-anchor"></a><b>§5. </b>The following routine simply looks up which of the cases the current pair
of <spanclass="extract"><spanclass="extract-syntax">px</span></span> and <spanclass="extract"><spanclass="extract-syntax">py</span></span> falls into. Speed is not very important here.
<spanclass="plain-syntax"></span><spanclass="identifier-syntax">internal_error</span><spanclass="plain-syntax">(</span><spanclass="string-syntax">"make assertion with improper nodes"</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="identifier-syntax">internal_error</span><spanclass="plain-syntax">(</span><spanclass="string-syntax">"make assertion with node type not in matrix"</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_1"class="named-paragraph-link"><spanclass="named-paragraph">See if any plugin wants to intervene in this assertion</span><spanclass="named-paragraph-number">6.1</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">if</span><spanclass="plain-syntax"> (</span><spanclass="identifier-syntax">global_pass_state</span><spanclass="plain-syntax">.</span><spanclass="element-syntax">pass</span><spanclass="plain-syntax"> == </span><spanclass="constant-syntax">2</span><spanclass="plain-syntax">) </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_2"class="named-paragraph-link"><spanclass="named-paragraph">Reject three forms of assertion</span><spanclass="named-paragraph-number">6.2</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3"class="named-paragraph-link"><spanclass="named-paragraph">Split the assertion-handler into cases</span><spanclass="named-paragraph-number">6.3</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax">}</span>
</pre>
<pclass="commentary firstcommentary"><aid="SP6_1"class="paragraph-anchor"></a><b>§6.1. </b>If a plugin sees fit to throw a problem message, we abandon the assertion.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">See if any plugin wants to intervene in this assertion</span><spanclass="named-paragraph-number">6.1</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6">§6</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_2"class="paragraph-anchor"></a><b>§6.2. </b>These are better taken care of before we split up into cases.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Reject three forms of assertion</span><spanclass="named-paragraph-number">6.2</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"you can only say 'initially' when creating variables using 'is'"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"so 'The squirrel population is initially 0' is fine, but not "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'The acorn is initially carried by Mr Hedges.' - probably you "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"only need to remove the word 'initially'."</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"you can only equivocate with 'usually', 'rarely', "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'always' and the like when talking about kinds of thing"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"because when a specific thing is involved you should say "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"definitely one way or another. 'A cave is usually dark' is "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"fine, but not 'the Mystic Wood is usually dark'."</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"multiple objects can only be put into relationships"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"by saying something like 'In the Drawing Room are two women.', "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"and all other assertions with multiple objects are disallowed: "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"so 'Three doors are open.' is rejected - I can't tell which three."</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6">§6</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3"class="paragraph-anchor"></a><b>§6.3. </b>The case names here are systematic and were constructed from the above
matrix by a Perl script, in an attempt to ensure their truthfulness; but they're
just labels, so should they be wrong the only consequence is that the code
in this section will be harder to understand.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Split the assertion-handler into cases</span><spanclass="named-paragraph-number">6.3</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">1</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_1"class="named-paragraph-link"><spanclass="named-paragraph">Case 1 - Miscellaneous vs AND</span><spanclass="named-paragraph-number">6.3.1</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">2</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_2"class="named-paragraph-link"><spanclass="named-paragraph">Case 2 - WITH vs Miscellaneous</span><spanclass="named-paragraph-number">6.3.2</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">3</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_3"class="named-paragraph-link"><spanclass="named-paragraph">Case 3 - Miscellaneous vs WITH</span><spanclass="named-paragraph-number">6.3.3</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">4</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_4"class="named-paragraph-link"><spanclass="named-paragraph">Case 4 - WITH on both sides</span><spanclass="named-paragraph-number">6.3.4</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">5</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_5"class="named-paragraph-link"><spanclass="named-paragraph">Case 5 - AND vs Miscellaneous</span><spanclass="named-paragraph-number">6.3.5</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">6</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_6"class="named-paragraph-link"><spanclass="named-paragraph">Case 6 - X OF Y on both sides</span><spanclass="named-paragraph-number">6.3.6</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">7</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_7"class="named-paragraph-link"><spanclass="named-paragraph">Case 7 - Miscellaneous vs X OF Y</span><spanclass="named-paragraph-number">6.3.7</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">8</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_8"class="named-paragraph-link"><spanclass="named-paragraph">Case 8 - Miscellaneous vs KIND</span><spanclass="named-paragraph-number">6.3.8</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">9</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_9"class="named-paragraph-link"><spanclass="named-paragraph">Case 9 - ALLOWED vs Miscellaneous</span><spanclass="named-paragraph-number">6.3.9</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">10</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_10"class="named-paragraph-link"><spanclass="named-paragraph">Case 10 - Miscellaneous vs ALLOWED</span><spanclass="named-paragraph-number">6.3.10</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">11</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_11"class="named-paragraph-link"><spanclass="named-paragraph">Case 11 - X OF Y vs PROPERTY LIST, ACTION, COMMON NOUN</span><spanclass="named-paragraph-number">6.3.11</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">12</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_12"class="named-paragraph-link"><spanclass="named-paragraph">Case 12 - KIND vs PROPERTY LIST, ADJECTIVE, COMMON NOUN, PROPER NOUN</span><spanclass="named-paragraph-number">6.3.12</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">13</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_13"class="named-paragraph-link"><spanclass="named-paragraph">Case 13 - X OF Y vs ADJECTIVE</span><spanclass="named-paragraph-number">6.3.13</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">14</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_14"class="named-paragraph-link"><spanclass="named-paragraph">Case 14 - RELATIONSHIP vs WITH</span><spanclass="named-paragraph-number">6.3.14</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">15</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_15"class="named-paragraph-link"><spanclass="named-paragraph">Case 15 - WITH vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.15</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">16</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_16"class="named-paragraph-link"><spanclass="named-paragraph">Case 16 - EVERY vs Miscellaneous</span><spanclass="named-paragraph-number">6.3.16</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">17</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_17"class="named-paragraph-link"><spanclass="named-paragraph">Case 17 - Miscellaneous vs EVERY</span><spanclass="named-paragraph-number">6.3.17</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">18</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_18"class="named-paragraph-link"><spanclass="named-paragraph">Case 18 - PROPERTY LIST, COMMON NOUN, PROPER NOUN on both sides</span><spanclass="named-paragraph-number">6.3.18</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">19</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_19"class="named-paragraph-link"><spanclass="named-paragraph">Case 19 - ACTION, KIND, PROPERTY LIST, ADJECTIVE vs PROPERTY LIST, ACTION, COMMON NOUN, PROPER NOUN</span><spanclass="named-paragraph-number">6.3.19</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">20</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_20"class="named-paragraph-link"><spanclass="named-paragraph">Case 20 - Miscellaneous on both sides</span><spanclass="named-paragraph-number">6.3.20</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">21</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_21"class="named-paragraph-link"><spanclass="named-paragraph">Case 21 - X OF Y vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.21</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">22</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_22"class="named-paragraph-link"><spanclass="named-paragraph">Case 22 - ADJECTIVE, PROPERTY LIST vs PROPERTY LIST, ADJECTIVE</span><spanclass="named-paragraph-number">6.3.22</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">23</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_23"class="named-paragraph-link"><spanclass="named-paragraph">Case 23 - COMMON NOUN vs X OF Y</span><spanclass="named-paragraph-number">6.3.23</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">24</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_24"class="named-paragraph-link"><spanclass="named-paragraph">Case 24 - ACTION vs ADJECTIVE</span><spanclass="named-paragraph-number">6.3.24</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">25</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_25"class="named-paragraph-link"><spanclass="named-paragraph">Case 25 - EVERY, COMMON NOUN, PROPER NOUN vs ALLOWED</span><spanclass="named-paragraph-number">6.3.25</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">26</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_26"class="named-paragraph-link"><spanclass="named-paragraph">Case 26 - X OF Y vs PROPER NOUN</span><spanclass="named-paragraph-number">6.3.26</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">27</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_27"class="named-paragraph-link"><spanclass="named-paragraph">Case 27 - ACTION on both sides</span><spanclass="named-paragraph-number">6.3.27</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">28</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_28"class="named-paragraph-link"><spanclass="named-paragraph">Case 28 - RELATIONSHIP on both sides</span><spanclass="named-paragraph-number">6.3.28</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">29</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_29"class="named-paragraph-link"><spanclass="named-paragraph">Case 29 - COMMON NOUN, PROPER NOUN vs ADJECTIVE</span><spanclass="named-paragraph-number">6.3.29</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">30</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_30"class="named-paragraph-link"><spanclass="named-paragraph">Case 30 - ADJECTIVE vs COMMON NOUN, PROPER NOUN</span><spanclass="named-paragraph-number">6.3.30</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">31</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_31"class="named-paragraph-link"><spanclass="named-paragraph">Case 31 - EVERY vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.31</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">32</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_32"class="named-paragraph-link"><spanclass="named-paragraph">Case 32 - COMMON NOUN, PROPER NOUN vs ACTION</span><spanclass="named-paragraph-number">6.3.32</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">33</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_33"class="named-paragraph-link"><spanclass="named-paragraph">Case 33 - EVERY on both sides</span><spanclass="named-paragraph-number">6.3.33</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">34</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_34"class="named-paragraph-link"><spanclass="named-paragraph">Case 34 - COMMON NOUN vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.34</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">35</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_35"class="named-paragraph-link"><spanclass="named-paragraph">Case 35 - RELATIONSHIP vs COMMON NOUN</span><spanclass="named-paragraph-number">6.3.35</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">36</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_36"class="named-paragraph-link"><spanclass="named-paragraph">Case 36 - PROPER NOUN vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.36</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">37</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_37"class="named-paragraph-link"><spanclass="named-paragraph">Case 37 - RELATIONSHIP vs PROPER NOUN</span><spanclass="named-paragraph-number">6.3.37</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">38</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_38"class="named-paragraph-link"><spanclass="named-paragraph">Case 38 - COMMON NOUN on both sides</span><spanclass="named-paragraph-number">6.3.38</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">39</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_39"class="named-paragraph-link"><spanclass="named-paragraph">Case 39 - PROPER NOUN vs COMMON NOUN</span><spanclass="named-paragraph-number">6.3.39</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">40</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_40"class="named-paragraph-link"><spanclass="named-paragraph">Case 40 - COMMON NOUN vs PROPER NOUN</span><spanclass="named-paragraph-number">6.3.40</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">41</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41"class="named-paragraph-link"><spanclass="named-paragraph">Case 41 - PROPER NOUN on both sides</span><spanclass="named-paragraph-number">6.3.41</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">case</span><spanclass="plain-syntax"></span><spanclass="constant-syntax">42</span><spanclass="plain-syntax">: </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_42"class="named-paragraph-link"><spanclass="named-paragraph">Case 42 - ADJECTIVE vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.42</span></a></span><spanclass="plain-syntax">; </span><spanclass="reserved-syntax">return</span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="identifier-syntax">default:</span><spanclass="plain-syntax"></span><spanclass="identifier-syntax">LOG</span><spanclass="plain-syntax">(</span><spanclass="string-syntax">"Unimplemented assertion case %d\n"</span><spanclass="plain-syntax">, </span><spanclass="identifier-syntax">ma_case</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="identifier-syntax">internal_error</span><spanclass="plain-syntax">(</span><spanclass="string-syntax">"No implementation for make assertion case"</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"> }</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6">§6</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_1"class="paragraph-anchor"></a><b>§6.3.1. Case 1. </b>"A is B and C": process as "A is B" then "A is C".
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 1 - Miscellaneous vs AND</span><spanclass="named-paragraph-number">6.3.1</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_2"class="paragraph-anchor"></a><b>§6.3.2. Case 2. </b>"An A with I is B" looks symmetrical with case 3, but is not. We might be
looking at an implication, for example:
</p>
<blockquote>
<p>An open door is usually openable.</p>
</blockquote>
<pclass="commentary">We allow this provided the properties I are all adjectival, and so is the
outcome B.
</p>
<pclass="commentary">Otherwise we handle case 2 much like case 3, but more simply since the
result will normally be problem messages — not unreasonably given how
strange sentences like this are:
</p>
<blockquote>
<p>A container with description "Solid." is the solid box.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 2 - WITH vs Miscellaneous</span><spanclass="named-paragraph-number">6.3.2</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><ahref="4-ass.html#SP6"class="function-link"><spanclass="function-syntax">Assertions::make_coupling</span></a><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">px</span><spanclass="plain-syntax">-></span><spanclass="identifier-syntax">down</span><spanclass="plain-syntax">, </span><spanclass="identifier-syntax">py</span><spanclass="plain-syntax">); </span><spanclass="comment-syntax"> A is B</span>
<spanclass="plain-syntax"></span><ahref="4-ass.html#SP6"class="function-link"><spanclass="function-syntax">Assertions::make_coupling</span></a><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">px</span><spanclass="plain-syntax">-></span><spanclass="identifier-syntax">down</span><spanclass="plain-syntax">, </span><spanclass="identifier-syntax">px</span><spanclass="plain-syntax">-></span><spanclass="identifier-syntax">down</span><spanclass="plain-syntax">-></span><spanclass="element-syntax">next</span><spanclass="plain-syntax">); </span><spanclass="comment-syntax"> A is I</span>
<spanclass="plain-syntax"></span><ahref="4-ass.html#SP6"class="function-link"><spanclass="function-syntax">Assertions::make_coupling</span></a><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">px</span><spanclass="plain-syntax">-></span><spanclass="identifier-syntax">down</span><spanclass="plain-syntax">, </span><spanclass="identifier-syntax">py</span><spanclass="plain-syntax">); </span><spanclass="comment-syntax"> A is B</span>
<spanclass="plain-syntax"></span><ahref="4-ass.html#SP6"class="function-link"><spanclass="function-syntax">Assertions::make_coupling</span></a><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">px</span><spanclass="plain-syntax">-></span><spanclass="identifier-syntax">down</span><spanclass="plain-syntax">-></span><spanclass="element-syntax">next</span><spanclass="plain-syntax">, </span><spanclass="identifier-syntax">py</span><spanclass="plain-syntax">); </span><spanclass="comment-syntax"> I is B</span>
<spanclass="plain-syntax"> }</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_3"class="paragraph-anchor"></a><b>§6.3.3. Case 3. </b>"A is a B with I": process as "A is a B" followed by "A is I", which
works nicely because we bend grammar to allow "is" in place of "has" when
it comes to lists of property values.
</p>
<blockquote>
<p>The wickerwork box is a container with description "Pricy." The bat and ball are things with description "Cricket equipment." A trophy is a kind of container with score for finding 5.</p>
</blockquote>
<pclass="commentary">An exception occurs with sentences like:
</p>
<blockquote>
<p>South is a dead end with printed name "Collapsed Dead End".</p>
</blockquote>
<pclass="commentary">Here <spanclass="extract"><spanclass="extract-syntax">px</span></span>, "south", refers not to the direction but to the room which lies
to the south of the location being talked about, which means that the printed
name must be given to the dead end, not to the direction "south". In this
case, on traverse 2 when properties are set, we process as "A is a B"
followed by "B is I". (On traverse 1, B is still an <spanclass="extract"><spanclass="extract-syntax">COMMON_NOUN_NT</span></span> node,
since it hasn't yet been instantiated into an actual but nameless room —
at which point it becomes a <spanclass="extract"><spanclass="extract-syntax">PROPER_NOUN_NT</span></span> node.)
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 3 - Miscellaneous vs WITH</span><spanclass="named-paragraph-number">6.3.3</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><ahref="4-ass.html#SP6"class="function-link"><spanclass="function-syntax">Assertions::make_coupling</span></a><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">px</span><spanclass="plain-syntax">, </span><spanclass="identifier-syntax">py</span><spanclass="plain-syntax">-></span><spanclass="identifier-syntax">down</span><spanclass="plain-syntax">); </span><spanclass="comment-syntax"> A is a B</span>
<spanclass="plain-syntax"></span><ahref="4-ass.html#SP6"class="function-link"><spanclass="function-syntax">Assertions::make_coupling</span></a><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">py</span><spanclass="plain-syntax">-></span><spanclass="identifier-syntax">down</span><spanclass="plain-syntax">, </span><spanclass="identifier-syntax">py</span><spanclass="plain-syntax">-></span><spanclass="identifier-syntax">down</span><spanclass="plain-syntax">-></span><spanclass="element-syntax">next</span><spanclass="plain-syntax">); </span><spanclass="comment-syntax"> B is I</span>
<spanclass="plain-syntax"></span><ahref="4-ass.html#SP6"class="function-link"><spanclass="function-syntax">Assertions::make_coupling</span></a><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">px</span><spanclass="plain-syntax">, </span><spanclass="identifier-syntax">py</span><spanclass="plain-syntax">-></span><spanclass="identifier-syntax">down</span><spanclass="plain-syntax">); </span><spanclass="comment-syntax"> A is a B</span>
<spanclass="plain-syntax"></span><ahref="4-ass.html#SP6"class="function-link"><spanclass="function-syntax">Assertions::make_coupling</span></a><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">px</span><spanclass="plain-syntax">, </span><spanclass="identifier-syntax">py</span><spanclass="plain-syntax">-></span><spanclass="identifier-syntax">down</span><spanclass="plain-syntax">-></span><spanclass="element-syntax">next</span><spanclass="plain-syntax">); </span><spanclass="comment-syntax"> A is I</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_4"class="paragraph-anchor"></a><b>§6.3.4. Case 4. </b>"A with B is C with D" must be incorrect.
</p>
<blockquote>
<p>A container with description "White" is a container with description "Black".</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 4 - WITH on both sides</span><spanclass="named-paragraph-number">6.3.4</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"you can't say that one general description is another "</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"for instance by writing 'A container with carrying capacity 10 is a "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"container with description \"Handy.\"'."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_5"class="paragraph-anchor"></a><b>§6.3.5. Case 5. </b>"A and B are C": process as "A is C" then "B is C".
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 5 - AND vs Miscellaneous</span><spanclass="named-paragraph-number">6.3.5</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_6"class="paragraph-anchor"></a><b>§6.3.6. Case 6. </b>Now to begin on the <spanclass="extract"><spanclass="extract-syntax">XOFY_NT</span></span> cases, which look syntactically
like properties.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 6 - X OF Y on both sides</span><spanclass="named-paragraph-number">6.3.6</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this seems to say two different properties are not simply equal "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"but somehow the same thing"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying that 'the printed name of the millpond is the "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"printed name of the village pond'. This puts me in a quandary: "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"which should be changed to match the other, and what if I am "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"unable to work out the value of either one?"</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_7"class="paragraph-anchor"></a><b>§6.3.7. Case 7. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 7 - Miscellaneous vs X OF Y</span><spanclass="named-paragraph-number">6.3.7</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this is the wrong way around if you want to specify a property"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying that '10 is the score of the platinum pyramid', "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"which is poor style. (Though sweet are the uses of adversity.)"</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_8"class="paragraph-anchor"></a><b>§6.3.8. Case 8. "A is a kind of B". </b>Much of the work has already been done at
refinement time. There are really four forms of this:
</p>
<ulclass="items"><li>(a) "Length is a kind of value". Here <spanclass="extract"><spanclass="extract-syntax">px</span></span> doesn't refer to an instance.
</li><li>(b) "A figment is a kind". Here <spanclass="extract"><spanclass="extract-syntax">px</span></span> refers to a possibly new-made kind,
and <spanclass="extract"><spanclass="extract-syntax">py</span></span> refers to "kind".
</li><li>(c) "A cart is a kind of vehicle". Ditto, and <spanclass="extract"><spanclass="extract-syntax">py</span></span> refers to "vehicle".
</li><li>(d) "A food is a kind of thing which is edible". Ditto, except <spanclass="extract"><spanclass="extract-syntax">py</span></span> refers
of course to "thing", and also has a child node, containing a proposition
specifying its edibility.
</li></ul>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 8 - Miscellaneous vs KIND</span><spanclass="named-paragraph-number">6.3.8</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_8_4"class="named-paragraph-link"><spanclass="named-paragraph">Don't allow a kind of kind</span><spanclass="named-paragraph-number">6.3.8.4</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_8_5"class="named-paragraph-link"><spanclass="named-paragraph">Don't allow a kind of everything</span><spanclass="named-paragraph-number">6.3.8.5</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_8_6"class="named-paragraph-link"><spanclass="named-paragraph">Don't allow a kind declaration to have uncertainty</span><spanclass="named-paragraph-number">6.3.8.6</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_8_1"class="named-paragraph-link"><spanclass="named-paragraph">Don't allow an existing object to be declared as a kind over again</span><spanclass="named-paragraph-number">6.3.8.1</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_8_2"class="named-paragraph-link"><spanclass="named-paragraph">Don't allow an existing property name to be redeclared as a kind</span><spanclass="named-paragraph-number">6.3.8.2</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_8_3"class="named-paragraph-link"><spanclass="named-paragraph">Don't allow any existing actual value to be redeclared as a kind</span><spanclass="named-paragraph-number">6.3.8.3</span></a></span><spanclass="plain-syntax">;</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_8_1"class="paragraph-anchor"></a><b>§6.3.8.1. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Don't allow an existing object to be declared as a kind over again</span><spanclass="named-paragraph-number">6.3.8.1</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_8">§6.3.8</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_8_2"class="paragraph-anchor"></a><b>§6.3.8.2. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Don't allow an existing property name to be redeclared as a kind</span><spanclass="named-paragraph-number">6.3.8.2</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"You wrote '%1', but that seems to say that a property "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"(%3) has to be a kind as well. It is sometimes okay for a "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"property to have the same name as a kind, but only when that "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"kind is what it stores, and there shouldn't be a sentence "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like this one to declare the kind - it will be made when the "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"property is made, and doesn't need to be made again."</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_8">§6.3.8</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_8_3"class="paragraph-anchor"></a><b>§6.3.8.3. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Don't allow any existing actual value to be redeclared as a kind</span><spanclass="named-paragraph-number">6.3.8.3</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"You wrote '%1', but that seems to say that a value already "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"in existence (%3) has to be a kind as well. (It's %2.)"</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_8">§6.3.8</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_8_4"class="paragraph-anchor"></a><b>§6.3.8.4. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Don't allow a kind of kind</span><spanclass="named-paragraph-number">6.3.8.4</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"you aren't allowed to make new kinds of kinds"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"only kinds of things which already exist. So 'A fox is a kind of animal' "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"is fine, but 'A tricky kind is a kind of kind' isn't allowed."</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_8">§6.3.8</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_8_5"class="paragraph-anchor"></a><b>§6.3.8.5. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Don't allow a kind of everything</span><spanclass="named-paragraph-number">6.3.8.5</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_8">§6.3.8</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_8_6"class="paragraph-anchor"></a><b>§6.3.8.6. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Don't allow a kind declaration to have uncertainty</span><spanclass="named-paragraph-number">6.3.8.6</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"you aren't allowed to make a kind in a way expressing certainty or doubt"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"so 'A badger is a kind of animal' is fine, but 'A fungus is usually a "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"kind of every animal' isn't allowed, and nor is 'A fern is never a kind "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"of animal'. When you tell me about kinds, you have to tell me certainly."</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_8">§6.3.8</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_9"class="paragraph-anchor"></a><b>§6.3.9. Case 9. </b>This can be proven never to happen, but just in case:
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 9 - ALLOWED vs Miscellaneous</span><spanclass="named-paragraph-number">6.3.9</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="identifier-syntax">internal_error</span><spanclass="plain-syntax">(</span><spanclass="string-syntax">"Forbidden case 9 in make assertion has occurred."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_10"class="paragraph-anchor"></a><b>§6.3.10. Case 10. </b>The syntax looks as if we are assigning a new property to something,
but it isn't a case where this would be legal. That doesn't mean it's hopeless:
this is where we assign variables to specific gadgets, which is in a way the
same thing.
</p>
<blockquote>
<p>The before rulebook has a text called the standard demurral.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 10 - Miscellaneous vs ALLOWED</span><spanclass="named-paragraph-number">6.3.10</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_10_1"class="named-paragraph-link"><spanclass="named-paragraph">Issue the too vague to have properties or variables problem message</span><spanclass="named-paragraph-number">6.3.10.1</span></a></span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_10_2"class="named-paragraph-link"><spanclass="named-paragraph">Issue the not allowed to have properties or variables problem message</span><spanclass="named-paragraph-number">6.3.10.2</span></a></span><spanclass="plain-syntax">;</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_11"class="paragraph-anchor"></a><b>§6.3.11. Case 11. This is a catch-all sort of error. </b>It might need narrowing into
further sub-cases later.
</p>
<blockquote>
<p>The description of the Pitch is open.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 11 - X OF Y vs PROPERTY LIST, ACTION, COMMON NOUN</span><spanclass="named-paragraph-number">6.3.11</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that is a very peculiar property value"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"and ought to be something more definite and explicit."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_12"class="paragraph-anchor"></a><b>§6.3.12. Case 12. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 12 - KIND vs PROPERTY LIST, ADJECTIVE, COMMON NOUN, PROPER NOUN</span><spanclass="named-paragraph-number">6.3.12</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that seems to say that a new kind is the same as something else"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying 'A kind of container is a canister': which ought to be put the "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"other way round, 'A canister is a kind of container'."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_13"class="paragraph-anchor"></a><b>§6.3.13. Case 13. </b>"The colour of the paint is white."
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 13 - X OF Y vs ADJECTIVE</span><spanclass="named-paragraph-number">6.3.13</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that property can't be used adjectivally as a value"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"since it is an adjective applying to a thing but is "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"not a name from a range of possibilities."</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"> }</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_14"class="paragraph-anchor"></a><b>§6.3.14. Case 14. </b>"In A is a B with I": process as "In A is a B" followed by
"the newly created B is I".
</p>
<blockquote>
<p>In the Pitch is a container with description "Made of wood."</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 14 - RELATIONSHIP vs WITH</span><spanclass="named-paragraph-number">6.3.14</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_15"class="paragraph-anchor"></a><b>§6.3.15. Case 15. </b>"An A with I is in B": the mirror image case.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 15 - WITH vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.15</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_16"class="paragraph-anchor"></a><b>§6.3.16. Case 16. </b>"Every K is Y" and other oddities.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 16 - EVERY vs Miscellaneous</span><spanclass="named-paragraph-number">6.3.16</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'every' (or 'always') can't be used in that way"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"and should be reserved for sentences like 'A coin is in every room'."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_17"class="paragraph-anchor"></a><b>§6.3.17. Case 17. </b>In fact one sentence like this can make sense — "The mist is
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'every' can't be used in that way"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"and should be reserved for sentences like 'A coin is in every room'."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_18"class="paragraph-anchor"></a><b>§6.3.18. Case 18. </b>This are unlikely to be called as a top-level sentence with "is",
but will instead occur through recursion from <spanclass="extract"><spanclass="extract-syntax">WITH_NT</span></span> nodes, or as part of the
handling of "to have" rather than "to be".
</p>
<pclass="commentary">Property lists may contain references to things not yet created, if we
assert them during pass 1: so we wait until pass 2.
</p>
<pclass="commentary">The oddball exception for rulebooks is to add named outcomes:
</p>
<blockquote>
<p>Reaching inside rules have outcomes allow access (success) and deny access (failure).</p>
</blockquote>
<pclass="commentary">which syntactically resembles a property list, though in fact is not.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 18 - PROPERTY LIST, COMMON NOUN, PROPER NOUN on both sides</span><spanclass="named-paragraph-number">6.3.18</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_19"class="paragraph-anchor"></a><b>§6.3.19. Case 19. </b>This usually occurs as a name-clash, since it's otherwise something
pretty improbable:
</p>
<blockquote>
<p>Taking something is 100. The turn count is taking something.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 19 - ACTION, KIND, PROPERTY LIST, ADJECTIVE vs PROPERTY LIST, ACTION, COMMON NOUN, PROPER NOUN</span><spanclass="named-paragraph-number">6.3.19</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"an action can't be the same as a thing"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"so my guess is that this is an attempt to categorise an action which went "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"wrong because there was already something of that name in existence. For "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"instance, 'Taking something is theft' would fail if 'theft' was already a "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"value. (But it can also happen with a sentence which tries to set several "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"actions at once to a named kind of action, like 'Taking and dropping are "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"manipulation.' - only one can be named at a time.)"</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that means something else already"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"so it will only confuse things if we use it for a kind of action."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_20"class="paragraph-anchor"></a><b>§6.3.20. Case 20. </b>Hoovering up a variety of implausible things claimed to have
a spatial location.
</p>
<blockquote>
<p>On the desk is 100. East of the Pitch is a rulebook.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 20 - Miscellaneous on both sides</span><spanclass="named-paragraph-number">6.3.20</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this seems to give a worldly relationship to something intangible"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying that 'in the box is a text'. Perhaps it came "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"to this because you gave something physical a name which was "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"accidentally something meaningful to me in another context? "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"If so, you may be able to get around it by rewording ('In the "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"box is a medieval text') or in extremis by using 'called' "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"('In the box is a thing called text')."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_21"class="paragraph-anchor"></a><b>§6.3.21. Case 21. </b></p>
<blockquote>
<p>The position of the weathervane is east of the church.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 21 - X OF Y vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.21</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this seems to say that a property of something is not simply equal "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"to what happens at the moment to satisfy some relationship, but "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"conceptually the same as that relationship"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying 'the position of the weathervane is east of the "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"church'. It would be fine to say 'the position of the weathervane "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"is east' or 'the position of the weathervane is the meadow', "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"because 'east' and 'meadow' are definite things."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_22"class="paragraph-anchor"></a><b>§6.3.22. Case 22. </b>Most of the time, we're here because of an implicatory sentence like:
</p>
<blockquote>
<p>Scenery is usually fixed in place.</p>
</blockquote>
<pclass="commentary">But just maybe we have something like
</p>
<blockquote>
<p>Guttering is inadequate.</p>
</blockquote>
<pclass="commentary">where we are assigning a property ("inadequate") to a value ("guttering")
which can be used as an adjective, but isn't being so used here. So if it's
possible to coerce the left side to a noun, we will.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 22 - ADJECTIVE, PROPERTY LIST vs PROPERTY LIST, ADJECTIVE</span><spanclass="named-paragraph-number">6.3.22</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_23"class="paragraph-anchor"></a><b>§6.3.23. Case 23. </b>And so on.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 23 - COMMON NOUN vs X OF Y</span><spanclass="named-paragraph-number">6.3.23</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this seems to say that a general description is something else"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying that 'a door is 20'."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_24"class="paragraph-anchor"></a><b>§6.3.24. Case 24. </b>Not as unlikely a mistake as it might seem:
</p>
<blockquote>
<p>Taking something is open.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 24 - ACTION vs ADJECTIVE</span><spanclass="named-paragraph-number">6.3.24</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that is already the name of a property"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"so it will only confuse things if we use it for a kind of action."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_25"class="paragraph-anchor"></a><b>§6.3.25. Case 25. </b>Here we are declaring a new property — either to an object, a kind
or a kind of value.
</p>
<blockquote>
<p>A container has a number called security rating.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 25 - EVERY, COMMON NOUN, PROPER NOUN vs ALLOWED</span><spanclass="named-paragraph-number">6.3.25</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">if</span><spanclass="plain-syntax"> (</span><spanclass="identifier-syntax">Kinds::get_construct</span><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">K</span><spanclass="plain-syntax">) == </span><spanclass="identifier-syntax">CON_activity</span><spanclass="plain-syntax">) </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_25_1"class="named-paragraph-link"><spanclass="named-paragraph">Assign a new activity variable</span><spanclass="named-paragraph-number">6.3.25.1</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">if</span><spanclass="plain-syntax"> (</span><spanclass="identifier-syntax">Kinds::get_construct</span><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">K</span><spanclass="plain-syntax">) == </span><spanclass="identifier-syntax">CON_rulebook</span><spanclass="plain-syntax">) </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_25_2"class="named-paragraph-link"><spanclass="named-paragraph">Assign a new rulebook variable</span><spanclass="named-paragraph-number">6.3.25.2</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"> }</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_10_2"class="named-paragraph-link"><spanclass="named-paragraph">Issue the not allowed to have properties or variables problem message</span><spanclass="named-paragraph-number">6.3.10.2</span></a></span><spanclass="plain-syntax">;</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_25_1"class="paragraph-anchor"></a><b>§6.3.25.1. </b>Activities can optionally be referred to without the clarifier "activity",
but not in this context.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Assign a new activity variable</span><spanclass="named-paragraph-number">6.3.25.1</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"an activity has to be formally referred to in a way making clear that "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"it is indeed a rulebook when we give it named values"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"to reduce the risk of ambiguity. So 'The printing the banner text "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"activity has a number called the accumulated vanity' is fine, but "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'Printing the banner text has a number called...' is not. (I'm "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"insisting on the presence of the word 'activity' because the "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"syntax is so close to that for giving properties to objects, and "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"it's important to avoid mistakes here.)"</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_25">§6.3.25</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_25_2"class="paragraph-anchor"></a><b>§6.3.25.2. </b>And similarly for rulebooks.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Assign a new rulebook variable</span><spanclass="named-paragraph-number">6.3.25.2</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"a rulebook has to be formally referred to in a way making clear that "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"it is indeed a rulebook when we give it named values"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"to reduce the risk of ambiguity. So 'The every turn rulebook has a "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"number called the accumulated bonus' is fine, but 'Every turn has a "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"number called...' is not. (I'm insisting on the presence of the word "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'rulebook' because the syntax is so close to that for giving "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"properties to objects, and it's important to avoid mistakes here.)"</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_25">§6.3.25</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_10_1"class="paragraph-anchor"></a><b>§6.3.10.1. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Issue the too vague to have properties or variables problem message</span><spanclass="named-paragraph-number">6.3.10.1</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this is too vague a description of the owner of the property"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"so that I don't know where to put this. Something like 'A person "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"has a number called age' is fine, but 'A kind has a number called "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"age' is not. Which kind?"</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_10">§6.3.10</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_10_2"class="paragraph-anchor"></a><b>§6.3.10.2. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Issue the not allowed to have properties or variables problem message</span><spanclass="named-paragraph-number">6.3.10.2</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"only an object, kind, rulebook, action or activity can be allowed to have "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"properties or variables"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"so for instance 'A door has a colour' is fine but not 'A number has a length'."</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_10">§6.3.10</a>, <ahref="4-ass.html#SP6_3_25">§6.3.25</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_26"class="paragraph-anchor"></a><b>§6.3.26. Case 26. </b>At last, a correctly set property value.
</p>
<blockquote>
<p>The description of the Pitch is "Verdant." The desk is a container. The carrying capacity of the desk is 10.</p>
</blockquote>
<pclass="commentary">Property assignments fall into three sorts, which we handle in this order:
</p>
<ulclass="items"><li>(i) The specification pseudo-property, which looks syntactically like a property
but in fact isn't one;
</li><li>(ii) Properties of values and kinds of value;
</li><li>(iii) Properties of objects and kinds of object.
</li></ul>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 26 - X OF Y vs PROPER NOUN</span><spanclass="named-paragraph-number">6.3.26</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_26_2"class="named-paragraph-link"><spanclass="named-paragraph">Issue a problem message for setting a property of an overspecified object</span><spanclass="named-paragraph-number">6.3.26.2</span></a></span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">else</span><spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_26_3"class="named-paragraph-link"><spanclass="named-paragraph">Issue a problem message for setting a property of something never having them</span><spanclass="named-paragraph-number">6.3.26.3</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_26_4"class="named-paragraph-link"><spanclass="named-paragraph">Issue a problem message for setting a property of something not owning one</span><spanclass="named-paragraph-number">6.3.26.4</span></a></span><spanclass="plain-syntax">;</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_26_1_1"class="named-paragraph-link"><spanclass="named-paragraph">Extract the raw text of a specification</span><spanclass="named-paragraph-number">6.3.26.1.1</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this tries to set specification text for a particular value"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"rather than a kind of value. 'Specification' is a special property used "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"only to annotate the Index, and it makes no sense to set this property for "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"anything other than a kind of value, a kind of object or an action."</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_26">§6.3.26</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_26_1_1"class="paragraph-anchor"></a><b>§6.3.26.1.1. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Extract the raw text of a specification</span><spanclass="named-paragraph-number">6.3.26.1.1</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this tries to set a specification to something other than literal quoted text"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"which will not work. 'Specification' is a special property used only to "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"annotate the Index, and specifically the Kinds index, so it makes no sense to "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"set this property to anything other than text."</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_26_1">§6.3.26.1</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_26_2"class="paragraph-anchor"></a><b>§6.3.26.2. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Issue a problem message for setting a property of an overspecified object</span><spanclass="named-paragraph-number">6.3.26.2</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_26">§6.3.26</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_26_3"class="paragraph-anchor"></a><b>§6.3.26.3. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Issue a problem message for setting a property of something never having them</span><spanclass="named-paragraph-number">6.3.26.3</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this tries to set a property for a value which can't have properties"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"and that isn't allowed. For instance, 'The description of the Great Portal is "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"\"It's open.\"' would be fine, if Great Portal were a room, but 'The description "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"of 6 is \"Sixish.\"' would not, because the number 6 isn't allowed to have "</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_26">§6.3.26</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_26_4"class="paragraph-anchor"></a><b>§6.3.26.4. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Issue a problem message for setting a property of something not owning one</span><spanclass="named-paragraph-number">6.3.26.4</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this tries to set a property for a complicated generality of items all at once"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"which can lead to ambiguities. For instance, 'The description of an open door "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"is \"It's open.\"' is not allowed: if we followed Inform's normal conventions "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"strictly, that would be an instruction to create a new, nameless, open door and "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"give it the description. But this is very unlikely to be what the writer "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"intended, given the presence of the adjective to make it seem as if a particular "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"door is meant. So in fact we reject such sentences unless they refer only to a "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"kind, without adjectives: 'The description of a door is \"It's a door.\"' is "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"fine. (If the idea is actually to make the description change in play, we could "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"write a rule like 'Instead of examining an open door, say \"It's open.\"'; or "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"we could set the description of every door to \"[if open]It's open.[otherwise]It's "</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_26">§6.3.26</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_27"class="paragraph-anchor"></a><b>§6.3.27. Case 27. </b>Beginning some cases to do with actions...
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 27 - ACTION on both sides</span><spanclass="named-paragraph-number">6.3.27</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_28"class="paragraph-anchor"></a><b>§6.3.28. Case 28. </b>Sentence (1) below is deservedly rejected, but (2) makes a
non-reciprocal map connection: "D of the R is E of the S" is construed as
"D of the R is S" then "R is E of the S". We have to suppress Inform's
tendency to make tentative reciprocal map connections, because even though
they will only be listed as "likely", we know they are in fact impossible
in this case.
</p>
<blockquote>
<p>(1) In the box is on the desk. (2) East of the Pitch is north of the Pavilion.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 28 - RELATIONSHIP on both sides</span><spanclass="named-paragraph-number">6.3.28</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this says that two different relations are the same"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying that 'in the box is on the table'. (Sometimes this "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"happens if I misinterpret names of places like 'In Prison' or "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'East of Fissure'.)"</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_29"class="paragraph-anchor"></a><b>§6.3.29. Case 29. </b>Equating something to a single adjective.
</p>
<blockquote>
<p>The desk is fixed in place. A container is usually fixed in place.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 29 - COMMON NOUN, PROPER NOUN vs ADJECTIVE</span><spanclass="named-paragraph-number">6.3.29</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_30"class="paragraph-anchor"></a><b>§6.3.30. Case 30. </b>I am in two minds about the next nit-picking error message.
But really this is a device used in English only for declamatory purposes
or comedic intent. (As in Peter Schickele's spoof example of an 18th-century
opera about a dog, "Collared Is Bowser".)
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 30 - ADJECTIVE vs COMMON NOUN, PROPER NOUN</span><spanclass="named-paragraph-number">6.3.30</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that suggests that an adjective has some sort of value"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying 'Open is a number' or 'Scenery is 5': but of course an adjective "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"represents something which is either true or false."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_31"class="paragraph-anchor"></a><b>§6.3.31. Case 31. </b>"Every K is in L."
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 31 - EVERY vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.31</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_32"class="paragraph-anchor"></a><b>§6.3.32. Case 32. </b>A problem message issued purely on stylistic grounds.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 32 - COMMON NOUN, PROPER NOUN vs ACTION</span><spanclass="named-paragraph-number">6.3.32</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"You wrote %1: unfortunately %2 is already the name of an action, "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"and it would only confuse things if we used it for a value as well."</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"you need to add 'the action of' after 'initially'"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"in order to clarify that you mean this sentence to set a variable "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"to an action (if in fact that's what you mean to do!)."</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that is putting the definition back to front"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"since I need these categorisations of actions to take the form 'Kissing a "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"woman is love', not 'Love is kissing a woman'. (This is really because it "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"is better style: love might be many other things too, and we don't want to "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"imply that the present definition is all-inclusive.)"</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_33"class="paragraph-anchor"></a><b>§6.3.33. Case 33. </b>"Every K is every L."
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 33 - EVERY on both sides</span><spanclass="named-paragraph-number">6.3.33</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"I can't do that"</span><spanclass="plain-syntax">, </span><spanclass="string-syntax">"Dave."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_34"class="paragraph-anchor"></a><b>§6.3.34. Case 34. </b>The "Genevieve" problem message is a finicky stylistic one, and
it I suspect it may be disliked. I've always been in two minds about whether
this ought to be allowed...
</p>
<blockquote>
<p>An animal is in the desk.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 34 - COMMON NOUN vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.34</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_34_1"class="named-paragraph-link"><spanclass="named-paragraph">Possession of something is allowed</span><spanclass="named-paragraph-number">6.3.34.1</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_34_2"class="named-paragraph-link"><spanclass="named-paragraph">Generalised relationships are allowed</span><spanclass="named-paragraph-number">6.3.34.2</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_34_3"class="named-paragraph-link"><spanclass="named-paragraph">Multiple objects in a relationship are allowed</span><spanclass="named-paragraph-number">6.3.34.3</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_34_4"class="named-paragraph-link"><spanclass="named-paragraph">Certain non-spatial relationships are allowed too</span><spanclass="named-paragraph-number">6.3.34.4</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_34_5"class="named-paragraph-link"><spanclass="named-paragraph">There is... relationships are allowed too</span><spanclass="named-paragraph-number">6.3.34.5</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"something described only by its kind should not be given a "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"specific place or role in the world"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"to avoid ambiguity. For instance, suppose 'car' is a kind. Then "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"we are not allowed to say 'a car is in the garage': there's too "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"much risk of confusion between whether an individual (but "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"nameless) car is referred to, or whether cars are generically to "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"be found there. Sentences of this form are therefore prohibited, "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"though more specific ones like 'a car called Genevieve is in the "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"garage' are fine, as is the reverse, 'In the garage is a car.'"</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this seems to give a worldly relationship to something intangible"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"possibly due to an accidental clash of names between a kind of "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"value and something in the real world. "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"I sometimes read sentences like 'There is a number on the "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"door' or 'A text is in the prayer-box' literally - thinking "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"you mean a whole number or a piece of double-quoted text, and "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"not realising you intended to make a brass number-plate or "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"an old book. If that's the trouble, you can use 'called': "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"for instance, 'In the prayer-box is a thing called the text.'"</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_34_1"class="paragraph-anchor"></a><b>§6.3.34.1. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Possession of something is allowed</span><spanclass="named-paragraph-number">6.3.34.1</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_34">§6.3.34</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_34_3"class="paragraph-anchor"></a><b>§6.3.34.3. </b>For example,
</p>
<blockquote>
<p>Six animals are in the desk.</p>
</blockquote>
<pclass="commentary">Note that the default multiplicity is 0, not 1; saying "one door" has a
slightly different meaning from simply saying "a door", since it clarifies
that we're discussing a number of actual objects, not the category of doors
in general.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Multiple objects in a relationship are allowed</span><spanclass="named-paragraph-number">6.3.34.3</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_34">§6.3.34</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_34_4"class="paragraph-anchor"></a><b>§6.3.34.4. </b>Further exceptions are made for sentences like:
</p>
<blockquote>
<p>A chair usually allows sitting. A thing usually weighs 1kg.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Certain non-spatial relationships are allowed too</span><spanclass="named-paragraph-number">6.3.34.4</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_34">§6.3.34</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_35"class="paragraph-anchor"></a><b>§6.3.35. Case 35. </b></p>
<blockquote>
<p>In the desk is a copy of Wisden. On the table is a container.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 35 - RELATIONSHIP vs COMMON NOUN</span><spanclass="named-paragraph-number">6.3.35</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_36"class="paragraph-anchor"></a><b>§6.3.36. Case 36. </b>"A box is on the table." This makes "box" the subject of
discussion. "The Gazebo is west of the Lawn" also falls into this case,
since "west of the Lawn" parses to a <spanclass="extract"><spanclass="extract-syntax">RELATIONSHIP_NT</span></span> subtree.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 36 - PROPER NOUN vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.36</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_37"class="paragraph-anchor"></a><b>§6.3.37. Case 37. </b>"On the table is a box." A mirror image, handling the inversion.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 37 - RELATIONSHIP vs PROPER NOUN</span><spanclass="named-paragraph-number">6.3.37</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_38"class="paragraph-anchor"></a><b>§6.3.38. Case 38. </b>"A door is a vehicle." This one's never legal; you can't equate
two whole domains. (We have the "kind of..." syntax instead.)
<spanclass="plain-syntax"></span><spanclass="string-syntax">"Sometimes this happens because I've read too much into a name - for instance, "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'A dark room is a room' makes me read 'dark room' as 'dark' (an adjective I know) "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"plus 'room', but maybe the writer actually meant a photographer's workshop. "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"If you need to call something by a name which confuses me, one way is to use "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'called': for instance, 'West is a room called the dark room.' Another way is "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"to call it something else here, and set the 'printed name' property to what you "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"want the player to see - for instance, 'The photo lab is a room. The printed name "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"of the photo lab is \"dark room\".'"</span>
</pre>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 38 - COMMON NOUN on both sides</span><spanclass="named-paragraph-number">6.3.38</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_38_1"class="named-paragraph-link"><spanclass="named-paragraph">Produce a problem if two values that vary are equated</span><spanclass="named-paragraph-number">6.3.38.1</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_38_2"class="named-paragraph-link"><spanclass="named-paragraph">Issue a problem for a namespace clash between a variable name and a kind</span><spanclass="named-paragraph-number">6.3.38.2</span></a></span><spanclass="plain-syntax">;</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_38_1"class="paragraph-anchor"></a><b>§6.3.38.1. </b>For example,
</p>
<blockquote>
<p>A number that varies is a text that varies.</p>
</blockquote>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Produce a problem if two values that vary are equated</span><spanclass="named-paragraph-number">6.3.38.1</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_38">§6.3.38</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_38_2"class="paragraph-anchor"></a><b>§6.3.38.2. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Issue a problem for a namespace clash between a variable name and a kind</span><spanclass="named-paragraph-number">6.3.38.2</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"the name supplied for this new variable is a piece of text "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"which is not available because it has a rival meaning already"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"as a result of definitions made elsewhere. (Sometimes these "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"are indirect: for instance, defining a column in a table "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"called 'question' can make a name like 'container in question' "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"suddenly ambiguous and thus unsuitable to be a variable "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"name.) If you're getting this Problem message in the Standard "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"Rules or some other extension you need to use, then your "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"only option is to hunt through your own source text to see "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"what you have defined which might cause this clash."</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_38">§6.3.38</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_39"class="paragraph-anchor"></a><b>§6.3.39. Case 39. </b>Sentences falling into this case have the form "X is a Y."; for
instance,
</p>
<blockquote>
<p>The lacquered box is a container.</p>
</blockquote>
<pclass="commentary">It might look as if
</p>
<blockquote>
<p>A dead end is a kind of room. The Pitch is a room. East is a dead end.</p>
</blockquote>
<pclass="commentary">would throw the last sentence into this case, which would be wrong, but we
avoid this by having the IF model code intervene. (Clearly this is a quirk
only occurring when we have named directions, an IF-like thing.)
</p>
<pclass="commentary">It's usually plain wrong to say that a value has a given kind, because the value
has already been defined and its kind is long since established. (But we do
allow one case, where the declaration is redundant and harmless.)
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 39 - PROPER NOUN vs COMMON NOUN</span><spanclass="named-paragraph-number">6.3.39</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">else</span><spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_39_6"class="named-paragraph-link"><spanclass="named-paragraph">Assert that X is an instance of Y</span><spanclass="named-paragraph-number">6.3.39.6</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_39_1"class="named-paragraph-link"><spanclass="named-paragraph">We're declaring the kind of the variable, not setting its value</span><spanclass="named-paragraph-number">6.3.39.1</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_39_2"class="named-paragraph-link"><spanclass="named-paragraph">This sentence redundantly specifies the kind of value for a value</span><spanclass="named-paragraph-number">6.3.39.2</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_39_3"class="named-paragraph-link"><spanclass="named-paragraph">Amend kind of activity so that it is based on nothing</span><spanclass="named-paragraph-number">6.3.39.3</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_39_5"class="named-paragraph-link"><spanclass="named-paragraph">Issue problem for trying to use a description as a literal</span><spanclass="named-paragraph-number">6.3.39.5</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">if</span><spanclass="plain-syntax"> (</span><spanclass="identifier-syntax">var_set</span><spanclass="plain-syntax"> == </span><spanclass="identifier-syntax">FALSE</span><spanclass="plain-syntax">) </span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_39_4"class="named-paragraph-link"><spanclass="named-paragraph">Dabble further in ruthless sarcasm</span><spanclass="named-paragraph-number">6.3.39.4</span></a></span><spanclass="plain-syntax">;</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_39_1"class="paragraph-anchor"></a><b>§6.3.39.1. </b>For example,
</p>
<blockquote>
<p>The current prize value is a number that varies.</p>
</blockquote>
<pclass="commentary">We silently allow the kind of a variable to be restated or narrowed, but not
contradicted.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">We're declaring the kind of the variable, not setting its value</span><spanclass="named-paragraph-number">6.3.39.1</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"The sentence %1 seems to tell me that '%2', which has already been "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"declared as %4, is instead %3 - but that would be a contradiction."</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_39">§6.3.39</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_39_2"class="paragraph-anchor"></a><b>§6.3.39.2. </b>We allow redundant declarations, except for numbers, where we are
sarcastic because the information is so obvious that it must be a mistake.
In the case of texts, we cause the text to be compiled into the I6 story
file: this may possibly be useful to I6 hackers.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">This sentence redundantly specifies the kind of value for a value</span><spanclass="named-paragraph-number">6.3.39.2</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"%1: Grateful as I generally am for your guidance, "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"I think perhaps I could manage without this sentence."</span><spanclass="plain-syntax">);</span>
<pclass="commentary firstcommentary"><aid="SP6_3_39_3"class="paragraph-anchor"></a><b>§6.3.39.3. </b>This is a very special case. We get here from "X is an activity based on
nothing" but not from "X is an activity", and so it can be used to override
the default assumption about the basis of an activity.
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Amend kind of activity so that it is based on nothing</span><spanclass="named-paragraph-number">6.3.39.3</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_39">§6.3.39</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_39_4"class="paragraph-anchor"></a><b>§6.3.39.4. </b>My, aren't we charming?
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Dabble further in ruthless sarcasm</span><spanclass="named-paragraph-number">6.3.39.4</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="identifier-syntax">Problems::issue_problem_segment</span><spanclass="plain-syntax">(</span><spanclass="string-syntax">"%1: That, sir, is a damnable lie. '%2' is a number."</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="identifier-syntax">Problems::issue_problem_segment</span><spanclass="plain-syntax">(</span><spanclass="string-syntax">"%1: And I am the King of Siam. '%2' is some text."</span><spanclass="plain-syntax">);</span>
<pclass="commentary firstcommentary"><aid="SP6_3_39_5"class="paragraph-anchor"></a><b>§6.3.39.5. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Issue problem for trying to use a description as a literal</span><spanclass="named-paragraph-number">6.3.39.5</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="identifier-syntax">Problems::issue_problem_segment</span><spanclass="plain-syntax">(</span><spanclass="string-syntax">"%1: this seems to be using a description "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"as if it were a constant value, which isn't allowed. (Descriptions "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"can only be used as values to a limited extent.)"</span><spanclass="plain-syntax">);</span>
<pclass="commentary firstcommentary"><aid="SP6_3_39_6"class="paragraph-anchor"></a><b>§6.3.39.6. </b>Creation has already taken place, in that X does now exist, but any
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Assert that X is an instance of Y</span><spanclass="named-paragraph-number">6.3.39.6</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="identifier-syntax">LOG</span><spanclass="plain-syntax">(</span><spanclass="string-syntax">"Proposition is: $D\n"</span><spanclass="plain-syntax">, </span><spanclass="identifier-syntax">prop</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"which is too much for me. Perhaps you're trying to do two things "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"at once, and it would be clearer to write it as two sentences?"</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_39">§6.3.39</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_40"class="paragraph-anchor"></a><b>§6.3.40. Case 40. </b>And so on, with one exemption.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 40 - COMMON NOUN vs PROPER NOUN</span><spanclass="named-paragraph-number">6.3.40</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_40_1"class="named-paragraph-link"><spanclass="named-paragraph">Silently pass sentences like "The colours are red and blue."</span><spanclass="named-paragraph-number">6.3.40.1</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this seems to say that a general description is something else"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying that 'a door is 20'."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_40_1"class="paragraph-anchor"></a><b>§6.3.40.1. </b>Suppose on the left we have a kind ("a colour", say) and on the right
a specific value ("blue", say). We silently allow this if the kinds agree, as
that's the case we fall into if we created "blue" in the Creator earlier;
no further work need be done, and we return to avoid a spurious problem
message.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Silently pass sentences like "The colours are red and blue."</span><spanclass="named-paragraph-number">6.3.40.1</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_40">§6.3.40</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_41"class="paragraph-anchor"></a><b>§6.3.41. Case 41. </b>In general, an object simply can't be set equal to a value, but
there's one exception: when the value is really an adjectival use implying
a property, rather than a noun. This takes some setting up: only the last of
these sentences falls into case 41.
</p>
<blockquote>
<p>Colour is a kind of value. Green and blue are colours. A thing has a colour. The barn door is green.</p>
</blockquote>
<pclass="commentary">There is also one case in which an object can be set equal to another object:
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 41 - PROPER NOUN on both sides</span><spanclass="named-paragraph-number">6.3.41</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41_4"class="named-paragraph-link"><spanclass="named-paragraph">Allow the case of a property name, implicitly a property, being assigned to</span><spanclass="named-paragraph-number">6.3.41.4</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41_5"class="named-paragraph-link"><spanclass="named-paragraph">Allow the case where a constant value is being assigned a property value</span><spanclass="named-paragraph-number">6.3.41.5</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41_6"class="named-paragraph-link"><spanclass="named-paragraph">Allow the case where a constant response is being assigned a text value</span><spanclass="named-paragraph-number">6.3.41.6</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41_3"class="named-paragraph-link"><spanclass="named-paragraph">Allow the case of a variable being assigned to</span><spanclass="named-paragraph-number">6.3.41.3</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41_7"class="named-paragraph-link"><spanclass="named-paragraph">Allow the case of a new value for a kind which coincides with a property name</span><spanclass="named-paragraph-number">6.3.41.7</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41_1"class="named-paragraph-link"><spanclass="named-paragraph">This is a map connection referred to metonymically</span><spanclass="named-paragraph-number">6.3.41.1</span></a></span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41_2"class="named-paragraph-link"><spanclass="named-paragraph">Otherwise it's just wrong to equate objects</span><spanclass="named-paragraph-number">6.3.41.2</span></a></span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that seems to say that some object is a property"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying 'The brick building is the description': if you want to specify "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"the description of the current object, try putting the sentence the other way "</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">else</span><spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41_8"class="named-paragraph-link"><spanclass="named-paragraph">Produce a problem to the effect that two values can't be asserted equal</span><spanclass="named-paragraph-number">6.3.41.8</span></a></span><spanclass="plain-syntax">;</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_41_1"class="paragraph-anchor"></a><b>§6.3.41.1. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">This is a map connection referred to metonymically</span><spanclass="named-paragraph-number">6.3.41.1</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"no location is under discussion to be the origin of this map connection"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"so this is like starting with 'North is the Aviary': I can't tell where from."</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this seems to make a map connection to something which is "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"not an object"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying '20 is north'. This is an odd thing "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"to say, and makes me think that I've misunderstood you."</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"this seems to say that something is itself"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"like saying 'the coin is the coin'. This is an odd thing "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"to say, and makes me think that I've misunderstood you."</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"I am reading the sentence %1 as a declaration of the initial "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"state of the world, so I'm expecting that it will be definite. "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"The only way I can construe it that way is by thinking that "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'%2' and '%3' are two different things, but that doesn't make "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"sense, and the 'if' makes me think that perhaps you did not "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"mean this as a definite statement after all. Although 'if...' "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"is often used in rules and definitions of what to do in given "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"circumstances, it shouldn't be used in a direct assertion."</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41_2_2"class="named-paragraph-link"><spanclass="named-paragraph">Issue the generic problem message for equating objects</span><spanclass="named-paragraph-number">6.3.41.2.2</span></a></span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">else</span><spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41_2_1"class="named-paragraph-link"><spanclass="named-paragraph">Issue a problem for equating an object to a value</span><spanclass="named-paragraph-number">6.3.41.2.1</span></a></span><spanclass="plain-syntax">;</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_41">§6.3.41</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_41_2_1"class="paragraph-anchor"></a><b>§6.3.41.2.1. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Issue a problem for equating an object to a value</span><spanclass="named-paragraph-number">6.3.41.2.1</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_41_2">§6.3.41.2</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_41_2_2"class="paragraph-anchor"></a><b>§6.3.41.2.2. </b>This message is seen so often...
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Issue the generic problem message for equating objects</span><spanclass="named-paragraph-number">6.3.41.2.2</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="named-paragraph-container code-font"><ahref="4-ass.html#SP6_3_41_2_2_1"class="named-paragraph-link"><spanclass="named-paragraph">Choose random antagonists for variety</span><spanclass="named-paragraph-number">6.3.41.2.2.1</span></a></span><spanclass="plain-syntax">;</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"The sentence %1 appears to say two things are the same - I am reading '%2' "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"and '%3' as two different things, and therefore it makes no sense to say "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that one is the other: it would be like saying that '%4 is %5'. It would "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"be all right if the second thing were the name of a kind, perhaps with "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"properties: for instance '%6 is a lighted room' says that something "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"called %6 exists and that it is a 'room', which is a kind I know about, "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"combined with a property called 'lighted' which I also know about."</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_41_2">§6.3.41.2</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_41_2_2_1"class="paragraph-anchor"></a><b>§6.3.41.2.2.1. </b>...that we vary it randomly for fun. The low bits of the current time are not
exactly a crypto-quality source of entropy, but they'll do for us. (We have
to turn the variability off in fixed-RNG mode for the sake of the test
suite: it would be annoying to verify this problem message otherwise.)
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Choose random antagonists for variety</span><spanclass="named-paragraph-number">6.3.41.2.2.1</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_41_2_2">§6.3.41.2.2</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_41_3"class="paragraph-anchor"></a><b>§6.3.41.3. </b>Usually it makes no sense to equate two values: "5 is 10",
for instance, and we produce a variety of more or less scornful errors.
</p>
<blockquote>
<p>10 is 15. 14 is a number. "Fish" is text. The turn count is a text. 19 is a rulebook. "Frog" is a number. Before rules is a rule.</p>
</blockquote>
<pclass="commentary">But we do take polite notice when X is a variable name and Y is an
initial value with a compatible type, as in the second sentence here:
</p>
<blockquote>
<p>The innings total is a number that varies. The innings total is 101.</p>
</blockquote>
<pclass="commentary">We set such variables on traverse 2 because not all of the object values exist
yet during traverse 1.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Allow the case of a variable being assigned to</span><spanclass="named-paragraph-number">6.3.41.3</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_41">§6.3.41</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_41_4"class="paragraph-anchor"></a><b>§6.3.41.4. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Allow the case of a property name, implicitly a property, being assigned to</span><spanclass="named-paragraph-number">6.3.41.4</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"nothing is under discussion which might have this property"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"so this is like starting with 'The description is \"Orange.\"': "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"I can't tell what of."</span><spanclass="plain-syntax">);</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_41">§6.3.41</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_41_5"class="paragraph-anchor"></a><b>§6.3.41.5. </b>Here we're watching out for assertions like:
</p>
<blockquote>
<p>The Abruzzi Spur route is grade 5.</p>
</blockquote>
<pclass="commentary">where "Abruzzi Spur route" is a value of kind "K2 ascent route", and values
of this kind have been given a property "difficulty rating" which is also
the name of a kind in turn, one value of which is "grade 5". To the A-parser
both sides are <spanclass="extract"><spanclass="extract-syntax">VALUE</span></span> nodes; "grade 5" is being used adjectivally here,
but that's not evident without a lot of contextual checking.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Allow the case where a constant value is being assigned a property value</span><spanclass="named-paragraph-number">6.3.41.5</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_41">§6.3.41</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_41_6"class="paragraph-anchor"></a><b>§6.3.41.6. </b><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Allow the case where a constant response is being assigned a text value</span><spanclass="named-paragraph-number">6.3.41.6</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_41">§6.3.41</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_41_7"class="paragraph-anchor"></a><b>§6.3.41.7. </b>This is to cope with text such as
</p>
<blockquote>
<p>Plastic is a material.</p>
</blockquote>
<pclass="commentary">where "material" is the name of both a kind of value, and also a property.
We find ourselves here because we've been considering "material" as the
property name (a proper noun), not the kind name (a common noun), and we
need to switch interpretations to avoid the problem message.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Allow the case of a new value for a kind which coincides with a property name</span><spanclass="named-paragraph-number">6.3.41.7</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_41">§6.3.41</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_41_8"class="paragraph-anchor"></a><b>§6.3.41.8. </b>All other attempts are doomed.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Produce a problem to the effect that two values can't be asserted equal</span><spanclass="named-paragraph-number">6.3.41.8</span></span><spanclass="comment-syntax"> =</span>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3_41">§6.3.41</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP7"class="paragraph-anchor"></a><b>§7. </b>Equating values in an assertion is never allowed, but there are a variety of
possible problem messages, because it usually occurs as a symptom of a failed
attempt to create something. The following is used to pick up sentences like
</p>
<blockquote>
<p>Something called mauve is a colour.</p>
</blockquote>
<pclass="commentary">which fail because Inform reads "something" as "some thing", i.e., as
referring to a thing which then can't be equated with a colour.
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that seems to say that an object is the same as a value"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"which must be wrong. This can happen if the word 'something' is "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"used loosely - I read it as 'some thing', so I think it has to "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"refer to a thing, which is a kind of object. A sentence like "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"'Something called mauve is a colour' trips me up because mauve "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"is a value, so it isn't an object, and doesn't match 'something'."</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP7">§7</a>.</li></ul>
<pclass="commentary firstcommentary"><aid="SP6_3_42"class="paragraph-anchor"></a><b>§6.3.42. Case 42. </b>This is possibly a variation on 41 where an adjective is also
in some contexts a noun. For example:
</p>
<blockquote>
<p>Hostile hates friendly.</p>
</blockquote>
<pclass="commentary">where "hostile" and "friendly" are values of an enumerated kind but which
can also be used adjectivally.
</p>
<pclass="commentary"><spanclass="named-paragraph-container code-font"><spanclass="named-paragraph-defn">Case 42 - ADJECTIVE vs RELATIONSHIP</span><spanclass="named-paragraph-number">6.3.42</span></span><spanclass="comment-syntax"> =</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that seems to relate an adjective to something"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"which must be wrong. (This can sometimes happen if the same word can "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"be used both as an adjective and a noun, and I misunderstand.)"</span><spanclass="plain-syntax">);</span>
</pre>
<ulclass="endnotetexts"><li>This code is used in <ahref="4-ass.html#SP6_3">§6.3</a>.</li></ul>
<spanclass="plain-syntax"></span><spanclass="identifier-syntax">internal_error</span><spanclass="plain-syntax">(</span><spanclass="string-syntax">"Assert PX of type PY on bad node types"</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="reserved-syntax">else</span><spanclass="plain-syntax"></span><spanclass="identifier-syntax">Problems::quote_text</span><spanclass="plain-syntax">(3, </span><spanclass="string-syntax">"(something not given an explicit name)"</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"The sentence %1 seems to tell me that '%2' and '%3' have to be "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"the same, but it looks odd to me. '%2' is something generic - "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"not something definite; but '%3' is (presumably) something "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"specific. So it's as if you'd written 'A room is the Sydney "</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"Opera House'. (Which room, exactly? You see the trouble.)"</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"that seems to say that an object is the same as a value"</span><spanclass="plain-syntax">,</span>
<spanclass="plain-syntax"></span><spanclass="string-syntax">"which must be wrong."</span><spanclass="plain-syntax">);</span>
<spanclass="plain-syntax">}</span>
</pre>
<pclass="commentary firstcommentary"><aid="SP9"class="paragraph-anchor"></a><b>§9. Instantiation of related kinds. </b></p>
<spanclass="reserved-syntax">int</span><spanclass="plain-syntax"></span><spanclass="function-syntax">Assertions::is_adjlist</span><buttonclass="popup"onclick="togglePopup('usagePopup7')"><spanclass="comment-syntax">?</span><spanclass="popuptext"id="usagePopup7">Usage of <spanclass="code-font"><spanclass="function-syntax">Assertions::is_adjlist</span></span>:<br/><ahref="4-ass.html#SP6_3_2">§6.3.2</a></span></button><spanclass="plain-syntax">(</span><spanclass="identifier-syntax">parse_node</span><spanclass="plain-syntax"> *</span><spanclass="identifier-syntax">p</span><spanclass="plain-syntax">) {</span>