1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-30 22:14:58 +03:00

Refactored inferences

This commit is contained in:
Graham Nelson 2021-02-16 00:54:32 +00:00
parent b3a88ca433
commit 89f9b0e45d
133 changed files with 2151 additions and 1787 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-alpha.1+6R25 'Krypton' (15 February 2021)
v10.1.0-alpha.1+6R26 'Krypton' (16 February 2021)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 15 February 2021
Build Number: 6R25
Build Date: 16 February 2021
Build Number: 6R26

View file

@ -169,7 +169,7 @@ any additional sentences generated.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">last</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">assembly_position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Plugins::Call::complete_model</span><span class="plain-syntax">(1);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::deduce_object_instance_kinds</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SyntaxTree::traverse_nodep_from</span><span class="plain-syntax">(</span><span class="identifier-syntax">last</span><span class="plain-syntax">, </span><a href="2-ptmn.html#SP3" class="function-link"><span class="function-syntax">MajorNodes::visit</span></a><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">last</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ptmn.html#SP2">&#167;2</a>.</li></ul>

View file

@ -85,10 +85,9 @@ description only, whereas B could be any subtree of an assertion.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">implication</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">if_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> which objects are affected</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">if_proposition</span><span class="plain-syntax">; </span><span class="comment-syntax"> which objects are affected</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">then_pn</span><span class="plain-syntax">; </span><span class="comment-syntax"> what assertion is implied about them</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">implied_likelihood</span><span class="plain-syntax">; </span><span class="comment-syntax"> with what certainty level</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">implication</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_implication</span><span class="plain-syntax">; </span><span class="comment-syntax"> in list of implications</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">implication</span><span class="plain-syntax">;</span>
</pre>
@ -143,15 +142,13 @@ is to store them and sit on them.
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-imp.html#SP3_2_3" class="named-paragraph-link"><span class="named-paragraph">Check that the conclusion involves only a single either/or property</span><span class="named-paragraph-number">3.2.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">implication</span><span class="plain-syntax"> *</span><span class="identifier-syntax">imp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">implication</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">if_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">premiss</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">if_proposition</span><span class="plain-syntax"> = </span><span class="identifier-syntax">premiss</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">then_pn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">py</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">implied_likelihood</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_implication</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::get_implications</span><span class="plain-syntax">(</span><span class="identifier-syntax">premiss_kind</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InferenceSubjects::set_implications</span><span class="plain-syntax">(</span><span class="identifier-syntax">premiss_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">imp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">imp</span><span class="plain-syntax">, </span><span class="reserved-syntax">implication</span><span class="plain-syntax">, </span><span class="identifier-syntax">InferenceSubjects::get_implications</span><span class="plain-syntax">(</span><span class="identifier-syntax">premiss_kind</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">IMPLICATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Forming implication for $j: $D implies\n $T"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">premiss_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">if_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">then_pn</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">premiss_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">if_proposition</span><span class="plain-syntax">, </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">then_pn</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-imp.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2_1" class="paragraph-anchor"></a><b>&#167;3.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find the premiss kind and specification</span><span class="named-paragraph-number">3.2.1</span></span><span class="comment-syntax"> =</span>
@ -259,9 +256,9 @@ basis of the inferences so far drawn about it.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax">) </span><a href="4-imp.html#SP5" class="function-link"><span class="function-syntax">Assertions::Implications::set_possessed_flags</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">PROPERTY_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Properties::is_either_or</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">World::Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) != </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Properties::is_either_or</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) != </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-imp.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">See what we can get out of this inference</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
@ -275,7 +272,7 @@ of not being open, and vice versa.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">truth_state</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">truth_state</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">certainty</span><span class="plain-syntax">; </span><span class="identifier-syntax">truth_state</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">possession_marker</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pom</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::get_possession_marker</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
@ -316,12 +313,12 @@ no better a certainty level.
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::narrowest_broader_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">domain</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">k</span><span class="plain-syntax">) &amp;&amp; (</span><a href="4-imp.html#SP6" class="function-link"><span class="function-syntax">Assertions::Implications::check_implications_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">candidate</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">InferenceSubjects::get_implications</span><span class="plain-syntax">(</span><span class="identifier-syntax">domain</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">LinkedLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">InferenceSubjects::get_implications</span><span class="plain-syntax">(</span><span class="identifier-syntax">domain</span><span class="plain-syntax">)) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">IMPLICATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Considering implications about $j as they apply to $j:\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">domain</span><span class="plain-syntax">, </span><span class="identifier-syntax">candidate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">implication</span><span class="plain-syntax"> *</span><span class="identifier-syntax">imp</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">imp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::get_implications</span><span class="plain-syntax">(</span><span class="identifier-syntax">domain</span><span class="plain-syntax">); </span><span class="identifier-syntax">imp</span><span class="plain-syntax">; </span><span class="identifier-syntax">imp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_implication</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">imp</span><span class="plain-syntax">, </span><span class="reserved-syntax">implication</span><span class="plain-syntax">, </span><span class="identifier-syntax">InferenceSubjects::get_implications</span><span class="plain-syntax">(</span><span class="identifier-syntax">domain</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-imp.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Consider this individual implication as it applies to the candidate</span><span class="named-paragraph-number">6.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -337,7 +334,7 @@ no better a certainty level.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">implied_likelihood</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">conclusion_state</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">conclusion_state</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">IMPLICATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"$D =&gt; $T (certainty %d; changed state %d)\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">if_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">then_pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">implied_likelihood</span><span class="plain-syntax">, </span><span class="identifier-syntax">conclusion_state</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">if_proposition</span><span class="plain-syntax">, </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">then_pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">implied_likelihood</span><span class="plain-syntax">, </span><span class="identifier-syntax">conclusion_state</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">conclusion_prop</span><span class="plain-syntax"> = </span><a href="6-aa.html#SP5" class="function-link"><span class="function-syntax">AdjectiveAmbiguity::has_either_or_property_meaning</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pred</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
@ -346,7 +343,7 @@ no better a certainty level.
<span class="plain-syntax"> </span><span class="reserved-syntax">possession_marker</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pom</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::get_possession_marker</span><span class="plain-syntax">(</span><span class="identifier-syntax">conclusion_prop</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-imp.html#SP6_1_2" class="named-paragraph-link"><span class="named-paragraph">Check that the conclusion is not redundant or irrelevant</span><span class="named-paragraph-number">6.1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">candidate_qualifies</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Assert::test_at_compile_time</span><span class="plain-syntax">(</span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">if_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">candidate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">candidate_qualifies</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Assert::test_at_compile_time</span><span class="plain-syntax">(</span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">if_proposition</span><span class="plain-syntax">, </span><span class="identifier-syntax">candidate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">candidate_qualifies</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">IMPLICATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"PASS: changing property $Y of $j\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">conclusion_prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">candidate</span><span class="plain-syntax">);</span>

View file

@ -254,14 +254,14 @@ to behave as if \(B(y, x)\) had also been asserted whenever \(B(x, y)\) has, if
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-er.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Reject non-assertable relations</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-er.html#SP4" class="function-link"><span class="function-syntax">Relations::Explicit::stored_dynamically</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw_relation_spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw_relation_spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">infs0</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">infs1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="6-er.html#SP7_2" class="named-paragraph-link"><span class="named-paragraph">Reject relationship with nothing</span><span class="named-paragraph-number">7.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-er.html#SP4" class="function-link"><span class="function-syntax">Relations::Explicit::allow_arbitrary_assertions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="6-er.html#SP5" class="function-link"><span class="function-syntax">Relations::Explicit::get_form_of_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) == </span><span class="constant-syntax">Relation_Sym_VtoV</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">infs0</span><span class="plain-syntax"> != </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-er.html#SP2" class="function-link"><span class="function-syntax">Relations::Explicit::is_explicit_with_runtime_storage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) {</span>
@ -321,7 +321,7 @@ inferences for \(y\) and \(z\).
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">swap</span><span class="plain-syntax">=</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">=</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">=</span><span class="identifier-syntax">swap</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="6-er.html#SP5" class="function-link"><span class="function-syntax">Relations::Explicit::get_i6_storage_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">InferenceSubjects::as_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PropertyInferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">InferenceSubjects::as_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. </b>We need do nothing special: these relations can be compiled from their schemas.

View file

@ -212,7 +212,7 @@ setting a global variable.
<span class="plain-syntax"> </span><span class="string-syntax">"a variable can only be given its value straightforwardly or "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"qualified by 'usually'"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"not with 'always', 'seldom' or 'never'."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw_property</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">PropertyInferences::draw</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::to_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_variable_initial_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>

View file

@ -159,12 +159,14 @@ We begin with <a href="index.html" class="internal">core</a> itself.
<span class="definition-keyword">enum</span> <span class="constant-syntax">comparative_bp_data_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">counting_data_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inference_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inference_family_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inference_subject_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inference_subject_family_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">measurement_definition_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">named_rulebook_outcome_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">placement_affecting_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">property_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">property_inference_data_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">property_permission_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">property_of_value_storage_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">property_setting_bp_data_CLASS</span>
@ -185,6 +187,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">comparative_bp_data</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">counting_data</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject_family</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">measurement_definition</span><span class="plain-syntax">)</span>
@ -193,6 +196,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_of_value_storage</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_permission</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">property</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inference_data</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_setting_bp_data</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">rule</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">)</span>

View file

@ -245,7 +245,8 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">NounIdentifiers::name_all</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">OrderingInstances::objects_in_definition_sequence</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::advance_stage_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MODEL_COMPLETE_CSEQ</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Completing the model world"</span><span class="plain-syntax">, -1);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">World::complete</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">World::stages_II_and_III</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">World::stage_IV</span><span class="plain-syntax">)</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-htc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_6" class="paragraph-anchor"></a><b>&#167;2.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Tables and grammar</span><span class="named-paragraph-number">2.6</span></span><span class="comment-syntax"> =</span>
@ -262,7 +263,7 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Tables::check_tables_for_kind_clashes</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTTables::compile_print_table_names</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Parsing::traverse</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">World::complete_additions</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">World::stage_V</span><span class="plain-syntax">)</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-htc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_7" class="paragraph-anchor"></a><b>&#167;2.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Phrases and rules</span><span class="named-paragraph-number">2.7</span></span><span class="comment-syntax"> =</span>
@ -303,7 +304,8 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRelations::compile_defined_relation_constants</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTKinds::compile_data_type_support_routines</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTKinds::I7_Kind_Name_routine</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">World::Compile::compile</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Plugins::Call::compile_model_tables</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">InferenceSubjects::emit_all</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">backdrops_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Backdrops::write_found_in_routines</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">map_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Map::write_door_dir_routines</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">map_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Map::write_door_to_routines</span><span class="plain-syntax">)</span>

View file

@ -310,10 +310,10 @@ making no sense.
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</span>
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_subject</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_property</span></a><span class="plain-syntax">(5, </span><span class="identifier-syntax">World::Inferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-sq.html#SP2" class="function-link"><span class="function-syntax">Problems::quote_property</span></a><span class="plain-syntax">(5, </span><span class="identifier-syntax">PropertyInferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %2: but the property %5 for the %1 %3%S.%L, %4"</span><span class="plain-syntax">);</span>

View file

@ -82,10 +82,10 @@ inside something generates <span class="extract"><span class="extract-syntax">FO
inferences to avoid piling up bogus inconsistencies.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">FOUND_IN_INF</span><span class="plain-syntax"> </span><span class="constant-syntax">56</span><span class="plain-syntax"> </span><span class="comment-syntax"> for backdrop things in many places</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax"> </span><span class="constant-syntax">57</span><span class="plain-syntax"> </span><span class="comment-syntax"> ditto</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 56; for backdrop things in many places</span>
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 57; ditto</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_backdrop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P_scenery</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> an I7 either/or property marking something as scenery</span>
<span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P_absent</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> an I6-only property for backdrops out of play</span>
@ -105,6 +105,10 @@ inferences to avoid piling up bogus inconsistencies.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"FOUND_IN_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"FOUND_EVERYWHERE_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</span><span class="plain-syntax">, </span><a href="3-bck.html#SP3" class="function-link"><span class="function-syntax">PL::Backdrops::create_inference_families</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_BASE_KIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-bck.html#SP5" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_PROPERTY_NOTIFY</span><span class="plain-syntax">, </span><a href="3-bck.html#SP8" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_new_property_notify</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax">, </span><a href="3-bck.html#SP17" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_complete_model</span></a><span class="plain-syntax">);</span>
@ -112,6 +116,10 @@ inferences to avoid piling up bogus inconsistencies.
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ESTIMATE_PROPERTY_USAGE</span><span class="plain-syntax">, </span><a href="3-bck.html#SP9" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_estimate_property_usage</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_INTERVENE_IN_ASSERTION</span><span class="plain-syntax">, </span><a href="3-bck.html#SP15" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_intervene_in_assertion</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::create_inference_families</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Kinds. </b>This a kind name to do with backdrops which Inform provides special support
for; it recognises the English name when defined by the Standard Rules. (So
@ -162,7 +170,7 @@ Standard Rules. (So there is no need to translate this to other languages.)
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::object_is_scenery</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">PL::Backdrops::object_is_scenery</span></span>:<br/>Spatial Model - <a href="3-sm.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_scenery</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_scenery</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -180,10 +188,6 @@ Standard Rules. (So there is no need to translate this to other languages.)
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::backdrops_log_inference_type</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">PL::Backdrops::backdrops_log_inference_type</span></span>:<br/><a href="3-bck.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">it</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">FOUND_IN_INF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"FOUND_IN_INF"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">FOUND_EVERYWHERE_INF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"FOUND_EVERYWHERE_INF"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -210,9 +214,9 @@ and text like
<span class="plain-syntax"> (</span><span class="identifier-syntax">relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_regional_containment</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">PART_OF_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">FOUND_IN_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
@ -225,12 +229,12 @@ and text like
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_BACKDROPS_IN</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-bck.html#SP6" class="function-link"><span class="function-syntax">PL::Backdrops::object_is_a_backdrop</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">), </span><span class="constant-syntax">FOUND_IN_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">), </span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P</span><span class="plain-syntax">)</span>
<span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_BACKDROPS_EVERYWHERE</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-bck.html#SP6" class="function-link"><span class="function-syntax">PL::Backdrops::object_is_a_backdrop</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">), </span><span class="constant-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">), </span><span class="identifier-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax">)</span>
</pre>
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>&#167;13. </b>Since backdrops are contained using different mechanisms, the following
(which does nothing if Backdrops isn't plugged in) adds backdrop contents to
@ -327,7 +331,7 @@ been asserted true:
<span class="plain-syntax"> </span><span class="string-syntax">"is a vehicle which is everywhere.' is not."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -336,7 +340,7 @@ been asserted true:
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::backdrops_complete_model</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::Backdrops::backdrops_complete_model</span></span>:<br/><a href="3-bck.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_II</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_absent</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::EitherOr::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"absent"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::EitherOr::implement_as_attribute</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_absent</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
@ -362,7 +366,7 @@ been asserted true:
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">FOUNDIN</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUND_EVERYWHERE_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
@ -373,8 +377,8 @@ been asserted true:
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">FOUND_IN_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K_region</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">))) </span><span class="identifier-syntax">region_count</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">room_count</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> }</span>
@ -388,8 +392,8 @@ been asserted true:
<span class="plain-syntax"> </span><span class="identifier-syntax">FOUNDIN</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">INLINE_PROPERTY_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Emit::named_array_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUNDIN</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">FOUND_IN_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::array_iname_entry</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTInstances::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">World::Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::array_iname_entry</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTInstances::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::array_end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUNDIN</span><span class="plain-syntax">, </span><span class="identifier-syntax">INLINE_ARRAY_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
</pre>
@ -446,8 +450,8 @@ code, derived from the old I6 library, requires <span class="extract"><span clas
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Routines::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_in_routine_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">FOUND_IN_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K_region</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">))) {</span>

View file

@ -110,7 +110,7 @@ age of Inter we want to avoid that sort of tomfoolery.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Devices::IF_complete_model</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">PL::Devices::IF_complete_model</span></span>:<br/><a href="3-dvc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="constant-syntax">3</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_III</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_switchable</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::EitherOr::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"switchable"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::EitherOr::implement_as_attribute</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_switchable</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>

View file

@ -1400,7 +1400,7 @@ on &mdash; come from here.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P_printed_name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_prop_state_at</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state_at</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_printed_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">)))) {</span>

View file

@ -355,10 +355,10 @@ such.
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">LIKELY_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">DIRECTION_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">LIKELY_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">o_dir</span><span class="plain-syntax">?(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">o_dir</span><span class="plain-syntax">)):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>

View file

@ -94,7 +94,7 @@ sort of tomfoolery.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Persons::IF_complete_model</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PL::Persons::IF_complete_model</span></span>:<br/><a href="3-prs.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="constant-syntax">3</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">K_person</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_III</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">K_person</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_animate</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::EitherOr::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"animate"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::EitherOr::implement_as_attribute</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_animate</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_before</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::Valued::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"before"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>

View file

@ -371,7 +371,7 @@ to participate in nonspatial relations.)
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inner</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">outer</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">PARENTAGE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">inner</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">outer</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">inner</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">outer</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-rgn.html#SP16">&#167;16</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP16_3" class="paragraph-anchor"></a><b>&#167;16.3. </b>Anything in or part of a region is necessarily a room, if it isn't known
@ -385,7 +385,7 @@ to be a region already:
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">I0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Propositions::Abstract::assert_kind_of_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">I1</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">rm</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_map_region</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PropertyInferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">rm</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_map_region</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-rgn.html#SP16">&#167;16</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>&#167;17. </b>Note that because we use regular <span class="extract"><span class="extract-syntax">PARENTAGE_INF</span></span> inferences to remember
@ -406,8 +406,8 @@ region is either the next broadest region containing it, or else <span class="ex
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Regions::regions_complete_model</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">PL::Regions::regions_complete_model</span></span>:<br/><a href="3-rgn.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-rgn.html#SP18_1" class="named-paragraph-link"><span class="named-paragraph">Assert map-region properties of rooms and regions</span><span class="named-paragraph-number">18.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="constant-syntax">3</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-rgn.html#SP18_2" class="named-paragraph-link"><span class="named-paragraph">Assert regional-found-in properties of regions</span><span class="named-paragraph-number">18.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_II</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-rgn.html#SP18_1" class="named-paragraph-link"><span class="named-paragraph">Assert map-region properties of rooms and regions</span><span class="named-paragraph-number">18.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_III</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-rgn.html#SP18_2" class="named-paragraph-link"><span class="named-paragraph">Assert regional-found-in properties of regions</span><span class="named-paragraph-number">18.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -427,7 +427,7 @@ region is either the next broadest region containing it, or else <span class="ex
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">where</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_prop_state_at</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state_at</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_map_region</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">where</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">reg</span><span class="plain-syntax"> =</span>

View file

@ -126,12 +126,13 @@ carries, wears, supports or incorporates it.
indications of spatial structure:
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">IS_ROOM_INF</span><span class="plain-syntax"> </span><span class="constant-syntax">50</span><span class="plain-syntax"> </span><span class="comment-syntax"> is O a room?</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">CONTAINS_THINGS_INF</span><span class="plain-syntax"> </span><span class="constant-syntax">51</span><span class="plain-syntax"> </span><span class="comment-syntax"> does O contain things?</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PARENTAGE_INF</span><span class="plain-syntax"> </span><span class="constant-syntax">52</span><span class="plain-syntax"> </span><span class="comment-syntax"> where is O located?</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax"> </span><span class="constant-syntax">53</span><span class="plain-syntax"> </span><span class="comment-syntax"> located vaguely as "here"?</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax"> </span><span class="constant-syntax">54</span><span class="plain-syntax"> </span><span class="comment-syntax"> located vaguely as "nowhere"?</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PART_OF_INF</span><span class="plain-syntax"> </span><span class="constant-syntax">55</span><span class="plain-syntax"> </span><span class="comment-syntax"> is O a part of another object?</span>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 50 is O a room?</span>
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CONTAINS_THINGS_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 51 does O contain things?</span>
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 52 where is O located?</span>
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 53 located vaguely as "here"?</span>
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 54 located vaguely as "nowhere"?</span>
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 55 is O a part of another object?</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>The Spatial plugin also needs to know about a considerable number of special
kinds and properties:
@ -174,6 +175,16 @@ timing issue to get around (see below).
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"IS_ROOM_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">EXPLAIN_CONTRADICTION_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP6" class="function-link"><span class="function-syntax">PL::Spatial::is_room_explain_contradiction</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CONTAINS_THINGS_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"CONTAINS_THINGS_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PARENTAGE_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">EXPLAIN_CONTRADICTION_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP6" class="function-link"><span class="function-syntax">PL::Spatial::parentage_explain_contradiction</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PARENTAGE_HERE_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PARENTAGE_NOWHERE_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PART_OF_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</span><span class="plain-syntax">, </span><a href="3-sm.html#SP6" class="function-link"><span class="function-syntax">PL::Spatial::create_inference_families</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CREATE_INFERENCES</span><span class="plain-syntax">, </span><a href="3-sm.html#SP7" class="function-link"><span class="function-syntax">PL::Spatial::create_inference_subjects</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_BASE_KIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-sm.html#SP12" class="function-link"><span class="function-syntax">PL::Spatial::spatial_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ACT_ON_SPECIAL_NPS</span><span class="plain-syntax">, </span><a href="3-sm.html#SP23" class="function-link"><span class="function-syntax">PL::Spatial::spatial_act_on_special_NPs</span></a><span class="plain-syntax">);</span>
@ -191,6 +202,43 @@ timing issue to get around (see below).
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ADD_TO_WORLD_INDEX</span><span class="plain-syntax">, </span><a href="3-sm.html#SP45" class="function-link"><span class="function-syntax">PL::Spatial::spatial_add_to_World_index</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_INTERVENE_IN_ASSERTION</span><span class="plain-syntax">, </span><a href="3-sm.html#SP24" class="function-link"><span class="function-syntax">PL::Spatial::spatial_intervene_in_assertion</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::is_room_explain_contradiction</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::two_sentences_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_WhenIsARoomNotARoom</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">inferred_from</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"this looks like a contradiction"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"because apparently something would have to be both a room and not a "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"room at the same time."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::parentage_explain_contradiction</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) != </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_subject</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_SpatialContradiction</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %1, but also %2: that seems to be saying that the same "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"object (%3) must be in two different places (%4 and %5). This "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"looks like a contradiction. %P"</span>
<span class="plain-syntax"> </span><span class="string-syntax">"This sometimes happens as a result of a sentence like 'Every person "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"carries a bag', when Inform doesn't know 'bag' as the name of any "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"kind - so that it makes only a single thing called 'bag', and then "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the sentence looks as if it says everyone is carrying the same bag."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::create_inference_families</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>In talking about some of the fundamental spatial domains we potentially have
a vicious circle, because
@ -263,35 +311,27 @@ multiple <span class="extract"><span class="extract-syntax">PARENTAGE_INF</span>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_log_inference_type</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_log_inference_type</span></span>:<br/><a href="3-sm.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">it</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONTAINS_THINGS_INF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"CONTAINS_THINGS_INF"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">IS_ROOM_INF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"IS_ROOM_INF"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_HERE_INF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"PARENTAGE_HERE_INF"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_NOWHERE_INF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"PARENTAGE_NOWHERE_INF"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_INF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"PARENTAGE_INF"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PART_OF_INF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"PART_OF_INF"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_inferences_contradict</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_inferences_contradict</span></span>:<br/><a href="3-sm.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">World::Inferences::get_inference_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) == </span><span class="constant-syntax">PARENTAGE_INF</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) !=</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Inferences::get_inference_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) !=</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_explain_contradiction</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_explain_contradiction</span></span>:<br/><a href="3-sm.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">World::Inferences::get_inference_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) == </span><span class="constant-syntax">PARENTAGE_INF</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) !=</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
<span class="comment-syntax"> if ((Inferences::get_inference_type(A) == PARENTAGE_INF) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) !=</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_subject</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">World::Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">World::Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_SpatialContradiction</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %1, but also %2: that seems to be saying that the same "</span>
@ -304,6 +344,7 @@ multiple <span class="extract"><span class="extract-syntax">PARENTAGE_INF</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">*/</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -354,7 +395,7 @@ if it turns out to be news, we infer <span class="extract"><span class="extract-
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kw</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((!(</span><span class="identifier-syntax">Kinds::Behaviour::is_object_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">kw</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">))) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_object_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -470,9 +511,9 @@ appearance".
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">I</span><span class="plain-syntax">) &amp;&amp; (</span><a href="3-bck.html#SP8" class="function-link"><span class="function-syntax">PL::Backdrops::object_is_scenery</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">PROPERTY_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">World::Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">P_description</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP19_1" class="named-paragraph-link"><span class="named-paragraph">Produce a problem for doubly described scenery</span><span class="named-paragraph-number">19.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
@ -625,9 +666,9 @@ with certainty read
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::infer_presence_here</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::infer_presence_here</span></span>:<br/>Everywhere, Nowhere and Here - <a href="3-enah.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="constant-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_DuplicateHere</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"can only be said to be 'here' once"</span><span class="plain-syntax">,</span>
@ -635,9 +676,9 @@ with certainty read
<span class="plain-syntax"> </span><span class="string-syntax">"since 'here' can mean different things in different sentences."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Anaphora::get_current_subject</span><span class="plain-syntax">(), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP27" class="paragraph-anchor"></a><b>&#167;27. </b>Similarly:
@ -645,9 +686,9 @@ with certainty read
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::infer_presence_nowhere</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::infer_presence_nowhere</span></span>:<br/>Everywhere, Nowhere and Here - <a href="3-enah.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -776,17 +817,17 @@ probably suggested by inferences.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">CONTAINS_THINGS_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) &gt; </span><span class="identifier-syntax">geography_certainty</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CONTAINS_THINGS_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) &gt; </span><span class="identifier-syntax">geography_certainty</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">geography_choice</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_container</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">geography_certainty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">geography_certainty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">geography_inference</span><span class="plain-syntax"> = </span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">IS_ROOM_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">World::Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) &gt; </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) &gt; </span><span class="identifier-syntax">geography_certainty</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) &gt; </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) &gt; </span><span class="identifier-syntax">geography_certainty</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">geography_choice</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">geography_certainty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">geography_certainty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_certainty</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">geography_inference</span><span class="plain-syntax"> = </span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
@ -845,7 +886,7 @@ when it's legitimately a door.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_PersonContaining</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">sentence_setting_kind</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">geography_inference</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">geography_inference</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"cannot contain or support things like something inanimate"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"which is what you are implying. Instead, people must carry or wear them: "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"so 'The briefcase is in Daphne.' is disallowed, but 'The briefcase is "</span>
@ -861,7 +902,7 @@ Inform spatial model:
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_CantContainAndSupport</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">decider</span><span class="plain-syntax">, </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">geography_inference</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">decider</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">geography_inference</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"cannot both contain things and support things"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"which is what you're implying here. If you need both, the easiest way is "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"to make it either a supporter with a container attached or vice versa. "</span>
@ -876,7 +917,7 @@ Inform spatial model:
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BothRoomAndSupporter</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">decider</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">geography_inference</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">geography_inference</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"would need to have two different and incompatible kinds to make both "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"sentences true"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and this is a contradiction."</span><span class="plain-syntax">);</span>
@ -907,7 +948,7 @@ provide access routines to read and write:
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">to</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"set progenitor of nothing"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">of</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">progenitor</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">of</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">progenitor_set_at</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">reason</span><span class="plain-syntax">)?</span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">reason</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">reason</span><span class="plain-syntax">)?</span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">reason</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP31" class="paragraph-anchor"></a><b>&#167;31. </b>This is used for error recovery only.
@ -949,7 +990,7 @@ the kind of here-objects.
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">here_flag</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">here_flag</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
@ -993,7 +1034,7 @@ object under investigation.
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP32_3_1" class="named-paragraph-link"><span class="named-paragraph">Find the inference which will decide the progenitor</span><span class="named-paragraph-number">32.3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parent_setting_inference</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">whereabouts</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">parent_setting_inference</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">parent_setting_inference</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">here_flag</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP32_3_2" class="named-paragraph-link"><span class="named-paragraph">Find the whereabouts of something here</span><span class="named-paragraph-number">32.3.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">whereabouts</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::set_progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">whereabouts</span><span class="plain-syntax">, </span><span class="identifier-syntax">parent_setting_inference</span><span class="plain-syntax">);</span>
@ -1008,11 +1049,11 @@ object under investigation.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP32_3_1_1" class="named-paragraph-link"><span class="named-paragraph">Make this the determining inference</span><span class="named-paragraph-number">32.3.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP32_3_1_1" class="named-paragraph-link"><span class="named-paragraph">Make this the determining inference</span><span class="named-paragraph-number">32.3.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">PARENTAGE_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP32_3_1_1" class="named-paragraph-link"><span class="named-paragraph">Make this the determining inference</span><span class="named-paragraph-number">32.3.1.1</span></a></span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-sm.html#SP32_3">&#167;32.3</a>.</li></ul>
@ -1022,8 +1063,8 @@ object under investigation.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parent_setting_inference</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_DuplicateParentage</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">parent_setting_inference</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">parent_setting_inference</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"can only be given its position once"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"in a single assertion sentence."</span><span class="plain-syntax">);</span>
@ -1038,7 +1079,7 @@ object under investigation.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">whereabouts</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">whereabouts</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">whereabouts</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">here_sentence</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">parent_setting_inference</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">parent_setting_inference</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP32_3_2_1" class="named-paragraph-link"><span class="named-paragraph">Set the whereabouts to the last discussed room prior to this inference being drawn</span><span class="named-paragraph-number">32.3.2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">whereabouts</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">here_sentence</span><span class="plain-syntax">;</span>
@ -1069,7 +1110,7 @@ when it finishes this will be set to the most recently mentioned.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">PART_OF_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) || (</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::object_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_RoomOrDoorAsPart</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
@ -1408,8 +1449,8 @@ as a value for <span class="extract"><span class="extract-syntax">description</s
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K_room</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">desc_seen</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_room</span><span class="plain-syntax">), </span><span class="identifier-syntax">PROPERTY_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_description</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_room</span><span class="plain-syntax">), </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PropertyInferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_description</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">desc_seen</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">desc_seen</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)</span>
@ -1583,8 +1624,8 @@ empty.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_person</span><span class="plain-syntax">)) </span><span class="identifier-syntax">rel</span><span class="plain-syntax"> = </span><span class="string-syntax">"carried"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">part_flag</span><span class="plain-syntax">) </span><span class="identifier-syntax">rel</span><span class="plain-syntax"> = </span><span class="string-syntax">"part"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">PROPERTY_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_worn</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PropertyInferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_worn</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rel</span><span class="plain-syntax"> = </span><span class="string-syntax">"worn"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;i&gt;%s&lt;/i&gt; "</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">);</span>
@ -1649,8 +1690,8 @@ it already turns up under its owner.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_person</span><span class="plain-syntax">)) </span><span class="identifier-syntax">rel</span><span class="plain-syntax"> = </span><span class="string-syntax">"carried by"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">part_flag</span><span class="plain-syntax">) </span><span class="identifier-syntax">rel</span><span class="plain-syntax"> = </span><span class="string-syntax">"part of"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">), </span><span class="identifier-syntax">PROPERTY_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_worn</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">), </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PropertyInferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_worn</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rel</span><span class="plain-syntax"> = </span><span class="string-syntax">"worn by"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%s "</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IXInstances::index_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>

View file

@ -3150,7 +3150,7 @@ can make use of the following:
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_door</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W is a door.\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_other_side</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">X</span><span class="plain-syntax">) {</span>

View file

@ -345,13 +345,13 @@ way which isn't symmetrical between the two, and this way round is cleanest.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">PART_OF_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_incorporation</span><span class="plain-syntax">)?</span><span class="identifier-syntax">CERTAIN_CE:IMPOSSIBLE_CE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_containment</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">CONTAINS_THINGS_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">PARENTAGE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONTAINS_THINGS_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-sr.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4_5" class="paragraph-anchor"></a><b>&#167;4.5. </b>If something is being worn, it needs to have the I7 either/or property
@ -366,12 +366,12 @@ special to make it work, so this doesn't seem worth the trouble.)
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P_wearable</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_wearable</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PropertyInferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_wearable</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P_worn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_worn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::EitherOr::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"worn"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::EitherOr::implement_as_attribute</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_worn</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_worn</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PropertyInferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_worn</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-sr.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. Compilation. </b>We need do nothing special: these relations can be compiled from their schemas.

View file

@ -172,7 +172,8 @@ in connection with the "mapped D of" relations, it's altogether easier and
makes for more legible code if we use a special inference type of our own:
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">DIRECTION_INF</span><span class="plain-syntax"> </span><span class="constant-syntax">100</span><span class="plain-syntax"> </span><span class="comment-syntax"> where do map connections from O lead?</span>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 100; where do map connections from O lead?</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </b>One useful constant:
</p>
@ -205,6 +206,9 @@ makes for more legible code if we use a special inference type of our own:
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"DIRECTION_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</span><span class="plain-syntax">, </span><a href="3-tm.html#SP7" class="function-link"><span class="function-syntax">PL::Map::create_inference_families</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_BASE_KIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP12" class="function-link"><span class="function-syntax">PL::Map::map_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_SUBJECT_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP14" class="function-link"><span class="function-syntax">PL::Map::map_new_subject_notify</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_SET_KIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP20" class="function-link"><span class="function-syntax">PL::Map::map_set_kind_notify</span></a><span class="plain-syntax">);</span>
@ -215,6 +219,7 @@ makes for more legible code if we use a special inference type of our own:
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ESTIMATE_PROPERTY_USAGE</span><span class="plain-syntax">, </span><a href="3-tm.html#SP29" class="function-link"><span class="function-syntax">PL::Map::map_estimate_property_usage</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_LOG_INFERENCE_TYPE</span><span class="plain-syntax">, </span><a href="3-tm.html#SP9" class="function-link"><span class="function-syntax">PL::Map::map_log_inference_type</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_INFERENCES_CONTRADICT</span><span class="plain-syntax">, </span><a href="3-tm.html#SP10" class="function-link"><span class="function-syntax">PL::Map::map_inferences_contradict</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</span><span class="plain-syntax">, </span><a href="3-tm.html#SP7" class="function-link"><span class="function-syntax">PL::Map::create_inference_families</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax">, </span><a href="3-tm.html#SP36" class="function-link"><span class="function-syntax">PL::Map::map_complete_model</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_PROPERTY_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP25" class="function-link"><span class="function-syntax">PL::Map::map_new_property_notify</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_PROPERTY_VALUE_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP26" class="function-link"><span class="function-syntax">PL::Map::map_property_value_notify</span></a><span class="plain-syntax">);</span>
@ -222,6 +227,10 @@ makes for more legible code if we use a special inference type of our own:
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ADD_TO_WORLD_INDEX</span><span class="plain-syntax">, </span><a href="3-tm.html#SP38" class="function-link"><span class="function-syntax">PL::Map::map_add_to_World_index</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ANNOTATE_IN_WORLD_INDEX</span><span class="plain-syntax">, </span><a href="3-tm.html#SP38" class="function-link"><span class="function-syntax">PL::Map::map_annotate_in_World_index</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::create_inference_families</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. </b></p>
@ -247,9 +256,6 @@ makes for more legible code if we use a special inference type of our own:
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_log_inference_type</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_log_inference_type</span></span>:<br/><a href="3-tm.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">it</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DIRECTION_INF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"DIRECTION_INF"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -261,11 +267,9 @@ direction &mdash; this of course is a contradiction.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_inferences_contradict</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_inferences_contradict</span></span>:<br/><a href="3-tm.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_inference_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DIRECTION_INF:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">similarity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_inference_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) == </span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">similarity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -472,9 +476,9 @@ quite crunchy algorithms, has the fastest possible access to the layout.
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, *</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">) </span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">) </span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">);</span>
@ -482,7 +486,7 @@ quite crunchy algorithms, has the fastest possible access to the layout.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">dn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">direction_index</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">dn</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">dn</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">MAX_DIRECTIONS</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MAP_EXIT</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">dn</span><span class="plain-syntax">) = </span><span class="identifier-syntax">to</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">exits_set_at</span><span class="plain-syntax">[</span><span class="identifier-syntax">dn</span><span class="plain-syntax">] = </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">exits_set_at</span><span class="plain-syntax">[</span><span class="identifier-syntax">dn</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
@ -617,7 +621,7 @@ deduction is made:
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">P_other_side</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::draw</span><span class="plain-syntax">(</span><span class="constant-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
@ -636,7 +640,7 @@ one and Backdrops), and this is where they set it.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P_found_in</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_found_in</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::Valued::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"found_in"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_found_in</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"rival found_in interpretations"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_found_in</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">),</span>
@ -651,7 +655,7 @@ and there seems little point in writing this any better.
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Map::get_value_of_opposite_property</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></span>:<br/><a href="3-tm.html#SP35">&#167;35</a>, <a href="3-tm.html#SP36_8_4">&#167;36.8.4</a>, <a href="3-tm.html#SP37">&#167;37</a><br/>Spatial Map - <a href="3-sm2.html#SP42_1">&#167;42.1</a>, <a href="3-sm2.html#SP42_3">&#167;42.3</a>, <a href="3-sm2.html#SP44">&#167;44</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_opposite</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">val</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -896,16 +900,16 @@ checks that various mapping impossibilities do not occur.
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">to</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BadMapCell</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::get_creating_sentence</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">), </span><span class="identifier-syntax">to</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">), </span><span class="identifier-syntax">to</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"appears to be something which can be reached via a map "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"connection, but it seems to be neither a room nor a door"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and these are the only possibilities allowed by Inform."</span><span class="plain-syntax">);</span>
@ -932,33 +936,32 @@ checks that various mapping impossibilities do not occur.
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">where</span><span class="plain-syntax">[3];</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">where</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">where</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">where</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> to placate </span><span class="extract"><span class="extract-syntax">gcc</span></span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">front_side_inf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">back_side_inf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, *</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">to</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">connections_in</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">map_connection_a</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">map_direction_a</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dir</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">where</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">where</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">front_side_inf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">connections_in</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">map_connection_b</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">map_direction_b</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dir</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">where</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">where</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">back_side_inf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">connections_in</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">where</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">World::Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">where</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">connections_in</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">front_side_inf</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">back_side_inf</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_timestamp</span><span class="plain-syntax">(</span><span class="identifier-syntax">front_side_inf</span><span class="plain-syntax">) &gt;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::get_timestamp</span><span class="plain-syntax">(</span><span class="identifier-syntax">back_side_inf</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">front_side_inf</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">back_side_inf</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">map_connection_a</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">map_connection_a</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">map_connection_b</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">map_connection_b</span><span class="plain-syntax"> = </span><span class="identifier-syntax">X</span><span class="plain-syntax">;</span>
@ -1018,9 +1021,9 @@ from which there's no way back.)
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="constant-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">exit1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">map_connection_a</span><span class="plain-syntax">;</span>
@ -1063,7 +1066,7 @@ from which there's no way back.)
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">map_connection_a</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">map_connection_b</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_other_side</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::object_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BothWaysDoor</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="string-syntax">"seems to be a door whose connections have been given in both "</span>
@ -1356,7 +1359,7 @@ why we don't need to compile <span class="extract"><span class="extract-syntax">
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax"> = </span><span class="identifier-syntax">A</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Data::Objects::room_being_indexed</span><span class="plain-syntax">()) </span><span class="identifier-syntax">X</span><span class="plain-syntax"> = </span><span class="identifier-syntax">B</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">X</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_other_side</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">X</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>

View file

@ -225,7 +225,7 @@ fact, end.
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::anchor_numbered</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;The &lt;i&gt;%+W&lt;/i&gt; scene&lt;/b&gt;"</span><span class="plain-syntax">, </span><a href="3-scn.html#SP13" class="function-link"><span class="function-syntax">PL::Scenes::get_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scene_declared_at</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_EO_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_EO_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_instance</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_recurring</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&amp;nbsp;&amp;nbsp;&lt;i&gt;recurring&lt;/i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
@ -417,7 +417,7 @@ on the initial call when <span class="extract"><span class="extract-syntax">dept
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_instance</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_recurring</span><span class="plain-syntax">) &gt; </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_recurring</span><span class="plain-syntax">) &gt; </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="3-tm2.html#SP3" class="function-link"><span class="function-syntax">PL::Scenes::Index::scene_icon_append</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Recurring"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-tm2.html#SP2">&#167;2</a>.</li></ul>

View file

@ -205,9 +205,9 @@ a room called the Counting House").
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Naming::transfer_details</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wto</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wto</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_proper_named</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_proper_named</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="3-tnt.html#SP6" class="function-link"><span class="function-syntax">PL::Naming::now_has_proper_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">art</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_prop_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_article</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">art</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_article</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">art</span><span class="plain-syntax">) </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_article</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">art</span><span class="plain-syntax">, </span><span class="identifier-syntax">LIKELY_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
@ -224,7 +224,7 @@ we do here is provide its state on request.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Naming::object_is_privately_named</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">PL::Naming::object_is_privately_named</span></span>:<br/>Grammar Properties - <a href="5-gp.html#SP10_1">&#167;10.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_privately_named</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_privately_named</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">;</span>
@ -236,7 +236,7 @@ to fill in the naming details for objects, so here goes.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Naming::naming_complete_model</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">PL::Naming::naming_complete_model</span></span>:<br/><a href="3-tnt.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="constant-syntax">3</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-tnt.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Add naming properties implicit from context</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_III</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-tnt.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Add naming properties implicit from context</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -369,7 +369,7 @@ actually means it's rarely needed.)
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">this_is_named_for_something_with_a_printed_name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tnt.html#SP10_1_2_2_2" class="named-paragraph-link"><span class="named-paragraph">Compose the I6 cap-short-name as a routine dynamically using its owner's cap-short-name</span><span class="named-paragraph-number">10.1.2.2.2</span></a></span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">World::Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_proper_named</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_proper_named</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">begins_with_lower_case</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tnt.html#SP10_1_2_2_1" class="named-paragraph-link"><span class="named-paragraph">Compose the I6 cap-short-name as a piece of text</span><span class="named-paragraph-number">10.1.2.2.1</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">set_csn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -456,7 +456,7 @@ together in lists.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::Behaviour::is_object_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_prop_state_without_inheritance</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_prop_state_without_inheritance</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_printed_plural_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PROP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
@ -474,7 +474,7 @@ together in lists.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_prop_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_grammatical_gender</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_grammatical_gender</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">constant_enumeration_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">g</span><span class="plain-syntax">) {</span>
@ -506,9 +506,9 @@ after Y or vice versa.)
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">check</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">check</span><span class="plain-syntax"> = </span><span class="identifier-syntax">subj</span><span class="plain-syntax">; </span><span class="identifier-syntax">check</span><span class="plain-syntax">; </span><span class="identifier-syntax">check</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::narrowest_broader_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">check</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">check</span><span class="plain-syntax">, </span><span class="identifier-syntax">PROPERTY_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::added_in_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Inferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_printed_name</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">check</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::during_stage</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PropertyInferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_printed_name</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -658,7 +658,7 @@ this because we need access to it very quickly when parsing text substitutions.)
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adaptive_person</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adaptive_person</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adaptive_person</span><span class="plain-syntax"> == -1) &amp;&amp; (</span><span class="identifier-syntax">P_adaptive_text_viewpoint</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">nl_instance</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">World::Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_adaptive_text_viewpoint</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>

View file

@ -372,12 +372,12 @@ we assume he is freestanding in the earliest defined room.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Player::player_complete_model</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">PL::Player::player_complete_model</span></span>:<br/><a href="3-tp.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="constant-syntax">3</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">I_yourself</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_III</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">I_yourself</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_saved_short_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::Valued::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"saved_short_name"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_saved_short_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I_yourself</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::from_unescaped_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"yourself"</span><span class="plain-syntax">)), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="constant-syntax">4</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_IV</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tp.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">Set the start room to the earliest room defined in the source text</span><span class="named-paragraph-number">11.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tp.html#SP11_2" class="named-paragraph-link"><span class="named-paragraph">If the start room is still null, there's no room, so issue a problem</span><span class="named-paragraph-number">11.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tp.html#SP11_3" class="named-paragraph-link"><span class="named-paragraph">Otherwise see if the player has explicitly been placed in the model world</span><span class="named-paragraph-number">11.3</span></a></span><span class="plain-syntax">;</span>
@ -441,7 +441,7 @@ will do. But otherwise:
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">player_character_object</span><span class="plain-syntax">), </span><span class="constant-syntax">PART_OF_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">player_character_object</span><span class="plain-syntax">), </span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::object_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_PlayerIsPart</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">start_object</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"seems to have the player attached as a component part"</span><span class="plain-syntax">,</span>

View file

@ -217,7 +217,7 @@ for parsing:
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Parsing::Visibility::parsing_complete_model</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">PL::Parsing::Visibility::parsing_complete_model</span></span>:<br/><a href="5-gp.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="constant-syntax">5</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_V</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::Valued::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"name"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><a href="5-gp.html#SP10" class="function-link"><span class="function-syntax">PL::Parsing::Visibility::name_name</span></a><span class="plain-syntax">());</span>

View file

@ -423,8 +423,8 @@ table of Kinds.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><span class="identifier-syntax">World::Inferences::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inferences::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ipw.html#SP4" class="function-link"><span class="function-syntax">Data::Objects::index_instances</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">);</span>
@ -462,7 +462,7 @@ table of Kinds.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::index_specific</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::index_specific</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ipw.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b></p>

View file

@ -372,7 +372,7 @@ is made, so that the following sentence can't have an empty list in it.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_12" class="paragraph-anchor"></a><b>&#167;1.12. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Explain about covariance and contravariance</span><span class="named-paragraph-number">1.12</span></span><span class="comment-syntax"> =</span>

View file

@ -358,19 +358,19 @@ interpret no indication of a kind as meaning "object".
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">lookahead</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">arity</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">lookahead</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">variable</span><span class="plain-syntax"> == </span><span class="identifier-syntax">v</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">lookahead</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PREDICATE_ATOM</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">lookahead</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">calling_up_family</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">calling_up_family</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">calling_name</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">kind_up_family</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">kind_up_family</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">assert_kind</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">is_a_kind_up_family</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">is_a_kind_up_family</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">is_a_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">assert_kind</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">is_a_var_up_family</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">is_a_var_up_family</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">is_a_var</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">is_a_const_up_family</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">is_a_const_up_family</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">is_a_const</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>

View file

@ -76,11 +76,11 @@ which use this module:
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">Rules::Bookings::log</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *, </span><a href="5-inf.html#SP20" class="function-link"><span class="function-syntax">World::Inferences::log</span></a><span class="plain-syntax">)</span>
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *, </span><a href="5-inf.html#SP24" class="function-link"><span class="function-syntax">Inferences::log</span></a><span class="plain-syntax">)</span>
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *, </span><a href="4-is.html#SP16" class="function-link"><span class="function-syntax">InferenceSubjects::log</span></a><span class="plain-syntax">)</span>
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *, </span><a href="3-prp.html#SP14" class="function-link"><span class="function-syntax">Properties::log</span></a><span class="plain-syntax">)</span>
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">Rulebooks::log</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">COMPILE_WRITER_I</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax">, </span><a href="5-inf.html#SP20" class="function-link"><span class="function-syntax">World::Inferences::log_kind</span></a><span class="plain-syntax">)</span>
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *, </span><a href="5-inf.html#SP24" class="function-link"><span class="function-syntax">Inferences::log_kind</span></a><span class="plain-syntax">)</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b></p>
@ -98,6 +98,9 @@ which use this module:
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">KnowledgeModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="5-ri.html#SP2" class="function-link"><span class="function-syntax">RelationInferences::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-iaa.html#SP1" class="function-link"><span class="function-syntax">InstanceAdjectives::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="3-ep.html#SP12" class="function-link"><span class="function-syntax">Properties::EitherOr::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="3-ma.html#SP10" class="function-link"><span class="function-syntax">Properties::Measurement::start</span></a><span class="plain-syntax">();</span>
@ -106,10 +109,10 @@ which use this module:
<span class="plain-syntax"> </span><a href="3-cr.html#SP1" class="function-link"><span class="function-syntax">Properties::ComparativeRelations::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="3-tpr.html#SP2" class="function-link"><span class="function-syntax">Properties::ProvisionRelation::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'b'</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rules::Bookings::log</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'I'</span><span class="plain-syntax">, </span><a href="5-inf.html#SP20" class="function-link"><span class="function-syntax">World::Inferences::log</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'I'</span><span class="plain-syntax">, </span><a href="5-inf.html#SP24" class="function-link"><span class="function-syntax">Inferences::log</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'j'</span><span class="plain-syntax">, </span><a href="4-is.html#SP16" class="function-link"><span class="function-syntax">InferenceSubjects::log</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'K'</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rulebooks::log</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER_I</span><span class="plain-syntax">(</span><span class="character-syntax">'n'</span><span class="plain-syntax">, </span><a href="5-inf.html#SP20" class="function-link"><span class="function-syntax">World::Inferences::log_kind</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'n'</span><span class="plain-syntax">, </span><a href="5-inf.html#SP24" class="function-link"><span class="function-syntax">Inferences::log_kind</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</span><span class="plain-syntax">, </span><a href="3-prp.html#SP14" class="function-link"><span class="function-syntax">Properties::log</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Log::declare_aspect</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTIVITY_CREATIONS_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"activity creations"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Log::declare_aspect</span><span class="plain-syntax">(</span><span class="constant-syntax">INFERENCES_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"inferences"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>

View file

@ -105,7 +105,7 @@ age property, but we don't go there in Inform.
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InstanceAdjectives::is_enumerative</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">am</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">enumerative_amf</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">am</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">enumerative_amf</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -187,7 +187,7 @@ to infer from, e.g., "the ball is not green": is it red, or blue?
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">family_specific_data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="3-cp.html#SP5" class="function-link"><span class="function-syntax">Properties::Conditions::get_coinciding_property</span></a><span class="plain-syntax">(</span><a href="2-ins.html#SP10" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"enumerative adjective on non-property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">World::Inferences::draw_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rvalues::from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rvalues::from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -204,7 +204,7 @@ the same object may be thing number 17 but vehicle number 3 &mdash; and secondly
because we won't know the exact kind of objects until much later on; for now
the only thing we are sure of is that they are indeed objects. Enumeration
for objects within kinds is certainly useful, but it's harder to do and will
be done later on: see <a href="5-ic.html" class="internal">Instance Counting</a>.
be done later on: see <a href="../runtime-module/4-ic.html" class="internal">Instance Counting (in runtime)</a>.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add the new instance to its enumeration</span><span class="named-paragraph-number">4.3</span></span><span class="comment-syntax"> =</span>
@ -245,7 +245,7 @@ be done later on: see <a href="5-ic.html" class="internal">Instance Counting</a>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Subject and source references. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::as_subject</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Instances::as_subject</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP6_5_2">&#167;6.5.2</a>, <a href="1-ap.html#SP9">&#167;9</a><br/>Properties - <a href="3-prp.html#SP26">&#167;26</a><br/>Properties of Values - <a href="3-pov.html#SP4">&#167;4</a><br/>Inference Subjects - <a href="4-is.html#SP8">&#167;8</a>, <a href="4-is.html#SP13">&#167;13</a>, <a href="4-is.html#SP28">&#167;28</a><br/>Inferences - <a href="5-inf.html#SP17">&#167;17</a><br/>Instance Counting - <a href="5-ic.html#SP7">&#167;7</a>, <a href="5-ic.html#SP11_1">&#167;11.1</a>, <a href="5-ic.html#SP11_3_1">&#167;11.3.1</a>, <a href="5-ic.html#SP11_3_2">&#167;11.3.2</a>, <a href="5-ic.html#SP11_3_3">&#167;11.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::as_subject</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Instances::as_subject</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP6_5_2">&#167;6.5.2</a>, <a href="1-ap.html#SP9">&#167;9</a><br/>Properties - <a href="3-prp.html#SP26">&#167;26</a><br/>Properties of Values - <a href="3-pov.html#SP4">&#167;4</a><br/>Inference Subjects - <a href="4-is.html#SP8">&#167;8</a>, <a href="4-is.html#SP13">&#167;13</a>, <a href="4-is.html#SP28">&#167;28</a><br/>Inferences - <a href="5-inf.html#SP21">&#167;21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_subject</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -341,13 +341,13 @@ specialised than which other ones, and by making a call, we can find out.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::to_kind</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Instances::to_kind</span></span>:<br/><a href="2-ins.html#SP11">&#167;11</a>, <a href="2-ins.html#SP15">&#167;15</a>, <a href="2-ins.html#SP16_1">&#167;16.1</a>, <a href="2-ins.html#SP16_2">&#167;16.2</a><br/>Instances as Adjectives - <a href="2-iaa.html#SP2_1">&#167;2.1</a>, <a href="2-iaa.html#SP3">&#167;3</a><br/>Condition Properties - <a href="3-cp.html#SP3">&#167;3</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1">&#167;1.1</a>, <a href="3-epv.html#SP1_1_1">&#167;1.1.1</a><br/>Instance Subjects - <a href="4-is2.html#SP1">&#167;1</a><br/>Instance Counting - <a href="5-ic.html#SP11_3">&#167;11.3</a>, <a href="5-ic.html#SP11_3_1">&#167;11.3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::to_kind</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Instances::to_kind</span></span>:<br/><a href="2-ins.html#SP11">&#167;11</a>, <a href="2-ins.html#SP15">&#167;15</a>, <a href="2-ins.html#SP16_1">&#167;16.1</a>, <a href="2-ins.html#SP16_2">&#167;16.2</a><br/>Instances as Adjectives - <a href="2-iaa.html#SP2_1">&#167;2.1</a>, <a href="2-iaa.html#SP3">&#167;3</a><br/>Condition Properties - <a href="3-cp.html#SP3">&#167;3</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1">&#167;1.1</a>, <a href="3-epv.html#SP1_1_1">&#167;1.1.1</a><br/>Instance Subjects - <a href="4-is2.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inherits_from</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_subject</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inherits_from</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Instances::of_kind</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Instances::of_kind</span></span>:<br/><a href="2-ins.html#SP13">&#167;13</a><br/>Instance Counting - <a href="5-ic.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">match</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Instances::of_kind</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Instances::of_kind</span></span>:<br/><a href="2-ins.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">match</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">match</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::conforms_to</span><span class="plain-syntax">(</span><a href="2-ins.html#SP10" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">match</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -135,7 +135,7 @@ closer to global variables than to literals such as <span class="extract"><span
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure nonlocal_variable is accessed in 2/ins, 3/prp, 3/ep, 3/vp, 3/spr, 4/vs, 5/inf, 5/cmw and here.</li></ul>
<ul class="endnotetexts"><li>The structure nonlocal_variable is accessed in 2/ins, 3/prp, 3/ep, 3/vp, 3/spr, 4/vs, 5/inf, 5/pi, 5/tmw and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>We can create a new variable provided we give its name, kind and scope.
When the scope isn't global, the variable is said to be "stacked", which is a
reference to how it's stored at run-time.
@ -320,10 +320,10 @@ data variable (such as "story title") to be treated as text.
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="2-nv.html#SP8" class="function-link"><span class="function-syntax">NonlocalVariables::to_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTY_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_variable_initial_value</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_variable_initial_value</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::set_property_value_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::set_value_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -106,7 +106,7 @@ possible values these are.)
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">common_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">mixed_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">some_new</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CKW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">NKW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">option</span><span class="plain-syntax"> = </span><span class="identifier-syntax">set</span><span class="plain-syntax">; </span><span class="identifier-syntax">option</span><span class="plain-syntax">; </span><span class="identifier-syntax">option</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">option</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">option</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">option</span><span class="plain-syntax"> = </span><span class="identifier-syntax">set</span><span class="plain-syntax">; </span><span class="identifier-syntax">option</span><span class="plain-syntax">; </span><span class="identifier-syntax">option</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">option</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">option</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">option</span><span class="plain-syntax">) == </span><span class="identifier-syntax">AND_NT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">option</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>

View file

@ -219,7 +219,7 @@ around), but not to break one.
<span class="plain-syntax"> </span><a href="3-ep.html#SP7" class="function-link"><span class="function-syntax">Properties::EitherOr::make_stored_in_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">neg</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::EitherOr::get_negation</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::get_negation</span></span>:<br/><a href="3-ep.html#SP13_1">&#167;13.1</a>, <a href="3-ep.html#SP13_2">&#167;13.2</a>, <a href="3-ep.html#SP15">&#167;15</a><br/>Properties - <a href="3-prp.html#SP14">&#167;14</a>, <a href="3-prp.html#SP20">&#167;20</a>, <a href="3-prp.html#SP21_2">&#167;21.2</a>, <a href="3-prp.html#SP22">&#167;22</a>, <a href="3-prp.html#SP25">&#167;25</a>, <a href="3-prp.html#SP26">&#167;26</a><br/>Emit Property Values - <a href="3-epv.html#SP2">&#167;2</a>, <a href="3-epv.html#SP2_1">&#167;2.1</a>, <a href="3-epv.html#SP4">&#167;4</a><br/>Inferences - <a href="5-inf.html#SP12">&#167;12</a>, <a href="5-inf.html#SP14">&#167;14</a>, <a href="5-inf.html#SP15">&#167;15</a>, <a href="5-inf.html#SP17">&#167;17</a><br/>Property Permissions - <a href="5-pp.html#SP2">&#167;2</a><br/>Complete Model World - <a href="5-cmw.html#SP1_2_2">&#167;1.2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::EitherOr::get_negation</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::get_negation</span></span>:<br/><a href="3-ep.html#SP13_1">&#167;13.1</a>, <a href="3-ep.html#SP13_2">&#167;13.2</a>, <a href="3-ep.html#SP15">&#167;15</a><br/>Properties - <a href="3-prp.html#SP14">&#167;14</a>, <a href="3-prp.html#SP20">&#167;20</a>, <a href="3-prp.html#SP21_2">&#167;21.2</a>, <a href="3-prp.html#SP22">&#167;22</a>, <a href="3-prp.html#SP25">&#167;25</a>, <a href="3-prp.html#SP26">&#167;26</a><br/>Emit Property Values - <a href="3-epv.html#SP2">&#167;2</a>, <a href="3-epv.html#SP2_1">&#167;2.1</a>, <a href="3-epv.html#SP4">&#167;4</a><br/>Inferences - <a href="5-inf.html#SP16">&#167;16</a>, <a href="5-inf.html#SP18">&#167;18</a>, <a href="5-inf.html#SP19">&#167;19</a><br/>Property Inferences - <a href="5-pi.html#SP2">&#167;2</a><br/>Property Permissions - <a href="5-pp.html#SP2">&#167;2</a><br/>The Model World - <a href="5-tmw.html#SP4_2">&#167;4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-EO property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">negation</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -227,7 +227,7 @@ around), but not to break one.
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::stored_in_negation</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::stored_in_negation</span></span>:<br/><a href="3-ep.html#SP13_1">&#167;13.1</a>, <a href="3-ep.html#SP13_2">&#167;13.2</a><br/>Emit Property Values - <a href="3-epv.html#SP2">&#167;2</a>, <a href="3-epv.html#SP2_1">&#167;2.1</a>, <a href="3-epv.html#SP3">&#167;3</a>, <a href="3-epv.html#SP4">&#167;4</a><br/>Inferences - <a href="5-inf.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::stored_in_negation</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::stored_in_negation</span></span>:<br/><a href="3-ep.html#SP13_1">&#167;13.1</a>, <a href="3-ep.html#SP13_2">&#167;13.2</a><br/>Emit Property Values - <a href="3-epv.html#SP2">&#167;2</a>, <a href="3-epv.html#SP2_1">&#167;2.1</a>, <a href="3-epv.html#SP3">&#167;3</a>, <a href="3-epv.html#SP4">&#167;4</a><br/>Inferences - <a href="5-inf.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-EO property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">stored_in_negation</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -338,7 +338,7 @@ adjectival meaning:
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::is_either_or_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">am</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">either_or_property_amf</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">am</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">either_or_property_amf</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -458,8 +458,8 @@ property.
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::assert_adj</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::assert_adj</span></span>:<br/><a href="3-ep.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">family_specific_data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">World::Inferences::draw_negated_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">World::Inferences::draw_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::draw_negated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -98,17 +98,6 @@ manage that here.
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">DECLARATION_ORDER_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">cs_sequence_counter</span><span class="plain-syntax">++);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-epv.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Compile the actual object</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="5-cmw2.html#SP1" class="function-link"><span class="function-syntax">World::Compile::set_rough_memory_usage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">words_used</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nw</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">subj</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K2</span><span class="plain-syntax"> = </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K2</span><span class="plain-syntax">) </span><span class="identifier-syntax">nw</span><span class="plain-syntax"> += </span><a href="5-cmw2.html#SP1" class="function-link"><span class="function-syntax">World::Compile::get_rough_memory_usage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">nw</span><span class="plain-syntax"> += </span><span class="constant-syntax">16</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">OBJECT_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Rough size estimate: %d words\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">nw</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">OBJECT_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compilation of $j complete\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -172,9 +161,9 @@ the class hierarchy at I6 level exactly match the kind hierarchy at I7 level.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTY_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">OBJECT_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling property $Y\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">words_used</span><span class="plain-syntax"> += </span><a href="3-epv.html#SP2" class="function-link"><span class="function-syntax">Properties::Emit::emit_propertyvalue</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>

View file

@ -93,8 +93,8 @@ So as an interim measure the text is inferred into a pseudo-property called
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Appearance::infer</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTY_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_indefinite_appearance_text</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_indefinite_appearance_text</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ia.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for a second appearance</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">;</span>
@ -113,7 +113,7 @@ ambiguously.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_TwoAppearances</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">), </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">), </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"seems to have two different descriptions"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"perhaps because you intended the second description to apply to something "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"mentioned in between, but declared it in such a way that it was never the "</span>
@ -136,12 +136,12 @@ available;
</li><li>(c) But otherwise give up and issue a problem message.
</li></ul>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Appearance::reallocate</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Properties::Appearance::reallocate</span></span>:<br/>Complete Model World - <a href="5-cmw.html#SP1_1">&#167;1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Appearance::reallocate</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Properties::Appearance::reallocate</span></span>:<br/>The Model World - <a href="5-tmw.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTY_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_indefinite_appearance_text</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">txt</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_indefinite_appearance_text</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">txt</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Plugins::Call::default_appearance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">txt</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">P_description</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="5-pp.html#SP2" class="function-link"><span class="function-syntax">World::Permissions::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_description</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">))) {</span>

View file

@ -564,7 +564,7 @@ can't normally be unravelled at compile time.
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;s-literal&gt;(mdef-&gt;</span><span class="element-syntax">region_threshold_text</span><span class="plain-syntax">)) </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"literal unreadable"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">World::Inferences::draw_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>

View file

@ -143,7 +143,7 @@ a value with the owner; it isn't that either/or properties are unloved.)
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">property</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure property is accessed in 2/nv, 3/ep, 3/vp, 3/cp, 3/spr, 4/vs, 5/inf, 5/cmw and here.</li></ul>
<ul class="endnotetexts"><li>The structure property is accessed in 2/nv, 3/ep, 3/vp, 3/cp, 3/spr, 4/vs, 5/inf, 5/pi, 5/tmw and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>The only four properties which have special significance to core Inform
(though plugins are interested in many others):
</p>
@ -538,10 +538,10 @@ of the other:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_either_or</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Properties::is_either_or</span></span>:<br/><a href="3-prp.html#SP20">&#167;20</a>, <a href="3-prp.html#SP22">&#167;22</a>, <a href="3-prp.html#SP24">&#167;24</a>, <a href="3-prp.html#SP25">&#167;25</a>, <a href="3-prp.html#SP26">&#167;26</a><br/>Instances - <a href="2-ins.html#SP8">&#167;8</a><br/>Properties of Values - <a href="3-pov.html#SP4_1">&#167;4.1</a><br/>Emit Property Values - <a href="3-epv.html#SP2">&#167;2</a>, <a href="3-epv.html#SP2_1">&#167;2.1</a>, <a href="3-epv.html#SP3">&#167;3</a><br/>Inferences - <a href="5-inf.html#SP12">&#167;12</a>, <a href="5-inf.html#SP14">&#167;14</a>, <a href="5-inf.html#SP15">&#167;15</a>, <a href="5-inf.html#SP17">&#167;17</a><br/>Property Permissions - <a href="5-pp.html#SP2">&#167;2</a><br/>Complete Model World - <a href="5-cmw.html#SP1_2_2">&#167;1.2.2</a>, <a href="5-cmw.html#SP1_2_2_1_1">&#167;1.2.2.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_either_or</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Properties::is_either_or</span></span>:<br/><a href="3-prp.html#SP20">&#167;20</a>, <a href="3-prp.html#SP22">&#167;22</a>, <a href="3-prp.html#SP24">&#167;24</a>, <a href="3-prp.html#SP25">&#167;25</a>, <a href="3-prp.html#SP26">&#167;26</a><br/>Instances - <a href="2-ins.html#SP8">&#167;8</a><br/>Properties of Values - <a href="3-pov.html#SP4_1">&#167;4.1</a><br/>Emit Property Values - <a href="3-epv.html#SP2">&#167;2</a>, <a href="3-epv.html#SP2_1">&#167;2.1</a>, <a href="3-epv.html#SP3">&#167;3</a><br/>Inferences - <a href="5-inf.html#SP16">&#167;16</a>, <a href="5-inf.html#SP18">&#167;18</a>, <a href="5-inf.html#SP19">&#167;19</a><br/>Property Inferences - <a href="5-pi.html#SP2">&#167;2</a><br/>Property Permissions - <a href="5-pp.html#SP2">&#167;2</a><br/>The Model World - <a href="5-tmw.html#SP4_2">&#167;4.2</a>, <a href="5-tmw.html#SP4_2_1_1">&#167;4.2.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_value_property</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Properties::is_value_property</span></span>:<br/>The Provision Relation - <a href="3-tpr.html#SP6_1">&#167;6.1</a><br/>Same Property Relation - <a href="3-spr.html#SP2">&#167;2</a><br/>Inferences - <a href="5-inf.html#SP18_3_3">&#167;18.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_value_property</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Properties::is_value_property</span></span>:<br/>The Provision Relation - <a href="3-tpr.html#SP6_1">&#167;6.1</a><br/>Same Property Relation - <a href="3-spr.html#SP2">&#167;2</a><br/>Property Inferences - <a href="5-pi.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -563,7 +563,7 @@ sake:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_shown_in_index</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Properties::is_shown_in_index</span></span>:<br/>Inferences - <a href="5-inf.html#SP14">&#167;14</a>, <a href="5-inf.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_shown_in_index</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Properties::is_shown_in_index</span></span>:<br/>Inferences - <a href="5-inf.html#SP18">&#167;18</a>, <a href="5-inf.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">include_in_index</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::exclude_from_index</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Properties::exclude_from_index</span></span>:<br/><a href="3-prp.html#SP4">&#167;4</a><br/>Either-Or Properties - <a href="3-ep.html#SP4">&#167;4</a><br/>Valued Properties - <a href="3-vp.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
@ -574,10 +574,10 @@ sake:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::set_indexed_already_flag</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Properties::set_indexed_already_flag</span></span>:<br/>Inferences - <a href="5-inf.html#SP13">&#167;13</a>, <a href="5-inf.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">state</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::set_indexed_already_flag</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Properties::set_indexed_already_flag</span></span>:<br/>Inferences - <a href="5-inf.html#SP17">&#167;17</a>, <a href="5-inf.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">state</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">indexed_already</span><span class="plain-syntax"> = </span><span class="identifier-syntax">state</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::get_indexed_already_flag</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Properties::get_indexed_already_flag</span></span>:<br/>Inferences - <a href="5-inf.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::get_indexed_already_flag</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Properties::get_indexed_already_flag</span></span>:<br/>Inferences - <a href="5-inf.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">indexed_already</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -781,11 +781,11 @@ we find it, we compile it and return <span class="extract"><span class="extract-
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::compile_property_value_inner</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Properties::compile_property_value_inner</span></span>:<br/><a href="3-prp.html#SP24">&#167;24</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTY_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_inference_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="constant-syntax">PROPERTY_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax"> = (</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)?</span><span class="identifier-syntax">TRUE:FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_inference_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax"> = (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)?</span><span class="identifier-syntax">TRUE:FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax"> == </span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-ep.html#SP11" class="function-link"><span class="function-syntax">Properties::EitherOr::compile_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">sense</span><span class="plain-syntax">);</span>
@ -798,7 +798,7 @@ we find it, we compile it and return <span class="extract"><span class="extract-
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax"> == </span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sense</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">val</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"malformed property inference"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-vp.html#SP11" class="function-link"><span class="function-syntax">Properties::Valued::compile_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
@ -815,7 +815,7 @@ we find it, we compile it and return <span class="extract"><span class="extract-
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>&#167;26. Emitting to Inter. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::iname</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Properties::iname</span></span>:<br/><a href="3-prp.html#SP20">&#167;20</a>, <a href="3-prp.html#SP21_1">&#167;21.1</a><br/>Instances as Adjectives - <a href="2-iaa.html#SP2_3">&#167;2.3</a><br/>Either-Or Properties - <a href="3-ep.html#SP13_1">&#167;13.1</a>, <a href="3-ep.html#SP13_2">&#167;13.2</a><br/>Comparative Relations - <a href="3-cr.html#SP5_1">&#167;5.1</a><br/>Measurement Adjectives - <a href="3-ma.html#SP14_1">&#167;14.1</a><br/>Same Property Relation - <a href="3-spr.html#SP2">&#167;2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">&#167;8</a>, <a href="3-spr2.html#SP11">&#167;11</a><br/>Emit Property Values - <a href="3-epv.html#SP4">&#167;4</a><br/>Instance Counting - <a href="5-ic.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::iname</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Properties::iname</span></span>:<br/><a href="3-prp.html#SP20">&#167;20</a>, <a href="3-prp.html#SP21_1">&#167;21.1</a><br/>Instances as Adjectives - <a href="2-iaa.html#SP2_3">&#167;2.3</a><br/>Either-Or Properties - <a href="3-ep.html#SP13_1">&#167;13.1</a>, <a href="3-ep.html#SP13_2">&#167;13.2</a><br/>Comparative Relations - <a href="3-cr.html#SP5_1">&#167;5.1</a><br/>Measurement Adjectives - <a href="3-ma.html#SP14_1">&#167;14.1</a><br/>Same Property Relation - <a href="3-spr.html#SP2">&#167;2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">&#167;8</a>, <a href="3-spr2.html#SP11">&#167;11</a><br/>Emit Property Values - <a href="3-epv.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find iname for null property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">stored_in_negation</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>

View file

@ -102,24 +102,24 @@ sentence will be properly parsed later on.
<span class="plain-syntax"> </span><span class="identifier-syntax">pn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) == </span><span class="identifier-syntax">VERB_NT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">Node::get_special_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">Diagrams::is_possessive_RELATIONSHIP</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CALLED_NT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apparent_subject</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">Diagrams::is_possessive_RELATIONSHIP</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CALLED_NT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apparent_subject</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">SW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">apparent_subject</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">apparent_subject</span><span class="plain-syntax">) == </span><span class="identifier-syntax">WITH_NT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apparent_subject</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">apparent_subject</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apparent_subject</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apparent_subject</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">s1</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">s1</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">SW</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;prohibited-property-owners&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">SW</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;has-properties-called-sentence-object&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>

View file

@ -363,7 +363,7 @@ be caught later on Inform's run.
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property_setting_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PSD</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RETRIEVE_POINTER_property_setting_bp_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">family_specific</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">World::Inferences::draw_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="identifier-syntax">PSD</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">set_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="identifier-syntax">PSD</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">set_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -135,7 +135,7 @@ to the end user.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::new_nameless</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::new_nameless</span></span>:<br/>Instance Counting - <a href="5-ic.html#SP11_1">&#167;11.1</a>, <a href="5-ic.html#SP11_2">&#167;11.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I6_form</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I6_form</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I6_form</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"new nameless property without kind"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::synoptic_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTIES_HAP</span><span class="plain-syntax">);</span>
@ -152,7 +152,7 @@ to the end user.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::new_nameless_using</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::new_nameless_using</span></span>:<br/>Instance Counting - <a href="5-ic.html#SP11_2">&#167;11.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">using</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::new_nameless_using</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">using</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"new nameless property without kind"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="3-prp.html#SP4" class="function-link"><span class="function-syntax">Properties::create</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">using</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-prp.html#SP17" class="function-link"><span class="function-syntax">Properties::exclude_from_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
@ -168,7 +168,7 @@ to the end user.
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Initialising details. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::initialise</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::initialise</span></span>:<br/>Properties - <a href="3-prp.html#SP4_3">&#167;4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::initialise</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::initialise</span></span>:<br/>Properties - <a href="3-prp.html#SP4_3">&#167;4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">property_value_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">setting_bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">used_for_non_typesafe_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -176,7 +176,7 @@ to the end user.
<span class="plain-syntax"> </span><a href="3-cp.html#SP2" class="function-link"><span class="function-syntax">Properties::Conditions::initialise</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::make_setting_relation</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::make_setting_relation</span></span>:<br/>Properties - <a href="3-prp.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::make_setting_relation</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::make_setting_relation</span></span>:<br/>Properties - <a href="3-prp.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="3-spr2.html#SP4" class="function-link"><span class="function-syntax">Properties::SettingRelations::find_set_property_BP</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="3-spr2.html#SP3" class="function-link"><span class="function-syntax">Properties::SettingRelations::make_set_property_BP</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-spr2.html#SP5" class="function-link"><span class="function-syntax">Properties::SettingRelations::fix_property_bp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
@ -188,12 +188,12 @@ to the end user.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::kind</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::kind</span></span>:<br/><a href="3-vp.html#SP11">&#167;11</a><br/>Instances - <a href="2-ins.html#SP8">&#167;8</a><br/>Properties - <a href="3-prp.html#SP14">&#167;14</a><br/>Measurement Adjectives - <a href="3-ma.html#SP7_2">&#167;7.2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">&#167;8</a>, <a href="3-spr2.html#SP9">&#167;9</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1_4">&#167;1.1.4</a><br/>Inferences - <a href="5-inf.html#SP12">&#167;12</a>, <a href="5-inf.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::kind</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::kind</span></span>:<br/><a href="3-vp.html#SP11">&#167;11</a><br/>Instances - <a href="2-ins.html#SP8">&#167;8</a><br/>Properties - <a href="3-prp.html#SP14">&#167;14</a><br/>Measurement Adjectives - <a href="3-ma.html#SP7_2">&#167;7.2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">&#167;8</a>, <a href="3-spr2.html#SP9">&#167;9</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1_4">&#167;1.1.4</a><br/>Inferences - <a href="5-inf.html#SP16">&#167;16</a>, <a href="5-inf.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> for better type-checking Problems</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">property_value_kind</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::set_kind</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::set_kind</span></span>:<br/><a href="3-vp.html#SP6">&#167;6</a><br/>Properties - <a href="3-prp.html#SP4_6">&#167;4.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::set_kind</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::set_kind</span></span>:<br/><a href="3-vp.html#SP6">&#167;6</a><br/>Properties - <a href="3-prp.html#SP4_6">&#167;4.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to set null kind"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-value property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::Behaviour::definite</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">do_not_compile</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
@ -230,7 +230,7 @@ then say that a thing has a weight: that makes a property also called
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::make_coincide_with_kind</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::make_coincide_with_kind</span></span>:<br/>Properties - <a href="3-prp.html#SP4_4">&#167;4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::make_coincide_with_kind</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::make_coincide_with_kind</span></span>:<br/>Properties - <a href="3-prp.html#SP4_4">&#167;4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-vp.html#SP5" class="function-link"><span class="function-syntax">Properties::Valued::set_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_grammatical_gender</span><span class="plain-syntax">)) </span><span class="identifier-syntax">P_grammatical_gender</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">also_a_type</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
@ -261,7 +261,7 @@ then say that a thing has a weight: that makes a property also called
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">stored_bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::get_stored_relation</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::get_stored_relation</span></span>:<br/>Inferences - <a href="5-inf.html#SP18_3_3">&#167;18.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::get_stored_relation</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::get_stored_relation</span></span>:<br/>Property Inferences - <a href="5-pi.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-value property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">stored_bp</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -280,7 +280,7 @@ all to work; the following keep a flag to mark that.
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">used_for_non_typesafe_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::is_used_for_non_typesafe_relation</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::is_used_for_non_typesafe_relation</span></span>:<br/><a href="3-vp.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::is_used_for_non_typesafe_relation</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::is_used_for_non_typesafe_relation</span></span>:<br/><a href="3-vp.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-value property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">used_for_non_typesafe_relation</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -288,7 +288,7 @@ all to work; the following keep a flag to mark that.
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. Assertion. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::assert</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::assert</span></span>:<br/>Indefinite Appearance - <a href="3-ia.html#SP1">&#167;1</a>, <a href="3-ia.html#SP2">&#167;2</a><br/>Instance Counting - <a href="5-ic.html#SP11_1">&#167;11.1</a>, <a href="5-ic.html#SP11_3_1">&#167;11.3.1</a>, <a href="5-ic.html#SP11_3_2">&#167;11.3.2</a>, <a href="5-ic.html#SP11_3_3">&#167;11.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::assert</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::assert</span></span>:<br/>Indefinite Appearance - <a href="3-ia.html#SP1">&#167;1</a>, <a href="3-ia.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certainty</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::Abstract::to_set_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="1-ap.html#SP2" class="function-link"><span class="function-syntax">Assert::true_about</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">certainty</span><span class="plain-syntax">);</span>
@ -301,7 +301,7 @@ storage methods at run-time if we wanted.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::compile_value</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::compile_value</span></span>:<br/>Properties - <a href="3-prp.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::compile_value</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::compile_value</span></span>:<br/>Properties - <a href="3-prp.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><a href="3-vp.html#SP5" class="function-link"><span class="function-syntax">Properties::Valued::kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) </span><span class="identifier-syntax">Specifications::Compiler::compile_constant_to_kind_vh</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
@ -312,7 +312,7 @@ storage methods at run-time if we wanted.)
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::compile_default_value</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::compile_default_value</span></span>:<br/>Properties - <a href="3-prp.html#SP24">&#167;24</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::compile_default_value</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::compile_default_value</span></span>:<br/>Properties - <a href="3-prp.html#SP24">&#167;24</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-vp.html#SP9" class="function-link"><span class="function-syntax">Properties::Valued::is_used_for_non_typesafe_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Holsters::data_acceptable</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Holsters::holster_pair</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>

View file

@ -115,7 +115,7 @@ as method calls. There are (currently) five families.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure inference_subject_family is private to this section.</li></ul>
<ul class="endnotetexts"><li>The structure inference_subject_family is accessed in 5/inf and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>The "fundamentals" family will be defined here. As we will see, it is used
only for a few broad concepts. It provides few method functions, because these
subjects serve a mainly organisational role.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>
@ -215,8 +215,8 @@ one and only subject with no broader subject:
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="identifier-syntax">represents</span><span class="plain-syntax">; </span><span class="comment-syntax"> family-specific data</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">additional_data_for_plugins</span><span class="plain-syntax">[</span><span class="identifier-syntax">MAX_PLUGINS</span><span class="plain-syntax">]; </span><span class="comment-syntax"> and managed by those plugins</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf_list</span><span class="plain-syntax">; </span><span class="comment-syntax"> contingently true: inferences drawn about this subject</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">implication</span><span class="plain-syntax"> *</span><span class="identifier-syntax">imp_list</span><span class="plain-syntax">; </span><span class="comment-syntax"> necessarily true: implications applying to this</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf_list</span><span class="plain-syntax">; </span><span class="comment-syntax"> contingently true: each </span><span class="extract"><span class="extract-syntax">inference</span></span><span class="comment-syntax"> drawn about this</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">imp_list</span><span class="plain-syntax">; </span><span class="comment-syntax"> necessarily true: each </span><span class="extract"><span class="extract-syntax">implication</span></span><span class="comment-syntax"> applying to this</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">permissions_list</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">property_permission</span></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">assemblies_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">assemblies</span><span class="plain-syntax">; </span><span class="comment-syntax"> what generalisations have been made about this?</span>
@ -255,8 +255,8 @@ kind once the kind itself is created.)
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">infs_created_at</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">represents</span><span class="plain-syntax"> = </span><span class="identifier-syntax">gp</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">infs_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">family</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">inf_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">imp_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">inf_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">imp_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">implication</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">broader_than</span><span class="plain-syntax"> = </span><span class="identifier-syntax">from</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">permissions_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">property_permission</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">infs_name_in_log</span><span class="plain-syntax"> = </span><span class="identifier-syntax">log_name</span><span class="plain-syntax">;</span>
@ -275,7 +275,7 @@ It has to do with the difference between "yourself" and "the player".
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">alias_variable</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::aliased_but_diverted</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::aliased_but_diverted</span></span>:<br/>Instance Counting - <a href="5-ic.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::aliased_but_diverted</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">alias_variable</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vs</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-ins.html#SP6" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span>
@ -296,7 +296,7 @@ This makes testing for containment simple:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_within</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::is_within</span></span>:<br/><a href="4-is.html#SP11">&#167;11</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smaller</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">larger</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_within</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::is_within</span></span>:<br/><a href="4-is.html#SP11">&#167;11</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smaller</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">larger</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">smaller</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">smaller</span><span class="plain-syntax"> == </span><span class="identifier-syntax">larger</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">smaller</span><span class="plain-syntax"> = </span><span class="identifier-syntax">smaller</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">broader_than</span><span class="plain-syntax">;</span>
@ -314,7 +314,7 @@ operations scaling the subject tree, we use the following:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></span>:<br/>Instances - <a href="2-ins.html#SP10">&#167;10</a><br/>Properties - <a href="3-prp.html#SP24">&#167;24</a><br/>Properties of Values - <a href="3-pov.html#SP4">&#167;4</a><br/>Emit Property Values - <a href="3-epv.html#SP1">&#167;1</a>, <a href="3-epv.html#SP1_1_4">&#167;1.1.4</a><br/>Kind Subjects - <a href="4-ks.html#SP10">&#167;10</a><br/>Inferences - <a href="5-inf.html#SP12">&#167;12</a>, <a href="5-inf.html#SP14">&#167;14</a><br/>Property Permissions - <a href="5-pp.html#SP2">&#167;2</a><br/>Complete Model World - <a href="5-cmw.html#SP1_2_2_1">&#167;1.2.2.1</a><br/>Instance Counting - <a href="5-ic.html#SP11_3">&#167;11.3</a>, <a href="5-ic.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></span>:<br/>Instances - <a href="2-ins.html#SP10">&#167;10</a><br/>Properties - <a href="3-prp.html#SP24">&#167;24</a><br/>Properties of Values - <a href="3-pov.html#SP4">&#167;4</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1_4">&#167;1.1.4</a><br/>Kind Subjects - <a href="4-ks.html#SP10">&#167;10</a><br/>Inferences - <a href="5-inf.html#SP16">&#167;16</a>, <a href="5-inf.html#SP18">&#167;18</a><br/>Property Permissions - <a href="5-pp.html#SP2">&#167;2</a><br/>The Model World - <a href="5-tmw.html#SP4_2_1">&#167;4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">narrow</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">broader_than</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -326,7 +326,7 @@ before, then this remains true afterwards.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::falls_within</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::falls_within</span></span>:<br/>Instances - <a href="2-ins.html#SP11">&#167;11</a><br/>Kind Subjects - <a href="4-ks.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">broad</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::falls_within</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::falls_within</span></span>:<br/>Instances - <a href="2-ins.html#SP11">&#167;11</a><br/>Kind Subjects - <a href="4-ks.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">broad</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-is.html#SP9" class="function-link"><span class="function-syntax">InferenceSubjects::is_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">broad</span><span class="plain-syntax">, </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">broader_than</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"subject breadth change leads to inconsistency"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">broader_than</span><span class="plain-syntax"> = </span><span class="identifier-syntax">broad</span><span class="plain-syntax">;</span>
@ -345,24 +345,15 @@ before, then this remains true afterwards.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &amp;(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">assemblies</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::get_inferences</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_inferences</span></span>:<br/><a href="4-is.html#SP16">&#167;16</a><br/>Inferences - <a href="5-inf.html#SP11">&#167;11</a>, <a href="5-inf.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::get_inferences</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_inferences</span></span>:<br/><a href="4-is.html#SP16">&#167;16</a><br/>Inferences - <a href="5-inf.html#SP15">&#167;15</a>, <a href="5-inf.html#SP22">&#167;22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inf_list</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::set_inferences</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::set_inferences</span></span>:<br/>Inferences - <a href="5-inf.html#SP18_1">&#167;18.1</a>, <a href="5-inf.html#SP18_3_1">&#167;18.3.1</a>, <a href="5-inf.html#SP18_3_4">&#167;18.3.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null INFS"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">inf_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">implication</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::get_implications</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::get_implications</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">imp_list</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::set_implications</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">implication</span><span class="plain-syntax"> *</span><span class="identifier-syntax">imp</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">imp_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">imp</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::get_permissions</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_permissions</span></span>:<br/>Property Permissions - <a href="5-pp.html#SP2">&#167;2</a>, <a href="5-pp.html#SP3_2">&#167;3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::get_permissions</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_permissions</span></span>:<br/>Property Permissions - <a href="5-pp.html#SP2">&#167;2</a>, <a href="5-pp.html#SP3_2">&#167;3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">permissions_list</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -372,7 +363,7 @@ kinds and instances.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::from_specification</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::from_specification</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP9">&#167;9</a><br/>Nonlocal Variables - <a href="2-nv.html#SP14">&#167;14</a><br/>Relation Subjects - <a href="4-rs.html#SP4">&#167;4</a><br/>Inferences - <a href="5-inf.html#SP17">&#167;17</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::from_specification</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::from_specification</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP9">&#167;9</a><br/>Nonlocal Variables - <a href="2-nv.html#SP14">&#167;14</a><br/>Relation Subjects - <a href="4-rs.html#SP4">&#167;4</a><br/>Inferences - <a href="5-inf.html#SP21">&#167;21</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Specifications::is_kind_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
@ -388,7 +379,7 @@ kinds and instances.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::as_constant</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::as_constant</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP6_7">&#167;6.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::as_constant</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::as_constant</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP6_7">&#167;6.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
@ -402,11 +393,11 @@ kinds and instances.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_an_object</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::is_an_object</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_an_object</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::is_an_object</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-is2.html#SP1" class="function-link"><span class="function-syntax">InstanceSubjects::to_object_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_a_kind_of_object</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::is_a_kind_of_object</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_a_kind_of_object</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::is_a_kind_of_object</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
@ -417,7 +408,7 @@ kinds and instances.
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>&#167;16. Logging. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::log</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::log</span></span>:<br/>Knowledge Module - <a href="1-km.html#SP2">&#167;2</a>, <a href="1-km.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::log</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::log</span></span>:<br/>Knowledge Module - <a href="1-km.html#SP2">&#167;2</a>, <a href="1-km.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;null infs&gt;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">infs_name_in_log</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"infs&lt;%s&gt;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">infs_name_in_log</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
@ -434,9 +425,10 @@ kinds and instances.
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::log_knowledge_about</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Inferences drawn about $j:\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">); </span><span class="identifier-syntax">LOG_INDENT</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inf</span><span class="plain-syntax"> = </span><a href="4-is.html#SP12" class="function-link"><span class="function-syntax">InferenceSubjects::get_inferences</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">); </span><span class="identifier-syntax">inf</span><span class="plain-syntax">; </span><span class="identifier-syntax">inf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">inf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"$I\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax">, </span><a href="4-is.html#SP12" class="function-link"><span class="function-syntax">InferenceSubjects::get_inferences</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"$I\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_OUTDENT</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -447,7 +439,7 @@ DAG.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::log_infs_hierarchy</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::log_infs_hierarchy</span></span>:<br/><a href="4-is.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::log_infs_hierarchy</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::log_infs_hierarchy</span></span>:<br/><a href="4-is.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Subjects hierarchy:\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="4-is.html#SP17" class="function-link"><span class="function-syntax">InferenceSubjects::log_subjects_hierarchically</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -474,7 +466,7 @@ word range into the wording.
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">GET_NAME_TEXT_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::get_name_text</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_name_text</span></span>:<br/><a href="4-is.html#SP16">&#167;16</a><br/>Knowledge Module - <a href="1-km.html#SP4">&#167;4</a><br/>Condition Properties - <a href="3-cp.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::get_name_text</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_name_text</span></span>:<br/><a href="4-is.html#SP16">&#167;16</a><br/>Knowledge Module - <a href="1-km.html#SP4">&#167;4</a><br/>Condition Properties - <a href="3-cp.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null INFS"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">GET_NAME_TEXT_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
@ -499,7 +491,7 @@ level of certainty.
<span class="identifier-syntax">INT_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">GET_DEFAULT_CERTAINTY_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::get_default_certainty</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_default_certainty</span></span>:<br/>Inferences - <a href="5-inf.html#SP6">&#167;6</a>, <a href="5-inf.html#SP18_3">&#167;18.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::get_default_certainty</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_default_certainty</span></span>:<br/>Inferences - <a href="5-inf.html#SP22_3">&#167;22.3</a><br/>Property Inferences - <a href="5-pi.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cert</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">INT_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">cert</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">GET_DEFAULT_CERTAINTY_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cert</span><span class="plain-syntax">;</span>
@ -517,7 +509,7 @@ to the permission, or <span class="extract"><span class="extract-syntax">NULL_GE
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_PERMISSION_GRANTED_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> *</span><span class="identifier-syntax">G</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::new_permission_granted</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::new_permission_granted</span></span>:<br/>Property Permissions - <a href="5-pp.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::new_permission_granted</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::new_permission_granted</span></span>:<br/>Property Permissions - <a href="5-pp.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null INFS"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="identifier-syntax">G</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL_GENERAL_POINTER</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">NEW_PERMISSION_GRANTED_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">G</span><span class="plain-syntax">);</span>
@ -536,7 +528,7 @@ of "green" as an adjective.
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">MAKE_ADJ_CONST_DOMAIN_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nc</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::make_adj_const_domain</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::make_adj_const_domain</span></span>:<br/>Instances - <a href="2-ins.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::make_adj_const_domain</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::make_adj_const_domain</span></span>:<br/>Instances - <a href="2-ins.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nc</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null INFS"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">MAKE_ADJ_CONST_DOMAIN_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">nc</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
@ -552,7 +544,7 @@ to fill in anything missing about itself:
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">COMPLETE_MODEL_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::complete_model</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::complete_model</span></span>:<br/>Complete Model World - <a href="5-cmw.html#SP1_1">&#167;1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::complete_model</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::complete_model</span></span>:<br/>The Model World - <a href="5-tmw.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null INFS"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">COMPLETE_MODEL_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -566,7 +558,7 @@ consistency, and to issue problem messages if something is wrong:
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">CHECK_MODEL_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::check_model</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::check_model</span></span>:<br/>Complete Model World - <a href="5-cmw.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::check_model</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::check_model</span></span>:<br/>The Model World - <a href="5-tmw.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null INFS"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">CHECK_MODEL_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -616,11 +608,11 @@ for an individual subject.
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">INT_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">EMIT_ALL_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ignored</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">EMIT_ONE_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::emit_all</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::emit_all</span></span>:<br/>Compile Model World - <a href="5-cmw2.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::emit_all</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP12" class="function-link"><span class="function-syntax">World::Inferences::verify_prop_states</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP16" class="function-link"><span class="function-syntax">Inferences::verify_prop_states</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">family</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax">) {</span>

View file

@ -116,7 +116,7 @@ a go-between.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">InstanceSubjects::to_object_instance</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">InstanceSubjects::to_object_instance</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP7">&#167;7</a><br/>Inference Subjects - <a href="4-is.html#SP15">&#167;15</a><br/>Inferences - <a href="5-inf.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">InstanceSubjects::to_object_instance</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">InstanceSubjects::to_object_instance</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP7">&#167;7</a><br/>Inference Subjects - <a href="4-is.html#SP15">&#167;15</a><br/>Inferences - <a href="5-inf.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="4-is2.html#SP1" class="function-link"><span class="function-syntax">InstanceSubjects::to_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">I</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><a href="2-ins.html#SP10" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>

View file

@ -134,12 +134,12 @@ a little trickier than for other subject families:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::from_kind</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">KindSubjects::from_kind</span></span>:<br/><a href="4-ks.html#SP4">&#167;4</a>, <a href="4-ks.html#SP10">&#167;10</a><br/>Knowledge Module - <a href="1-km.html#SP4">&#167;4</a><br/>Assert Propositions - <a href="1-ap.html#SP6_5_2">&#167;6.5.2</a>, <a href="1-ap.html#SP9">&#167;9</a><br/>Instances - <a href="2-ins.html#SP11">&#167;11</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">&#167;1</a><br/>The Provision Relation - <a href="3-tpr.html#SP6_2">&#167;6.2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP3">&#167;3</a><br/>Inference Subjects - <a href="4-is.html#SP13">&#167;13</a><br/>Instance Subjects - <a href="4-is2.html#SP1">&#167;1</a><br/>Instance Counting - <a href="5-ic.html#SP11_2">&#167;11.2</a>, <a href="5-ic.html#SP11_3">&#167;11.3</a>, <a href="5-ic.html#SP12">&#167;12</a>, <a href="5-ic.html#SP13">&#167;13</a>, <a href="5-ic.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::from_kind</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">KindSubjects::from_kind</span></span>:<br/><a href="4-ks.html#SP4">&#167;4</a>, <a href="4-ks.html#SP10">&#167;10</a><br/>Knowledge Module - <a href="1-km.html#SP4">&#167;4</a><br/>Assert Propositions - <a href="1-ap.html#SP6_5_2">&#167;6.5.2</a>, <a href="1-ap.html#SP9">&#167;9</a><br/>Instances - <a href="2-ins.html#SP11">&#167;11</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">&#167;1</a><br/>The Provision Relation - <a href="3-tpr.html#SP6_2">&#167;6.2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP3">&#167;3</a><br/>Inference Subjects - <a href="4-is.html#SP13">&#167;13</a><br/>Instance Subjects - <a href="4-is2.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">base_as_infs</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::to_kind</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">KindSubjects::to_kind</span></span>:<br/><a href="4-ks.html#SP7">&#167;7</a>, <a href="4-ks.html#SP8">&#167;8</a>, <a href="4-ks.html#SP10">&#167;10</a><br/>Knowledge Module - <a href="1-km.html#SP4">&#167;4</a><br/>Instances - <a href="2-ins.html#SP10">&#167;10</a><br/>Properties - <a href="3-prp.html#SP26">&#167;26</a><br/>Either-Or Properties - <a href="3-ep.html#SP3">&#167;3</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">&#167;1</a><br/>Emit Property Values - <a href="3-epv.html#SP1">&#167;1</a>, <a href="3-epv.html#SP2">&#167;2</a>, <a href="3-epv.html#SP2_1">&#167;2.1</a><br/>Inference Subjects - <a href="4-is.html#SP14">&#167;14</a>, <a href="4-is.html#SP15">&#167;15</a><br/>Instance Counting - <a href="5-ic.html#SP11_3">&#167;11.3</a>, <a href="5-ic.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::to_kind</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">KindSubjects::to_kind</span></span>:<br/><a href="4-ks.html#SP7">&#167;7</a>, <a href="4-ks.html#SP8">&#167;8</a>, <a href="4-ks.html#SP10">&#167;10</a><br/>Knowledge Module - <a href="1-km.html#SP4">&#167;4</a><br/>Instances - <a href="2-ins.html#SP10">&#167;10</a><br/>Properties - <a href="3-prp.html#SP26">&#167;26</a><br/>Either-Or Properties - <a href="3-ep.html#SP3">&#167;3</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">&#167;1</a><br/>Emit Property Values - <a href="3-epv.html#SP1">&#167;1</a>, <a href="3-epv.html#SP2">&#167;2</a>, <a href="3-epv.html#SP2_1">&#167;2.1</a><br/>Inference Subjects - <a href="4-is.html#SP14">&#167;14</a>, <a href="4-is.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">infs_family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">kinds_family</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::base_construction</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RETRIEVE_POINTER_kind_constructor</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">represents</span><span class="plain-syntax">));</span>

View file

@ -130,10 +130,9 @@ function togglePopup(material_id) {
<span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">right_way_round</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRelations::equivalence_relation_make_singleton_partitions</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_size</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">World::Inferences::bp_as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="constant-syntax">ARBITRARY_RELATION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><a href="5-inf.html#SP11" class="function-link"><span class="function-syntax">Inferences::bp_as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP10" class="function-link"><span class="function-syntax">World::Inferences::get_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP14" class="function-link"><span class="function-syntax">Inferences::get_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRelations::equivalence_relation_merge_classes</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_size</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -177,10 +176,10 @@ checking in.
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">leftc</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTY_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">prn</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">prn</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs2</span><span class="plain-syntax"> = </span><a href="4-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">leftc</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">) {</span>
@ -191,8 +190,8 @@ checking in.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">leftc</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">inf1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">leftc</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf1</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf1</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="string-syntax">"can only relate to one other thing in this way"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"since the relation in question is one-to-one."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -202,8 +201,8 @@ checking in.
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">right_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">] &gt;= </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_Relation1to1Right</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="string-syntax">"can only relate to one other thing in this way"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"since the relation in question is one-to-one."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -233,11 +232,10 @@ checking in.
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">) </span><span class="identifier-syntax">right_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">] = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">World::Inferences::bp_as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="constant-syntax">ARBITRARY_RELATION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><a href="5-inf.html#SP11" class="function-link"><span class="function-syntax">Inferences::bp_as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left_val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">right_val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP10" class="function-link"><span class="function-syntax">World::Inferences::get_references_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">left_val</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">right_val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP14" class="function-link"><span class="function-syntax">Inferences::get_references_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">left_val</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">right_val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">left_id</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">):(-1);</span>
@ -261,8 +259,8 @@ checking in.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">left_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">] &gt;= </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_RelationVtoOContradiction</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="string-syntax">"can only relate to one other thing in this way"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"since the relation in question is various-to-one."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -272,8 +270,8 @@ checking in.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">right_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">] &gt;= </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_RelationOtoVContradiction</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="string-syntax">"can only be related to by one other thing in this way"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"since the relation in question is one-to-various."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>

View file

@ -129,22 +129,22 @@ about the same subject.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="2-nv.html#SP8" class="function-link"><span class="function-syntax">NonlocalVariables::to_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTY_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_variable_initial_value</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_variable_initial_value</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">VariableSubjects::get_initial_value</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">VariableSubjects::get_initial_value</span></span>:<br/><a href="4-vs.html#SP4">&#167;4</a><br/>Nonlocal Variables - <a href="2-nv.html#SP13">&#167;13</a>, <a href="2-nv.html#SP14">&#167;14</a><br/>Inference Subjects - <a href="4-is.html#SP8">&#167;8</a><br/>Inferences - <a href="5-inf.html#SP17">&#167;17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">VariableSubjects::get_initial_value</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">VariableSubjects::get_initial_value</span></span>:<br/><a href="4-vs.html#SP4">&#167;4</a><br/>Nonlocal Variables - <a href="2-nv.html#SP13">&#167;13</a>, <a href="2-nv.html#SP14">&#167;14</a><br/>Inference Subjects - <a href="4-is.html#SP8">&#167;8</a><br/>Inferences - <a href="5-inf.html#SP21">&#167;21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax"> = </span><a href="4-vs.html#SP2" class="function-link"><span class="function-syntax">VariableSubjects::get_initial_value_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::new_UNKNOWN</span><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">VariableSubjects::origin_of_initial_value</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">VariableSubjects::origin_of_initial_value</span></span>:<br/><a href="4-vs.html#SP4">&#167;4</a>, <a href="4-vs.html#SP4_1">&#167;4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax"> = </span><a href="4-vs.html#SP2" class="function-link"><span class="function-syntax">VariableSubjects::get_initial_value_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -1,119 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Compile Model World</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<li><a href="../assertions-module/index.html">assertions</a></li>
<li><a href="../values-module/index.html">values</a></li>
<li><a href="index.html"><span class="selectedlink">knowledge</span></a></li>
<li><a href="../imperative-module/index.html">imperative</a></li>
<li><a href="../runtime-module/index.html">runtime</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../calculus-module/index.html">calculus</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Compile Model World' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#5">Chapter 5: Model</a></li><li><b>Compile Model World</b></li></ul></div>
<p class="purpose">To manage the compilation of the diverse run-time arrays and/or code needed to set up the initial state of the model world.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>A modest temporary array is needed to tally up the memory cost of creating
objects of given kinds, for the sake of the index:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rough_array_memory_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> in words, not bytes; for kinds only</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::Compile::set_rough_memory_usage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">World::Compile::set_rough_memory_usage</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">words_used</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rough_array_memory_used</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"rough_array_memory_used unallocated"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rough_array_memory_used</span><span class="plain-syntax">[</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">] = </span><span class="identifier-syntax">words_used</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">World::Compile::get_rough_memory_usage</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">World::Compile::get_rough_memory_usage</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rough_array_memory_used</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"rough_array_memory_used unallocated"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rough_array_memory_used</span><span class="plain-syntax">[</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">];</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>The actual compilation is entirely delegated: we ask if the plugins want
to write anything, then put the same question to the subjects.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::Compile::compile</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Plugins::Call::compile_model_tables</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax">), </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rough_array_memory_used</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> *)</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Memory::calloc</span><span class="plain-syntax">(</span><span class="identifier-syntax">nc</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax">), </span><span class="constant-syntax">COMPILATION_SIZE_MREASON</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">nc</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">rough_array_memory_used</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="4-is.html#SP26" class="function-link"><span class="function-syntax">InferenceSubjects::emit_all</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::I7_array_free</span><span class="plain-syntax">(</span><span class="identifier-syntax">rough_array_memory_used</span><span class="plain-syntax">, </span><span class="constant-syntax">COMPILATION_SIZE_MREASON</span><span class="plain-syntax">, </span><span class="identifier-syntax">nc</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rough_array_memory_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="5-cmw.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-km.html">1</a></li><li class="progresschapter"><a href="2-ins.html">2</a></li><li class="progresschapter"><a href="3-prp.html">3</a></li><li class="progresschapter"><a href="4-is.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-inf.html">inf</a></li><li class="progresssection"><a href="5-pp.html">pp</a></li><li class="progresssection"><a href="5-cmw.html">cmw</a></li><li class="progresscurrent">cmw2</li><li class="progresssection"><a href="5-ic.html">ic</a></li><li class="progressnext"><a href="5-ic.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,246 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Property Inferences</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<li><a href="../assertions-module/index.html">assertions</a></li>
<li><a href="../values-module/index.html">values</a></li>
<li><a href="index.html"><span class="selectedlink">knowledge</span></a></li>
<li><a href="../imperative-module/index.html">imperative</a></li>
<li><a href="../runtime-module/index.html">runtime</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../calculus-module/index.html">calculus</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Property Inferences' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#5">Chapter 5: Modelling</a></li><li><b>Property Inferences</b></li></ul></div>
<p class="purpose">Inferences that a property of something is true, or has a particular value.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>We will make:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::start</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PropertyInferences::start</span></span>:<br/>Knowledge Module - <a href="1-km.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP2" class="function-link"><span class="function-syntax">Inferences::new_family</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"property_inf"</span><span class="plain-syntax">, </span><span class="constant-syntax">CI_DIFFER_IN_PROPERTY_VALUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">LOG_INF_MTID</span><span class="plain-syntax">, </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::log</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">COMPARE_INF_MTID</span><span class="plain-syntax">, </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::cmp</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">JOIN_INF_MTID</span><span class="plain-syntax">, </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::join</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">EXPLAIN_CONTRADICTION_INF_MTID</span><span class="plain-syntax">, </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::explain_contradiction</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::join</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Plugins::Call::property_value_notify</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::cmp</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pr1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pr2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pr1</span><span class="plain-syntax">) &amp;&amp; (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr1</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">pr2</span><span class="plain-syntax">) &amp;&amp; (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr2</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">pr1</span><span class="plain-syntax"> == </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr2</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">pr2</span><span class="plain-syntax"> == </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr1</span><span class="plain-syntax">)))) </span><span class="identifier-syntax">pr2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pr1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP21" class="function-link"><span class="function-syntax">Inferences::measure_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr1</span><span class="plain-syntax">) - </span><a href="5-inf.html#SP21" class="function-link"><span class="function-syntax">Inferences::measure_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_PROPERTY</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_PROPERTY</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP21" class="function-link"><span class="function-syntax">Inferences::measure_inf</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">) - </span><a href="5-inf.html#SP21" class="function-link"><span class="function-syntax">Inferences::measure_inf</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">data1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property</span><span class="plain-syntax"> != </span><span class="identifier-syntax">data2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property</span><span class="plain-syntax">) || </span><span class="comment-syntax"> in case they are an either-or pair</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">val1</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">val2</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Rvalues::compare_CONSTANT</span><span class="plain-syntax">(</span><span class="identifier-syntax">val1</span><span class="plain-syntax">, </span><span class="identifier-syntax">val2</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_PROPERTY_VALUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_PROPERTY_VALUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_IDENTICAL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::explain_contradiction</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">B_data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property</span><span class="plain-syntax"> == </span><span class="identifier-syntax">P_variable_initial_value</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::two_sentences_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_VariableContradiction</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_from</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"this looks like a contradiction"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"because the initial value of this variable seems to be being set "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"in each of these sentences, but with a different outcome."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_value_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B_data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="3-vp.html#SP8" class="function-link"><span class="function-syntax">Properties::Valued::get_stored_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B_data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::match</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_from</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_relation</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_subject</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_spec</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">B_data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_spec</span><span class="plain-syntax">(6, </span><span class="identifier-syntax">A_data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_RelationContradiction2</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"I'm finding a contradiction at the sentence %1, "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"because it means I can't set up %3. "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"On the one hand, %4 should relate to %5, but on the other "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"hand to %6, and this is a relation which doesn't allow "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"such clashes."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">A</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_from</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_relation</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_subject</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_spec</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">B_data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_spec</span><span class="plain-syntax">(6, </span><span class="identifier-syntax">A_data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_RelationContradiction</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"I'm finding a contradiction at the sentences %1 and %2, "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"because between them they set up rival versions of %3. "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"On the one hand, %4 should relate to %5, but on the other "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"hand to %6, and this is a relation which doesn't allow "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"such clashes."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::two_sentences_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_PropertyContradiction</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_from</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"this looks like a contradiction"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"because the same property seems to be being set in each of these sentences, "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"but with a different outcome."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::log</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"(%W)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">":=$P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax">; </span><span class="comment-syntax"> property referred to, if any</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inferred_property_value</span><span class="plain-syntax">; </span><span class="comment-syntax"> and its value, if any</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::new</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="constant-syntax">PROTECTED_MODEL_PROCEDURE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null property inference"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">inferred_property_value</span><span class="plain-syntax"> = </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="4-is.html#SP19" class="function-link"><span class="function-syntax">InferenceSubjects::get_default_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">Inferences::create_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">), </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::draw</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">PropertyInferences::draw</span></span>:<br/>Instances as Adjectives - <a href="2-iaa.html#SP3">&#167;3</a><br/>Either-Or Properties - <a href="3-ep.html#SP14">&#167;14</a><br/>Measurement Adjectives - <a href="3-ma.html#SP12">&#167;12</a><br/>Setting Property Relation - <a href="3-spr2.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP22" class="function-link"><span class="function-syntax">Inferences::join_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::draw_negated</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">PropertyInferences::draw_negated</span></span>:<br/>Either-Or Properties - <a href="3-ep.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">certainty</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">certainty</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP22" class="function-link"><span class="function-syntax">Inferences::join_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::get_property</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">PropertyInferences::get_property</span></span>:<br/>Nonlocal Variables - <a href="2-nv.html#SP11">&#167;11</a><br/>Properties - <a href="3-prp.html#SP25">&#167;25</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">&#167;1</a>, <a href="3-ia.html#SP2">&#167;2</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1_3">&#167;1.1.3</a><br/>Variable Subjects - <a href="4-vs.html#SP2">&#167;2</a><br/>Relation Subjects - <a href="4-rs.html#SP4">&#167;4</a><br/>Inferences - <a href="5-inf.html#SP16">&#167;16</a>, <a href="5-inf.html#SP17">&#167;17</a><br/>The Model World - <a href="5-tmw.html#SP4_1">&#167;4.1</a>, <a href="5-tmw.html#SP4_2">&#167;4.2</a>, <a href="5-tmw.html#SP4_2_1">&#167;4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::get_value</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">PropertyInferences::get_value</span></span>:<br/>Properties - <a href="3-prp.html#SP25">&#167;25</a><br/>Indefinite Appearance - <a href="3-ia.html#SP2">&#167;2</a><br/>Variable Subjects - <a href="4-vs.html#SP2">&#167;2</a><br/>Relation Subjects - <a href="4-rs.html#SP4">&#167;4</a><br/>Inferences - <a href="5-inf.html#SP16">&#167;16</a>, <a href="5-inf.html#SP17">&#167;17</a><br/>The Model World - <a href="5-tmw.html#SP4_2_1_1">&#167;4.2.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::set_value_kind</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">PropertyInferences::set_value_kind</span></span>:<br/>Nonlocal Variables - <a href="2-nv.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure property_inference_data is private to this section.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="5-inf.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-km.html">1</a></li><li class="progresschapter"><a href="2-ins.html">2</a></li><li class="progresschapter"><a href="3-prp.html">3</a></li><li class="progresschapter"><a href="4-is.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-inf.html">inf</a></li><li class="progresscurrent">pi</li><li class="progresssection"><a href="5-ri.html">ri</a></li><li class="progresssection"><a href="5-pp.html">pp</a></li><li class="progresssection"><a href="5-tmw.html">tmw</a></li><li class="progressnext"><a href="5-ri.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -74,7 +74,7 @@ function togglePopup(material_id) {
<main role="main">
<!--Weave of 'Property Permissions' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#5">Chapter 5: Model</a></li><li><b>Property Permissions</b></li></ul></div>
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#5">Chapter 5: Modelling</a></li><li><b>Property Permissions</b></li></ul></div>
<p class="purpose">To enforce the domain of properties: for instance, that a door can be open or closed but that an animal cannot, or that a person can have a carrying capacity but that a door cannot.</p>
<ul class="toc"><li><a href="5-pp.html#SP2">&#167;2. Seeking permission</a></li><li><a href="5-pp.html#SP3">&#167;3. Granting permission</a></li><li><a href="5-pp.html#SP5">&#167;5. Boring access functions</a></li></ul><hr class="tocbar">
@ -128,7 +128,7 @@ whereas the unpredictable order might make testing Inform more annoying.
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="reserved-syntax">property_permission</span><span class="plain-syntax">, </span><a href="4-is.html#SP12" class="function-link"><span class="function-syntax">InferenceSubjects::get_permissions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">))</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="function-syntax">World::Permissions::find</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">World::Permissions::find</span></span>:<br/><a href="5-pp.html#SP3">&#167;3</a><br/>Indefinite Appearance - <a href="3-ia.html#SP2">&#167;2</a><br/>The Provision Relation - <a href="3-tpr.html#SP6_2">&#167;6.2</a><br/>Inferences - <a href="5-inf.html#SP14">&#167;14</a>, <a href="5-inf.html#SP15">&#167;15</a><br/>Complete Model World - <a href="5-cmw.html#SP1_2_1">&#167;1.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="function-syntax">World::Permissions::find</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">World::Permissions::find</span></span>:<br/><a href="5-pp.html#SP3">&#167;3</a><br/>Indefinite Appearance - <a href="3-ia.html#SP2">&#167;2</a><br/>The Provision Relation - <a href="3-tpr.html#SP6_2">&#167;6.2</a><br/>Inferences - <a href="5-inf.html#SP18">&#167;18</a>, <a href="5-inf.html#SP19">&#167;19</a><br/>The Model World - <a href="5-tmw.html#SP4_1">&#167;4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow_inheritance</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prnbar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) </span><span class="identifier-syntax">prnbar</span><span class="plain-syntax"> = </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
@ -240,7 +240,7 @@ in the case of a broken jar.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="5-inf.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-km.html">1</a></li><li class="progresschapter"><a href="2-ins.html">2</a></li><li class="progresschapter"><a href="3-prp.html">3</a></li><li class="progresschapter"><a href="4-is.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-inf.html">inf</a></li><li class="progresscurrent">pp</li><li class="progresssection"><a href="5-cmw.html">cmw</a></li><li class="progresssection"><a href="5-cmw2.html">cmw2</a></li><li class="progresssection"><a href="5-ic.html">ic</a></li><li class="progressnext"><a href="5-cmw.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="5-ri.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-km.html">1</a></li><li class="progresschapter"><a href="2-ins.html">2</a></li><li class="progresschapter"><a href="3-prp.html">3</a></li><li class="progresschapter"><a href="4-is.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-inf.html">inf</a></li><li class="progresssection"><a href="5-pi.html">pi</a></li><li class="progresssection"><a href="5-ri.html">ri</a></li><li class="progresscurrent">pp</li><li class="progresssection"><a href="5-tmw.html">tmw</a></li><li class="progressnext"><a href="5-tmw.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -0,0 +1,95 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Relation Inferences</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<li><a href="../assertions-module/index.html">assertions</a></li>
<li><a href="../values-module/index.html">values</a></li>
<li><a href="index.html"><span class="selectedlink">knowledge</span></a></li>
<li><a href="../imperative-module/index.html">imperative</a></li>
<li><a href="../runtime-module/index.html">runtime</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../calculus-module/index.html">calculus</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Relation Inferences' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#5">Chapter 5: Modelling</a></li><li><b>Relation Inferences</b></li></ul></div>
<p class="purpose">Inferences that a relation holds between two subjects or values.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>We will make:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RelationInferences::start</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">RelationInferences::start</span></span>:<br/>Knowledge Module - <a href="1-km.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP2" class="function-link"><span class="function-syntax">Inferences::new_family</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"arbitrary_relation_inf"</span><span class="plain-syntax">, </span><span class="constant-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="5-pi.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-km.html">1</a></li><li class="progresschapter"><a href="2-ins.html">2</a></li><li class="progresschapter"><a href="3-prp.html">3</a></li><li class="progresschapter"><a href="4-is.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-inf.html">inf</a></li><li class="progresssection"><a href="5-pi.html">pi</a></li><li class="progresscurrent">ri</li><li class="progresssection"><a href="5-pp.html">pp</a></li><li class="progresssection"><a href="5-tmw.html">tmw</a></li><li class="progressnext"><a href="5-pp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Complete Model World</title>
<title>The Model World</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@ -12,6 +12,14 @@
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
@ -59,65 +67,69 @@
</ul>
</nav>
<main role="main">
<!--Weave of 'Complete Model World' generated by Inweb-->
<!--Weave of 'The Model World' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#5">Chapter 5: Model</a></li><li><b>Complete Model World</b></li></ul></div>
<p class="purpose">Once the assertions have all been read and reduced to inferences, and all the creations have been made, we take stock; sometimes we spot inconsistencies, sometimes we make deductions, and we try to complete our picture of the model world.</p>
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#5">Chapter 5: Modelling</a></li><li><b>The Model World</b></li></ul></div>
<p class="purpose">Once the assertions have all been read and reduced to inferences, we try to complete our model world.</p>
<ul class="toc"><li><a href="5-cmw.html#SP1">&#167;1. Stages II to IV</a></li><li><a href="5-cmw.html#SP2">&#167;2. Stage V</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="5-tmw.html#SP1">&#167;1. Introduction</a></li><li><a href="5-tmw.html#SP2">&#167;2. Stage I</a></li><li><a href="5-tmw.html#SP3">&#167;3. Stages II and III</a></li><li><a href="5-tmw.html#SP4">&#167;4. Stage IV</a></li><li><a href="5-tmw.html#SP5">&#167;5. Stage V</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Stages II to IV. </b>The process of using existing facts to infer new ones is vulnerable
to timing bugs, so we organise the "making" process into five numbered
stages, given the Roman numerals I to V. Much of the work is done by plugins,
which can take a hand at any or all of the stages, using their contextual
knowledge to fill in missing properties.
</p>
<ul class="items"><li>(I) Deducing the kind of any object whose kind is not known. Because this
can result in a change of kind, which can result in further creations by
assembly sentences like "A handle is part of every door", Stage I takes
place at the end of traverse 2 of the source text and, uniquely, gets the
opportunity to add fresh sentences to the source &mdash; thus extending the
traverse. By the end of Stage I, all kinds are fixed.
</li><li>(II) Stages II and III are for adding further properties or relationships,
which aren't explicit in the source text but which plugins can add on the
basis of contextual understanding. (Two stages are provided here to avoid
timing issues where one plugin has to act earlier than another.)
</li><li>(III) See (II). If a plugin is going to change the compilation order of
the objects (as the spatial-model plugin does), it must do so during
Stage III.
</li><li>(IV) A stage for consistency checks or to store away useful data, but where
nothing in the model may be changed &mdash; no properties or relationships
may be added. (Except that the instance-counting plugin is allowed to
add the linked-lists-of-instances properties, used to optimise loops
at run-time; they aren't visible at the I7 level so aren't properly
part of the model world.)
</li><li>(V) A final chance to add properties which will assist the run-time
implementation of, for instance, the command grammar, but again aren't
really part of the model world. (This can't be done earlier since the
command grammar isn't parsed until after <span class="extract"><span class="extract-syntax">World::complete</span></span>; and we
aren't allowed to add I7-accessible properties.)
</li></ul>
<p class="commentary">The following routine, then, carries out stages II, III and IV.
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Introduction. </b>World-building has five stages, written with Roman numerals I to V in this
source code. The logic in this section is all quite simple, but plugins are
allowed to intervene at each of the five stages, bringing domain-specific
wisdom to the process.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">WORLD_STAGE_I</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> </span><span class="comment-syntax"> Deduce kinds for object instances</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">WORLD_STAGE_II</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="comment-syntax"> First chance to add further properties or relationships</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">WORLD_STAGE_III</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax"> </span><span class="comment-syntax"> Second chance to add further properties or relationships</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">WORLD_STAGE_IV</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> </span><span class="comment-syntax"> Perform mutual consistency checks</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">WORLD_STAGE_V</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span><span class="plain-syntax"> </span><span class="comment-syntax"> Post-game: only implementation details can be added</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::complete</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cmw.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Stages II and III of the completion process</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cmw.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Stage IV of the completion process</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_model_world_stage</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> not yet building the world model</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::ask_plugins_at_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">World::ask_plugins_at_stage</span></span>:<br/><a href="5-tmw.html#SP2">&#167;2</a>, <a href="5-tmw.html#SP3">&#167;3</a>, <a href="5-tmw.html#SP4">&#167;4</a>, <a href="5-tmw.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax"> != </span><span class="identifier-syntax">current_model_world_stage</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Stage mistimed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_model_world_stage</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Plugins::Call::complete_model</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">World::current_building_stage</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">World::current_building_stage</span></span>:<br/>Inferences - <a href="5-inf.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_model_world_stage</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP1_1" class="paragraph-anchor"></a><b>&#167;1.1. </b>The model world is a broth with many cooks. On the one hand, we have the
various different INFSs, with their different needs &mdash; a various-to-various
relation, a global variable, and so on &mdash; and on the other hand we also
have the plugins, each of which takes its own global view of the situation.
We give everyone a turn.
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Stage I. </b>Deducing the kind of any object whose kind is not known. The core compiler
has already done the best it can, but then it lacks domain-specific
understanding. So the only business done is by plugins, which understand
certain kinds and relationships better.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Stages II and III of the completion process</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary">Some instances change their kinds in Stage I, and this can result in further
creations by assembly sentences like "A handle is part of every door". Because
of that, Stage I takes place at the end of traverse 2 of the source text and,
uniquely, gets the opportunity to add fresh sentences to the source &mdash; thus
extending the traverse. But by the end of Stage I, all kinds are fixed, and
no further instances can be created.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::deduce_object_instance_kinds</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="5-tmw.html#SP1" class="function-link"><span class="function-syntax">World::ask_plugins_at_stage</span></a><span class="plain-syntax">(</span><span class="constant-syntax">WORLD_STAGE_I</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Stages II and III. </b>This is an opportunity for plugins to add further properties or relationships
on the basis of contextual understanding. Two stages, and thus two opportunities,
are provided here to avoid timing issues where one plugin has to act earlier
than another.
</p>
<p class="commentary">If a plugin is going to change the compilation order of the objects (as the
spatial-model plugin does), it must do so during Stage III, not Stage II.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::stages_II_and_III</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="4-is.html#SP22" class="function-link"><span class="function-syntax">InferenceSubjects::complete_model</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
@ -125,28 +137,27 @@ We give everyone a turn.
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Assertions::Implications::consider_all</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Plugins::Call::complete_model</span><span class="plain-syntax">(2);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Plugins::Call::complete_model</span><span class="plain-syntax">(3);</span>
<span class="plain-syntax"> </span><a href="5-tmw.html#SP1" class="function-link"><span class="function-syntax">World::ask_plugins_at_stage</span></a><span class="plain-syntax">(</span><span class="constant-syntax">WORLD_STAGE_II</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-tmw.html#SP1" class="function-link"><span class="function-syntax">World::ask_plugins_at_stage</span></a><span class="plain-syntax">(</span><span class="constant-syntax">WORLD_STAGE_III</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-cmw.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>&#167;1.2. </b>Checking what we have, then. Once again each INFS is given an opportunity
to check itself, and then the plugins have a turn.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Stage IV of the completion process</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Stage IV. </b>This is for consistency checks or to store away useful data, but where
nothing in the model may be changed &mdash; no properties or relationships
may be added.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::stage_IV</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="4-is.html#SP23" class="function-link"><span class="function-syntax">InferenceSubjects::check_model</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cmw.html#SP1_2_1" class="named-paragraph-link"><span class="named-paragraph">Check that properties are permitted</span><span class="named-paragraph-number">1.2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cmw.html#SP1_2_2" class="named-paragraph-link"><span class="named-paragraph">Check that properties are not contradictory</span><span class="named-paragraph-number">1.2.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tmw.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Check that properties are permitted</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tmw.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">Check that properties are not contradictory</span><span class="named-paragraph-number">4.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Plugins::Call::complete_model</span><span class="plain-syntax">(4);</span>
<span class="plain-syntax"> </span><a href="5-tmw.html#SP1" class="function-link"><span class="function-syntax">World::ask_plugins_at_stage</span></a><span class="plain-syntax">(</span><span class="constant-syntax">WORLD_STAGE_IV</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-cmw.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_1" class="paragraph-anchor"></a><b>&#167;1.2.1. </b>These two checks may seem a little odd. After all, we've been throwing out
<p class="commentary firstcommentary"><a id="SP4_1" class="paragraph-anchor"></a><b>&#167;4.1. </b>These two checks may seem a little odd. After all, we've been throwing out
impossible inferences with problem messages all along, while reading the
source text. Why not perform these checks then, too?
</p>
@ -173,13 +184,13 @@ in plugins which add inconsistent properties.
<p class="commentary">A nameless property added in Stages II and III does not need permission.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that properties are permitted</span><span class="named-paragraph-number">1.2.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that properties are permitted</span><span class="named-paragraph-number">4.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTY_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pp.html#SP2" class="function-link"><span class="function-syntax">World::Permissions::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::inference_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_PropertyNotPermitted</span><span class="plain-syntax">),</span>
@ -189,48 +200,49 @@ in plugins which add inconsistent properties.
<span class="plain-syntax"> </span><span class="string-syntax">"details."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-cmw.html#SP1_2">&#167;1.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_2" class="paragraph-anchor"></a><b>&#167;1.2.2. </b>The following contradiction checks do not apply to properties added
in Stages II and III, since those are often I6 hacks added for run-time
<ul class="endnotetexts"><li>This code is used in <a href="5-tmw.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4_2" class="paragraph-anchor"></a><b>&#167;4.2. </b>The following contradiction checks do not apply to properties added
in Stages II and III, since those are often Inter hacks added for run-time
convenience, and don't have to follow the I7 rules.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that properties are not contradictory</span><span class="named-paragraph-number">1.2.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that properties are not contradictory</span><span class="named-paragraph-number">4.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTY_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::added_in_construction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::during_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sign</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">sign</span><span class="plain-syntax"> = -1;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cmw.html#SP1_2_2_1" class="named-paragraph-link"><span class="named-paragraph">Look for clashes concerning this property from wider inferences</span><span class="named-paragraph-number">1.2.2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) &amp;&amp; (</span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">sign</span><span class="plain-syntax"> = -1;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tmw.html#SP4_2_1" class="named-paragraph-link"><span class="named-paragraph">Look for clashes concerning this property from wider inferences</span><span class="named-paragraph-number">4.2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">sign</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">sign</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cmw.html#SP1_2_2_1" class="named-paragraph-link"><span class="named-paragraph">Look for clashes concerning this property from wider inferences</span><span class="named-paragraph-number">1.2.2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tmw.html#SP4_2_1" class="named-paragraph-link"><span class="named-paragraph">Look for clashes concerning this property from wider inferences</span><span class="named-paragraph-number">4.2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-cmw.html#SP1_2">&#167;1.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_2_1" class="paragraph-anchor"></a><b>&#167;1.2.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Look for clashes concerning this property from wider inferences</span><span class="named-paragraph-number">1.2.2.1</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="5-tmw.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4_2_1" class="paragraph-anchor"></a><b>&#167;4.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Look for clashes concerning this property from wider inferences</span><span class="named-paragraph-number">4.2.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">boss</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">boss</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wide</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">, </span><span class="identifier-syntax">boss</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTY_INF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::added_in_construction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cmw.html#SP1_2_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Check that these differently scoped inferences do not clash</span><span class="named-paragraph-number">1.2.2.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">, </span><span class="identifier-syntax">boss</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::during_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tmw.html#SP4_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Check that these differently scoped inferences do not clash</span><span class="named-paragraph-number">4.2.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">boss</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">boss</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-cmw.html#SP1_2_2">&#167;1.2.2</a> (twice).</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_2_1_1" class="paragraph-anchor"></a><b>&#167;1.2.2.1.1. </b>It's never a problem when a vague fact about something general is contradicted
<ul class="endnotetexts"><li>This code is used in <a href="5-tmw.html#SP4_2">&#167;4.2</a> (twice).</li></ul>
<p class="commentary firstcommentary"><a id="SP4_2_1_1" class="paragraph-anchor"></a><b>&#167;4.2.1.1. </b>It's never a problem when a vague fact about something general is contradicted
by a fact about something specific; the problem comes with something like this:
</p>
@ -243,17 +255,17 @@ rather than <span class="extract"><span class="extract-syntax">LIKELY_CE</span><
about the Portal, to stand.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that these differently scoped inferences do not clash</span><span class="named-paragraph-number">1.2.2.1.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that these differently scoped inferences do not clash</span><span class="named-paragraph-number">4.2.1.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">abcw</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">abcw</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">clash</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wide_sign</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">) &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">wide_sign</span><span class="plain-syntax"> = -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wide_sign</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">) &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">wide_sign</span><span class="plain-syntax"> = -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow_val</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wide_val</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_property_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow_val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wide_val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::compare_CONSTANT</span><span class="plain-syntax">(</span><span class="identifier-syntax">narrow_val</span><span class="plain-syntax">, </span><span class="identifier-syntax">wide_val</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Clash of $P and $P\n $I\n $I\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">narrow_val</span><span class="plain-syntax">, </span><span class="identifier-syntax">wide_val</span><span class="plain-syntax">, </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="identifier-syntax">wide</span><span class="plain-syntax">);</span>
@ -262,38 +274,45 @@ about the Portal, to stand.
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sign</span><span class="plain-syntax"> != </span><span class="identifier-syntax">wide_sign</span><span class="plain-syntax">) </span><span class="identifier-syntax">clash</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">clash</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">clash</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">abcn</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">abcn</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cmw.html#SP1_2_2_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem message for clash with wider inference</span><span class="named-paragraph-number">1.2.2.1.1.1</span></a></span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tmw.html#SP4_2_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem message for clash with wider inference</span><span class="named-paragraph-number">4.2.1.1.1</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::set_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::set_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-cmw.html#SP1_2_2_1">&#167;1.2.2.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_2_1_1_1" class="paragraph-anchor"></a><b>&#167;1.2.2.1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem message for clash with wider inference</span><span class="named-paragraph-number">1.2.2.1.1.1</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="5-tmw.html#SP4_2_1">&#167;4.2.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4_2_1_1_1" class="paragraph-anchor"></a><b>&#167;4.2.1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem message for clash with wider inference</span><span class="named-paragraph-number">4.2.1.1.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Checking infs $j compatible with infs $j for property $Y:\n $I\n $I\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">boss</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="identifier-syntax">wide</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_InstanceContradiction</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">), </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">World::Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">), </span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">), </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">), </span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"therefore has to have two contradictory states of the same property at once"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"which is impossible. When a kind's definition says that something is 'always' "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"true, there is no way to override that for particular things of the kind."</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-cmw.html#SP1_2_2_1_1">&#167;1.2.2.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Stage V. </b>See above. This is for the use of plugins only.
<ul class="endnotetexts"><li>This code is used in <a href="5-tmw.html#SP4_2_1_1">&#167;4.2.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. Stage V. </b>A final chance to add properties which may assist the run-time implementation
of whatever a plugin is concerned with, but which is not allowed to make
changes to the model as it would be understood by the author.
</p>
<p class="commentary">For example, the <a href="../runtime-module/4-ic.html" class="internal">Instance Counting (in runtime)</a> plugin adds low-level properties
to improve run-time performance, but they have no names and cannot be referred
to or accessed by code written in Inform 7; they exist at the level of Inter only.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::complete_additions</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Plugins::Call::complete_model</span><span class="plain-syntax">(5);</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::stage_V</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="5-tmw.html#SP1" class="function-link"><span class="function-syntax">World::ask_plugins_at_stage</span></a><span class="plain-syntax">(</span><span class="constant-syntax">WORLD_STAGE_V</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="5-pp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-km.html">1</a></li><li class="progresschapter"><a href="2-ins.html">2</a></li><li class="progresschapter"><a href="3-prp.html">3</a></li><li class="progresschapter"><a href="4-is.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-inf.html">inf</a></li><li class="progresssection"><a href="5-pp.html">pp</a></li><li class="progresscurrent">cmw</li><li class="progresssection"><a href="5-cmw2.html">cmw2</a></li><li class="progresssection"><a href="5-ic.html">ic</a></li><li class="progressnext"><a href="5-cmw2.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="5-pp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-km.html">1</a></li><li class="progresschapter"><a href="2-ins.html">2</a></li><li class="progresschapter"><a href="3-prp.html">3</a></li><li class="progresschapter"><a href="4-is.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-inf.html">inf</a></li><li class="progresssection"><a href="5-pi.html">pi</a></li><li class="progresssection"><a href="5-ri.html">ri</a></li><li class="progresssection"><a href="5-pp.html">pp</a></li><li class="progresscurrent">tmw</li><li class="progressnextoff">&#10095;</li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -132,17 +132,10 @@ proposition to a set of facts concerning things in the model; as we have
seen, the model includes kinds, variables, instances and relations, and so
we need a unified type for "something you can know a fact about". That
type is called <a href="4-is.html#SP6" class="internal">inference_subject</a>. Each subject has its own list of known
facts: we call such a fact an <a href="5-inf.html#SP4" class="internal">inference</a> because it has (usually) been
facts: we call such a fact an <a href="5-inf.html#SP8" class="internal">inference</a> because it has (usually) been
inferred from a proposition.
</p>
<p class="commentary"><a href="2-ins.html" class="internal">Chapter 2: Instances and Variables</a> gives a general API for dealing with <a href="4-is.html" class="internal">Inference Subjects</a>,
and then works systematically through the various categories of these.
Kinds and binary predicates already exist from other modules (see
<a href="../kinds-module/2-knd.html" class="internal">Chapter 2: Kinds (in kinds)</a> and <a href="../calculus-module/3-bpf.html" class="internal">Chapter 3: Binary Predicates (in calculus)</a>
respectively), but <a href="2-ins.html" class="internal">Instances</a> and <a href="2-nv.html" class="internal">Nonlocal Variables</a> are new.
</p>
<p class="commentary"><a href="3-prp.html" class="internal">Chapter 3: Properties</a> implements our system of properties: each different value
or either-or property is a <a href="3-prp.html#SP1" class="internal">property</a> object. There might be a puritan
case for abolishing this type in favour of regarding either-or properties
@ -151,7 +144,16 @@ of <span class="extract"><span class="extract-syntax">binary_predicate</span></s
but I do not think this would clarify anything.
</p>
<p class="commentary">Finally, <a href="4-is.html" class="internal">Chapter 4: Subjects</a> builds the actual model.
<p class="commentary"><a href="4-is.html" class="internal">Chapter 4: Subjects</a> gives a general API for dealing with <a href="4-is.html" class="internal">Inference Subjects</a>,
and then works systematically through the various categories of these.
Kinds and binary predicates already exist from other modules (see
<a href="../kinds-module/2-knd.html" class="internal">Chapter 2: Kinds (in kinds)</a> and <a href="../calculus-module/3-bpf.html" class="internal">Chapter 3: Binary Predicates (in calculus)</a>
respectively), but <a href="2-ins.html" class="internal">Instances</a> and <a href="2-nv.html" class="internal">Nonlocal Variables</a> are new.
</p>
<p class="commentary">Finally, <a href="5-inf.html" class="internal">Chapter 5: Modelling</a> deals with the actual inferences, and with how the
model world is constructed. The core of Inform does nothing very interesting
here, but plugins from the <a href="../if-module/index.html" class="internal">if</a> module add some domain-specific savvy.
</p>
<nav role="progress"><div class="progresscontainer">

View file

@ -224,32 +224,32 @@
</li>
<li>
<p class="chapterentry"><a name="5"></a>
<span class="chaptertitle">Chapter 5: Model</span></p>
<span class="chaptertitle">Chapter 5: Modelling</span></p>
<ul class="sectionlist">
<li>
<p class="sectionentry"><a href="5-inf.html">
<spon class="sectiontitle">Inferences</span></a> -
<span class="sectionpurpose">To manage the individual pieces of information gathered, with varying degrees of certainty, from assertion sentences. This is mostly information about which objects have what properties.</span></p>
</li>
<li>
<p class="sectionentry"><a href="5-pi.html">
<spon class="sectiontitle">Property Inferences</span></a> -
<span class="sectionpurpose">Inferences that a property of something is true, or has a particular value.</span></p>
</li>
<li>
<p class="sectionentry"><a href="5-ri.html">
<spon class="sectiontitle">Relation Inferences</span></a> -
<span class="sectionpurpose">Inferences that a relation holds between two subjects or values.</span></p>
</li>
<li>
<p class="sectionentry"><a href="5-pp.html">
<spon class="sectiontitle">Property Permissions</span></a> -
<span class="sectionpurpose">To enforce the domain of properties: for instance, that a door can be open or closed but that an animal cannot, or that a person can have a carrying capacity but that a door cannot.</span></p>
</li>
<li>
<p class="sectionentry"><a href="5-cmw.html">
<spon class="sectiontitle">Complete Model World</span></a> -
<span class="sectionpurpose">Once the assertions have all been read and reduced to inferences, and all the creations have been made, we take stock; sometimes we spot inconsistencies, sometimes we make deductions, and we try to complete our picture of the model world.</span></p>
</li>
<li>
<p class="sectionentry"><a href="5-cmw2.html">
<spon class="sectiontitle">Compile Model World</span></a> -
<span class="sectionpurpose">To manage the compilation of the diverse run-time arrays and/or code needed to set up the initial state of the model world.</span></p>
</li>
<li>
<p class="sectionentry"><a href="5-ic.html">
<spon class="sectiontitle">Instance Counting</span></a> -
<span class="sectionpurpose">A plugin which maintains run-time-accessible linked lists of instances of kinds, in order to speed up loops; and instance counts within kinds, in order to speed up relation storage; and the object-kind hierarchy, in order to speed up run-time checking of the type safety of property usage.</span></p>
<p class="sectionentry"><a href="5-tmw.html">
<spon class="sectiontitle">The Model World</span></a> -
<span class="sectionpurpose">Once the assertions have all been read and reduced to inferences, we try to complete our model world.</span></p>
</li>
</ul>
</li>

View file

@ -617,7 +617,7 @@ insert them into the Inter stream close to the top.
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::exit</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::named_iname_constant</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Emit::named_iname_constant</span></span>:<br/>Text Literals - <a href="4-tl.html#SP13_2">&#167;13.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::named_iname_constant</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Emit::named_iname_constant</span></span>:<br/>Text Literals - <a href="4-tl.html#SP13_2">&#167;13.2</a><br/>Instance Counting - <a href="4-ic.html#SP9">&#167;9</a><br/>Relations at Run Time - <a href="4-rart.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::enter_home_of</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::define_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::kind_to_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>

View file

@ -1755,7 +1755,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::attach_new_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">super</span><span class="plain-syntax">, </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::make_iname_in</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_iname_in</span></span>:<br/>List Together - <a href="4-lt.html#SP2">&#167;2</a><br/>Jump Labels - <a href="4-jl.html#SP2">&#167;2</a><br/>Text Literals - <a href="4-tl.html#SP6">&#167;6</a>, <a href="4-tl.html#SP13_2">&#167;13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP4">&#167;4</a><br/>Responses - <a href="4-rsp.html#SP4">&#167;4</a>, <a href="4-rsp.html#SP5_1">&#167;5.1</a><br/>Constant Lists - <a href="4-cl.html#SP1">&#167;1</a><br/>Equations Support - <a href="4-es.html#SP1">&#167;1</a><br/>Test Scripts - <a href="4-ts2.html#SP2">&#167;2</a><br/>Adjectives - <a href="4-adj.html#SP2">&#167;2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP6">&#167;6</a>, <a href="4-rsfk.html#SP16_1_1">&#167;16.1.1</a>, <a href="4-rsfk.html#SP18">&#167;18</a><br/>Verbs at Run Time - <a href="4-vart.html#SP2">&#167;2</a><br/>Relations at Run Time - <a href="4-rart.html#SP1">&#167;1</a>, <a href="4-rart.html#SP4_1_2">&#167;4.1.2</a>, <a href="4-rart.html#SP9">&#167;9</a>, <a href="4-rart.html#SP9_3">&#167;9.3</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">&#167;2</a>, <a href="4-rsft.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::make_iname_in</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_iname_in</span></span>:<br/>List Together - <a href="4-lt.html#SP2">&#167;2</a><br/>Jump Labels - <a href="4-jl.html#SP2">&#167;2</a><br/>Text Literals - <a href="4-tl.html#SP6">&#167;6</a>, <a href="4-tl.html#SP13_2">&#167;13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP4">&#167;4</a><br/>Responses - <a href="4-rsp.html#SP4">&#167;4</a>, <a href="4-rsp.html#SP5_1">&#167;5.1</a><br/>Constant Lists - <a href="4-cl.html#SP1">&#167;1</a><br/>Equations Support - <a href="4-es.html#SP1">&#167;1</a><br/>Test Scripts - <a href="4-ts2.html#SP2">&#167;2</a><br/>Instance Counting - <a href="4-ic.html#SP9">&#167;9</a><br/>Adjectives - <a href="4-adj.html#SP2">&#167;2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP6">&#167;6</a>, <a href="4-rsfk.html#SP16_1_1">&#167;16.1.1</a>, <a href="4-rsfk.html#SP18">&#167;18</a><br/>Verbs at Run Time - <a href="4-vart.html#SP2">&#167;2</a><br/>Relations at Run Time - <a href="4-rart.html#SP1">&#167;1</a>, <a href="4-rart.html#SP4_1_2">&#167;4.1.2</a>, <a href="4-rart.html#SP9">&#167;9</a>, <a href="4-rart.html#SP9_3">&#167;9.3</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">&#167;2</a>, <a href="4-rsft.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::find_in_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -1763,7 +1763,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::find_in_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::derive_iname_in</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">derive_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::derive_iname_in</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::derive_iname_in</span></span>:<br/>Instance Counting - <a href="4-ic.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">derive_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::find_in_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">derive_from</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -1771,11 +1771,11 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::find_in_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::make_iname_with_memo</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_iname_with_memo</span></span>:<br/>Variables - <a href="4-vrb.html#SP4">&#167;4</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP16_1_1">&#167;16.1.1</a><br/>Noun Identifiers - <a href="4-ni.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::make_iname_with_memo</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_iname_with_memo</span></span>:<br/>Variables - <a href="4-vrb.html#SP4">&#167;4</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP16_1_1">&#167;16.1.1</a><br/>Noun Identifiers - <a href="4-ni.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::find_in_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::make_iname_with_memo_and_value</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_iname_with_memo_and_value</span></span>:<br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::make_iname_with_memo_and_value</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_iname_with_memo_and_value</span></span>:<br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HierarchyLocations::find_in_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">x</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
@ -1785,11 +1785,11 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::package_in_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::markup</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::markup</span></span>:<br/>Compilation Units - <a href="2-cu.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hm_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">value</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::markup</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::markup</span></span>:<br/>Compilation Units - <a href="2-cu.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hm_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">value</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::markup</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">hm_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::markup_wording</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::markup_wording</span></span>:<br/>Variables - <a href="4-vrb.html#SP4">&#167;4</a><br/>Instances - <a href="4-ins.html#SP1">&#167;1</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hm_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::markup_wording</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::markup_wording</span></span>:<br/>Variables - <a href="4-vrb.html#SP4">&#167;4</a><br/>Instances - <a href="4-ins.html#SP1">&#167;1</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hm_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">ANT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">ANT</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::markup</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">hm_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">ANT</span><span class="plain-syntax">);</span>

View file

@ -465,7 +465,7 @@ objects, if there is one; otherwise the first-declared meaning.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-ins.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresscurrent">adj</li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-rsfk.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-ic.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresscurrent">adj</li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-rsfk.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -160,7 +160,7 @@ the list!);
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-ct.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresscurrent">cl</li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-rtn.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-ct.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresscurrent">cl</li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-rtn.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -470,7 +470,7 @@ exceptional case.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-rsp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresscurrent">ct</li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-cl.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-rsp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresscurrent">ct</li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-cl.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -178,7 +178,7 @@ and author.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-rsfk.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresscurrent">efart</li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-ni.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-rsfk.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresscurrent">efart</li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-ni.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -89,7 +89,7 @@ they provide values different from each other and from all other functions.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-rtn.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresscurrent">es</li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-iti.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-rtn.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresscurrent">es</li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-iti.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -216,7 +216,7 @@ Inform's own version number), but it belongs nowhere else either, so:
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-abc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">fc</li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-i6i.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-abc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">fc</li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-i6i.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -315,7 +315,7 @@ requests, which, again, we do by instructing the Template code.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-fc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresscurrent">i6i</li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-lt.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-fc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresscurrent">i6i</li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-lt.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -56,9 +56,9 @@ MathJax = {
<li><a href="../core-module/index.html">core</a></li>
<li><a href="../assertions-module/index.html">assertions</a></li>
<li><a href="../values-module/index.html">values</a></li>
<li><a href="index.html"><span class="selectedlink">knowledge</span></a></li>
<li><a href="../knowledge-module/index.html">knowledge</a></li>
<li><a href="../imperative-module/index.html">imperative</a></li>
<li><a href="../runtime-module/index.html">runtime</a></li>
<li><a href="index.html"><span class="selectedlink">runtime</span></a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
@ -83,10 +83,10 @@ MathJax = {
<main role="main">
<!--Weave of 'Instance Counting' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#5">Chapter 5: Model</a></li><li><b>Instance Counting</b></li></ul></div>
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">runtime</a></li><li><a href="index.html#4">Chapter 4: Compilation Utilities</a></li><li><b>Instance Counting</b></li></ul></div>
<p class="purpose">A plugin which maintains run-time-accessible linked lists of instances of kinds, in order to speed up loops; and instance counts within kinds, in order to speed up relation storage; and the object-kind hierarchy, in order to speed up run-time checking of the type safety of property usage.</p>
<ul class="toc"><li><a href="5-ic.html#SP3">&#167;3. Plugin startup</a></li><li><a href="5-ic.html#SP4">&#167;4. Initialising</a></li><li><a href="5-ic.html#SP5">&#167;5. Computing instance counts</a></li><li><a href="5-ic.html#SP7">&#167;7. Instance sequences</a></li><li><a href="5-ic.html#SP9">&#167;9. Inform 6 representation</a></li><li><a href="5-ic.html#SP13">&#167;13. Memory estimation</a></li><li><a href="5-ic.html#SP14">&#167;14. Loop optimisation</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="4-ic.html#SP3">&#167;3. Plugin startup</a></li><li><a href="4-ic.html#SP4">&#167;4. Initialising</a></li><li><a href="4-ic.html#SP5">&#167;5. Computing instance counts</a></li><li><a href="4-ic.html#SP7">&#167;7. Instance sequences</a></li><li><a href="4-ic.html#SP9">&#167;9. Inform 6 representation</a></li><li><a href="4-ic.html#SP13">&#167;13. Memory estimation</a></li><li><a href="4-ic.html#SP14">&#167;14. Loop optimisation</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>Every subject contains a pointer to its own unique copy of the following
structure, but it only has relevance if the subject represents an object:
@ -96,8 +96,8 @@ structure, but it only has relevance if the subject represents an object:
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">counting_data</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instance_count_prop</span><span class="plain-syntax">; </span><span class="comment-syntax"> the (</span><span class="extract"><span class="extract-syntax">I6</span></span><span class="comment-syntax"> only) IK-Count property for this kind</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instance_link_prop</span><span class="plain-syntax">; </span><span class="comment-syntax"> the (</span><span class="extract"><span class="extract-syntax">I6</span></span><span class="comment-syntax"> only) IK-Link property for this kind</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instance_count_prop</span><span class="plain-syntax">; </span><span class="comment-syntax"> the (</span><span class="extract"><span class="extract-syntax">I6</span></span><span class="comment-syntax"> only) IK-Count property for this kind</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instance_link_prop</span><span class="plain-syntax">; </span><span class="comment-syntax"> the (</span><span class="extract"><span class="extract-syntax">I6</span></span><span class="comment-syntax"> only) IK-Link property for this kind</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">has_instances</span><span class="plain-syntax">; </span><span class="comment-syntax"> are there any instances of this kind?</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">counting_data</span><span class="plain-syntax">;</span>
@ -109,29 +109,29 @@ route-finding through relations on objects.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P_vector</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P_KD_Count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> see below</span>
<span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P_vector</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P_KD_Count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> see below</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Plugin startup. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_SUBJECT_NOTIFY</span><span class="plain-syntax">, </span><a href="5-ic.html#SP4" class="function-link"><span class="function-syntax">PL::Counting::counting_new_subject_notify</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax">, </span><a href="5-ic.html#SP11" class="function-link"><span class="function-syntax">PL::Counting::counting_complete_model</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_COMPILE_MODEL_TABLES</span><span class="plain-syntax">, </span><a href="5-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::counting_compile_model_tables</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ESTIMATE_PROPERTY_USAGE</span><span class="plain-syntax">, </span><a href="5-ic.html#SP13" class="function-link"><span class="function-syntax">PL::Counting::counting_estimate_property_usage</span></a><span class="plain-syntax">);</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::start</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::start</span></span>:<br/>Plugins - <a href="4-plg.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_NEW_SUBJECT_NOTIFY</span><span class="plain-syntax">, </span><a href="4-ic.html#SP4" class="function-link"><span class="function-syntax">PL::Counting::counting_new_subject_notify</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax">, </span><a href="4-ic.html#SP11" class="function-link"><span class="function-syntax">PL::Counting::counting_complete_model</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_COMPILE_MODEL_TABLES</span><span class="plain-syntax">, </span><a href="4-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::counting_compile_model_tables</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_ESTIMATE_PROPERTY_USAGE</span><span class="plain-syntax">, </span><a href="4-ic.html#SP13" class="function-link"><span class="function-syntax">PL::Counting::counting_estimate_property_usage</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Initialising. </b>Counting data is actually relevant only for kinds, and remains blank for instances.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::counting_new_subject_notify</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::counting_new_subject_notify</span></span>:<br/><a href="5-ic.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ATTACH_PLUGIN_DATA_TO_SUBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">counting</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><a href="5-ic.html#SP4" class="function-link"><span class="function-syntax">PL::Counting::new_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">));</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::counting_new_subject_notify</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::counting_new_subject_notify</span></span>:<br/><a href="4-ic.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ATTACH_PLUGIN_DATA_TO_SUBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">counting</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><a href="4-ic.html#SP4" class="function-link"><span class="function-syntax">PL::Counting::new_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">counting_data</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::new_data</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">counting_data</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::new_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">counting_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">counting_data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">instance_count_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">instance_link_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -150,27 +150,27 @@ numbered 0.
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">INSTANCE_COUNT</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_instance_counts</span><span class="plain-syntax">[(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">*</span><span class="identifier-syntax">max_kind_instance_count</span><span class="plain-syntax"> +</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTKinds::I6_classnumber</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)]</span>
<span class="plain-syntax"> </span><a href="4-rsfk.html#SP3" class="function-link"><span class="function-syntax">RTKinds::I6_classnumber</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)]</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kind_instance_counts</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max_kind_instance_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::make_instance_counts</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::make_instance_counts</span></span>:<br/><a href="5-ic.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ic.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Allocate the instance count array in memory</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ic.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Compute the instance count array</span><span class="named-paragraph-number">5.2</span></a></span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::make_instance_counts</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::make_instance_counts</span></span>:<br/><a href="4-ic.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ic.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Allocate the instance count array in memory</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ic.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Compute the instance count array</span><span class="named-paragraph-number">5.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>&#167;5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Allocate the instance count array in memory</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">max_kind_instance_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">max_kind_instance_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_instance_counts</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::calloc</span><span class="plain-syntax">(</span><span class="identifier-syntax">max_kind_instance_count</span><span class="plain-syntax">*</span><span class="identifier-syntax">max_kind_instance_count</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="constant-syntax">INSTANCE_COUNTING_MREASON</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">INSTANCE_COUNTING_MREASON</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-ic.html#SP5">&#167;5</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="4-ic.html#SP5">&#167;5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5_2" class="paragraph-anchor"></a><b>&#167;5.2. </b>The following is quadratic in the number of objects, but this has never been
a problem in practice; the number seldom exceeds a few hundred.
</p>
@ -179,7 +179,7 @@ a problem in practice; the number seldom exceeds a few hundred.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BASE_KINDS</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">))</span>
@ -193,12 +193,12 @@ a problem in practice; the number seldom exceeds a few hundred.
<span class="plain-syntax"> </span><span class="identifier-syntax">INSTANCE_COUNT</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">) = </span><span class="identifier-syntax">ix_count</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-ic.html#SP5">&#167;5</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="4-ic.html#SP5">&#167;5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. </b>Instance counts are actually useful to several other plugins, so we provide:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::instance_count</span><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::instance_count</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kind_instance_counts</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"instance counts not available"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"instance counts available only for objects"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">INSTANCE_COUNT</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
@ -218,17 +218,17 @@ an explicit player.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::next_instance_of</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::next_instance_of</span></span>:<br/><a href="5-ic.html#SP8">&#167;8</a>, <a href="5-ic.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::next_instance_of</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::next_instance_of</span></span>:<br/><a href="4-ic.html#SP8">&#167;8</a>, <a href="4-ic.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">resuming</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="constant-syntax">FIRST_IN_INSTANCE_ORDERING</span><span class="plain-syntax">; </span><span class="identifier-syntax">resuming</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FIRST_IN_INSTANCE_ORDERING</span><span class="plain-syntax">; </span><span class="identifier-syntax">resuming</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">resuming</span><span class="plain-syntax">) </span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEXT_IN_INSTANCE_ORDERING</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">resuming</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-is.html#SP8" class="function-link"><span class="function-syntax">InferenceSubjects::aliased_but_diverted</span></a><span class="plain-syntax">(</span><a href="2-ins.html#SP6" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">InferenceSubjects::aliased_but_diverted</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">selfobj</span></span><span class="comment-syntax"> may not count</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-ins.html#SP10" class="function-link"><span class="function-syntax">Instances::of_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -237,8 +237,8 @@ an explicit player.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::next_instance_of_as_value</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::next_instance_of_as_value</span></span>:<br/><a href="5-ic.html#SP11_3_3">&#167;11.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><a href="5-ic.html#SP7" class="function-link"><span class="function-syntax">PL::Counting::next_instance_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</span><span class="plain-syntax">);</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::next_instance_of_as_value</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::next_instance_of_as_value</span></span>:<br/><a href="4-ic.html#SP11_3_3">&#167;11.3.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><a href="4-ic.html#SP7" class="function-link"><span class="function-syntax">PL::Counting::next_instance_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">next</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">next</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::new_nothing_object_constant</span><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
@ -256,51 +256,51 @@ since Inform always compiles code which knows which kind it's looping over.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::first_instance</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::first_instance</span></span>:<br/><a href="5-ic.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::first_instance</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::first_instance</span></span>:<br/><a href="4-ic.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Constructors::first_instance_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::derive_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">FIRST_INSTANCE_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTKinds::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::derive_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">FIRST_INSTANCE_HL</span><span class="plain-syntax">, </span><a href="4-rsfk.html#SP25" class="function-link"><span class="function-syntax">RTKinds::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Constructors::set_first_instance_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::next_instance</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::next_instance</span></span>:<br/><a href="5-ic.html#SP11_2">&#167;11.2</a>, <a href="5-ic.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::next_instance</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::next_instance</span></span>:<br/><a href="4-ic.html#SP11_2">&#167;11.2</a>, <a href="4-ic.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Constructors::next_instance_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::derive_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEXT_INSTANCE_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTKinds::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::derive_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">NEXT_INSTANCE_HL</span><span class="plain-syntax">, </span><a href="4-rsfk.html#SP25" class="function-link"><span class="function-syntax">RTKinds::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Constructors::set_next_instance_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::instance_count_iname</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::instance_count_iname</span></span>:<br/><a href="5-ic.html#SP11_2">&#167;11.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RTKinds::I6_classnumber</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">COUNT_INSTANCE_1_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">COUNT_INSTANCE_2_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">3</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">COUNT_INSTANCE_3_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">4</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">COUNT_INSTANCE_4_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">5</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">COUNT_INSTANCE_5_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">6</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">COUNT_INSTANCE_6_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">7</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">COUNT_INSTANCE_7_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">8</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">COUNT_INSTANCE_8_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">9</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">COUNT_INSTANCE_9_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">10</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">COUNT_INSTANCE_10_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::derive_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">COUNT_INSTANCE_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTKinds::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::instance_count_iname</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::instance_count_iname</span></span>:<br/><a href="4-ic.html#SP11_2">&#167;11.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><a href="4-rsfk.html#SP3" class="function-link"><span class="function-syntax">RTKinds::I6_classnumber</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COUNT_INSTANCE_1_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COUNT_INSTANCE_2_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">3</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COUNT_INSTANCE_3_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">4</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COUNT_INSTANCE_4_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">5</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COUNT_INSTANCE_5_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">6</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COUNT_INSTANCE_6_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">7</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COUNT_INSTANCE_7_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">8</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COUNT_INSTANCE_8_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">9</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COUNT_INSTANCE_9_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">10</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COUNT_INSTANCE_10_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::derive_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COUNT_INSTANCE_HL</span><span class="plain-syntax">, </span><a href="4-rsfk.html#SP25" class="function-link"><span class="function-syntax">RTKinds::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::counting_compile_model_tables</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::counting_compile_model_tables</span></span>:<br/><a href="5-ic.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::counting_compile_model_tables</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::counting_compile_model_tables</span></span>:<br/><a href="4-ic.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BASE_KINDS</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="5-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::first_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><a href="5-ic.html#SP7" class="function-link"><span class="function-syntax">PL::Counting::next_instance_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="4-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::first_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><a href="4-ic.html#SP7" class="function-link"><span class="function-syntax">PL::Counting::next_instance_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">next</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_iname_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTInstances::emitted_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">next</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_iname_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><a href="4-ins.html#SP4" class="function-link"><span class="function-syntax">RTInstances::emitted_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">next</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_iname_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_iname_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -310,7 +310,7 @@ since Inform always compiles code which knows which kind it's looping over.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::kind_of_object_count</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::kind_of_object_count</span></span>:<br/><a href="5-ic.html#SP11_3_1">&#167;11.3.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::kind_of_object_count</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::kind_of_object_count</span></span>:<br/><a href="4-ic.html#SP11_3_1">&#167;11.3.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IK</span><span class="plain-syntax">;</span>
@ -341,14 +341,14 @@ of model completion:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::counting_complete_model</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::counting_complete_model</span></span>:<br/><a href="5-ic.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ic.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">Create and assert zero values of the vector property</span><span class="named-paragraph-number">11.1</span></a></span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::counting_complete_model</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::counting_complete_model</span></span>:<br/><a href="4-ic.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ic.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">Create and assert zero values of the vector property</span><span class="named-paragraph-number">11.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="constant-syntax">4</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ic.html#SP11_2" class="named-paragraph-link"><span class="named-paragraph">Create the two instance properties for each kind of object</span><span class="named-paragraph-number">11.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="5-ic.html#SP5" class="function-link"><span class="function-syntax">PL::Counting::make_instance_counts</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ic.html#SP11_3" class="named-paragraph-link"><span class="named-paragraph">Assert values of the two instance properties for each instance</span><span class="named-paragraph-number">11.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_V</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ic.html#SP11_2" class="named-paragraph-link"><span class="named-paragraph">Create the two instance properties for each kind of object</span><span class="named-paragraph-number">11.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="4-ic.html#SP5" class="function-link"><span class="function-syntax">PL::Counting::make_instance_counts</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ic.html#SP11_3" class="named-paragraph-link"><span class="named-paragraph">Assert values of the two instance properties for each instance</span><span class="named-paragraph-number">11.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -361,14 +361,14 @@ for the relation-route-finding code at run time.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">P_vector</span><span class="plain-syntax"> = </span><a href="3-vp.html#SP3" class="function-link"><span class="function-syntax">Properties::Valued::new_nameless</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"vector"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_vector</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::Valued::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"vector"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">zero</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_int</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="3-vp.html#SP10" class="function-link"><span class="function-syntax">Properties::Valued::assert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P_vector</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-ins.html#SP6" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">zero</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_vector</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">zero</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-ic.html#SP11">&#167;11</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="4-ic.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_2" class="paragraph-anchor"></a><b>&#167;11.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create the two instance properties for each kind of object</span><span class="named-paragraph-number">11.2</span></span><span class="comment-syntax"> =</span>
</p>
@ -376,40 +376,40 @@ for the relation-route-finding code at run time.
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BASE_KINDS</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">count_iname</span><span class="plain-syntax"> = </span><a href="5-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::instance_count_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">count_iname</span><span class="plain-syntax"> = </span><a href="4-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::instance_count_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">COUNTING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">instance_count_prop</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="3-vp.html#SP3" class="function-link"><span class="function-syntax">Properties::Valued::new_nameless_using</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">count_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::new_nameless_using</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">count_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_iname</span><span class="plain-syntax"> = </span><a href="5-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::next_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_iname</span><span class="plain-syntax"> = </span><a href="4-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::next_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">COUNTING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">instance_link_prop</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="3-vp.html#SP3" class="function-link"><span class="function-syntax">Properties::Valued::new_nameless_using</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">next_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::new_nameless_using</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">next_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_KD_Count</span><span class="plain-syntax"> = </span><a href="3-vp.html#SP3" class="function-link"><span class="function-syntax">Properties::Valued::new_nameless</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"KD_Count"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_KD_Count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::Valued::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"KD_Count"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-ic.html#SP11">&#167;11</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="4-ic.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_3" class="paragraph-anchor"></a><b>&#167;11.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert values of the two instance properties for each instance</span><span class="named-paragraph-number">11.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ic.html#SP11_3_1" class="named-paragraph-link"><span class="named-paragraph">Fill in the special IK0-Count property</span><span class="named-paragraph-number">11.3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><a href="2-ins.html#SP10" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ic.html#SP11_3_1" class="named-paragraph-link"><span class="named-paragraph">Fill in the special IK0-Count property</span><span class="named-paragraph-number">11.3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::narrowest_broader_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">COUNTING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">has_instances</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ic.html#SP11_3_2" class="named-paragraph-link"><span class="named-paragraph">Fill in this IK-Count property</span><span class="named-paragraph-number">11.3.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ic.html#SP11_3_3" class="named-paragraph-link"><span class="named-paragraph">Fill in this IK-Link property</span><span class="named-paragraph-number">11.3.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ic.html#SP11_3_2" class="named-paragraph-link"><span class="named-paragraph">Fill in this IK-Count property</span><span class="named-paragraph-number">11.3.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ic.html#SP11_3_3" class="named-paragraph-link"><span class="named-paragraph">Fill in this IK-Link property</span><span class="named-paragraph-number">11.3.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-ic.html#SP11">&#167;11</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="4-ic.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_3_1" class="paragraph-anchor"></a><b>&#167;11.3.1. </b>As noted above, <span class="extract"><span class="extract-syntax">KD_Count</span></span> is a special case. This looks as if it should be
the instance count of "kind" itself, but that would be useless, since no
instance object can ever have kind "kind" &mdash; instances aren't kinds.
@ -426,12 +426,12 @@ usage is legal.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ic</span><span class="plain-syntax"> = </span><a href="5-ic.html#SP10" class="function-link"><span class="function-syntax">PL::Counting::kind_of_object_count</span></a><span class="plain-syntax">(</span><a href="2-ins.html#SP10" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ic</span><span class="plain-syntax"> = </span><a href="4-ic.html#SP10" class="function-link"><span class="function-syntax">PL::Counting::kind_of_object_count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">the_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">ic</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-vp.html#SP10" class="function-link"><span class="function-syntax">Properties::Valued::assert</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_KD_Count</span><span class="plain-syntax">, </span><a href="2-ins.html#SP6" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">the_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_KD_Count</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">the_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-ic.html#SP11_3">&#167;11.3</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="4-ic.html#SP11_3">&#167;11.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_3_2" class="paragraph-anchor"></a><b>&#167;11.3.2. </b>And otherwise, for every kind that the instance belongs to (directly or
indirectly) it gets the relevant instance count as a property value. For
example, the red door might have <span class="extract"><span class="extract-syntax">IK4_Count</span></span> set to 3 &mdash; it's door number 3,
@ -446,11 +446,11 @@ and so on for all other kinds.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ic</span><span class="plain-syntax"> = </span><span class="identifier-syntax">INSTANCE_COUNT</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">the_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">ic</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-vp.html#SP10" class="function-link"><span class="function-syntax">Properties::Valued::assert</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">COUNTING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">instance_count_prop</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-ins.html#SP6" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">the_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">the_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-ic.html#SP11_3">&#167;11.3</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="4-ic.html#SP11_3">&#167;11.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_3_3" class="paragraph-anchor"></a><b>&#167;11.3.3. </b>The IK-Link property is never set for kind 0, so there's no special case. It
records the next instance in compilation order:
</p>
@ -459,19 +459,19 @@ records the next instance in compilation order:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="3-vp.html#SP10" class="function-link"><span class="function-syntax">Properties::Valued::assert</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">COUNTING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">instance_link_prop</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-ins.html#SP6" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><a href="5-ic.html#SP8" class="function-link"><span class="function-syntax">PL::Counting::next_instance_of_as_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><a href="4-ic.html#SP8" class="function-link"><span class="function-syntax">PL::Counting::next_instance_of_as_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-ic.html#SP11_3">&#167;11.3</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="4-ic.html#SP11_3">&#167;11.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::instance_count_property_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Counting::instance_count_property_symbol</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::instance_count_property_symbol</span></span>:<br/>Relations at Run Time - <a href="4-rart.html#SP9_2">&#167;9.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">COUNTING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">instance_count_prop</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">COUNTING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">instance_count_prop</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Properties::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -481,11 +481,11 @@ per instance per kind, so:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::counting_estimate_property_usage</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::counting_estimate_property_usage</span></span>:<br/><a href="5-ic.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">words_used</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k2</span><span class="plain-syntax"> = </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::counting_estimate_property_usage</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">PL::Counting::counting_estimate_property_usage</span></span>:<br/><a href="4-ic.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">words_used</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::narrowest_broader_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::narrowest_broader_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">k2</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">words_used</span><span class="plain-syntax"> += </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
@ -499,21 +499,21 @@ constants, and use the Link constants to progress; we stop at <span class="extra
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Counting::optimise_loop</span><span class="plain-syntax">(</span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Plugins::Manage::plugged_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">counting_plugin</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-plg.html#SP14" class="function-link"><span class="function-syntax">Plugins::Manage::plugged_in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">counting_plugin</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">COUNTING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">has_instances</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="comment-syntax"> (to avoid writing misleading code)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"for (*1=nothing: false: )"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">first_iname</span><span class="plain-syntax"> = </span><a href="5-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::first_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_iname</span><span class="plain-syntax"> = </span><a href="5-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::next_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">first_iname</span><span class="plain-syntax"> = </span><a href="4-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::first_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_iname</span><span class="plain-syntax"> = </span><a href="4-ic.html#SP9" class="function-link"><span class="function-syntax">PL::Counting::next_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"for (*1=%n: *1: *1=*1.%n)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">first_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">next_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="5-cmw2.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-km.html">1</a></li><li class="progresschapter"><a href="2-ins.html">2</a></li><li class="progresschapter"><a href="3-prp.html">3</a></li><li class="progresschapter"><a href="4-is.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-inf.html">inf</a></li><li class="progresssection"><a href="5-pp.html">pp</a></li><li class="progresssection"><a href="5-cmw.html">cmw</a></li><li class="progresssection"><a href="5-cmw2.html">cmw2</a></li><li class="progresscurrent">ic</li><li class="progressnextoff">&#10095;</li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-ins.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresscurrent">ic</li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-adj.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -144,7 +144,7 @@ declarations) and finally return <span class="extract"><span class="extract-synt
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Emit::emit_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::emitted_iname</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">RTInstances::emitted_iname</span></span>:<br/>Emitting Inter - <a href="2-emt.html#SP3">&#167;3</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::emitted_iname</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">RTInstances::emitted_iname</span></span>:<br/>Emitting Inter - <a href="2-emt.html#SP3">&#167;3</a><br/>Instance Counting - <a href="4-ic.html#SP9">&#167;9</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_emitted</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
@ -160,7 +160,7 @@ declarations) and finally return <span class="extract"><span class="extract-synt
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-vrb.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresscurrent">ins</li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-adj.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-vrb.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresscurrent">ins</li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-ic.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -563,7 +563,7 @@ only and may change at any time without notice.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-itc.html#SP7">&#167;7</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-ts2.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresscurrent">itc</li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-uoart.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-ts2.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresscurrent">itc</li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-uoart.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -420,7 +420,7 @@ time.) <span class="extract"><span class="extract-syntax">{-index:name}</span></
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-es.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresscurrent">iti</li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-plg.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-es.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresscurrent">iti</li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-plg.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -202,7 +202,7 @@ specification <span class="extract"><span class="extract-syntax">--&gt; 0</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-lt.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresscurrent">jl</li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-tl.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-lt.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresscurrent">jl</li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-tl.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -1551,7 +1551,7 @@ the sorting measure.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-rart.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresscurrent">lpart</li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-rsft.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-rart.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresscurrent">lpart</li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-rsft.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -182,7 +182,7 @@ is significant to the run-time list-printing code.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-lt.html#SP3">&#167;3</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-i6i.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresscurrent">lt</li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-jl.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-i6i.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresscurrent">lt</li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-jl.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -159,7 +159,7 @@ instance, the Standard Rules want the player-character object to be called
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-efart.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresscurrent">ni</li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-vart.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-efart.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresscurrent">ni</li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-vart.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -81,6 +81,7 @@ function togglePopup(material_id) {
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_NEW_VARIABLE_NOTIFY</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_IRREGULAR_GENITIVE</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_SET_KIND_NOTIFY</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</span><span class="plain-syntax"> </span><span class="constant-syntax">10</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax"> </span><span class="constant-syntax">11</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_PARSE_COMPOSITE_NQS</span><span class="plain-syntax"> </span><span class="constant-syntax">12</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_REFINE_IMPLICIT_NOUN</span><span class="plain-syntax"> </span><span class="constant-syntax">14</span>
@ -228,8 +229,12 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_SET_SUBKIND_NOTIFY</span><span class="plain-syntax">, </span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="identifier-syntax">super</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Plugins::Call::create_inference_families</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALLV</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Plugins::Call::complete_model</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::diversion_off</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::diversion_off</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax">, </span><span class="identifier-syntax">stage</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -331,7 +336,7 @@ function togglePopup(material_id) {
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-plg.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresscurrent">pc</li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-ts2.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-plg.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresscurrent">pc</li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-ts2.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -242,7 +242,7 @@ present.
<span class="plain-syntax"> </span><span class="identifier-syntax">CREATE_STARTLESS_PLUGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">IF_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">IF_PLUGIN_NAME</span><span class="plain-syntax">, </span><span class="constant-syntax">IF_PLUGIN_NAME</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CREATE_STARTLESS_PLUGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">multimedia_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">MULTIMEDIA_PLUGIN_NAME</span><span class="plain-syntax">, </span><span class="constant-syntax">MULTIMEDIA_PLUGIN_NAME</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CREATE_PLUGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">counting_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Counting::start</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">INSTANCE_COUNTING_PLUGIN_NAME</span><span class="plain-syntax">, </span><span class="constant-syntax">CORE_PLUGIN_NAME</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CREATE_PLUGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">counting_plugin</span><span class="plain-syntax">, </span><a href="4-ic.html#SP3" class="function-link"><span class="function-syntax">PL::Counting::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">INSTANCE_COUNTING_PLUGIN_NAME</span><span class="plain-syntax">, </span><span class="constant-syntax">CORE_PLUGIN_NAME</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CREATE_PLUGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">naming_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Naming::start</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">NAMING_PLUGIN_NAME</span><span class="plain-syntax">, </span><span class="constant-syntax">CORE_PLUGIN_NAME</span><span class="plain-syntax">);</span>
@ -462,12 +462,12 @@ with the following.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">".\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Plugins::Manage::plugged_in</span><span class="plain-syntax">(</span><span class="reserved-syntax">plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Plugins::Manage::plugged_in</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Plugins::Manage::plugged_in</span></span>:<br/>Instance Counting - <a href="4-ic.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">now_plugged_in</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-iti.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresscurrent">plg</li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-pc.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-iti.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresscurrent">plg</li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-pc.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -1317,10 +1317,10 @@ this is done by the routine <span class="extract"><span class="extract-syntax">R
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">right_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BinaryPredicates::term_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">left_kind</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">left_count</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Counting::instance_count_property_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">left_kind</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><a href="4-ic.html#SP12" class="function-link"><span class="function-syntax">PL::Counting::instance_count_property_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_kind</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">(0);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">right_kind</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">right_count</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Counting::instance_count_property_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">right_kind</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><a href="4-ic.html#SP12" class="function-link"><span class="function-syntax">PL::Counting::instance_count_property_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_kind</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">(0);</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">left_count</span><span class="plain-syntax">);</span>
@ -1433,9 +1433,9 @@ to send the pairs in that row in any order.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">World::Inferences::bp_as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">ARBITRARY_RELATION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inferences::bp_as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">, *</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">) </span><span class="identifier-syntax">row_flags</span><span class="plain-syntax">[</span><a href="4-rart.html#SP11" class="function-link"><span class="function-syntax">RTRelations::get_relation_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">)] = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
@ -2153,9 +2153,9 @@ matches the specific necessary kind of object if there is one.
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="4-rtn.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><span class="plain-syntax">(</span><a href="4-rart.html#SP1" class="function-link"><span class="function-syntax">RTRelations::initialiser_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rtiname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RELATIONTEST_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">World::Inferences::bp_as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">ARBITRARY_RELATION_INF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inferences::bp_as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">World::Inferences::get_references_spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references_spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="4-rart.html#SP1" class="function-link"><span class="function-syntax">RTRelations::mark_as_needed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_call_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">rtiname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
@ -2175,7 +2175,7 @@ matches the specific necessary kind of object if there is one.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-vart.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresscurrent">rart</li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-lpart.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-vart.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresscurrent">rart</li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-lpart.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -131,7 +131,7 @@ kinds being compiled to an I6 <span class="extract"><span class="extract-syntax"
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::I6_classnumber</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">RTKinds::I6_classnumber</span></span>:<br/><a href="4-rsfk.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::I6_classnumber</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">RTKinds::I6_classnumber</span></span>:<br/><a href="4-rsfk.html#SP26">&#167;26</a><br/>Instance Counting - <a href="4-ic.html#SP5">&#167;5</a>, <a href="4-ic.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Behaviour::get_range_number</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -1129,7 +1129,7 @@ each such kind, and needed at run-time.
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_KIND_ARITY</span><span class="plain-syntax"> </span><span class="constant-syntax">32</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKinds::iname</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">RTKinds::iname</span></span>:<br/><a href="4-rsfk.html#SP3">&#167;3</a>, <a href="4-rsfk.html#SP27">&#167;27</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKinds::iname</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">RTKinds::iname</span></span>:<br/><a href="4-rsfk.html#SP3">&#167;3</a>, <a href="4-rsfk.html#SP27">&#167;27</a><br/>Instance Counting - <a href="4-ic.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-rsfk.html#SP24" class="function-link"><span class="function-syntax">RTKinds::base_represented_in_inter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">kind_interaction</span><span class="plain-syntax"> *</span><span class="identifier-syntax">KI</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">KI</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_interaction</span><span class="plain-syntax">)</span>
@ -2225,7 +2225,7 @@ particular order.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-adj.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresscurrent">rsfk</li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-efart.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-adj.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresscurrent">rsfk</li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-efart.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -541,7 +541,7 @@ should return <span class="extract"><span class="extract-syntax">FALSE</span></s
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-lpart.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresscurrent">rsft</li><li class="progressnextoff">&#10095;</li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-lpart.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresscurrent">rsft</li><li class="progressnextoff">&#10095;</li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -697,7 +697,7 @@ text needs to be printed in a particular way.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-rsp.html#SP11_1">&#167;11.1</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-ts.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresscurrent">rsp</li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-ct.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-ts.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresscurrent">rsp</li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-ct.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -307,7 +307,7 @@ after the call parameters, and is used only as a scratch variable.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-rtn.html#SP4">&#167;4</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-cl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresscurrent">rtn</li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-es.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-cl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresscurrent">rtn</li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-es.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -445,7 +445,7 @@ number <span class="extract"><span class="extract-syntax">-1</span></span>).
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-jl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresscurrent">tl</li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-ts.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-jl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresscurrent">tl</li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-ts.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -460,7 +460,7 @@ we aren't doing very much; most TSs will be passed quickly over.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-tl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresscurrent">ts</li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-rsp.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-tl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresscurrent">ts</li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-rsp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -297,7 +297,7 @@ stipulations on place and possessions attached.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-pc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresscurrent">ts2</li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-itc.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-pc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresscurrent">ts2</li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-itc.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -169,7 +169,7 @@ hacky constructs which only the SR should ever refer to.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-uoart.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresscurrent">tv</li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-vrb.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-uoart.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresscurrent">tv</li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-vrb.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -205,7 +205,7 @@ source code: see the DM4 for details.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-itc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresscurrent">uoart</li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-tv.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-itc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresscurrent">uoart</li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-tv.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -649,7 +649,7 @@ usages to the debugging log.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-ni.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresscurrent">vart</li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-rart.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-ni.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresscurrent">vart</li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-rart.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -476,7 +476,7 @@ which makes its kind safe. Hence the error messages.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-vrb.html#SP6">&#167;6</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-tv.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresscurrent">vrb</li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-ins.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-tv.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-plg.html">plg</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresscurrent">vrb</li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progressnext"><a href="4-ins.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -243,6 +243,11 @@
<spon class="sectiontitle">Instances</span></a> -
<span class="sectionpurpose">To compile run-time support for instances.</span></p>
</li>
<li>
<p class="sectionentry"><a href="4-ic.html">
<spon class="sectiontitle">Instance Counting</span></a> -
<span class="sectionpurpose">A plugin which maintains run-time-accessible linked lists of instances of kinds, in order to speed up loops; and instance counts within kinds, in order to speed up relation storage; and the object-kind hierarchy, in order to speed up run-time checking of the type safety of property usage.</span></p>
</li>
<li>
<p class="sectionentry"><a href="4-adj.html">
<spon class="sectiontitle">Adjectives</span></a> -

View file

@ -1,14 +1,14 @@
Total memory consumption was 258318K = 252 MB
Total memory consumption was 258538K = 252 MB
62.5% was used for 1333781 objects, in 275500 frames in 202 x 800K = 161600K = 157 MB:
62.5% was used for 1336464 objects, in 278183 frames in 202 x 800K = 161600K = 157 MB:
9.8% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
5.5% text_stream_array 2592 x 100 = 259200 objects, 14598144 bytes
3.9% parse_node 129993 objects, 10399440 bytes
2.8% verb_conjugation 160 objects, 7425280 bytes
2.6% parse_node_annotation_array 431 x 500 = 215500 objects, 6909792 bytes
2.4% linked_list 11741 objects, 6574960 bytes
2.3% inter_symbol_array 70 x 1024 = 71680 objects, 6310080 bytes
2.2% linked_list 10403 objects, 5825680 bytes
1.2% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes
1.1% map_data 668 objects, 3168992 bytes
0.9% kind_array 65 x 1000 = 65000 objects, 2602080 bytes
@ -41,7 +41,7 @@ Total memory consumption was 258318K = 252 MB
0.1% noun 2379 objects, 285480 bytes
---- action_name_list_array 3 x 1000 = 3000 objects, 240096 bytes
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
---- inference 1703 objects, 177112 bytes
---- inference 1703 objects, 163488 bytes
---- linguistic_stock_item 3315 objects, 159120 bytes
---- binary_predicate 321 objects, 156648 bytes
---- stacked_variable_owner_list_array 38 x 100 = 3800 objects, 153216 bytes
@ -66,6 +66,7 @@ Total memory consumption was 258318K = 252 MB
---- ph_stack_frame_box 577 objects, 55392 bytes
---- property_permission 96 objects, 55296 bytes
---- kind_constructor 77 objects, 54824 bytes
---- property_inference_data 1315 objects, 52600 bytes
---- text_substitution 436 objects, 48832 bytes
---- grammar_line 230 objects, 46000 bytes
---- table 7 objects, 45528 bytes
@ -88,15 +89,15 @@ Total memory consumption was 258318K = 252 MB
---- nonlocal_variable 93 objects, 19344 bytes
---- action_name 90 objects, 18720 bytes
---- parse_node_tree 20 objects, 17280 bytes
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
---- match_avinue_array 1 x 1000 objects, 16032 bytes
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
---- to_phrase_request 59 objects, 15576 bytes
---- method 317 objects, 15216 bytes
---- method 323 objects, 15504 bytes
---- adjective 137 objects, 14248 bytes
---- plugin 23 objects, 13432 bytes
---- literal_text 147 objects, 12936 bytes
---- adjective_iname_holder 320 objects, 12800 bytes
---- stopwatch_timer 148 objects, 11840 bytes
---- stopwatch_timer 150 objects, 12000 bytes
---- understanding_reference_array 2 x 100 = 200 objects, 11264 bytes
---- pathname 262 objects, 10480 bytes
---- filename 208 objects, 8320 bytes
@ -112,31 +113,31 @@ Total memory consumption was 258318K = 252 MB
---- parsing_pp_data 96 objects, 4608 bytes
---- build_vertex 40 objects, 4480 bytes
---- hierarchy_attachment_point 48 objects, 4224 bytes
---- stacked_variable_list_array 1 x 100 objects, 4032 bytes
---- placement_affecting_array 1 x 100 objects, 4032 bytes
---- stacked_variable_list_array 1 x 100 objects, 4032 bytes
---- activity 35 objects, 3920 bytes
---- inbuild_edition 54 objects, 3888 bytes
---- parse_node_annotation_type 118 objects, 3776 bytes
---- inbuild_copy 35 objects, 3640 bytes
---- command_line_switch 43 objects, 3440 bytes
---- property_setting_bp_data 84 objects, 3360 bytes
---- instance_usage_array 1 x 200 objects, 3232 bytes
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
---- definition 44 objects, 3168 bytes
---- instance_usage_array 1 x 200 objects, 3232 bytes
---- method_set 100 objects, 3200 bytes
---- compatibility_specification 66 objects, 3168 bytes
---- definition 44 objects, 3168 bytes
---- inform_extension 19 objects, 3040 bytes
---- property_of_value_storage 93 objects, 2976 bytes
---- submodule_request 72 objects, 2880 bytes
---- method_set 89 objects, 2848 bytes
---- inter_construct 32 objects, 2560 bytes
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
---- equation_symbol 30 objects, 2400 bytes
---- semver_range 22 objects, 2288 bytes
---- use_option 29 objects, 1856 bytes
---- pronoun_usage 42 objects, 1680 bytes
---- activity_crossref_array 1 x 100 objects, 1632 bytes
---- table_contribution_array 1 x 100 objects, 1632 bytes
---- activity_crossref_array 1 x 100 objects, 1632 bytes
---- plugin_call_array 1 x 100 objects, 1632 bytes
---- kind_interaction 39 objects, 1560 bytes
---- inter_annotation_form 37 objects, 1480 bytes
@ -144,8 +145,8 @@ Total memory consumption was 258318K = 252 MB
---- noun_filter_token 22 objects, 1408 bytes
---- scene 1 object, 1344 bytes
---- special_meaning_holder 33 objects, 1320 bytes
---- constant_phrase 20 objects, 1280 bytes
---- build_script 40 objects, 1280 bytes
---- constant_phrase 20 objects, 1280 bytes
---- invocation_options_array 1 x 100 objects, 1224 bytes
---- hierarchy_metadatum 15 objects, 1200 bytes
---- quantifier 16 objects, 1024 bytes
@ -156,38 +157,39 @@ Total memory consumption was 258318K = 252 MB
---- cached_understanding 21 objects, 840 bytes
---- runtime_kind_structure 13 objects, 832 bytes
---- phrase_option_array 1 x 100 objects, 824 bytes
---- pipeline_stage 17 objects, 816 bytes
---- target_vm 6 objects, 816 bytes
---- pipeline_stage 17 objects, 816 bytes
---- generated_segment 25 objects, 800 bytes
---- inter_data_type 14 objects, 784 bytes
---- submodule_identity 23 objects, 736 bytes
---- implication 13 objects, 728 bytes
---- rulebook_outcome 17 objects, 680 bytes
---- inform_language 6 objects, 672 bytes
---- inter_warehouse_room 10 objects, 640 bytes
---- relation_guard 5 objects, 640 bytes
---- I6T_intervention 8 objects, 640 bytes
---- relation_guard 5 objects, 640 bytes
---- nascent_array 7 objects, 616 bytes
---- named_rulebook_outcome 15 objects, 600 bytes
---- inbuild_search_result 15 objects, 600 bytes
---- named_rulebook_outcome 15 objects, 600 bytes
---- label_namespace 10 objects, 560 bytes
---- small_word_set 11 objects, 528 bytes
---- implication 13 objects, 520 bytes
---- inform_kit 5 objects, 520 bytes
---- i6_memory_setting 13 objects, 416 bytes
---- inference_family 11 objects, 440 bytes
---- equation 4 objects, 416 bytes
---- module_package 10 objects, 400 bytes
---- i6_memory_setting 13 objects, 416 bytes
---- dval_written 10 objects, 400 bytes
---- module_package 10 objects, 400 bytes
---- bp_family 12 objects, 384 bytes
---- article_usage 8 objects, 384 bytes
---- source_file 5 objects, 360 bytes
---- inbuild_genre 7 objects, 336 bytes
---- pronoun 8 objects, 320 bytes
---- grammatical_category 8 objects, 320 bytes
---- door_dir_notice 5 objects, 320 bytes
---- up_family 9 objects, 288 bytes
---- grammatical_category 8 objects, 320 bytes
---- pronoun 8 objects, 320 bytes
---- build_step 4 objects, 288 bytes
---- explicit_bp_data 5 objects, 280 bytes
---- up_family 9 objects, 288 bytes
---- door_to_notice 5 objects, 280 bytes
---- explicit_bp_data 5 objects, 280 bytes
---- inform_pipeline 4 objects, 256 bytes
---- verb_usage_tier 5 objects, 240 bytes
---- adjective_meaning_family 7 objects, 224 bytes
@ -197,33 +199,33 @@ Total memory consumption was 258318K = 252 MB
---- plural_dictionary_entry 4 objects, 192 bytes
---- kit_dependency 4 objects, 192 bytes
---- inform_project 1 object, 176 bytes
---- code_generation_target 4 objects, 160 bytes
---- inter_architecture 4 objects, 160 bytes
---- inference_subject_family 5 objects, 160 bytes
---- link_instruction 4 objects, 160 bytes
---- pointer_allocation 2 objects, 160 bytes
---- inter_architecture 4 objects, 160 bytes
---- code_generation_target 4 objects, 160 bytes
---- inference_subject_family 5 objects, 160 bytes
---- element_activation 4 objects, 128 bytes
---- codegen_pipeline 1 object, 128 bytes
---- inbuild_nest 3 objects, 120 bytes
---- inform_kit_ittt 2 objects, 96 bytes
---- compile_task_data 1 object, 80 bytes
---- article 2 objects, 80 bytes
---- compile_task_data 1 object, 80 bytes
---- list_together_routine 2 objects, 80 bytes
---- inter_warehouse 1 object, 56 bytes
---- build_methodology 1 object, 56 bytes
---- HTML_file_state 1 object, 48 bytes
---- blorb_figure 1 object, 48 bytes
---- inter_warehouse 1 object, 56 bytes
---- star_invention 1 object, 48 bytes
---- loop_over_scope 1 object, 40 bytes
---- blorb_figure 1 object, 48 bytes
---- HTML_file_state 1 object, 48 bytes
---- by_routine_bp_data 1 object, 40 bytes
---- kind_template_definition 1 object, 40 bytes
---- parse_name_notice 1 object, 40 bytes
---- loop_over_scope 1 object, 40 bytes
---- kind_template_definition 1 object, 40 bytes
37.4% was used for memory not allocated for objects:
15.9% text stream storage 42223988 bytes in 265557 claims
15.9% text stream storage 42228404 bytes in 265592 claims
3.5% dictionary storage 9266176 bytes in 16348 claims
---- sorting 1048 bytes in 3 claims
---- sorting 1064 bytes in 3 claims
2.7% source text 7200000 bytes in 3 claims
4.0% source text details 10800000 bytes in 2 claims
---- linguistic stock array 81920 bytes in 2 claims
@ -231,12 +233,11 @@ Total memory consumption was 258318K = 252 MB
0.8% inter symbols storage 2277376 bytes in 13914 claims
6.3% inter bytecode storage 16802820 bytes in 14 claims
3.3% inter links storage 8750208 bytes in 246 claims
0.5% instance-of-kind counting 1468944 bytes in 1 claim
---- size estimates for compiled objects 308 bytes in 1 claim
0.6% instance-of-kind counting 1690000 bytes in 1 claim
---- compilation workspace for objects 21816 bytes in 25 claims
---- lists for type-checking invocations 16000 bytes in 1 claim
---- emitter array storage 14368 bytes in 8 claims
---- code generation workspace for objects 9200 bytes in 9 claims
20.1% was overhead - 53384224 bytes = 52133K = 50 MB
19.8% was overhead - 52594936 bytes = 51362K = 50 MB

View file

@ -1,27 +1,28 @@
100.0% in inform7 run
67.8% in compilation to Inter
26.8% in //Phrases::Manager::compile_first_block//
26.6% in //Phrases::Manager::compile_first_block//
8.3% in //Phrases::Manager::compile_as_needed//
6.7% in //Strings::compile_responses//
6.2% in //World::Compile::compile//
4.2% in //MajorNodes::pre_pass//
6.9% in //Strings::compile_responses//
6.0% in //InferenceSubjects::emit_all//
4.3% in //MajorNodes::pre_pass//
3.3% in //MajorNodes::pass_1//
1.9% in //Phrases::Manager::RulePrintingRule_routine//
1.7% in //Phrases::Manager::rulebooks_array//
2.0% in //Phrases::Manager::RulePrintingRule_routine//
1.9% in //Phrases::Manager::rulebooks_array//
1.0% in //RTVerbs::ConjugateVerb//
0.8% in //Phrases::Manager::traverse//
0.5% in //Phrases::Manager::parse_rule_parameters//
0.5% in //World::complete//
0.5% in //World::stage_V//
0.3% in //MajorNodes::pass_2//
0.3% in //Phrases::Manager::compile_rulebooks//
0.3% in //RTRelations::compile_defined_relations//
0.1% in //PL::Parsing::Verbs::compile_all//
0.1% in //RTKinds::compile_data_type_support_routines//
0.1% in //Task::make_built_in_kind_constructors//
3.7% not specifically accounted for
30.0% in running Inter pipeline
9.7% in step preparation
0.1% in //World::stages_II_and_III//
3.5% not specifically accounted for
29.7% in running Inter pipeline
9.5% in inter step 2/12: link
9.5% in step preparation
6.9% in inter step 12/12: generate inform6 -> auto.inf
0.3% in inter step 9/12: make-identifiers-unique
0.1% in inter step 10/12: reconcile-verbs
@ -31,5 +32,5 @@
0.1% in inter step 7/12: resolve-external-symbols
0.1% in inter step 8/12: inspect-plugs
2.3% not specifically accounted for
1.9% in supervisor
0.2% not specifically accounted for
2.0% in supervisor
0.4% not specifically accounted for

View file

@ -83,7 +83,7 @@ any additional sentences generated.
@<Extend the pass to sentences needed when implicit kinds are set@> =
current_sentence = last;
global_pass_state.assembly_position = current_sentence;
Plugins::Call::complete_model(1);
World::deduce_object_instance_kinds();
SyntaxTree::traverse_nodep_from(last, MajorNodes::visit, &last);
@ Let us go, and make our visit:

View file

@ -14,10 +14,9 @@ description only, whereas B could be any subtree of an assertion.
=
typedef struct implication {
struct pcalc_prop *if_spec; /* which objects are affected */
struct pcalc_prop *if_proposition; /* which objects are affected */
struct parse_node *then_pn; /* what assertion is implied about them */
int implied_likelihood; /* with what certainty level */
struct implication *next_implication; /* in list of implications */
CLASS_DEFINITION
} implication;
@ -61,15 +60,13 @@ void Assertions::Implications::new(parse_node *px, parse_node *py) {
@<Check that the conclusion involves only a single either/or property@>;
implication *imp = CREATE(implication);
imp->if_spec = premiss;
imp->if_proposition = premiss;
imp->then_pn = py;
imp->implied_likelihood = prevailing_mood;
imp->next_implication = InferenceSubjects::get_implications(premiss_kind);
InferenceSubjects::set_implications(premiss_kind, imp);
ADD_TO_LINKED_LIST(imp, implication, InferenceSubjects::get_implications(premiss_kind));
LOGIF(IMPLICATIONS, "Forming implication for $j: $D implies\n $T",
premiss_kind, imp->if_spec, imp->then_pn);
premiss_kind, imp->if_proposition, imp->then_pn);
@<Find the premiss kind and specification@> =
parse_node *loc = px;
@ -156,9 +153,9 @@ void Assertions::Implications::set_possessed_flags(inference_subject *infs) {
if (k) Assertions::Implications::set_possessed_flags(k);
inference *inf;
KNOWLEDGE_LOOP(inf, infs, PROPERTY_INF) {
property *prn = World::Inferences::get_property(inf);
if ((Properties::is_either_or(prn)) && (World::Inferences::get_certainty(inf) != UNKNOWN_CE))
KNOWLEDGE_LOOP(inf, infs, property_inf) {
property *prn = PropertyInferences::get_property(inf);
if ((Properties::is_either_or(prn)) && (Inferences::get_certainty(inf) != UNKNOWN_CE))
@<See what we can get out of this inference@>;
}
}
@ -168,7 +165,7 @@ both of them, because an inference of being closed is as good as an inference
of not being open, and vice versa.
@<See what we can get out of this inference@> =
int truth_state = TRUE, certainty = World::Inferences::get_certainty(inf);
int truth_state = TRUE, certainty = Inferences::get_certainty(inf);
if (certainty < 0) { certainty = -certainty; truth_state = FALSE; }
possession_marker *pom = Properties::get_possession_marker(prn);
@ -202,12 +199,12 @@ int Assertions::Implications::check_implications_of(inference_subject *domain,
inference_subject *k = InferenceSubjects::narrowest_broader_subject(domain);
if ((k) && (Assertions::Implications::check_implications_of(k, candidate))) return TRUE;
if (InferenceSubjects::get_implications(domain))
if (LinkedLists::len(InferenceSubjects::get_implications(domain)) > 0)
LOGIF(IMPLICATIONS, "Considering implications about $j as they apply to $j:\n",
domain, candidate);
implication *imp;
for (imp = InferenceSubjects::get_implications(domain); imp; imp = imp->next_implication)
LOOP_OVER_LINKED_LIST(imp, implication, InferenceSubjects::get_implications(domain))
@<Consider this individual implication as it applies to the candidate@>;
return FALSE;
@ -220,7 +217,7 @@ int Assertions::Implications::check_implications_of(inference_subject *domain,
if (imp->implied_likelihood < 0) conclusion_state = (conclusion_state)?FALSE:TRUE;
LOGIF(IMPLICATIONS, "$D => $T (certainty %d; changed state %d)\n",
imp->if_spec, imp->then_pn, imp->implied_likelihood, conclusion_state);
imp->if_proposition, imp->then_pn, imp->implied_likelihood, conclusion_state);
property *conclusion_prop = AdjectiveAmbiguity::has_either_or_property_meaning(
AdjectivalPredicates::to_adjective(pred), NULL);
@ -229,7 +226,7 @@ int Assertions::Implications::check_implications_of(inference_subject *domain,
possession_marker *pom = Properties::get_possession_marker(conclusion_prop);
@<Check that the conclusion is not redundant or irrelevant@>;
int candidate_qualifies = Assert::test_at_compile_time(imp->if_spec, candidate);
int candidate_qualifies = Assert::test_at_compile_time(imp->if_proposition, candidate);
if (candidate_qualifies) {
LOGIF(IMPLICATIONS, "PASS: changing property $Y of $j\n", conclusion_prop, candidate);

View file

@ -161,14 +161,14 @@ int Relations::Explicit::REL_assert(bp_family *self, binary_predicate *bp,
@<Reject non-assertable relations@>;
if (Relations::Explicit::stored_dynamically(bp)) {
World::Inferences::draw_relation_spec(bp, spec0, spec1);
Inferences::draw_relation_spec(bp, spec0, spec1);
return TRUE;
} else {
if ((infs0 == NULL) || (infs1 == NULL)) @<Reject relationship with nothing@>;
if (Relations::Explicit::allow_arbitrary_assertions(bp)) {
World::Inferences::draw_relation(bp, infs0, infs1);
Inferences::draw_relation(bp, infs0, infs1);
if ((Relations::Explicit::get_form_of_relation(bp) == Relation_Sym_VtoV) && (infs0 != infs1))
World::Inferences::draw_relation(bp, infs1, infs0);
Inferences::draw_relation(bp, infs1, infs0);
return TRUE;
}
if (Relations::Explicit::is_explicit_with_runtime_storage(bp)) {
@ -218,7 +218,7 @@ void Relations::Explicit::infer_property_based_relation(binary_predicate *bp,
inference_subject *swap=infs0; infs0=infs1; infs1=swap;
}
property *prn = Relations::Explicit::get_i6_storage_property(bp);
World::Inferences::draw_property(infs0, prn, InferenceSubjects::as_constant(infs1));
PropertyInferences::draw(infs0, prn, InferenceSubjects::as_constant(infs1));
}
@ We need do nothing special: these relations can be compiled from their schemas.

View file

@ -114,7 +114,7 @@ int EqualityDetails::REL_assert(bp_family *self, binary_predicate *bp,
"a variable can only be given its value straightforwardly or "
"qualified by 'usually'",
"not with 'always', 'seldom' or 'never'.");
else World::Inferences::draw_property(
else PropertyInferences::draw(
NonlocalVariables::to_subject(q), P_variable_initial_value, spec1);
return TRUE;
}

View file

@ -92,12 +92,14 @@ DECLARE_CLASS(text_substitution)
@e comparative_bp_data_CLASS
@e counting_data_CLASS
@e inference_CLASS
@e inference_family_CLASS
@e inference_subject_CLASS
@e inference_subject_family_CLASS
@e measurement_definition_CLASS
@e named_rulebook_outcome_CLASS
@e placement_affecting_CLASS
@e property_CLASS
@e property_inference_data_CLASS
@e property_permission_CLASS
@e property_of_value_storage_CLASS
@e property_setting_bp_data_CLASS
@ -118,6 +120,7 @@ DECLARE_CLASS(booking)
DECLARE_CLASS(comparative_bp_data)
DECLARE_CLASS(counting_data)
DECLARE_CLASS(inference)
DECLARE_CLASS(inference_family)
DECLARE_CLASS(inference_subject)
DECLARE_CLASS(inference_subject_family)
DECLARE_CLASS(measurement_definition)
@ -126,6 +129,7 @@ DECLARE_CLASS_ALLOCATED_IN_ARRAYS(placement_affecting, 100)
DECLARE_CLASS(property_of_value_storage)
DECLARE_CLASS(property_permission)
DECLARE_CLASS(property)
DECLARE_CLASS(property_inference_data)
DECLARE_CLASS(property_setting_bp_data)
DECLARE_CLASS(rule)
DECLARE_CLASS(rulebook)

View file

@ -153,7 +153,8 @@ so on. Those absolute basics are made here.
BENCH(NounIdentifiers::name_all)
BENCH(OrderingInstances::objects_in_definition_sequence)
Task::advance_stage_to(MODEL_COMPLETE_CSEQ, I"Completing the model world", -1);
BENCH(World::complete)
BENCH(World::stages_II_and_III)
BENCH(World::stage_IV)
@<Tables and grammar@> =
Task::advance_stage_to(TABLES_CSEQ, I"Tables and grammar", -1);
@ -166,7 +167,7 @@ so on. Those absolute basics are made here.
BENCH(Tables::check_tables_for_kind_clashes)
BENCH(RTTables::compile_print_table_names)
BENCH(PL::Parsing::traverse)
BENCH(World::complete_additions)
BENCH(World::stage_V)
@<Phrases and rules@> =
Task::advance_stage_to(PHRASES_CSEQ, I"Phrases and rules", 3);
@ -199,7 +200,8 @@ so on. Those absolute basics are made here.
BENCH(RTRelations::compile_defined_relation_constants)
BENCH(RTKinds::compile_data_type_support_routines)
BENCH(RTKinds::I7_Kind_Name_routine)
BENCH(World::Compile::compile)
BENCH(Plugins::Call::compile_model_tables)
BENCH(InferenceSubjects::emit_all)
BENCH_IF(backdrops_plugin, PL::Backdrops::write_found_in_routines)
BENCH_IF(map_plugin, PL::Map::write_door_dir_routines)
BENCH_IF(map_plugin, PL::Map::write_door_to_routines)

View file

@ -235,10 +235,10 @@ void StandardProblems::inference_problem(SIGIL_ARGUMENTS, inference_subject *inf
char *message, char *explanation) {
ACT_ON_SIGIL
Problems::quote_subject(1, infs);
Problems::quote_source(2, World::Inferences::where_inferred(inf));
Problems::quote_source(2, Inferences::where_inferred(inf));
Problems::quote_text(3, message);
Problems::quote_text(4, explanation);
Problems::quote_property(5, World::Inferences::get_property(inf));
Problems::quote_property(5, PropertyInferences::get_property(inf));
Problems::issue_problem_begin(Task::syntax_tree(), explanation);
Problems::issue_problem_segment(
"You wrote %2: but the property %5 for the %1 %3%S.%L, %4");

View file

@ -9,10 +9,10 @@ spread, probably background, things, such as the sky, and they placing one
inside something generates |FOUND_IN_INF| rather than |PARENTAGE_INF|
inferences to avoid piling up bogus inconsistencies.
@d FOUND_IN_INF 56 /* for backdrop things in many places */
@d FOUND_EVERYWHERE_INF 57 /* ditto */
= (early code)
inference_family *FOUND_IN_INF = NULL; /* 56; for backdrop things in many places */
inference_family *FOUND_EVERYWHERE_INF = NULL; /* 57; ditto */
kind *K_backdrop = NULL;
property *P_scenery = NULL; /* an I7 either/or property marking something as scenery */
property *P_absent = NULL; /* an I6-only property for backdrops out of play */
@ -29,6 +29,10 @@ typedef struct backdrop_found_in_notice {
=
void PL::Backdrops::start(void) {
FOUND_IN_INF = Inferences::new_family(I"FOUND_IN_INF", CI_DIFFER_IN_INFS1);
FOUND_EVERYWHERE_INF = Inferences::new_family(I"FOUND_EVERYWHERE_INF", CI_DIFFER_IN_INFS1);
PLUGIN_REGISTER(PLUGIN_CREATE_INFERENCE_FAMILIES, PL::Backdrops::create_inference_families);
PLUGIN_REGISTER(PLUGIN_NEW_BASE_KIND_NOTIFY, PL::Backdrops::backdrops_new_base_kind_notify);
PLUGIN_REGISTER(PLUGIN_NEW_PROPERTY_NOTIFY, PL::Backdrops::backdrops_new_property_notify);
PLUGIN_REGISTER(PLUGIN_COMPLETE_MODEL, PL::Backdrops::backdrops_complete_model);
@ -37,6 +41,10 @@ void PL::Backdrops::start(void) {
PLUGIN_REGISTER(PLUGIN_INTERVENE_IN_ASSERTION, PL::Backdrops::backdrops_intervene_in_assertion);
}
int PL::Backdrops::create_inference_families(void) {
return FALSE;
}
@h Kinds.
This a kind name to do with backdrops which Inform provides special support
for; it recognises the English name when defined by the Standard Rules. (So
@ -78,7 +86,7 @@ int PL::Backdrops::backdrops_new_property_notify(property *prn) {
}
int PL::Backdrops::object_is_scenery(instance *I) {
if (World::Inferences::get_EO_state(Instances::as_subject(I), P_scenery) > 0)
if (Inferences::get_EO_state(Instances::as_subject(I), P_scenery) > 0)
return TRUE;
return FALSE;
}
@ -95,10 +103,6 @@ int PL::Backdrops::backdrops_estimate_property_usage(kind *k, int *words_used) {
=
int PL::Backdrops::backdrops_log_inference_type(int it) {
switch(it) {
case FOUND_IN_INF: LOG("FOUND_IN_INF"); return TRUE;
case FOUND_EVERYWHERE_INF: LOG("FOUND_EVERYWHERE_INF"); return TRUE;
}
return FALSE;
}
@ -121,9 +125,9 @@ int PL::Backdrops::assert_relations(binary_predicate *relation,
(relation == R_regional_containment))) {
inference_subject *bd = Instances::as_subject(I1);
inference_subject *loc = Instances::as_subject(I0);
World::Inferences::draw(PART_OF_INF, bd, IMPOSSIBLE_CE, loc, NULL);
World::Inferences::draw(IS_ROOM_INF, bd, IMPOSSIBLE_CE, NULL, NULL);
World::Inferences::draw(FOUND_IN_INF, bd, CERTAIN_CE, loc, loc);
Inferences::draw(PART_OF_INF, bd, IMPOSSIBLE_CE, loc, NULL);
Inferences::draw(IS_ROOM_INF, bd, IMPOSSIBLE_CE, NULL, NULL);
Inferences::draw(FOUND_IN_INF, bd, CERTAIN_CE, loc, loc);
return TRUE;
}
@ -136,7 +140,7 @@ int PL::Backdrops::assert_relations(binary_predicate *relation,
LOOP_OVER_INSTANCES(B, K_object)
if (PL::Backdrops::object_is_a_backdrop(B))
POSITIVE_KNOWLEDGE_LOOP(I, Instances::as_subject(B), FOUND_IN_INF)
if (World::Inferences::get_reference_as_object(I) == P)
if (Inferences::get_reference_as_object(I) == P)
@d LOOP_OVER_BACKDROPS_EVERYWHERE(B, I)
LOOP_OVER_INSTANCES(B, K_object)
@ -225,7 +229,7 @@ void PL::Backdrops::infer_presence_everywhere(instance *I) {
"is a vehicle which is everywhere.' is not.");
return;
}
World::Inferences::draw(FOUND_EVERYWHERE_INF,
Inferences::draw(FOUND_EVERYWHERE_INF,
Instances::as_subject(I), prevailing_mood, NULL, NULL);
}
@ -234,7 +238,7 @@ We intervene only at Stage II, the spatial modelling stage.
=
int PL::Backdrops::backdrops_complete_model(int stage) {
if (stage == 2) {
if (stage == WORLD_STAGE_II) {
P_absent = Properties::EitherOr::new_nameless(L"absent");
Properties::EitherOr::implement_as_attribute(P_absent, TRUE);
instance *I;
@ -265,7 +269,7 @@ int PL::Backdrops::backdrops_complete_model(int stage) {
@<Find how many rooms or regions the object is found inside@> =
inference *inf;
POSITIVE_KNOWLEDGE_LOOP(inf, Instances::as_subject(I), FOUND_IN_INF) {
instance *loc = World::Inferences::get_reference_as_object(inf);
instance *loc = Inferences::get_reference_as_object(inf);
if ((K_region) && (Instances::of_kind(loc, K_region))) region_count++;
else room_count++;
}
@ -276,7 +280,7 @@ int PL::Backdrops::backdrops_complete_model(int stage) {
packaging_state save = Emit::named_array_begin(FOUNDIN, K_value);
inference *inf;
POSITIVE_KNOWLEDGE_LOOP(inf, Instances::as_subject(I), FOUND_IN_INF)
Emit::array_iname_entry(RTInstances::iname(World::Inferences::get_reference_as_object(inf)));
Emit::array_iname_entry(RTInstances::iname(Inferences::get_reference_as_object(inf)));
Emit::array_end(save);
Produce::annotate_i(FOUNDIN, INLINE_ARRAY_IANN, 1);
@ -319,7 +323,7 @@ void PL::Backdrops::write_found_in_routines(void) {
packaging_state save = Routines::begin(notice->found_in_routine_iname);
inference *inf;
POSITIVE_KNOWLEDGE_LOOP(inf, Instances::as_subject(I), FOUND_IN_INF) {
instance *loc = World::Inferences::get_reference_as_object(inf);
instance *loc = Inferences::get_reference_as_object(inf);
Produce::inv_primitive(Emit::tree(), IF_BIP);
Produce::down(Emit::tree());
if ((K_region) && (Instances::of_kind(loc, K_region))) {

View file

@ -30,7 +30,7 @@ int PL::Devices::devices_new_base_kind_notify(kind *new_base, text_stream *name,
@ =
int PL::Devices::IF_complete_model(int stage) {
if (stage == 3) {
if (stage == WORLD_STAGE_III) {
P_switchable = Properties::EitherOr::new_nameless(L"switchable");
Properties::EitherOr::implement_as_attribute(P_switchable, TRUE);
instance *I;

View file

@ -1120,7 +1120,7 @@ void PL::EPSMap::plot_text_at(OUTPUT_STREAM, wchar_t *text_to_plot, instance *I,
@<Try taking the name from the printed name property of the room@> =
if (P_printed_name) {
parse_node *V = World::Inferences::get_prop_state_at(
parse_node *V = Inferences::get_prop_state_at(
Instances::as_subject(I), P_printed_name, NULL);
if ((Rvalues::is_CONSTANT_of_kind(V, K_text)) &&
(Wordings::nonempty(Node::get_text(V)))) {

View file

@ -258,10 +258,10 @@ int PL::MapDirections::REL_assert(bp_family *self, binary_predicate *bp,
inference_subject *infs_from = infs0;
inference_subject *infs_to = infs1;
World::Inferences::draw(IS_ROOM_INF, infs_from, prevailing_mood, NULL, NULL);
Inferences::draw(IS_ROOM_INF, infs_from, prevailing_mood, NULL, NULL);
if ((prevailing_mood >= 0) && (infs_to))
World::Inferences::draw(IS_ROOM_INF, infs_to, LIKELY_CE, NULL, NULL);
World::Inferences::draw(DIRECTION_INF, infs_from, prevailing_mood,
Inferences::draw(IS_ROOM_INF, infs_to, LIKELY_CE, NULL, NULL);
Inferences::draw(DIRECTION_INF, infs_from, prevailing_mood,
infs_to, o_dir?(Instances::as_subject(o_dir)):NULL);
return TRUE;

View file

@ -20,7 +20,7 @@ void PL::Persons::start(void) {
@ =
int PL::Persons::IF_complete_model(int stage) {
if ((stage == 3) && (K_person)) {
if ((stage == WORLD_STAGE_III) && (K_person)) {
P_animate = Properties::EitherOr::new_nameless(L"animate");
Properties::EitherOr::implement_as_attribute(P_animate, TRUE);
P_before = Properties::Valued::new_nameless(I"before", K_value);

View file

@ -273,7 +273,7 @@ int PL::Regions::assert_relations(binary_predicate *relation,
@<A region is being put inside a region@> =
inference_subject *inner = Instances::as_subject(I1);
inference_subject *outer = Instances::as_subject(I0);
World::Inferences::draw(PARENTAGE_INF, inner, CERTAIN_CE, outer, NULL);
Inferences::draw(PARENTAGE_INF, inner, CERTAIN_CE, outer, NULL);
@ Anything in or part of a region is necessarily a room, if it isn't known
to be a region already:
@ -282,7 +282,7 @@ to be a region already:
inference_subject *rm = Instances::as_subject(I1);
parse_node *spec = Rvalues::from_instance(I0);
Propositions::Abstract::assert_kind_of_instance(I1, K_room);
World::Inferences::draw_property(rm, P_map_region, spec);
PropertyInferences::draw(rm, P_map_region, spec);
@ Note that because we use regular |PARENTAGE_INF| inferences to remember
that one region is inside another, it follows that the progenitor of a
@ -301,8 +301,8 @@ instance *PL::Regions::enclosing(instance *reg) {
=
int PL::Regions::regions_complete_model(int stage) {
if (stage == 2) @<Assert map-region properties of rooms and regions@>;
if (stage == 3) @<Assert regional-found-in properties of regions@>;
if (stage == WORLD_STAGE_II) @<Assert map-region properties of rooms and regions@>;
if (stage == WORLD_STAGE_III) @<Assert regional-found-in properties of regions@>;
return FALSE;
}
@ -316,7 +316,7 @@ int PL::Regions::regions_complete_model(int stage) {
if ((Instances::of_kind(I, K_room)) ||
(Instances::of_kind(I, K_region))) {
parse_node *where = NULL;
parse_node *val = World::Inferences::get_prop_state_at(
parse_node *val = Inferences::get_prop_state_at(
Instances::as_subject(I), P_map_region, &where);
if (val) {
instance *reg =

View file

@ -2746,7 +2746,7 @@ void PL::SpatialMap::log_precis_of_map(void) {
if (Instances::of_kind(R, K_door)) {
wording W = Instances::get_name(R, FALSE);
LOG("%+W is a door.\n", W);
parse_node *S = World::Inferences::get_prop_state(
parse_node *S = Inferences::get_prop_state(
Instances::as_subject(R), P_other_side);
instance *X = Rvalues::to_object_instance(S);
if (X) {

Some files were not shown because too many files have changed in this diff Show more