mirror of
https://github.com/ganelson/inform.git
synced 2024-07-05 08:34:22 +03:00
Further relation refactoring
This commit is contained in:
parent
ccf70137ca
commit
fb20b90d54
|
@ -134,8 +134,8 @@ of subsequent sentences, which also happens in the pre-pass.
|
||||||
<span class="plain-syntax"> </span><span class="string-syntax">"this is too long a name for a single relation to have"</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="string-syntax">"this is too long a name for a single relation to have"</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="string-syntax">"and would become unwieldy."</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="string-syntax">"and would become unwieldy."</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">Node::set_new_relation_here</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-></span><span class="element-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="identifier-syntax">Node::set_new_relation_here</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BinaryPredicates::make_pair_sketchily</span><span class="plain-syntax">(</span><span class="identifier-syntax">explicit_bp_family</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><a href="5-er.html#SP5" class="function-link"><span class="function-syntax">Relations::Explicit::make_pair_sketchily</span></a><span class="plain-syntax">(</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WordAssemblages::from_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">RW</span><span class="plain-syntax">), </span><span class="identifier-syntax">Relation_OtoO</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WordAssemblages::from_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">RW</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">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">break</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
|
@ -485,6 +485,8 @@ splitting into cases.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">storage_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> what kind, if any, might be stored in it</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">storage_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> what kind, if any, might be stored in it</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">storage_infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> summing these up</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">storage_infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> summing these up</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">explicit_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ED</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_explicit_bp_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">family_specific</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">rvno</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="comment-syntax"> relate values not objects?</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rvno</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="comment-syntax"> relate values not objects?</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dynamic</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="comment-syntax"> use dynamic memory allocation for storage?</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">dynamic</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="comment-syntax"> use dynamic memory allocation for storage?</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">provide_prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="comment-syntax"> allocate the storage property to the kind?</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">provide_prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="comment-syntax"> allocate the storage property to the kind?</span>
|
||||||
|
@ -497,7 +499,7 @@ splitting into cases.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rvno</span><span class="plain-syntax">) { </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">relates_values_not_objects</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">bpr</span><span class="plain-syntax">-></span><span class="identifier-syntax">relates_values_not_objects</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">rvno</span><span class="plain-syntax">) { </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">relates_values_not_objects</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">bpr</span><span class="plain-syntax">-></span><span class="identifier-syntax">relates_values_not_objects</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">RR</span><span class="plain-syntax">-></span><span class="element-syntax">frf</span><span class="plain-syntax">) { </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">fast_route_finding</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">bpr</span><span class="plain-syntax">-></span><span class="identifier-syntax">fast_route_finding</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">RR</span><span class="plain-syntax">-></span><span class="element-syntax">frf</span><span class="plain-syntax">) { </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">fast_route_finding</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">bpr</span><span class="plain-syntax">-></span><span class="identifier-syntax">fast_route_finding</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">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="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">i6_storage_property</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">; </span><span class="identifier-syntax">bpr</span><span class="plain-syntax">-></span><span class="identifier-syntax">i6_storage_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">ED</span><span class="plain-syntax">-></span><span class="element-syntax">i6_storage_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">Properties::Valued::set_stored_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</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">Properties::Valued::set_stored_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</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">dynamic</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">dynamic</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -576,8 +578,6 @@ splitting into cases.
|
||||||
<span class="plain-syntax"> }</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">bpr</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</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">RELATION_DEFINITIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Defined the binary predicate:\n$2\n"</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RELATION_DEFINITIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Defined the binary predicate:\n$2\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
@ -690,7 +690,6 @@ omitted from the index.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">PK</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">PK</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">Properties::Valued::set_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">PK</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">PK</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">PK</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">Properties::Valued::set_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">PK</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">storage_kind</span><span class="plain-syntax">) </span><span class="identifier-syntax">storage_infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Knowledge::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_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">storage_kind</span><span class="plain-syntax">) </span><span class="identifier-syntax">storage_infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Knowledge::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_kind</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">storage_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">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">storage_infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="comment-syntax"> if (Kinds::Behaviour::is_object(storage_kind) == FALSE) bp->storage_kind = storage_kind;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">RR</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">PK</span><span class="plain-syntax">) &&</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">RR</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">unique</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">RR</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">unique</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">PK</span><span class="plain-syntax">) &&</span>
|
||||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">PK</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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">PK</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">Properties::Valued::now_used_for_non_typesafe_relation</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">Properties::Valued::now_used_for_non_typesafe_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||||
|
@ -726,7 +725,7 @@ and \(14D\) bytes on Glulx, where \(D\) is the size of the domain...
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relation_OtoO</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ED</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="constant-syntax">Relation_OtoO</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">provide_prn</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">provide_prn</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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_kind</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"Relation_Now1to1(*2,%n,*1)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"Relation_Now1to1(*2,%n,*1)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</span><span class="plain-syntax">);</span>
|
||||||
|
@ -746,7 +745,7 @@ and \(14D\) bytes on Glulx, where \(D\) is the size of the domain...
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relation_OtoV</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ED</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="constant-syntax">Relation_OtoV</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">provide_prn</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">provide_prn</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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_kind</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"*2.%n = *1"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"*2.%n = *1"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</span><span class="plain-syntax">);</span>
|
||||||
|
@ -766,7 +765,7 @@ and \(14D\) bytes on Glulx, where \(D\) is the size of the domain...
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relation_VtoO</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ED</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="constant-syntax">Relation_VtoO</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">provide_prn</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">provide_prn</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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_kind</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"*1.%n = *2"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"*1.%n = *2"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</span><span class="plain-syntax">);</span>
|
||||||
|
@ -787,7 +786,7 @@ various K".
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relation_VtoV</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ED</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="constant-syntax">Relation_VtoV</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BinaryPredicates::mark_as_needed</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">BinaryPredicates::mark_as_needed</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"(Relation_TestVtoV(*1,%n,*2,false))"</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"(Relation_TestVtoV(*1,%n,*2,false))"</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BinaryPredicates::iname</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">BinaryPredicates::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">));</span>
|
||||||
|
@ -805,7 +804,7 @@ another".
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relation_Sym_OtoO</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ED</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="constant-syntax">Relation_Sym_OtoO</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">provide_prn</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">provide_prn</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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_kind</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"Relation_NowS1to1(*2,%n,*1)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"Relation_NowS1to1(*2,%n,*1)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</span><span class="plain-syntax">);</span>
|
||||||
|
@ -826,7 +825,7 @@ to each other".
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relation_Sym_VtoV</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ED</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="constant-syntax">Relation_Sym_VtoV</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BinaryPredicates::mark_as_needed</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">BinaryPredicates::mark_as_needed</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"(Relation_TestVtoV(*1,%n,*2,true))"</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"(Relation_TestVtoV(*1,%n,*2,true))"</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BinaryPredicates::iname</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">BinaryPredicates::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">));</span>
|
||||||
|
@ -844,10 +843,10 @@ other in groups".
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relation_Equiv</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ED</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="constant-syntax">Relation_Equiv</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">equivalence_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">equivalence_bp_data</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">equivalence_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">equivalence_bp_data</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax">-></span><span class="element-syntax">equivalence_partition</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">D</span><span class="plain-syntax">-></span><span class="element-syntax">equivalence_partition</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">family_specific</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STORE_POINTER_equivalence_bp_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ED</span><span class="plain-syntax">-></span><span class="element-syntax">equiv_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">D</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">provide_prn</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">provide_prn</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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">storage_kind</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"(*1.%n == *2.%n)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"(*1.%n == *2.%n)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">i6_prn_name</span><span class="plain-syntax">);</span>
|
||||||
|
@ -865,15 +864,16 @@ other in groups".
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::set_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</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">Properties::Valued::set_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="3-nrr.html#SP5">§5</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="3-nrr.html#SP5">§5</a>.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP5_11" class="paragraph-anchor"></a><b>§5.11. </b>The <span class="extract"><span class="extract-syntax">Relation_ByRoutine</span></span> case, or relation tested by a routine: "R relates
|
<p class="commentary firstcommentary"><a id="SP5_11" class="paragraph-anchor"></a><b>§5.11. </b>The case of a relation tested by a routine: "R relates K to L when (some
|
||||||
K to L when (some condition)".
|
condition)".
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Complete as a relation-by-routine BP</span><span class="named-paragraph-number">5.11</span></span><span class="comment-syntax"> =</span>
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Complete as a relation-by-routine BP</span><span class="named-paragraph-number">5.11</span></span><span class="comment-syntax"> =</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relation_ByRoutine</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">relation_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">by_routine_bp_family</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">reversal</span><span class="plain-syntax">-></span><span class="identifier-syntax">relation_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">by_routine_bp_family</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">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BinaryPredicates::package</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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BinaryPredicates::package</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">by_routine_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">by_routine_bp_data</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">by_routine_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">by_routine_bp_data</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax">-></span><span class="element-syntax">condition_defn_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RR</span><span class="plain-syntax">-></span><span class="identifier-syntax">CONW</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax">-></span><span class="element-syntax">condition_defn_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RR</span><span class="plain-syntax">-></span><span class="identifier-syntax">CONW</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -95,75 +95,160 @@ there are none.
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explicit_bp_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explicit_bp_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">by_routine_bp_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</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">explicit_bp_data</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">explicit_bp_data</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">form_of_relation</span><span class="plain-syntax">; </span><span class="comment-syntax"> one of the </span><span class="extract"><span class="extract-syntax">Relation_*</span></span><span class="comment-syntax"> constants defined below</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">i6_storage_property</span><span class="plain-syntax">; </span><span class="comment-syntax"> provides run-time storage</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">equivalence_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">equiv_data</span><span class="plain-syntax">; </span><span class="comment-syntax"> only used for </span><span class="extract"><span class="extract-syntax">Relation_Equiv</span></span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v2v_bitmap_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> only used for </span><span class="extract"><span class="extract-syntax">Relation_VtoV</span></span><span class="comment-syntax"> and </span><span class="extract"><span class="extract-syntax">Relation_Sym_VtoV</span></span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">explicit_bp_data</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">explicit_bp_data</span><span class="plain-syntax">;</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure explicit_bp_data is private to this section.</li></ul>
|
<ul class="endnotetexts"><li>The structure explicit_bp_data is accessed in 3/nrr and here.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::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">Relations::Explicit::start</span></span>:<br/>Assertions Module - <a href="1-am.html#SP2">§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">Relations::Explicit::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">Relations::Explicit::start</span></span>:<br/>Assertions Module - <a href="1-am.html#SP2">§2</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">explicit_bp_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BinaryPredicateFamilies::new</span><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">explicit_bp_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BinaryPredicateFamilies::new</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">explicit_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">TYPECHECK_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP3" class="function-link"><span class="function-syntax">Relations::Explicit::REL_typecheck</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">explicit_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">TYPECHECK_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP6" class="function-link"><span class="function-syntax">Relations::Explicit::REL_typecheck</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">explicit_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">ASSERT_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP4" class="function-link"><span class="function-syntax">Relations::Explicit::REL_assert</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">explicit_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">ASSERT_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP7" class="function-link"><span class="function-syntax">Relations::Explicit::REL_assert</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">explicit_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">SCHEMA_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP6" class="function-link"><span class="function-syntax">Relations::Explicit::REL_compile</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">explicit_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">SCHEMA_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP9" class="function-link"><span class="function-syntax">Relations::Explicit::REL_compile</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">explicit_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">DESCRIBE_FOR_PROBLEMS_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP7" class="function-link"><span class="function-syntax">Relations::Explicit::REL_describe_for_problems</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">explicit_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">DESCRIBE_FOR_PROBLEMS_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP10" class="function-link"><span class="function-syntax">Relations::Explicit::REL_describe_for_problems</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">explicit_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">DESCRIBE_FOR_INDEX_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP7" class="function-link"><span class="function-syntax">Relations::Explicit::REL_describe_briefly</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">explicit_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">DESCRIBE_FOR_INDEX_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP10" class="function-link"><span class="function-syntax">Relations::Explicit::REL_describe_briefly</span></a><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">by_routine_bp_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BinaryPredicateFamilies::new</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">by_routine_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">TYPECHECK_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP6" class="function-link"><span class="function-syntax">Relations::Explicit::REL_typecheck</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">by_routine_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">ASSERT_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP7" class="function-link"><span class="function-syntax">Relations::Explicit::REL_assert</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">by_routine_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">SCHEMA_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP9" class="function-link"><span class="function-syntax">Relations::Explicit::REL_compile</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">by_routine_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">DESCRIBE_FOR_PROBLEMS_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP10" class="function-link"><span class="function-syntax">Relations::Explicit::REL_describe_for_problems</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">by_routine_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">DESCRIBE_FOR_INDEX_BPF_MTID</span><span class="plain-syntax">, </span><a href="5-er.html#SP10" class="function-link"><span class="function-syntax">Relations::Explicit::REL_br_describe_briefly</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">Relations::Explicit::is_explicit_with_runtime_storage</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">Relations::Explicit::is_explicit_with_runtime_storage</span></span>:<br/><a href="5-er.html#SP7">§7</a></span></button><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><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">relation_family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">explicit_bp_family</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">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>They typecheck by the default rule only:
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>The following constants are numbered in a way which corresponds to some
|
||||||
|
run-time code supporting relations.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">Relation_Implicit</span><span class="plain-syntax"> -1 </span><span class="comment-syntax"> used to mean "none of the below"</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_OtoO</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> </span><span class="comment-syntax"> one to one: "R relates one K to one K"</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_OtoV</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="comment-syntax"> one to various: "R relates one K to various K"</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_VtoO</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax"> </span><span class="comment-syntax"> various to one: "R relates various K to one K"</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_VtoV</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> </span><span class="comment-syntax"> various to various: "R relates various K to various K"</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_Sym_OtoO</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span><span class="plain-syntax"> </span><span class="comment-syntax"> symmetric one to one: "R relates one K to another"</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_Sym_VtoV</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax"> </span><span class="comment-syntax"> symmetric various to various: "R relates K to each other"</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_Equiv</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax"> </span><span class="comment-syntax"> equivalence relation: "R relates K to each other in groups"</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </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">Relations::Explicit::allow_arbitrary_assertions</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">Relations::Explicit::allow_arbitrary_assertions</span></span>:<br/><a href="5-er.html#SP7">§7</a></span></button><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><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax"> = </span><a href="5-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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">f</span><span class="plain-syntax"> == </span><span class="constant-syntax">Relation_Equiv</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">f</span><span class="plain-syntax"> == </span><span class="constant-syntax">Relation_VtoV</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">f</span><span class="plain-syntax"> == </span><span class="constant-syntax">Relation_Sym_VtoV</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>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>When the source text declares new relations, it turns out to be convenient
|
||||||
|
to make their BPs in a two-stage process: to make sketchy, mostly-blank BP
|
||||||
|
structures for them early on — but getting their names registered — and
|
||||||
|
then fill in the correct details later. This is where such sketchy pairs are
|
||||||
|
made:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::REL_typecheck</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">Relations::Explicit::REL_typecheck</span></span>:<br/><a href="5-er.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Relations::Explicit::make_pair_sketchily</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">Relations::Explicit::make_pair_sketchily</span></span>:<br/>New Relation Requests - <a href="3-nrr.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">wa</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">relname</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">relname</span><span class="plain-syntax">, </span><span class="string-syntax">"%V"</span><span class="plain-syntax">, </span><span class="identifier-syntax">WordAssemblages::first_word</span><span class="plain-syntax">(&</span><span class="identifier-syntax">wa</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><span class="identifier-syntax">BinaryPredicates::make_pair</span><span class="plain-syntax">(</span><span class="identifier-syntax">explicit_bp_family</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">BPTerms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">), </span><span class="identifier-syntax">BPTerms::new</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">relname</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="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">wa</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">relname</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">explicit_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ED</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">explicit_bp_data</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">family_specific</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STORE_POINTER_explicit_bp_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">ED</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">reversal</span><span class="plain-syntax">-></span><span class="identifier-syntax">family_specific</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STORE_POINTER_explicit_bp_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">ED</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ED</span><span class="plain-syntax">-></span><span class="element-syntax">equiv_data</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">ED</span><span class="plain-syntax">-></span><span class="element-syntax">i6_storage_property</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">ED</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="constant-syntax">Relation_OtoO</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ED</span><span class="plain-syntax">-></span><span class="element-syntax">v2v_bitmap_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="reserved-syntax">return</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">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Relations::Explicit::get_i6_storage_property</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">Relations::Explicit::get_i6_storage_property</span></span>:<br/><a href="5-er.html#SP8">§8</a></span></button><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><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">relation_family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">explicit_bp_family</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">explicit_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ED</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_explicit_bp_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">family_specific</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">ED</span><span class="plain-syntax">-></span><span class="element-syntax">i6_storage_property</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">Relations::Explicit::get_form_of_relation</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">Relations::Explicit::get_form_of_relation</span></span>:<br/><a href="5-er.html#SP4">§4</a>, <a href="5-er.html#SP7">§7</a>, <a href="5-er.html#SP8">§8</a>, <a href="5-er.html#SP10">§10</a></span></button><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><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">relation_family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">explicit_bp_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">Relation_Implicit</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">explicit_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ED</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_explicit_bp_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">family_specific</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">ED</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
<span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="function-syntax">Relations::Explicit::form_to_text</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><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><a href="5-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="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_OtoO:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_OtoO"</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">Relation_OtoV:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_OtoV"</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">Relation_VtoO:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_VtoO"</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">Relation_VtoV:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_VtoV"</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">Relation_Sym_OtoO:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_Sym_OtoO"</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">Relation_Sym_VtoV:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_Sym_VtoV"</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">Relation_Equiv:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_Equiv"</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_Implicit"</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>They typecheck by the default rule only:
|
||||||
|
</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">Relations::Explicit::REL_typecheck</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">Relations::Explicit::REL_typecheck</span></span>:<br/><a href="5-er.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">kinds_required</span><span class="plain-syntax">, </span><span class="identifier-syntax">tc_problem_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tck</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">kinds_of_terms</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">kinds_required</span><span class="plain-syntax">, </span><span class="identifier-syntax">tc_problem_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tck</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">DECLINE_TO_MATCH</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">DECLINE_TO_MATCH</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>They are asserted thus. Note that if we have a symmetric relation then we need
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>They are asserted thus. Note that if we have a symmetric relation then we need
|
||||||
to behave as if \(B(y, x)\) had also been asserted whenever \(B(x, y)\) has, if
|
to behave as if \(B(y, x)\) had also been asserted whenever \(B(x, y)\) has, if
|
||||||
\(x\neq y\).
|
\(x\neq y\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::REL_assert</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">Relations::Explicit::REL_assert</span></span>:<br/><a href="5-er.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::REL_assert</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">Relations::Explicit::REL_assert</span></span>:<br/><a href="5-er.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs0</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="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs0</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="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">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="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">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="named-paragraph-container code-font"><a href="5-er.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Reject non-assertable relations</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-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><span class="identifier-syntax">BinaryPredicates::store_dynamically</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">BinaryPredicates::store_dynamically</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">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">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="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">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">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="5-er.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">Reject relationship with nothing</span><span class="named-paragraph-number">4.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">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="5-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="5-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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-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">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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">BinaryPredicates::get_form_of_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Relation_Sym_VtoV</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="5-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">) && (</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">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="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">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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BinaryPredicates::is_explicit_with_runtime_storage</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><a href="5-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>
|
||||||
<span class="plain-syntax"> </span><a href="5-er.html#SP5" class="function-link"><span class="function-syntax">Relations::Explicit::infer_property_based_relation</span></a><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><a href="5-er.html#SP8" class="function-link"><span class="function-syntax">Relations::Explicit::infer_property_based_relation</span></a><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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">BinaryPredicates::get_form_of_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Relation_Sym_OtoO</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="5-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_OtoO</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-er.html#SP5" class="function-link"><span class="function-syntax">Relations::Explicit::infer_property_based_relation</span></a><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><a href="5-er.html#SP8" class="function-link"><span class="function-syntax">Relations::Explicit::infer_property_based_relation</span></a><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">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">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</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><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="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::allow_arbitrary_assertions</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><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">form_of_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_Equiv</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_VtoV</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_Sym_VtoV</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>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP4_1" class="paragraph-anchor"></a><b>§4.1. </b>This is the point at which non-assertable relations are thrown out.
|
<p class="commentary firstcommentary"><a id="SP7_1" class="paragraph-anchor"></a><b>§7.1. </b>This is the point at which non-assertable relations are thrown out.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reject non-assertable relations</span><span class="named-paragraph-number">4.1</span></span><span class="comment-syntax"> =</span>
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reject non-assertable relations</span><span class="named-paragraph-number">7.1</span></span><span class="comment-syntax"> =</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
@ -177,8 +262,8 @@ to behave as if \(B(y, x)\) had also been asserted whenever \(B(x, y)\) has, if
|
||||||
<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">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="5-er.html#SP4">§4</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="5-er.html#SP7">§7</a>.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP4_2" class="paragraph-anchor"></a><b>§4.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reject relationship with nothing</span><span class="named-paragraph-number">4.2</span></span><span class="comment-syntax"> =</span>
|
<p class="commentary firstcommentary"><a id="SP7_2" class="paragraph-anchor"></a><b>§7.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reject relationship with nothing</span><span class="named-paragraph-number">7.2</span></span><span class="comment-syntax"> =</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
@ -190,8 +275,8 @@ to behave as if \(B(y, x)\) had also been asserted whenever \(B(x, y)\) has, if
|
||||||
<span class="plain-syntax"> </span><span class="string-syntax">"to try to put 'Mr Cogito' and 'nothing' into a relationship."</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="string-syntax">"to try to put 'Mr Cogito' and 'nothing' into a relationship."</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">TRUE</span><span class="plain-syntax">;</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="5-er.html#SP4">§4</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="5-er.html#SP7">§7</a>.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>This routine converts the knowledge that \(R(ox, oy)\) into a single
|
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>This routine converts the knowledge that \(R(ox, oy)\) into a single
|
||||||
inference. It can only be used for a simple subclass of the relations:
|
inference. It can only be used for a simple subclass of the relations:
|
||||||
those which store <span class="extract"><span class="extract-syntax">oy</span></span>, the only thing related to <span class="extract"><span class="extract-syntax">ox</span></span>, in a given property
|
those which store <span class="extract"><span class="extract-syntax">oy</span></span>, the only thing related to <span class="extract"><span class="extract-syntax">ox</span></span>, in a given property
|
||||||
of <span class="extract"><span class="extract-syntax">ox</span></span>. The beauty of this is that the "only thing related to" business
|
of <span class="extract"><span class="extract-syntax">ox</span></span>. The beauty of this is that the "only thing related to" business
|
||||||
|
@ -201,32 +286,32 @@ inferences for \(y\) and \(z\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::infer_property_based_relation</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">Relations::Explicit::infer_property_based_relation</span></span>:<br/><a href="5-er.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">relation</span><span class="plain-syntax">,</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::infer_property_based_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">Relations::Explicit::infer_property_based_relation</span></span>:<br/><a href="5-er.html#SP7">§7</a></span></button><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><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs0</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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs0</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BinaryPredicates::get_form_of_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">relation</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Relation_VtoO</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-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_VtoO</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">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="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="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">BinaryPredicates::get_i6_storage_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">relation</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="5-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">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="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>We need do nothing special: these relations can be compiled from their schemas.
|
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>We need do nothing special: these relations can be compiled from their schemas.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::REL_compile</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">Relations::Explicit::REL_compile</span></span>:<br/><a href="5-er.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</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="identifier-syntax">annotated_i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">asch</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::REL_compile</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">Relations::Explicit::REL_compile</span></span>:<br/><a href="5-er.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</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="identifier-syntax">annotated_i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">asch</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">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="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Problem message text:
|
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Problem message text:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::REL_describe_for_problems</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">Relations::Explicit::REL_describe_for_problems</span></span>:<br/><a href="5-er.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::REL_describe_for_problems</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">Relations::Explicit::REL_describe_for_problems</span></span>:<br/><a href="5-er.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</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><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">FALSE</span><span class="plain-syntax">;</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">Relations::Explicit::REL_describe_briefly</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">Relations::Explicit::REL_describe_briefly</span></span>:<br/><a href="5-er.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::REL_describe_briefly</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">Relations::Explicit::REL_describe_briefly</span></span>:<br/><a href="5-er.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</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><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><a href="5-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="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_OtoO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"one-to-one"</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_OtoO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"one-to-one"</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_OtoV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"one-to-various"</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_OtoV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"one-to-various"</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_VtoO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"various-to-one"</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_VtoO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"various-to-one"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
|
@ -234,9 +319,11 @@ inferences for \(y\) and \(z\).
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_Sym_OtoO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"one-to-another"</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_Sym_OtoO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"one-to-another"</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_Sym_VtoV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"various-to-each-other"</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_Sym_VtoV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"various-to-each-other"</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_Equiv:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"in groups"</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_Equiv:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"in groups"</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">Relation_ByRoutine:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"defined"</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="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Relations::Explicit::REL_br_describe_briefly</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">Relations::Explicit::REL_br_describe_briefly</span></span>:<br/><a href="5-er.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</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><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"defined"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="5-tur.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresschapter"><a href="2-bv.html">2</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-kpr.html">kpr</a></li><li class="progresssection"><a href="5-tap.html">tap</a></li><li class="progresssection"><a href="5-tcp.html">tcp</a></li><li class="progresssection"><a href="5-terr.html">terr</a></li><li class="progresssection"><a href="5-qr.html">qr</a></li><li class="progresssection"><a href="5-tur.html">tur</a></li><li class="progresscurrent">er</li><li class="progresssection"><a href="5-am.html">am</a></li><li class="progresschapter"><a href="6-tc.html">6</a></li><li class="progressnext"><a href="5-am.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="5-tur.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresschapter"><a href="2-bv.html">2</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-kpr.html">kpr</a></li><li class="progresssection"><a href="5-tap.html">tap</a></li><li class="progresssection"><a href="5-tcp.html">tcp</a></li><li class="progresssection"><a href="5-terr.html">terr</a></li><li class="progresssection"><a href="5-qr.html">qr</a></li><li class="progresssection"><a href="5-tur.html">tur</a></li><li class="progresscurrent">er</li><li class="progresssection"><a href="5-am.html">am</a></li><li class="progresschapter"><a href="6-tc.html">6</a></li><li class="progressnext"><a href="5-am.html">❯</a></li></ul></div>
|
||||||
|
|
|
@ -112,7 +112,7 @@ which use this module:
|
||||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *, </span><a href="4-prp.html#SP7" class="function-link"><span class="function-syntax">Propositions::log</span></a><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *, </span><a href="4-prp.html#SP7" class="function-link"><span class="function-syntax">Propositions::log</span></a><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *, </span><a href="4-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::log</span></a><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *, </span><a href="4-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::log</span></a><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> *, </span><a href="4-trm.html#SP12" class="function-link"><span class="function-syntax">Terms::log</span></a><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> *, </span><a href="4-trm.html#SP12" class="function-link"><span class="function-syntax">Terms::log</span></a><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *, </span><a href="3-bp.html#SP18" class="function-link"><span class="function-syntax">BinaryPredicates::log</span></a><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *, </span><a href="3-bp.html#SP16" class="function-link"><span class="function-syntax">BinaryPredicates::log</span></a><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *, </span><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicates::log</span></a><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *, </span><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicates::log</span></a><span class="plain-syntax">)</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CalculusModule::start</span><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">CalculusModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -121,7 +121,7 @@ which use this module:
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'o'</span><span class="plain-syntax">, </span><a href="4-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::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">'o'</span><span class="plain-syntax">, </span><a href="4-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::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">'r'</span><span class="plain-syntax">, </span><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicates::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">'r'</span><span class="plain-syntax">, </span><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicates::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">'0'</span><span class="plain-syntax">, </span><a href="4-trm.html#SP12" class="function-link"><span class="function-syntax">Terms::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">'0'</span><span class="plain-syntax">, </span><a href="4-trm.html#SP12" class="function-link"><span class="function-syntax">Terms::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">'2'</span><span class="plain-syntax">, </span><a href="3-bp.html#SP18" class="function-link"><span class="function-syntax">BinaryPredicates::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">'2'</span><span class="plain-syntax">, </span><a href="3-bp.html#SP16" class="function-link"><span class="function-syntax">BinaryPredicates::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">PREDICATE_CALCULUS_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"predicate calculus"</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">PREDICATE_CALCULUS_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"predicate calculus"</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">PREDICATE_CALCULUS_WORKINGS_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"predicate calculus workings"</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">PREDICATE_CALCULUS_WORKINGS_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"predicate calculus workings"</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">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="constant-syntax">subject_term_ANNOT</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="constant-syntax">subject_term_ANNOT</span><span class="plain-syntax">,</span>
|
||||||
|
|
|
@ -86,7 +86,7 @@ function togglePopup(material_id) {
|
||||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Services</a></li><li><a href="index.html">calculus</a></li><li><a href="index.html#3">Chapter 3: Binary Predicates</a></li><li><b>Binary Predicates</b></li></ul></div>
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Services</a></li><li><a href="index.html">calculus</a></li><li><a href="index.html#3">Chapter 3: Binary Predicates</a></li><li><b>Binary Predicates</b></li></ul></div>
|
||||||
<p class="purpose">To create and manage binary predicates, which are the underlying data structures beneath Inform's relations.</p>
|
<p class="purpose">To create and manage binary predicates, which are the underlying data structures beneath Inform's relations.</p>
|
||||||
|
|
||||||
<ul class="toc"><li><a href="3-bp.html#SP12">§12. Making the equality relation</a></li><li><a href="3-bp.html#SP13">§13. Making a pair of relations</a></li><li><a href="3-bp.html#SP15">§15. BP construction</a></li><li><a href="3-bp.html#SP16">§16. The package</a></li><li><a href="3-bp.html#SP17">§17. The handler</a></li><li><a href="3-bp.html#SP18">§18. BP and term logging</a></li><li><a href="3-bp.html#SP19">§19. Relation names</a></li><li><a href="3-bp.html#SP21">§21. Miscellaneous access routines</a></li></ul><hr class="tocbar">
|
<ul class="toc"><li><a href="3-bp.html#SP11">§11. Making the equality relation</a></li><li><a href="3-bp.html#SP12">§12. Making a pair of relations</a></li><li><a href="3-bp.html#SP13">§13. BP construction</a></li><li><a href="3-bp.html#SP14">§14. The package</a></li><li><a href="3-bp.html#SP15">§15. The handler</a></li><li><a href="3-bp.html#SP16">§16. BP and term logging</a></li><li><a href="3-bp.html#SP17">§17. Relation names</a></li><li><a href="3-bp.html#SP19">§19. Miscellaneous access routines</a></li></ul><hr class="tocbar">
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Given any binary predicate \(B\), we may wish to do some or all of the
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Given any binary predicate \(B\), we may wish to do some or all of the
|
||||||
following at run-time:
|
following at run-time:
|
||||||
|
@ -162,7 +162,6 @@ and "inside" the wrong way round.
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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">binary_predicate</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">binary_predicate</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">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">relation_family</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">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">relation_family</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">form_of_relation</span><span class="plain-syntax">; </span><span class="comment-syntax"> one of the </span><span class="extract"><span class="extract-syntax">Relation_*</span></span><span class="comment-syntax"> constants defined below</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">relation_name</span><span class="plain-syntax">; </span><span class="comment-syntax"> (which might have length 0)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">relation_name</span><span class="plain-syntax">; </span><span class="comment-syntax"> (which might have length 0)</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">bp_created_at</span><span class="plain-syntax">; </span><span class="comment-syntax"> where declared in the source text</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">bp_created_at</span><span class="plain-syntax">; </span><span class="comment-syntax"> where declared in the source text</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">debugging_log_name</span><span class="plain-syntax">; </span><span class="comment-syntax"> used when printing propositions to the debug log</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">debugging_log_name</span><span class="plain-syntax">; </span><span class="comment-syntax"> used when printing propositions to the debug log</span>
|
||||||
|
@ -171,7 +170,6 @@ and "inside" the wrong way round.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp_package</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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp_package</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> when referred to as a constant</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> when referred to as a constant</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">handler_iname</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">handler_iname</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v2v_bitmap_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> only relevant for some relations</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">initialiser_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> if stored in dynamically allocated memory</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">initialiser_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> if stored in dynamically allocated memory</span>
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
|
|
||||||
|
@ -189,10 +187,6 @@ and "inside" the wrong way round.
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="comment-syntax"> for optimisation of run-time code:</span>
|
<span class="plain-syntax"> </span><span class="comment-syntax"> for optimisation of run-time code:</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">dynamic_memory</span><span class="plain-syntax">; </span><span class="comment-syntax"> stored in dynamically allocated memory</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">dynamic_memory</span><span class="plain-syntax">; </span><span class="comment-syntax"> stored in dynamically allocated memory</span>
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</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">i6_storage_property</span><span class="plain-syntax">; </span><span class="comment-syntax"> provides run-time storage</span>
|
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">storage_kindXXX</span><span class="plain-syntax">; </span><span class="comment-syntax"> kind of property owner</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow_function_simplification</span><span class="plain-syntax">; </span><span class="comment-syntax"> allow Inform to make use of any </span>\(f_i\)<span class="comment-syntax"> functions?</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow_function_simplification</span><span class="plain-syntax">; </span><span class="comment-syntax"> allow Inform to make use of any </span>\(f_i\)<span class="comment-syntax"> functions?</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">fast_route_finding</span><span class="plain-syntax">; </span><span class="comment-syntax"> use fast rather than slow route-finding algorithm?</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">fast_route_finding</span><span class="plain-syntax">; </span><span class="comment-syntax"> use fast rather than slow route-finding algorithm?</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loop_parent_optimisation_proviso</span><span class="plain-syntax">; </span><span class="comment-syntax"> if not NULL, optimise loops using object tree</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loop_parent_optimisation_proviso</span><span class="plain-syntax">; </span><span class="comment-syntax"> if not NULL, optimise loops using object tree</span>
|
||||||
|
@ -206,29 +200,12 @@ and "inside" the wrong way round.
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax">;</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure binary_predicate is accessed in 3/bpf and here.</li></ul>
|
<ul class="endnotetexts"><li>The structure binary_predicate is accessed in 3/bpf and here.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>The following constants are used to identify the "form" of a BP (in that the
|
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>That completes the catalogue of the one-off cases, and we can move on
|
||||||
<span class="extract"><span class="extract-syntax">form_of_relation</span></span> field of any BP always equals one of these and never changes).
|
|
||||||
These constant names (and values) exactly match a set of constants compiled
|
|
||||||
into every I6 program created by Inform, so they can be used freely both in
|
|
||||||
the Inform source code and also in the I6 template layer.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">Relation_Implicit</span><span class="plain-syntax"> -1 </span><span class="comment-syntax"> all implicit BPs have this form, and all others are explicit</span>
|
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_OtoO</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> </span><span class="comment-syntax"> one to one: "R relates one K to one K"</span>
|
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_OtoV</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="comment-syntax"> one to various: "R relates one K to various K"</span>
|
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_VtoO</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax"> </span><span class="comment-syntax"> various to one: "R relates various K to one K"</span>
|
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_VtoV</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> </span><span class="comment-syntax"> various to various: "R relates various K to various K"</span>
|
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_Sym_OtoO</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span><span class="plain-syntax"> </span><span class="comment-syntax"> symmetric one to one: "R relates one K to another"</span>
|
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_Sym_VtoV</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax"> </span><span class="comment-syntax"> symmetric various to various: "R relates K to each other"</span>
|
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_Equiv</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax"> </span><span class="comment-syntax"> equivalence relation: "R relates K to each other in groups"</span>
|
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">Relation_ByRoutine</span><span class="plain-syntax"> </span><span class="constant-syntax">8</span><span class="plain-syntax"> </span><span class="comment-syntax"> relation tested by a routine: "R relates K to L when (some condition)"</span>
|
|
||||||
</pre>
|
|
||||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>That completes the catalogue of the one-off cases, and we can move on
|
|
||||||
to the five families of implicit relations which correspond to other
|
to the five families of implicit relations which correspond to other
|
||||||
structures in the source text.
|
structures in the source text.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>The second family of implicit relations corresponds to any property which has
|
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>The second family of implicit relations corresponds to any property which has
|
||||||
been given as the meaning of a verb, as in the example
|
been given as the meaning of a verb, as in the example
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -240,7 +217,7 @@ been given as the meaning of a verb, as in the example
|
||||||
\(w\) a weight.
|
\(w\) a weight.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>The third family corresponds to defined adjectives which perform a
|
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>The third family corresponds to defined adjectives which perform a
|
||||||
numerical comparison in a particular way, as here:
|
numerical comparison in a particular way, as here:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -252,7 +229,7 @@ numerical comparison in a particular way, as here:
|
||||||
if woman \(x\) is taller than woman \(y\).
|
if woman \(x\) is taller than woman \(y\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>The fourth family corresponds to value properties, so that
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>The fourth family corresponds to value properties, so that
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
|
@ -263,7 +240,7 @@ if woman \(x\) is taller than woman \(y\).
|
||||||
doors \(d_1\) and \(d_2\) have the same street number.
|
doors \(d_1\) and \(d_2\) have the same street number.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>The fifth family corresponds to names of table columns. If any table includes
|
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>The fifth family corresponds to names of table columns. If any table includes
|
||||||
a column headed "eggs per clutch" then that will implicitly construct a
|
a column headed "eggs per clutch" then that will implicitly construct a
|
||||||
relation \(LEPC(n, T)\) which is true if and only if the number \(n\) is listed
|
relation \(LEPC(n, T)\) which is true if and only if the number \(n\) is listed
|
||||||
as one of the eggs-per-clutch entries in the table \(T\), where \(T\) has to be
|
as one of the eggs-per-clutch entries in the table \(T\), where \(T\) has to be
|
||||||
|
@ -271,11 +248,11 @@ one of the tables which has a column of this name.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span>
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">VERB_MEANING_LINGUISTICS_TYPE</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span>
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">VERB_MEANING_REVERSAL_LINGUISTICS_CALLBACK</span><span class="plain-syntax"> </span><a href="3-bp.html#SP23" class="function-link"><span class="function-syntax">BinaryPredicates::get_reversal</span></a>
|
<span class="definition-keyword">define</span> <span class="constant-syntax">VERB_MEANING_REVERSAL_LINGUISTICS_CALLBACK</span><span class="plain-syntax"> </span><a href="3-bp.html#SP21" class="function-link"><span class="function-syntax">BinaryPredicates::get_reversal</span></a>
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">VERB_MEANING_EQUALITY</span><span class="plain-syntax"> </span><span class="identifier-syntax">R_equality</span>
|
<span class="definition-keyword">define</span> <span class="constant-syntax">VERB_MEANING_EQUALITY</span><span class="plain-syntax"> </span><span class="identifier-syntax">R_equality</span>
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">VERB_MEANING_POSSESSION</span><span class="plain-syntax"> </span><span class="identifier-syntax">a_has_b_predicate</span>
|
<span class="definition-keyword">define</span> <span class="constant-syntax">VERB_MEANING_POSSESSION</span><span class="plain-syntax"> </span><span class="identifier-syntax">a_has_b_predicate</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Combining these:
|
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>Combining these:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
@ -288,7 +265,7 @@ one of the tables which has a column of this name.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::binary_con</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_relation</span><span class="plain-syntax">, </span><span class="identifier-syntax">K0</span><span class="plain-syntax">, </span><span class="identifier-syntax">K1</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::binary_con</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_relation</span><span class="plain-syntax">, </span><span class="identifier-syntax">K0</span><span class="plain-syntax">, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>And as a convenience:
|
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>And as a convenience:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
@ -303,7 +280,7 @@ one of the tables which has a column of this name.
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Making the equality relation. </b>As we shall see below, BPs are almost always created in matched pairs. There
|
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Making the equality relation. </b>As we shall see below, BPs are almost always created in matched pairs. There
|
||||||
is one and only one exception to this rule: the equality predicate where
|
is one and only one exception to this rule: the equality predicate where
|
||||||
\(EQ(x, y)\) if \(x = y\). Equality plays a special role in the system of logic
|
\(EQ(x, y)\) if \(x = y\). Equality plays a special role in the system of logic
|
||||||
we'll be using. Since \(x = y\) and \(y = x\) are exactly equivalent, it is safe
|
we'll be using. Since \(x = y\) and \(y = x\) are exactly equivalent, it is safe
|
||||||
|
@ -322,7 +299,7 @@ this effect. For now, we give \(EQ\) entirely blank term details.
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::make_equality</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">BinaryPredicates::make_equality</span></span>:<br/>The Equality Relation - <a href="3-ter.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">, </span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">WA</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::make_equality</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">BinaryPredicates::make_equality</span></span>:<br/>The Equality Relation - <a href="3-ter.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">, </span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">WA</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP15" class="function-link"><span class="function-syntax">BinaryPredicates::make_single</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP13" class="function-link"><span class="function-syntax">BinaryPredicates::make_single</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-bptd.html#SP2" class="function-link"><span class="function-syntax">BPTerms::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">), </span><a href="3-bptd.html#SP2" class="function-link"><span class="function-syntax">BPTerms::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">),</span>
|
<span class="plain-syntax"> </span><a href="3-bptd.html#SP2" class="function-link"><span class="function-syntax">BPTerms::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">), </span><a href="3-bptd.html#SP2" class="function-link"><span class="function-syntax">BPTerms::new</span></a><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">I</span><span class="string-syntax">"is"</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="identifier-syntax">WA</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"is"</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="identifier-syntax">WA</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">reversal</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">; </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">right_way_round</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">reversal</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">; </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">right_way_round</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -332,7 +309,7 @@ this effect. For now, we give \(EQ\) entirely blank term details.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Making a pair of relations. </b>Every other BP belongs to a matched pair, in which each is the reversal of
|
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Making a pair of relations. </b>Every other BP belongs to a matched pair, in which each is the reversal of
|
||||||
the other, but only one is designated as being "the right way round".
|
the other, but only one is designated as being "the right way round".
|
||||||
The left-hand term of one behaves like the right-hand term of the other,
|
The left-hand term of one behaves like the right-hand term of the other,
|
||||||
and vice versa.
|
and vice versa.
|
||||||
|
@ -344,7 +321,7 @@ how to compile the BP for the one which is the right way round.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::make_pair</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">BinaryPredicates::make_pair</span></span>:<br/><a href="3-bp.html#SP14">§14</a><br/>The Equality Relation - <a href="3-ter.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
<span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::make_pair</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">BinaryPredicates::make_pair</span></span>:<br/>The Equality Relation - <a href="3-ter.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_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="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">left_term</span><span class="plain-syntax">, </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">right_term</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">left_term</span><span class="plain-syntax">, </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">right_term</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">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">namer</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">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">namer</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mtf</span><span class="plain-syntax">, </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tf</span><span class="plain-syntax">, </span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">source_name</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mtf</span><span class="plain-syntax">, </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tf</span><span class="plain-syntax">, </span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">source_name</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -356,9 +333,9 @@ how to compile the BP for the one which is the right way round.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">nr</span><span class="plain-syntax">, </span><span class="identifier-syntax">namer</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">nr</span><span class="plain-syntax">, </span><span class="identifier-syntax">namer</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">nr</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">nr</span><span class="plain-syntax">, </span><span class="string-syntax">"%S-r"</span><span class="plain-syntax">, </span><span class="identifier-syntax">n</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">nr</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">nr</span><span class="plain-syntax">, </span><span class="string-syntax">"%S-r"</span><span class="plain-syntax">, </span><span class="identifier-syntax">n</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP15" class="function-link"><span class="function-syntax">BinaryPredicates::make_single</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">family</span><span class="plain-syntax">, </span><span class="identifier-syntax">left_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">right_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">n</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP13" class="function-link"><span class="function-syntax">BinaryPredicates::make_single</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">family</span><span class="plain-syntax">, </span><span class="identifier-syntax">left_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">right_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">n</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">mtf</span><span class="plain-syntax">, </span><span class="identifier-syntax">tf</span><span class="plain-syntax">, </span><span class="identifier-syntax">source_name</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">mtf</span><span class="plain-syntax">, </span><span class="identifier-syntax">tf</span><span class="plain-syntax">, </span><span class="identifier-syntax">source_name</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bpr</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP15" class="function-link"><span class="function-syntax">BinaryPredicates::make_single</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">family</span><span class="plain-syntax">, </span><span class="identifier-syntax">right_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">left_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">nr</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">bpr</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP13" class="function-link"><span class="function-syntax">BinaryPredicates::make_single</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">family</span><span class="plain-syntax">, </span><span class="identifier-syntax">right_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">left_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">nr</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="identifier-syntax">WordAssemblages::lit_0</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="identifier-syntax">WordAssemblages::lit_0</span><span class="plain-syntax">());</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">reversal</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bpr</span><span class="plain-syntax">; </span><span class="identifier-syntax">bpr</span><span class="plain-syntax">-></span><span class="element-syntax">reversal</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">reversal</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bpr</span><span class="plain-syntax">; </span><span class="identifier-syntax">bpr</span><span class="plain-syntax">-></span><span class="element-syntax">reversal</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
|
||||||
|
@ -373,29 +350,7 @@ how to compile the BP for the one which is the right way round.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>When the source text declares new relations, it turns out to be convenient
|
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. BP construction. </b>The following routine should only ever be called from the two above: provided
|
||||||
to make their BPs in a two-stage process: to make sketchy, mostly-blank BP
|
|
||||||
structures for them early on — but getting their names registered — and
|
|
||||||
then fill in the correct details later. This is where such sketchy pairs are
|
|
||||||
made:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
|
||||||
<span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::make_pair_sketchily</span><span class="plain-syntax">(</span><span class="reserved-syntax">bp_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">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">wa</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">relname</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">relname</span><span class="plain-syntax">, </span><span class="string-syntax">"%V"</span><span class="plain-syntax">, </span><span class="identifier-syntax">WordAssemblages::first_word</span><span class="plain-syntax">(&</span><span class="identifier-syntax">wa</span><span class="plain-syntax">));</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-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-bp.html#SP13" class="function-link"><span class="function-syntax">BinaryPredicates::make_pair</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="3-bptd.html#SP2" class="function-link"><span class="function-syntax">BPTerms::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">), </span><a href="3-bptd.html#SP2" class="function-link"><span class="function-syntax">BPTerms::new</span></a><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">relname</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="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">wa</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">relname</span><span class="plain-syntax">)</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">reversal</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax">}</span>
|
|
||||||
</pre>
|
|
||||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. BP construction. </b>The following routine should only ever be called from the two above: provided
|
|
||||||
we stick to that, we ensure the golden rule that {\it every BP has a reversal
|
we stick to that, we ensure the golden rule that {\it every BP has a reversal
|
||||||
and a BP equals its reversal if and only if it is the equality relation}.
|
and a BP equals its reversal if and only if it is the equality relation}.
|
||||||
</p>
|
</p>
|
||||||
|
@ -408,13 +363,12 @@ would always be <span class="extract"><span class="extract-syntax">NULL</span></
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::make_single</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">BinaryPredicates::make_single</span></span>:<br/><a href="3-bp.html#SP12">§12</a>, <a href="3-bp.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
<span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::make_single</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">BinaryPredicates::make_single</span></span>:<br/><a href="3-bp.html#SP11">§11</a>, <a href="3-bp.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_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="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">left_term</span><span class="plain-syntax">, </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">right_term</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">left_term</span><span class="plain-syntax">, </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">right_term</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">name</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">name</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mtf</span><span class="plain-syntax">, </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tf</span><span class="plain-syntax">, </span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">rn</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mtf</span><span class="plain-syntax">, </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tf</span><span class="plain-syntax">, </span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">rn</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">relation_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">relation_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> = </span><span class="constant-syntax">Relation_Implicit</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">relation_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rn</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">relation_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rn</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">debugging_log_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">debugging_log_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||||
|
@ -423,7 +377,6 @@ would always be <span class="extract"><span class="extract-syntax">NULL</span></
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_package</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_package</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">handler_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">handler_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">v2v_bitmap_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">initialiser_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">initialiser_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">endif</span>
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
|
|
||||||
|
@ -449,10 +402,6 @@ would always be <span class="extract"><span class="extract-syntax">NULL</span></
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="comment-syntax"> for optimisation of run-time code</span>
|
<span class="plain-syntax"> </span><span class="comment-syntax"> for optimisation of run-time code</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">dynamic_memory</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">dynamic_memory</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">i6_storage_property</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">endif</span>
|
|
||||||
<span class="comment-syntax"> bp->storage_kind = NULL;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">allow_function_simplification</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">allow_function_simplification</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">fast_route_finding</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">fast_route_finding</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">loop_parent_optimisation_proviso</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">loop_parent_optimisation_proviso</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
@ -465,11 +414,11 @@ would always be <span class="extract"><span class="extract-syntax">NULL</span></
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. The package. </b></p>
|
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. The package. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||||
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::package</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">BinaryPredicates::package</span></span>:<br/><a href="3-bp.html#SP17">§17</a>, <a href="3-bp.html#SP26">§26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::package</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">BinaryPredicates::package</span></span>:<br/><a href="3-bp.html#SP15">§15</a>, <a href="3-bp.html#SP24">§24</a></span></button><span class="plain-syntax">(</span><span class="reserved-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><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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null 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">bp</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 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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_package</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="element-syntax">bp_package</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">CompilationUnits::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_created_at</span><span class="plain-syntax">), </span><span class="identifier-syntax">RELATIONS_HAP</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">CompilationUnits::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_created_at</span><span class="plain-syntax">), </span><span class="identifier-syntax">RELATIONS_HAP</span><span class="plain-syntax">);</span>
|
||||||
|
@ -477,20 +426,20 @@ would always be <span class="extract"><span class="extract-syntax">NULL</span></
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. The handler. </b></p>
|
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. The handler. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::handler_iname</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::handler_iname</span><span class="plain-syntax">(</span><span class="reserved-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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">handler_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">handler_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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP16" class="function-link"><span class="function-syntax">BinaryPredicates::package</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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP14" class="function-link"><span class="function-syntax">BinaryPredicates::package</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">handler_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">HANDLER_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">handler_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">HANDLER_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">handler_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">handler_iname</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">endif</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. BP and term logging. </b></p>
|
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. BP and term logging. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::log_term_details</span><span class="plain-syntax">(</span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::log_term_details</span><span class="plain-syntax">(</span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -503,21 +452,23 @@ would always be <span class="extract"><span class="extract-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">BinaryPredicates::log</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">BinaryPredicates::log</span></span>:<br/>Calculus Module - <a href="1-cm.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::log</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">BinaryPredicates::log</span></span>:<br/>Calculus Module - <a href="1-cm.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-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><span class="reserved-syntax">int</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">bp</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">"<null-BP>\n"</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">bp</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">"<null-BP>\n"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</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">CORE_MODULE</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"BP%d <%S> - %s way round - %s\n"</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">"BP%d <%S> - %s way round - %s\n"</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">allocation_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">debugging_log_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">right_way_round</span><span class="plain-syntax">?</span><span class="string-syntax">"right"</span><span class="plain-syntax">:</span><span class="string-syntax">"wrong"</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">allocation_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">debugging_log_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">right_way_round</span><span class="plain-syntax">?</span><span class="string-syntax">"right"</span><span class="plain-syntax">:</span><span class="string-syntax">"wrong"</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-bp.html#SP21" class="function-link"><span class="function-syntax">BinaryPredicates::form_to_text</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">Relations::Explicit::form_to_text</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">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"><2; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><a href="3-bp.html#SP18" class="function-link"><span class="function-syntax">BinaryPredicates::log_term_details</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">term_details</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</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">endif</span>
|
||||||
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"BP%d <%S> - %s way round\n"</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">allocation_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">debugging_log_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">right_way_round</span><span class="plain-syntax">?</span><span class="string-syntax">"right"</span><span class="plain-syntax">:</span><span class="string-syntax">"wrong"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</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"><2; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><a href="3-bp.html#SP16" class="function-link"><span class="function-syntax">BinaryPredicates::log_term_details</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">term_details</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" test: $i\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">task_functions</span><span class="plain-syntax">[</span><span class="constant-syntax">TEST_ATOM_TASK</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">" test: $i\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">task_functions</span><span class="plain-syntax">[</span><span class="constant-syntax">TEST_ATOM_TASK</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">" make true: $i\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">task_functions</span><span class="plain-syntax">[</span><span class="constant-syntax">NOW_ATOM_TRUE_TASK</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">" make true: $i\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">task_functions</span><span class="plain-syntax">[</span><span class="constant-syntax">NOW_ATOM_TRUE_TASK</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">" make false: $i\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">task_functions</span><span class="plain-syntax">[</span><span class="constant-syntax">NOW_ATOM_FALSE_TASK</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">" make false: $i\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">task_functions</span><span class="plain-syntax">[</span><span class="constant-syntax">NOW_ATOM_FALSE_TASK</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">CORE_MODULE</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" storage property: $Y\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">i6_storage_property</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. Relation names. </b>A useful little nonterminal to spot the names of relation, such as
|
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. Relation names. </b>A useful little nonterminal to spot the names of relation, such as
|
||||||
"adjacency". (Note: not "adjacency relation".) This is only used when there
|
"adjacency". (Note: not "adjacency relation".) This is only used when there
|
||||||
is good reason to suspect that the word in question is the name of a relation,
|
is good reason to suspect that the word in question is the name of a relation,
|
||||||
so the fact that it runs relatively slowly does not matter.
|
so the fact that it runs relatively slowly does not matter.
|
||||||
|
@ -533,71 +484,47 @@ so the fact that it runs relatively slowly does not matter.
|
||||||
<span class="plain-syntax"> ==> { </span><span class="identifier-syntax">fail</span><span class="plain-syntax"> </span><span class="identifier-syntax">nonterminal</span><span class="plain-syntax"> };</span>
|
<span class="plain-syntax"> ==> { </span><span class="identifier-syntax">fail</span><span class="plain-syntax"> </span><span class="identifier-syntax">nonterminal</span><span class="plain-syntax"> };</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b></p>
|
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_log_name</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">BinaryPredicates::get_log_name</span></span>:<br/>Atomic Propositions - <a href="4-ap.html#SP14_3">§14.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_log_name</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">BinaryPredicates::get_log_name</span></span>:<br/>Atomic Propositions - <a href="4-ap.html#SP14_3">§14.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">debugging_log_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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">debugging_log_name</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. Miscellaneous access routines. </b></p>
|
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. Miscellaneous access routines. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::get_form_of_relation</span><span class="plain-syntax">(</span><span class="reserved-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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</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">BinaryPredicates::is_explicit_with_runtime_storage</span><span class="plain-syntax">(</span><span class="reserved-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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">right_way_round</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">reversal</span><span 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="element-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="constant-syntax">Relation_Implicit</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="constant-syntax">Relation_ByRoutine</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">TRUE</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax">}</span>
|
|
||||||
<span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::form_to_text</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">BinaryPredicates::form_to_text</span></span>:<br/><a href="3-bp.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-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><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">form_of_relation</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">Relation_Implicit:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_Implicit"</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">Relation_OtoO:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_OtoO"</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">Relation_OtoV:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_OtoV"</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">Relation_VtoO:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_VtoO"</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">Relation_VtoV:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_VtoV"</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">Relation_Sym_OtoO:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_Sym_OtoO"</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">Relation_Sym_VtoV:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_Sym_VtoV"</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">Relation_Equiv:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_Equiv"</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">Relation_ByRoutine:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"Relation_ByRoutine"</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"formless-BP"</span><span class="plain-syntax">;</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">BinaryPredicates::get_bp_created_at</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_bp_created_at</span><span class="plain-syntax">(</span><span class="reserved-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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_created_at</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_created_at</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>Details of the terms:
|
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>Details of the terms:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::term_kind</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">BinaryPredicates::term_kind</span></span>:<br/>Binary Predicate Families - <a href="3-bpf.html#SP6">§6</a><br/>Type Check Propositions - <a href="4-tcp.html#SP7">§7</a>, <a href="4-tcp.html#SP9_1">§9.1</a><br/>Simplifications - <a href="5-smp.html#SP2_2">§2.2</a>, <a href="5-smp.html#SP7">§7</a>, <a href="5-smp.html#SP14">§14</a><br/>Sentence Conversions - <a href="5-sc.html#SP1_8">§1.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::term_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">BinaryPredicates::term_kind</span></span>:<br/>Binary Predicate Families - <a href="3-bpf.html#SP6">§6</a><br/>Type Check Propositions - <a href="4-tcp.html#SP7">§7</a>, <a href="4-tcp.html#SP9_1">§9.1</a><br/>Simplifications - <a href="5-smp.html#SP2_2">§2.2</a>, <a href="5-smp.html#SP7">§7</a>, <a href="5-smp.html#SP14">§14</a><br/>Sentence Conversions - <a href="5-sc.html#SP1_8">§1.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span 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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find kind of null relation"</span><span 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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find kind of null relation"</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-bptd.html#SP7" class="function-link"><span class="function-syntax">BPTerms::kind</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">term_details</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</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-bptd.html#SP7" class="function-link"><span class="function-syntax">BPTerms::kind</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">term_details</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">]));</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_term_as_fn_of_other</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">BinaryPredicates::get_term_as_fn_of_other</span></span>:<br/>Terms - <a href="4-trm.html#SP11">§11</a>, <a href="4-trm.html#SP12">§12</a><br/>Simplifications - <a href="5-smp.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_term_as_fn_of_other</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">BinaryPredicates::get_term_as_fn_of_other</span></span>:<br/>Terms - <a href="4-trm.html#SP11">§11</a>, <a href="4-trm.html#SP12">§12</a><br/>Simplifications - <a href="5-smp.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span 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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find function of null relation"</span><span 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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find function of null relation"</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">term_details</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">function_of_other</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">term_details</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">function_of_other</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b>Reversing:
|
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b>Reversing:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_reversal</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">BinaryPredicates::get_reversal</span></span>:<br/><a href="3-bp.html#SP9">§9</a><br/>Simplifications - <a href="5-smp.html#SP10">§10</a><br/>Sentence Conversions - <a href="5-sc.html#SP1_13_1">§1.13.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_reversal</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">BinaryPredicates::get_reversal</span></span>:<br/><a href="3-bp.html#SP8">§8</a><br/>Simplifications - <a href="5-smp.html#SP10">§10</a><br/>Sentence Conversions - <a href="5-sc.html#SP1_13_1">§1.13.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-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><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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find reversal of null relation"</span><span 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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find reversal of null relation"</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">reversal</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">reversal</span><span class="plain-syntax">;</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">BinaryPredicates::is_the_wrong_way_round</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">BinaryPredicates::is_the_wrong_way_round</span></span>:<br/>Type Check Propositions - <a href="4-tcp.html#SP4_6">§4.6</a><br/>Simplifications - <a href="5-smp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::is_the_wrong_way_round</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">BinaryPredicates::is_the_wrong_way_round</span></span>:<br/>Type Check Propositions - <a href="4-tcp.html#SP4_6">§4.6</a><br/>Simplifications - <a href="5-smp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-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><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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">right_way_round</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">right_way_round</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><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="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b>For compiling code from conditions:
|
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>For compiling code from conditions:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
@ -610,7 +537,7 @@ so the fact that it runs relatively slowly does not matter.
|
||||||
<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">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. </b>For the A-parser. The real code is all elsewhere; note that the
|
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b>For the A-parser. The real code is all elsewhere; note that the
|
||||||
<span class="extract"><span class="extract-syntax">assertions</span></span> field, which is used only for relations between values rather
|
<span class="extract"><span class="extract-syntax">assertions</span></span> field, which is used only for relations between values rather
|
||||||
than objects, is a linked list. (Information about objects is stored in
|
than objects, is a linked list. (Information about objects is stored in
|
||||||
linked lists pointed to from the <span class="extract"><span class="extract-syntax">instance</span></span> structure in question; that
|
linked lists pointed to from the <span class="extract"><span class="extract-syntax">instance</span></span> structure in question; that
|
||||||
|
@ -629,23 +556,18 @@ relation itself.)
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">knowledge_about_bp</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">knowledge_about_bp</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. </b>For use when optimising code.
|
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b>For use when optimising code.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::allows_function_simplification</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">BinaryPredicates::allows_function_simplification</span></span>:<br/>Simplifications - <a href="5-smp.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
||||||
<span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_i6_storage_property</span><span class="plain-syntax">(</span><span class="reserved-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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">i6_storage_property</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax">}</span>
|
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::allows_function_simplification</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">BinaryPredicates::allows_function_simplification</span></span>:<br/>Simplifications - <a href="5-smp.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">allow_function_simplification</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">allow_function_simplification</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">default_rr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">default_rr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::mark_as_needed</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::mark_as_needed</span><span class="plain-syntax">(</span><span class="reserved-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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">record_needed</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">record_needed</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">RELATION_RECORD_HL</span><span class="plain-syntax">, </span><a href="3-bp.html#SP16" class="function-link"><span class="function-syntax">BinaryPredicates::package</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">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">RELATION_RECORD_HL</span><span class="plain-syntax">, </span><a href="3-bp.html#SP14" class="function-link"><span class="function-syntax">BinaryPredicates::package</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">default_rr</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">default_rr</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">default_rr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_iname</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">default_rr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">bp_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">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">MEANINGLESS_RR_HL</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">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">MEANINGLESS_RR_HL</span><span class="plain-syntax">);</span>
|
||||||
|
@ -664,7 +586,7 @@ relation itself.)
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP27" class="paragraph-anchor"></a><b>§27. </b>The predicate-calculus engine compiles much better loops if
|
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. </b>The predicate-calculus engine compiles much better loops if
|
||||||
we can help it by providing an I6 schema of a loop header solving the
|
we can help it by providing an I6 schema of a loop header solving the
|
||||||
following problem:
|
following problem:
|
||||||
</p>
|
</p>
|
||||||
|
@ -681,18 +603,18 @@ of looping over all \(x\) in the left domain of \(R\) and testing every possible
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::write_optimised_loop_schema</span><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicates::write_optimised_loop_schema</span><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="reserved-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><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="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">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="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="named-paragraph-container code-font"><a href="3-bp.html#SP27_1" class="named-paragraph-link"><span class="named-paragraph">Try loop ranger optimisation</span><span class="named-paragraph-number">27.1</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bp.html#SP25_1" class="named-paragraph-link"><span class="named-paragraph">Try loop ranger optimisation</span><span class="named-paragraph-number">25.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bp.html#SP27_2" class="named-paragraph-link"><span class="named-paragraph">Try loop parent optimisation subject to a proviso</span><span class="named-paragraph-number">27.2</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bp.html#SP25_2" class="named-paragraph-link"><span class="named-paragraph">Try loop parent optimisation subject to a proviso</span><span class="named-paragraph-number">25.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><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="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP27_1" class="paragraph-anchor"></a><b>§27.1. </b>Some relations \(R\) provide a "ranger" routine, <span class="extract"><span class="extract-syntax">R</span></span>, which is such that
|
<p class="commentary firstcommentary"><a id="SP25_1" class="paragraph-anchor"></a><b>§25.1. </b>Some relations \(R\) provide a "ranger" routine, <span class="extract"><span class="extract-syntax">R</span></span>, which is such that
|
||||||
<span class="extract"><span class="extract-syntax">R(t)</span></span> supplies the first "child" of \(t\) and <span class="extract"><span class="extract-syntax">R(t, n)</span></span> supplies the next
|
<span class="extract"><span class="extract-syntax">R(t)</span></span> supplies the first "child" of \(t\) and <span class="extract"><span class="extract-syntax">R(t, n)</span></span> supplies the next
|
||||||
"child" after \(n\). Thus <span class="extract"><span class="extract-syntax">R</span></span> iterates through some linked list of all the
|
"child" after \(n\). Thus <span class="extract"><span class="extract-syntax">R</span></span> iterates through some linked list of all the
|
||||||
objects \(x\) such that \(R(x, t)\).
|
objects \(x\) such that \(R(x, t)\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Try loop ranger optimisation</span><span class="named-paragraph-number">27.1</span></span><span class="comment-syntax"> =</span>
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Try loop ranger optimisation</span><span class="named-paragraph-number">25.1</span></span><span class="comment-syntax"> =</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
@ -704,8 +626,8 @@ objects \(x\) such that \(R(x, t)\).
|
||||||
<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">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bp.html#SP27">§27</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="3-bp.html#SP25">§25</a>.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP27_2" class="paragraph-anchor"></a><b>§27.2. </b>Other relations make use of the I6 object tree, in cases where \(R(x, t)\)
|
<p class="commentary firstcommentary"><a id="SP25_2" class="paragraph-anchor"></a><b>§25.2. </b>Other relations make use of the I6 object tree, in cases where \(R(x, t)\)
|
||||||
is true if and only if \(t\) is an object which is the parent of \(x\) in the
|
is true if and only if \(t\) is an object which is the parent of \(x\) in the
|
||||||
I6 object tree and some routine associated with \(R\), called its
|
I6 object tree and some routine associated with \(R\), called its
|
||||||
proviso <span class="extract"><span class="extract-syntax">P</span></span>, is such that <span class="extract"><span class="extract-syntax">P(x) == t</span></span>. For example, \({\it worn-by}(x, t)\)
|
proviso <span class="extract"><span class="extract-syntax">P</span></span>, is such that <span class="extract"><span class="extract-syntax">P(x) == t</span></span>. For example, \({\it worn-by}(x, t)\)
|
||||||
|
@ -714,7 +636,7 @@ ensures that we don't falsely pick up, say, items carried by \(t\) which
|
||||||
aren't being worn, or aren't even clothing.
|
aren't being worn, or aren't even clothing.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Try loop parent optimisation subject to a proviso</span><span class="named-paragraph-number">27.2</span></span><span class="comment-syntax"> =</span>
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Try loop parent optimisation subject to a proviso</span><span class="named-paragraph-number">25.2</span></span><span class="comment-syntax"> =</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
@ -725,7 +647,7 @@ aren't being worn, or aren't even clothing.
|
||||||
<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">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bp.html#SP27">§27</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="3-bp.html#SP25">§25</a>.</li></ul>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="3-bptd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bpf.html">bpf</a></li><li class="progresssection"><a href="3-bptd.html">bptd</a></li><li class="progresscurrent">bp</li><li class="progresssection"><a href="3-ter.html">ter</a></li><li class="progresschapter"><a href="4-trm.html">4</a></li><li class="progresschapter"><a href="5-cs.html">5</a></li><li class="progressnext"><a href="3-ter.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="3-bptd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bpf.html">bpf</a></li><li class="progresssection"><a href="3-bptd.html">bptd</a></li><li class="progresscurrent">bp</li><li class="progresssection"><a href="3-ter.html">ter</a></li><li class="progresschapter"><a href="4-trm.html">4</a></li><li class="progresschapter"><a href="5-cs.html">5</a></li><li class="progressnext"><a href="3-ter.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
|
@ -231,8 +231,8 @@ fields, when they are mentioned in problem messages.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</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">" relation"</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">" relation"</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K0</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K0</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">K0</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K0</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K0</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">K0</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K1</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">K1</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K1</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">K1</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" (between "</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">" (between "</span><span 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">K0</span><span class="plain-syntax">, </span><span class="identifier-syntax">K1</span><span 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">K0</span><span class="plain-syntax">, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">)) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Textual::write_plural</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">K0</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Textual::write_plural</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">K0</span><span class="plain-syntax">);</span>
|
||||||
|
|
|
@ -128,7 +128,7 @@ the ideas are exactly the same.
|
||||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="function-syntax">BPTerms::new</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">BPTerms::new</span></span>:<br/><a href="3-bptd.html#SP3">§3</a><br/>Binary Predicates - <a href="3-bp.html#SP12">§12</a>, <a href="3-bp.html#SP14">§14</a><br/>The Equality Relation - <a href="3-ter.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">TERM_DOMAIN_CALCULUS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="function-syntax">BPTerms::new</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">BPTerms::new</span></span>:<br/><a href="3-bptd.html#SP3">§3</a><br/>Binary Predicates - <a href="3-bp.html#SP11">§11</a><br/>The Equality Relation - <a href="3-ter.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">TERM_DOMAIN_CALCULUS_TYPE</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">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">bptd</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> </span><span class="identifier-syntax">bptd</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bptd</span><span class="plain-syntax">.</span><span class="element-syntax">called_name</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">bptd</span><span class="plain-syntax">.</span><span class="element-syntax">called_name</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">bptd</span><span class="plain-syntax">.</span><span class="element-syntax">function_of_other</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">bptd</span><span class="plain-syntax">.</span><span class="element-syntax">function_of_other</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
@ -228,7 +228,7 @@ container (if any) is at present directly containing \(y\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">BPTerms::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">BPTerms::kind</span></span>:<br/>Binary Predicates - <a href="3-bp.html#SP10">§10</a>, <a href="3-bp.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">BPTerms::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">BPTerms::kind</span></span>:<br/>Binary Predicates - <a href="3-bp.html#SP9">§9</a>, <a href="3-bp.html#SP20">§20</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_term_details</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bptd</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bptd</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">-></span><span class="element-syntax">implies_kind</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bptd</span><span class="plain-syntax">-></span><span class="element-syntax">implies_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">bptd</span><span class="plain-syntax">-></span><span class="element-syntax">implies_kind</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bptd</span><span class="plain-syntax">-></span><span class="element-syntax">implies_kind</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">TERM_DOMAIN_TO_KIND_FUNCTION</span><span class="plain-syntax">(</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">-></span><span class="element-syntax">implies_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">TERM_DOMAIN_TO_KIND_FUNCTION</span><span class="plain-syntax">(</span><span class="identifier-syntax">bptd</span><span class="plain-syntax">-></span><span class="element-syntax">implies_infs</span><span class="plain-syntax">);</span>
|
||||||
|
|
|
@ -113,16 +113,16 @@ since (alone among binary predicates) it has no distinct reversal.
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Equality::stock</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">Calculus::Equality::stock</span></span>:<br/><a href="3-ter.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Equality::stock</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">Calculus::Equality::stock</span></span>:<br/><a href="3-ter.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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="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="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="plain-syntax"> </span><span class="identifier-syntax">R_equality</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP12" class="function-link"><span class="function-syntax">BinaryPredicates::make_equality</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">equality_bp_family</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">R_equality</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP11" class="function-link"><span class="function-syntax">BinaryPredicates::make_equality</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">equality_bp_family</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PreformUtilities::wording</span><span class="plain-syntax">(</span><span class="function-syntax"><relation-names></span><span class="plain-syntax">, </span><span class="identifier-syntax">EQUALITY_RELATION_NAME</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">PreformUtilities::wording</span><span class="plain-syntax">(</span><span class="function-syntax"><relation-names></span><span class="plain-syntax">, </span><span class="identifier-syntax">EQUALITY_RELATION_NAME</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-bp.html#SP11" class="function-link"><span class="function-syntax">BinaryPredicates::set_index_details</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R_equality</span><span class="plain-syntax">, </span><span class="string-syntax">"value"</span><span class="plain-syntax">, </span><span class="string-syntax">"value"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="3-bp.html#SP10" class="function-link"><span class="function-syntax">BinaryPredicates::set_index_details</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R_equality</span><span class="plain-syntax">, </span><span class="string-syntax">"value"</span><span class="plain-syntax">, </span><span class="string-syntax">"value"</span><span class="plain-syntax">);</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Equality::stock_spatial</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">Calculus::Equality::stock_spatial</span></span>:<br/><a href="3-ter.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Equality::stock_spatial</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">Calculus::Equality::stock_spatial</span></span>:<br/><a href="3-ter.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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="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="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="plain-syntax"> </span><span class="identifier-syntax">a_has_b_predicate</span><span class="plain-syntax"> =</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">a_has_b_predicate</span><span class="plain-syntax"> =</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-bp.html#SP13" class="function-link"><span class="function-syntax">BinaryPredicates::make_pair</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_bp_family</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><a href="3-bp.html#SP12" class="function-link"><span class="function-syntax">BinaryPredicates::make_pair</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_bp_family</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-bptd.html#SP3" class="function-link"><span class="function-syntax">BPTerms::new_full</span></a><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="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">),</span>
|
<span class="plain-syntax"> </span><a href="3-bptd.html#SP3" class="function-link"><span class="function-syntax">BPTerms::new_full</span></a><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="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">),</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-bptd.html#SP2" class="function-link"><span class="function-syntax">BPTerms::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">),</span>
|
<span class="plain-syntax"> </span><a href="3-bptd.html#SP2" class="function-link"><span class="function-syntax">BPTerms::new</span></a><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">I</span><span class="string-syntax">"has"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"is-had-by"</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"has"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"is-had-by"</span><span class="plain-syntax">,</span>
|
||||||
|
|
|
@ -403,7 +403,7 @@ quantifier is:
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">predicate</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-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">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"?bad-bp?"</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</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><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::get_log_name</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="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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"?bad-bp?"</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</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><a href="3-bp.html#SP18" class="function-link"><span class="function-syntax">BinaryPredicates::get_log_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">));</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP14">§14</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP14">§14</a>.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP14_4" class="paragraph-anchor"></a><b>§14.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Log a comma-separated list of terms for this atomic proposition</span><span class="named-paragraph-number">14.4</span></span><span class="comment-syntax"> =</span>
|
<p class="commentary firstcommentary"><a id="SP14_4" class="paragraph-anchor"></a><b>§14.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Log a comma-separated list of terms for this atomic proposition</span><span class="named-paragraph-number">14.4</span></span><span class="comment-syntax"> =</span>
|
||||||
|
|
|
@ -359,7 +359,7 @@ would work instead. If it would, we make the change within the proposition.
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">predicate</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">predicate</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-bp.html#SP23" class="function-link"><span class="function-syntax">BinaryPredicates::is_the_wrong_way_round</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"BP wrong way round"</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-bp.html#SP21" class="function-link"><span class="function-syntax">BinaryPredicates::is_the_wrong_way_round</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"BP wrong way round"</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-tcp.html#SP9" class="function-link"><span class="function-syntax">Propositions::Checker::type_check_binary_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, &</span><span class="identifier-syntax">vta</span><span class="plain-syntax">, </span><span class="identifier-syntax">tck</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NEVER_MATCH</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-tcp.html#SP9" class="function-link"><span class="function-syntax">Propositions::Checker::type_check_binary_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, &</span><span class="identifier-syntax">vta</span><span class="plain-syntax">, </span><span class="identifier-syntax">tck</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NEVER_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">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_equality</span><span 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_equality</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt</span><span class="plain-syntax"> = </span><a href="4-trm.html#SP10" class="function-link"><span class="function-syntax">Terms::noun_to_adj_conversion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1]);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt</span><span class="plain-syntax"> = </span><a href="4-trm.html#SP10" class="function-link"><span class="function-syntax">Terms::noun_to_adj_conversion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1]);</span>
|
||||||
|
@ -461,7 +461,7 @@ function.
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Checker::approximate_argument_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">Propositions::Checker::approximate_argument_kind</span></span>:<br/><a href="4-tcp.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</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">Propositions::Checker::approximate_argument_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">Propositions::Checker::approximate_argument_kind</span></span>:<br/><a href="4-tcp.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</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><a href="3-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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">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">K_object</span><span 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">K_object</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::weaken</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::weaken</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</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="plain-syntax">}</span>
|
||||||
|
@ -545,7 +545,7 @@ produce a <span class="extract"><span class="extract-syntax">kinds_required</spa
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</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"><2; </span><span class="identifier-syntax">i</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">int</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"><2; </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="identifier-syntax">Kinds::weaken</span><span class="plain-syntax">(</span><a href="3-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::weaken</span><span class="plain-syntax">(</span><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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><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">K</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><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">K</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">kinds_required</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">kinds_required</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="plain-syntax"> }</span>
|
||||||
|
|
|
@ -344,7 +344,7 @@ value, because this might not yet have been checked otherwise.
|
||||||
<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">pt</span><span class="plain-syntax">.</span><span class="identifier-syntax">function</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pt</span><span class="plain-syntax">.</span><span class="identifier-syntax">function</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">pt</span><span class="plain-syntax">.</span><span class="element-syntax">function</span><span class="plain-syntax">)-></span><span class="element-syntax">bp</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">pt</span><span class="plain-syntax">.</span><span class="element-syntax">function</span><span class="plain-syntax">)-></span><span class="element-syntax">bp</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::get_term_as_fn_of_other</span></a><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="identifier-syntax">pt</span><span class="plain-syntax">.</span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-syntax">from_term</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::get_term_as_fn_of_other</span></a><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="identifier-syntax">pt</span><span class="plain-syntax">.</span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-syntax">from_term</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">fn</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">"function of non-functional 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">fn</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">"function of non-functional predicate"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="5-cs.html#SP6" class="function-link"><span class="function-syntax">Calculus::Schemas::emit_expand_from_terms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">pt</span><span class="plain-syntax">.</span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-syntax">fn_of</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="5-cs.html#SP6" class="function-link"><span class="function-syntax">Calculus::Schemas::emit_expand_from_terms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">pt</span><span class="plain-syntax">.</span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-syntax">fn_of</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||||
|
@ -378,7 +378,7 @@ concisely and without fuss.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::log_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">Node::log_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-></span><span class="element-syntax">function</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-></span><span class="element-syntax">function</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pt</span><span class="plain-syntax">-></span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-syntax">bp</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pt</span><span class="plain-syntax">-></span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-syntax">bp</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::get_term_as_fn_of_other</span></a><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="identifier-syntax">pt</span><span class="plain-syntax">-></span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-syntax">from_term</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::get_term_as_fn_of_other</span></a><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="identifier-syntax">pt</span><span class="plain-syntax">-></span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-syntax">from_term</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">fn</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">"function of non-functional 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">fn</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">"function of non-functional predicate"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="5-cs.html#SP10" class="function-link"><span class="function-syntax">Calculus::Schemas::write_applied</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-></span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-syntax">fn_of</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="5-cs.html#SP10" class="function-link"><span class="function-syntax">Calculus::Schemas::write_applied</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-></span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-syntax">fn_of</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-></span><span class="element-syntax">variable</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-></span><span class="element-syntax">variable</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||||
|
|
|
@ -167,7 +167,7 @@ error.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Schemas::modify</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">Calculus::Schemas::modify</span></span>:<br/>Binary Predicates - <a href="3-bp.html#SP27_1">§27.1</a>, <a href="3-bp.html#SP27_2">§27.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fmt</span><span class="plain-syntax">, ...) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Schemas::modify</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">Calculus::Schemas::modify</span></span>:<br/>Binary Predicates - <a href="3-bp.html#SP25_1">§25.1</a>, <a href="3-bp.html#SP25_2">§25.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fmt</span><span class="plain-syntax">, ...) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">va_list</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">; </span><span class="comment-syntax"> the variable argument list signified by the dots</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">va_list</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">; </span><span class="comment-syntax"> the variable argument list signified by the dots</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax">-></span><span class="element-syntax">prototype</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Streams::new_buffer</span><span class="plain-syntax">(</span><span class="constant-syntax">TYPICAL_I6_SCHEMA_LENGTH</span><span class="plain-syntax">, </span><span class="identifier-syntax">sch</span><span class="plain-syntax">-></span><span class="element-syntax">prototype_storage</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax">-></span><span class="element-syntax">prototype</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Streams::new_buffer</span><span class="plain-syntax">(</span><span class="constant-syntax">TYPICAL_I6_SCHEMA_LENGTH</span><span class="plain-syntax">, </span><span class="identifier-syntax">sch</span><span class="plain-syntax">-></span><span class="element-syntax">prototype_storage</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax">-></span><span class="element-syntax">no_quoted_inames</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">sch</span><span class="plain-syntax">-></span><span class="element-syntax">no_quoted_inames</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -317,13 +317,13 @@ we apply it independently to the SP and OP:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subject_K</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">verb_phrase_relation</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">subject_K</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">verb_phrase_relation</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">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">subject_K</span><span class="plain-syntax">)) </span><span class="identifier-syntax">subject_K</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">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">subject_K</span><span class="plain-syntax">)) </span><span class="identifier-syntax">subject_K</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">subject_phrase_prop</span><span class="plain-syntax"> =</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">subject_phrase_prop</span><span class="plain-syntax"> =</span>
|
||||||
<span class="plain-syntax"> </span><a href="5-sc.html#SP2" class="function-link"><span class="function-syntax">Propositions::FromSentences::NP_subtree_to_proposition</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">subject_phrase_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">subject_phrase_subtree</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><a href="5-sc.html#SP2" class="function-link"><span class="function-syntax">Propositions::FromSentences::NP_subtree_to_proposition</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">subject_phrase_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">subject_phrase_subtree</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">subject_K</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">subject_K</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">object_K</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">verb_phrase_relation</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">object_K</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">verb_phrase_relation</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">object_K</span><span class="plain-syntax">)) </span><span class="identifier-syntax">object_K</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">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">object_K</span><span class="plain-syntax">)) </span><span class="identifier-syntax">object_K</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">object_phrase_prop</span><span class="plain-syntax"> =</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">object_phrase_prop</span><span class="plain-syntax"> =</span>
|
||||||
<span class="plain-syntax"> </span><a href="5-sc.html#SP2" class="function-link"><span class="function-syntax">Propositions::FromSentences::NP_subtree_to_proposition</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">object_phrase_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">object_phrase_subtree</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><a href="5-sc.html#SP2" class="function-link"><span class="function-syntax">Propositions::FromSentences::NP_subtree_to_proposition</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">object_phrase_term</span><span class="plain-syntax">, </span><span class="identifier-syntax">object_phrase_subtree</span><span class="plain-syntax">,</span>
|
||||||
|
@ -515,7 +515,7 @@ is irregular because it differs from "something" and "someone".)
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">k_atom</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><a href="2-kp.html#SP3" class="function-link"><span class="function-syntax">KindPredicates::get_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">k_atom</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">k_atom</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><a href="2-kp.html#SP3" class="function-link"><span class="function-syntax">KindPredicates::get_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">k_atom</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">verb_phrase_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_equality</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">room_containment_predicate</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">verb_phrase_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_equality</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">room_containment_predicate</span><span class="plain-syntax">)) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-kp.html#SP4" class="function-link"><span class="function-syntax">KindPredicates::set_composited</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">k_atom</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-kp.html#SP4" class="function-link"><span class="function-syntax">KindPredicates::set_composited</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">k_atom</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">verb_phrase_relation</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP23" class="function-link"><span class="function-syntax">BinaryPredicates::get_reversal</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">room_containment_predicate</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">verb_phrase_relation</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP21" class="function-link"><span class="function-syntax">BinaryPredicates::get_reversal</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">room_containment_predicate</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">PREDICATE_CALCULUS</span><span class="plain-syntax">, </span><span class="string-syntax">"[%d] Decompositing object: $D\n"</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">PREDICATE_CALCULUS</span><span class="plain-syntax">, </span><span class="string-syntax">"[%d] Decompositing object: $D\n"</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">conv_log_depth</span><span class="plain-syntax">, </span><span class="identifier-syntax">object_phrase_prop</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">conv_log_depth</span><span class="plain-syntax">, </span><span class="identifier-syntax">object_phrase_prop</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
|
|
@ -206,9 +206,9 @@ the view that a double negative is a positive.
|
||||||
<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="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">; </span><span class="comment-syntax"> ...but up close to the predicate if it's the OP</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="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">; </span><span class="comment-syntax"> ...but up close to the predicate if it's the OP</span>
|
||||||
<span class="plain-syntax"> </span><span class="comment-syntax"> insert four atoms, in reverse order, at this position:</span>
|
<span class="plain-syntax"> </span><span class="comment-syntax"> insert four atoms, in reverse order, at this position:</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP18" class="function-link"><span class="function-syntax">Propositions::insert_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">position</span><span class="plain-syntax">, </span><a href="4-ap.html#SP4" class="function-link"><span class="function-syntax">Atoms::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DOMAIN_CLOSE_ATOM</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP18" class="function-link"><span class="function-syntax">Propositions::insert_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">position</span><span class="plain-syntax">, </span><a href="4-ap.html#SP4" class="function-link"><span class="function-syntax">Atoms::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DOMAIN_CLOSE_ATOM</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-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP18" class="function-link"><span class="function-syntax">Propositions::insert_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">position</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP18" class="function-link"><span class="function-syntax">Propositions::insert_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">position</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-kp.html#SP3" class="function-link"><span class="function-syntax">KindPredicates::new_atom</span></a><span class="plain-syntax">(</span><a href="3-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">), </span><span class="identifier-syntax">new_var</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-kp.html#SP3" class="function-link"><span class="function-syntax">KindPredicates::new_atom</span></a><span class="plain-syntax">(</span><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">), </span><span class="identifier-syntax">new_var</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP18" class="function-link"><span class="function-syntax">Propositions::insert_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">position</span><span class="plain-syntax">, </span><a href="4-ap.html#SP4" class="function-link"><span class="function-syntax">Atoms::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DOMAIN_OPEN_ATOM</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP18" class="function-link"><span class="function-syntax">Propositions::insert_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">position</span><span class="plain-syntax">, </span><a href="4-ap.html#SP4" class="function-link"><span class="function-syntax">Atoms::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DOMAIN_OPEN_ATOM</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP18" class="function-link"><span class="function-syntax">Propositions::insert_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">position</span><span class="plain-syntax">, </span><a href="4-ap.html#SP6" class="function-link"><span class="function-syntax">Atoms::QUANTIFIER_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">not_exists_quantifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">nv</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">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP18" class="function-link"><span class="function-syntax">Propositions::insert_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">position</span><span class="plain-syntax">, </span><a href="4-ap.html#SP6" class="function-link"><span class="function-syntax">Atoms::QUANTIFIER_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">not_exists_quantifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">nv</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">));</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
@ -477,7 +477,7 @@ because the code testing them is written to cope properly with bogus values.
|
||||||
<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">=1; </span><span class="identifier-syntax">i</span><span class="plain-syntax">>=0; </span><span class="identifier-syntax">i</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">=1; </span><span class="identifier-syntax">i</span><span class="plain-syntax">>=0; </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">v</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="element-syntax">variable</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">v</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="element-syntax">variable</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">v</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">v</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">K</span><span class="plain-syntax"> = </span><a href="3-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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">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="plain-syntax"> </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_KIND</span><span class="plain-syntax"> = </span><a href="2-kp.html#SP3" class="function-link"><span class="function-syntax">KindPredicates::new_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><a href="4-trm.html#SP4" class="function-link"><span class="function-syntax">Terms::new_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_KIND</span><span class="plain-syntax"> = </span><a href="2-kp.html#SP3" class="function-link"><span class="function-syntax">KindPredicates::new_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><a href="4-trm.html#SP4" class="function-link"><span class="function-syntax">Terms::new_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_KIND</span><span class="plain-syntax">-></span><span class="element-syntax">saved_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">new_KIND</span><span class="plain-syntax">-></span><span class="element-syntax">saved_bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
|
||||||
|
@ -834,11 +834,11 @@ would matter if they were.)
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_PROPOSITION</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_PROPOSITION</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="4-ap.html#SP10" class="function-link"><span class="function-syntax">Atoms::is_binary_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="4-ap.html#SP10" class="function-link"><span class="function-syntax">Atoms::is_binary_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span 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><a href="3-bp.html#SP23" class="function-link"><span class="function-syntax">BinaryPredicates::is_the_wrong_way_round</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) && (</span><a href="3-bp.html#SP21" class="function-link"><span class="function-syntax">BinaryPredicates::is_the_wrong_way_round</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="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0];</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0];</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1];</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1];</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">pt</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">pt</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">predicate</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STORE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><a href="3-bp.html#SP23" class="function-link"><span class="function-syntax">BinaryPredicates::get_reversal</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">pl</span><span class="plain-syntax">-></span><span class="element-syntax">predicate</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STORE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><a href="3-bp.html#SP21" class="function-link"><span class="function-syntax">BinaryPredicates::get_reversal</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">PROPOSITION_EDITED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">PROPOSITION_EDITED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
@ -935,8 +935,8 @@ why it was necessary to separate the two out.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="4-ap.html#SP10" class="function-link"><span class="function-syntax">Atoms::is_binary_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="4-ap.html#SP10" class="function-link"><span class="function-syntax">Atoms::is_binary_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span 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">bp</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">j</span><span class="plain-syntax"><2; </span><span class="identifier-syntax">j</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">j</span><span class="plain-syntax"><2; </span><span class="identifier-syntax">j</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-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::get_term_as_fn_of_other</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</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-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::get_term_as_fn_of_other</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">)) &&</span>
|
||||||
<span class="plain-syntax"> (</span><a href="3-bp.html#SP26" class="function-link"><span class="function-syntax">BinaryPredicates::allows_function_simplification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">))) {</span>
|
<span class="plain-syntax"> (</span><a href="3-bp.html#SP24" class="function-link"><span class="function-syntax">BinaryPredicates::allows_function_simplification</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">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1-</span><span class="identifier-syntax">j</span><span class="plain-syntax">] = </span><a href="4-trm.html#SP4" class="function-link"><span class="function-syntax">Terms::new_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1-</span><span class="identifier-syntax">j</span><span class="plain-syntax">], </span><span class="constant-syntax">1</span><span class="plain-syntax">-</span><span class="identifier-syntax">j</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1-</span><span class="identifier-syntax">j</span><span class="plain-syntax">] = </span><a href="4-trm.html#SP4" class="function-link"><span class="function-syntax">Terms::new_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1-</span><span class="identifier-syntax">j</span><span class="plain-syntax">], </span><span class="constant-syntax">1</span><span class="plain-syntax">-</span><span class="identifier-syntax">j</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">predicate</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STORE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">R_equality</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">predicate</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STORE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">R_equality</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PROPOSITION_EDITED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">PROPOSITION_EDITED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
|
||||||
|
@ -1119,7 +1119,7 @@ they have no "not a valid case" value analogous to the non-object <span class="e
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</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="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</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="plain-syntax"> </span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">KIND_term</span><span class="plain-syntax"> = </span><span class="identifier-syntax">kind_atom</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0];</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">KIND_term</span><span class="plain-syntax"> = </span><span class="identifier-syntax">kind_atom</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><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">KIND_term</span><span class="plain-syntax">.</span><span class="element-syntax">function</span><span class="plain-syntax">) </span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KIND_term</span><span class="plain-syntax">.</span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-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">KIND_term</span><span class="plain-syntax">.</span><span class="element-syntax">function</span><span class="plain-syntax">) </span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KIND_term</span><span class="plain-syntax">.</span><span class="element-syntax">function</span><span class="plain-syntax">-></span><span class="element-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">bp</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><a href="3-bp.html#SP22" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><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">bp</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><a href="3-bp.html#SP20" class="function-link"><span class="function-syntax">BinaryPredicates::term_kind</span></a><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="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP34" class="function-link"><span class="function-syntax">Propositions::ungroup_after</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">); </span><span class="comment-syntax"> remove negation grouping</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP34" class="function-link"><span class="function-syntax">Propositions::ungroup_after</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">); </span><span class="comment-syntax"> remove negation grouping</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP19" class="function-link"><span class="function-syntax">Propositions::delete_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">); </span><span class="comment-syntax"> remove </span><span class="extract"><span class="extract-syntax">kind=K</span></span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="4-prp.html#SP19" class="function-link"><span class="function-syntax">Propositions::delete_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">); </span><span class="comment-syntax"> remove </span><span class="extract"><span class="extract-syntax">kind=K</span></span>
|
||||||
<span class="plain-syntax"> </span><span class="comment-syntax"> now insert equality predicate:</span>
|
<span class="plain-syntax"> </span><span class="comment-syntax"> now insert equality predicate:</span>
|
||||||
|
|
|
@ -269,12 +269,12 @@ the containment relation and the wearing relation. To avoid scaring the horses,
|
||||||
binary predicates are called "relations" in all of the Inform documentation.
|
binary predicates are called "relations" in all of the Inform documentation.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary">New BPs can be constructed with <a href="3-bp.html#SP13" class="internal">BinaryPredicates::make_pair</a>. The term "pair"
|
<p class="commentary">New BPs can be constructed with <a href="3-bp.html#SP12" class="internal">BinaryPredicates::make_pair</a>. The term "pair"
|
||||||
is used because every \(B\) has a "reversal" \(B^r\), such that \(B^r(s, t)\) is true
|
is used because every \(B\) has a "reversal" \(B^r\), such that \(B^r(s, t)\) is true
|
||||||
if and only if \(B(t, s)\). \(B\) and \(B^r\) are created in pairs.<sup id="fnref:7"><a href="#fn:7" rel="footnote">7</a></sup>
|
if and only if \(B(t, s)\). \(B\) and \(B^r\) are created in pairs.<sup id="fnref:7"><a href="#fn:7" rel="footnote">7</a></sup>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul class="footnotetexts"><li class="footnote" id="fn:7"><p class="inwebfootnote"><sup id="fnref:7"><a href="#fn:7" rel="footnote">7</a></sup> Except for equality, which is its own reversal. See <a href="3-bp.html#SP12" class="internal">BinaryPredicates::make_equality</a>.
|
<ul class="footnotetexts"><li class="footnote" id="fn:7"><p class="inwebfootnote"><sup id="fnref:7"><a href="#fn:7" rel="footnote">7</a></sup> Except for equality, which is its own reversal. See <a href="3-bp.html#SP11" class="internal">BinaryPredicates::make_equality</a>.
|
||||||
<a href="#fnref:7" title="return to text"> ↩</a></p></li></ul>
|
<a href="#fnref:7" title="return to text"> ↩</a></p></li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Making propositions. </b>Propositions are built incrementally, like Lego, with a sequence of function
|
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Making propositions. </b>Propositions are built incrementally, like Lego, with a sequence of function
|
||||||
calls.
|
calls.
|
||||||
|
|
|
@ -462,7 +462,7 @@ sentence. In effect, this is a read-evaluate-print loop.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP2" class="function-link"><span class="function-syntax">Str::new</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP2" class="function-link"><span class="function-syntax">Str::new</span></a><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">S</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><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</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><span class="reserved-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><span class="reserved-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="../calculus-module/3-bp.html#SP13" class="function-link"><span class="function-syntax">BinaryPredicates::make_pair</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">test_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">t0</span><span class="plain-syntax">, </span><span class="identifier-syntax">t1</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</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><a href="../calculus-module/3-bp.html#SP12" class="function-link"><span class="function-syntax">BinaryPredicates::make_pair</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">test_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">t0</span><span class="plain-syntax">, </span><span class="identifier-syntax">t1</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</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><a href="../calculus-module/5-cs.html#SP4" class="function-link"><span class="function-syntax">Calculus::Schemas::new</span></a><span class="plain-syntax">(</span><span class="string-syntax">"%S(*1, *2)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">),</span>
|
<span class="plain-syntax"> </span><a href="../calculus-module/5-cs.html#SP4" class="function-link"><span class="function-syntax">Calculus::Schemas::new</span></a><span class="plain-syntax">(</span><span class="string-syntax">"%S(*1, *2)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">),</span>
|
||||||
<span class="plain-syntax"> </span><a href="../words-module/2-wa.html#SP3" class="function-link"><span class="function-syntax">WordAssemblages::from_wording</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="../words-module/2-wa.html#SP3" class="function-link"><span class="function-syntax">WordAssemblages::from_wording</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="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">f0n</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">f0n</span><span class="plain-syntax">)</span>
|
||||||
|
|
|
@ -1017,10 +1017,10 @@ nothing else.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">return</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="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">else</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">BinaryPredicates::get_i6_storage_property</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">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relations::Explicit::get_i6_storage_property</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">reverse</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">reverse</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">BinaryPredicates::is_the_wrong_way_round</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) </span><span class="identifier-syntax">reverse</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">BinaryPredicates::is_the_wrong_way_round</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) </span><span class="identifier-syntax">reverse</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">BinaryPredicates::get_form_of_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Relation_VtoO</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Relations::Explicit::get_form_of_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Relation_VtoO</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">reverse</span><span class="plain-syntax">) </span><span class="identifier-syntax">reverse</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">reverse</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">reverse</span><span class="plain-syntax">) </span><span class="identifier-syntax">reverse</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">reverse</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">if</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>
|
||||||
|
|
|
@ -94,7 +94,7 @@ function togglePopup(material_id) {
|
||||||
<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-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::as_bp</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">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="3-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::as_bp</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">BinaryPredicates::store_dynamically</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">; </span><span class="comment-syntax"> handled at run-time instead</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BinaryPredicates::store_dynamically</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">; </span><span class="comment-syntax"> handled at run-time instead</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">BinaryPredicates::get_form_of_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Relation_Equiv</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">right_way_round</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Relations::Explicit::get_form_of_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Relation_Equiv</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></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="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="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><span class="identifier-syntax">BinaryPredicates::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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><span class="identifier-syntax">BinaryPredicates::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="constant-syntax">ARBITRARY_RELATION_INF</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -109,13 +109,10 @@ function togglePopup(material_id) {
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">KnowledgeAboutRelations::SUBJ_check_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">KnowledgeAboutRelations::SUBJ_check_model</span></span>:<br/>Inference Subjects - <a href="3-is.html#SP27">§27</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">KnowledgeAboutRelations::SUBJ_check_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">KnowledgeAboutRelations::SUBJ_check_model</span></span>:<br/>Inference Subjects - <a href="3-is.html#SP27">§27</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">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="3-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::as_bp</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">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="3-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::as_bp</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">right_way_round</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">f</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relations::Explicit::get_form_of_relation</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_OtoO</span><span 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">right_way_round</span><span class="plain-syntax">) && ((</span><span class="identifier-syntax">f</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_OtoO</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">f</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_Sym_OtoO</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">form_of_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_Sym_OtoO</span><span class="plain-syntax">)))</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="3-kar.html#SP2" class="function-link"><span class="function-syntax">KnowledgeAboutRelations::check_OtoO_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="3-kar.html#SP2" class="function-link"><span class="function-syntax">KnowledgeAboutRelations::check_OtoO_relation</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">right_way_round</span><span 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">right_way_round</span><span class="plain-syntax">) && ((</span><span class="identifier-syntax">f</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_OtoV</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">f</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_VtoO</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">form_of_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_OtoV</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">form_of_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_VtoO</span><span class="plain-syntax">)))</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="3-kar.html#SP2" class="function-link"><span class="function-syntax">KnowledgeAboutRelations::check_OtoV_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="3-kar.html#SP2" class="function-link"><span class="function-syntax">KnowledgeAboutRelations::check_OtoV_relation</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="plain-syntax">}</span>
|
||||||
|
|
||||||
|
@ -149,8 +146,8 @@ function togglePopup(material_id) {
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Routines::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">Routines::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="reserved-syntax">else</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_VtoV</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">f</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relations::Explicit::get_form_of_relation</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_Sym_VtoV</span><span class="plain-syntax">))</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">f</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_VtoV</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">f</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_Sym_VtoV</span><span class="plain-syntax">))</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRelations::compile_vtov_storage</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">RTRelations::compile_vtov_storage</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
@ -174,7 +171,7 @@ checking in.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> **</span><span class="identifier-syntax">right_second</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">inference</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">right_second</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">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">inference</span><span class="plain-syntax"> *), </span><span class="constant-syntax">OBJECT_COMPILATION_MREASON</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">inference</span><span class="plain-syntax"> *), </span><span class="constant-syntax">OBJECT_COMPILATION_MREASON</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">BinaryPredicates::get_i6_storage_property</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">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relations::Explicit::get_i6_storage_property</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">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_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="identifier-syntax">right_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></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="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">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">] = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
|
@ -259,7 +256,7 @@ checking in.
|
||||||
<span class="plain-syntax"> }</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">form_of_relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Relation_VtoO</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Relations::Explicit::get_form_of_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Relation_VtoO</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><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">left_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</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">left_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</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">PM_RelationVtoOContradiction</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_RelationVtoOContradiction</span><span class="plain-syntax">),</span>
|
||||||
|
|
|
@ -84,7 +84,7 @@ function togglePopup(material_id) {
|
||||||
|
|
||||||
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I7_generation_tree</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I7_generation_tree</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::tree</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">Emit::tree</span></span>:<br/><a href="2-emt.html#SP3">§3</a>, <a href="2-emt.html#SP4">§4</a><br/>Hierarchy - <a href="2-hrr.html#SP4">§4</a><br/>Compilation Units - <a href="2-cu.html#SP2">§2</a><br/>Adjectives by Condition - <a href="3-abc.html#SP1">§1</a><br/>Fundamental Constants - <a href="4-fc.html#SP1">§1</a>, <a href="4-fc.html#SP2">§2</a><br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Compiled Text - <a href="4-ct.html#SP7">§7</a><br/>Routines - <a href="4-rtn.html#SP3">§3</a>, <a href="4-rtn.html#SP4">§4</a>, <a href="4-rtn.html#SP4_1">§4.1</a>, <a href="4-rtn.html#SP4_1_2">§4.1.2</a>, <a href="4-rtn.html#SP4_1_3">§4.1.3</a>, <a href="4-rtn.html#SP4_1_4">§4.1.4</a>, <a href="4-rtn.html#SP4_1_5">§4.1.5</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a>, <a href="4-itc.html#SP5">§5</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a>, <a href="4-uoart.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP6">§6</a>, <a href="4-rsfk.html#SP9">§9</a>, <a href="4-rsfk.html#SP11">§11</a>, <a href="4-rsfk.html#SP14">§14</a>, <a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP21">§21</a>, <a href="4-rsfk.html#SP26">§26</a>, <a href="4-rsfk.html#SP26_1">§26.1</a>, <a href="4-rsfk.html#SP26_2">§26.2</a>, <a href="4-rsfk.html#SP26_3">§26.3</a>, <a href="4-rsfk.html#SP26_4_1">§26.4.1</a>, <a href="4-rsfk.html#SP26_4_2">§26.4.2</a>, <a href="4-rsfk.html#SP26_5">§26.5</a>, <a href="4-rsfk.html#SP26_5_1">§26.5.1</a>, <a href="4-rsfk.html#SP26_6_1">§26.6.1</a>, <a href="4-rsfk.html#SP26_6_2">§26.6.2</a>, <a href="4-rsfk.html#SP26_6_3">§26.6.3</a>, <a href="4-rsfk.html#SP26_6_4">§26.6.4</a>, <a href="4-rsfk.html#SP26_6_5">§26.6.5</a>, <a href="4-rsfk.html#SP26_6_6">§26.6.6</a>, <a href="4-rsfk.html#SP27">§27</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP3">§3</a>, <a href="4-vart.html#SP4">§4</a>, <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a>, <a href="4-vart.html#SP4_1_2">§4.1.2</a>, <a href="4-vart.html#SP4_1_2_1">§4.1.2.1</a>, <a href="4-vart.html#SP4_1_2_2">§4.1.2.2</a>, <a href="4-vart.html#SP5">§5</a><br/>Relations at Run Time - <a href="4-rart.html#SP2">§2</a>, <a href="4-rart.html#SP3">§3</a>, <a href="4-rart.html#SP3_2">§3.2</a>, <a href="4-rart.html#SP3_2_1">§3.2.1</a>, <a href="4-rart.html#SP3_2_2">§3.2.2</a>, <a href="4-rart.html#SP3_2_3">§3.2.3</a>, <a href="4-rart.html#SP3_2_4">§3.2.4</a>, <a href="4-rart.html#SP3_2_5">§3.2.5</a>, <a href="4-rart.html#SP3_2_5_1">§3.2.5.1</a>, <a href="4-rart.html#SP3_2_6">§3.2.6</a>, <a href="4-rart.html#SP3_2_7">§3.2.7</a>, <a href="4-rart.html#SP3_2_8">§3.2.8</a>, <a href="4-rart.html#SP3_2_9">§3.2.9</a>, <a href="4-rart.html#SP3_2_10">§3.2.10</a>, <a href="4-rart.html#SP3_2_11">§3.2.11</a>, <a href="4-rart.html#SP3_2_12">§3.2.12</a>, <a href="4-rart.html#SP3_2_9_1">§3.2.9.1</a>, <a href="4-rart.html#SP3_2_10_1">§3.2.10.1</a>, <a href="4-rart.html#SP3_2_12_1">§3.2.12.1</a>, <a href="4-rart.html#SP5">§5</a>, <a href="4-rart.html#SP17">§17</a>, <a href="4-rart.html#SP17_1">§17.1</a>, <a href="4-rart.html#SP17_2">§17.2</a>, <a href="4-rart.html#SP17_3">§17.3</a>, <a href="4-rart.html#SP17_4">§17.4</a>, <a href="4-rart.html#SP17_5">§17.5</a>, <a href="4-rart.html#SP17_6">§17.6</a>, <a href="4-rart.html#SP18">§18</a>, <a href="4-rart.html#SP19">§19</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_2">§1.2</a>, <a href="4-rsft.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::tree</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">Emit::tree</span></span>:<br/><a href="2-emt.html#SP3">§3</a>, <a href="2-emt.html#SP4">§4</a><br/>Hierarchy - <a href="2-hrr.html#SP4">§4</a><br/>Compilation Units - <a href="2-cu.html#SP2">§2</a><br/>Adjectives by Condition - <a href="3-abc.html#SP1">§1</a><br/>Fundamental Constants - <a href="4-fc.html#SP1">§1</a>, <a href="4-fc.html#SP2">§2</a><br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Compiled Text - <a href="4-ct.html#SP7">§7</a><br/>Routines - <a href="4-rtn.html#SP3">§3</a>, <a href="4-rtn.html#SP4">§4</a>, <a href="4-rtn.html#SP4_1">§4.1</a>, <a href="4-rtn.html#SP4_1_2">§4.1.2</a>, <a href="4-rtn.html#SP4_1_3">§4.1.3</a>, <a href="4-rtn.html#SP4_1_4">§4.1.4</a>, <a href="4-rtn.html#SP4_1_5">§4.1.5</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a>, <a href="4-itc.html#SP5">§5</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a>, <a href="4-uoart.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP6">§6</a>, <a href="4-rsfk.html#SP9">§9</a>, <a href="4-rsfk.html#SP11">§11</a>, <a href="4-rsfk.html#SP14">§14</a>, <a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP21">§21</a>, <a href="4-rsfk.html#SP26">§26</a>, <a href="4-rsfk.html#SP26_1">§26.1</a>, <a href="4-rsfk.html#SP26_2">§26.2</a>, <a href="4-rsfk.html#SP26_3">§26.3</a>, <a href="4-rsfk.html#SP26_4_1">§26.4.1</a>, <a href="4-rsfk.html#SP26_4_2">§26.4.2</a>, <a href="4-rsfk.html#SP26_5">§26.5</a>, <a href="4-rsfk.html#SP26_5_1">§26.5.1</a>, <a href="4-rsfk.html#SP26_6_1">§26.6.1</a>, <a href="4-rsfk.html#SP26_6_2">§26.6.2</a>, <a href="4-rsfk.html#SP26_6_3">§26.6.3</a>, <a href="4-rsfk.html#SP26_6_4">§26.6.4</a>, <a href="4-rsfk.html#SP26_6_5">§26.6.5</a>, <a href="4-rsfk.html#SP26_6_6">§26.6.6</a>, <a href="4-rsfk.html#SP27">§27</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP3">§3</a>, <a href="4-vart.html#SP4">§4</a>, <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a>, <a href="4-vart.html#SP4_1_2">§4.1.2</a>, <a href="4-vart.html#SP4_1_2_1">§4.1.2.1</a>, <a href="4-vart.html#SP4_1_2_2">§4.1.2.2</a>, <a href="4-vart.html#SP5">§5</a><br/>Relations at Run Time - <a href="4-rart.html#SP3">§3</a>, <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP4_2_1">§4.2.1</a>, <a href="4-rart.html#SP4_2_2">§4.2.2</a>, <a href="4-rart.html#SP4_2_3">§4.2.3</a>, <a href="4-rart.html#SP4_2_4">§4.2.4</a>, <a href="4-rart.html#SP4_2_5">§4.2.5</a>, <a href="4-rart.html#SP4_2_5_1">§4.2.5.1</a>, <a href="4-rart.html#SP4_2_6">§4.2.6</a>, <a href="4-rart.html#SP4_2_7">§4.2.7</a>, <a href="4-rart.html#SP4_2_8">§4.2.8</a>, <a href="4-rart.html#SP4_2_9">§4.2.9</a>, <a href="4-rart.html#SP4_2_10">§4.2.10</a>, <a href="4-rart.html#SP4_2_11">§4.2.11</a>, <a href="4-rart.html#SP4_2_12">§4.2.12</a>, <a href="4-rart.html#SP4_2_9_1">§4.2.9.1</a>, <a href="4-rart.html#SP4_2_10_1">§4.2.10.1</a>, <a href="4-rart.html#SP4_2_12_1">§4.2.12.1</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18">§18</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP20">§20</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_2">§1.2</a>, <a href="4-rsft.html#SP2">§2</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">I7_generation_tree</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">I7_generation_tree</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
@ -349,7 +349,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">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="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::named_numeric_constant</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">Emit::named_numeric_constant</span></span>:<br/>Fundamental Constants - <a href="4-fc.html#SP1">§1</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1">§1</a>, <a href="4-uoart.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP26">§26</a><br/>Relations at Run Time - <a href="4-rart.html#SP8_3">§8.3</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">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::named_numeric_constant</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">Emit::named_numeric_constant</span></span>:<br/>Fundamental Constants - <a href="4-fc.html#SP1">§1</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1">§1</a>, <a href="4-uoart.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP26">§26</a><br/>Relations at Run Time - <a href="4-rart.html#SP9_3">§9.3</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">inter_ti</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">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">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">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">Produce::guard</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Constant::new_numerical</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::at</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">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::at</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">con_name</span><span class="plain-syntax">), </span><span class="identifier-syntax">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::at</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">int_interk</span><span class="plain-syntax">), </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">Produce::baseline</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::at</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="plain-syntax"> </span><span class="identifier-syntax">Produce::guard</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Constant::new_numerical</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::at</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">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::at</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">con_name</span><span class="plain-syntax">), </span><span class="identifier-syntax">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::at</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">int_interk</span><span class="plain-syntax">), </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">Produce::baseline</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::at</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>
|
||||||
|
@ -393,7 +393,7 @@ insert them into the Inter stream close to the top.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</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">save</span><span class="plain-syntax">;</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="function-syntax">Emit::named_byte_array_begin</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">Emit::named_byte_array_begin</span></span>:<br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Relations at Run Time - <a href="4-rart.html#SP8_3">§8.3</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_2">§1.2</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">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::named_byte_array_begin</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">Emit::named_byte_array_begin</span></span>:<br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Relations at Run Time - <a href="4-rart.html#SP9_3">§9.3</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_2">§1.2</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="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="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</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">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</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">Produce::annotate_iname_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">BYTEARRAY_IANN</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">Produce::annotate_iname_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">BYTEARRAY_IANN</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</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">save</span><span class="plain-syntax">;</span>
|
||||||
|
@ -496,13 +496,13 @@ insert them into the Inter stream close to the top.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_A</span><span class="plain-syntax">-></span><span class="element-syntax">no_entries</span><span class="plain-syntax">++;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_A</span><span class="plain-syntax">-></span><span class="element-syntax">no_entries</span><span class="plain-syntax">++;</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="function-syntax">Emit::sum_constant_begin</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">Emit::sum_constant_begin</span></span>:<br/>Relations at Run Time - <a href="4-rart.html#SP3_1_2">§3.1.2</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">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::sum_constant_begin</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">Emit::sum_constant_begin</span></span>:<br/>Relations at Run Time - <a href="4-rart.html#SP4_1_2">§4.1.2</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="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="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</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">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</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">current_A</span><span class="plain-syntax">-></span><span class="element-syntax">array_form</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CONSTANT_SUM_LIST</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_A</span><span class="plain-syntax">-></span><span class="element-syntax">array_form</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CONSTANT_SUM_LIST</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">save</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">save</span><span class="plain-syntax">;</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="function-syntax">Emit::named_array_begin</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">Emit::named_array_begin</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Jump Labels - <a href="4-jl.html#SP5">§5</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP18_1">§18.1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="4-rart.html#SP3_1">§3.1</a>, <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP8">§8</a>, <a href="4-rart.html#SP8_3">§8.3</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_3">§1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</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">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::named_array_begin</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">Emit::named_array_begin</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Jump Labels - <a href="4-jl.html#SP5">§5</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP18_1">§18.1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="4-rart.html#SP4_1">§4.1</a>, <a href="4-rart.html#SP5">§5</a>, <a href="4-rart.html#SP9">§9</a>, <a href="4-rart.html#SP9_3">§9.3</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_3">§1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</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">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">N</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">N</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">symb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::define_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</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">symb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::define_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</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::push_array</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::push_array</span></a><span class="plain-syntax">();</span>
|
||||||
|
@ -512,7 +512,7 @@ insert them into the Inter stream close to the top.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</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">save</span><span class="plain-syntax">;</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">Emit::array_iname_entry</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">Emit::array_iname_entry</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP11">§11</a>, <a href="4-rsfk.html#SP14">§14</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="4-rart.html#SP3_1_2">§3.1.2</a>, <a href="4-rart.html#SP3_1_2_1">§3.1.2.1</a>, <a href="4-rart.html#SP3_1_3">§3.1.3</a>, <a href="4-rart.html#SP3_1_6">§3.1.6</a>, <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP8_2">§8.2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_1_1_1">§1.1.1.1</a>, <a href="4-rsft.html#SP1_1_1_1_1_5">§1.1.1.1.1.5</a>, <a href="4-rsft.html#SP1_3">§1.3</a></span></button><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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::array_iname_entry</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">Emit::array_iname_entry</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP11">§11</a>, <a href="4-rsfk.html#SP14">§14</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="4-rart.html#SP4_1_2">§4.1.2</a>, <a href="4-rart.html#SP4_1_2_1">§4.1.2.1</a>, <a href="4-rart.html#SP4_1_3">§4.1.3</a>, <a href="4-rart.html#SP4_1_6">§4.1.6</a>, <a href="4-rart.html#SP5">§5</a>, <a href="4-rart.html#SP9_2">§9.2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_1_1_1">§1.1.1.1</a>, <a href="4-rsft.html#SP1_1_1_1_1_5">§1.1.1.1.1.5</a>, <a href="4-rsft.html#SP1_3">§1.3</a></span></button><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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_A</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">"entry outside of inter array"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_A</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">"entry outside of inter array"</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">alias</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">alias</span><span 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="identifier-syntax">alias</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::veneer_symbol</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">NOTHING_VSYMB</span><span 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="identifier-syntax">alias</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::veneer_symbol</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">NOTHING_VSYMB</span><span class="plain-syntax">);</span>
|
||||||
|
@ -523,7 +523,7 @@ insert them into the Inter stream close to the top.
|
||||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::add_entry</span></a><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="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::add_entry</span></a><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="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::array_null_entry</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">Emit::array_null_entry</span></span>:<br/>Relations at Run Time - <a href="4-rart.html#SP3_1">§3.1</a>, <a href="4-rart.html#SP4">§4</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_1_1_1_1_3">§1.1.1.1.1.3</a>, <a href="4-rsft.html#SP1_2">§1.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">Emit::array_null_entry</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">Emit::array_null_entry</span></span>:<br/>Relations at Run Time - <a href="4-rart.html#SP4_1">§4.1</a>, <a href="4-rart.html#SP5">§5</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_1_1_1_1_3">§1.1.1.1.1.3</a>, <a href="4-rsft.html#SP1_2">§1.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</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="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">NULL_HL</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="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">NULL_HL</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
@ -547,7 +547,7 @@ insert them into the Inter stream close to the top.
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::array_text_entry</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">Emit::array_text_entry</span></span>:<br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Relations at Run Time - <a href="4-rart.html#SP3_1_1">§3.1.1</a>, <a href="4-rart.html#SP3_1_5">§3.1.5</a>, <a href="4-rart.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">content</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::array_text_entry</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">Emit::array_text_entry</span></span>:<br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Relations at Run Time - <a href="4-rart.html#SP4_1_1">§4.1.1</a>, <a href="4-rart.html#SP4_1_5">§4.1.5</a>, <a href="4-rart.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">content</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_A</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">"entry outside of inter array"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_A</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">"entry outside of inter array"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">Produce::text_value</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">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">content</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::text_value</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">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">content</span><span class="plain-syntax">);</span>
|
||||||
|
@ -568,7 +568,7 @@ insert them into the Inter stream close to the top.
|
||||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::add_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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::add_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</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">Emit::array_numeric_entry</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">Emit::array_numeric_entry</span></span>:<br/>Jump Labels - <a href="4-jl.html#SP5">§5</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP11">§11</a>, <a href="4-rsfk.html#SP18_1_1_1">§18.1.1.1</a>, <a href="4-rsfk.html#SP18_1_1_2">§18.1.1.2</a>, <a href="4-rsfk.html#SP22">§22</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="4-rart.html#SP3_1">§3.1</a>, <a href="4-rart.html#SP3_1_3">§3.1.3</a>, <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP7">§7</a>, <a href="4-rart.html#SP8_2">§8.2</a>, <a href="4-rart.html#SP8_3">§8.3</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_1_1_1_1_3">§1.1.1.1.1.3</a>, <a href="4-rsft.html#SP1_1_1_1_1_4">§1.1.1.1.1.4</a>, <a href="4-rsft.html#SP1_2_3">§1.2.3</a>, <a href="4-rsft.html#SP1_3">§1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::array_numeric_entry</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">Emit::array_numeric_entry</span></span>:<br/>Jump Labels - <a href="4-jl.html#SP5">§5</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP11">§11</a>, <a href="4-rsfk.html#SP18_1_1_1">§18.1.1.1</a>, <a href="4-rsfk.html#SP18_1_1_2">§18.1.1.2</a>, <a href="4-rsfk.html#SP22">§22</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="4-rart.html#SP4_1">§4.1</a>, <a href="4-rart.html#SP4_1_3">§4.1.3</a>, <a href="4-rart.html#SP5">§5</a>, <a href="4-rart.html#SP8">§8</a>, <a href="4-rart.html#SP9_2">§9.2</a>, <a href="4-rart.html#SP9_3">§9.3</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_1_1_1_1_3">§1.1.1.1.1.3</a>, <a href="4-rsft.html#SP1_1_1_1_1_4">§1.1.1.1.1.4</a>, <a href="4-rsft.html#SP1_2_3">§1.2.3</a>, <a href="4-rsft.html#SP1_3">§1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_A</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">"entry outside of inter array"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_A</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">"entry outside of inter array"</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::add_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</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::add_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -586,7 +586,7 @@ insert them into the Inter stream close to the top.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</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">IBM</span><span class="plain-syntax">;</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">Emit::array_end</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">Emit::array_end</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Jump Labels - <a href="4-jl.html#SP5">§5</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP18_1">§18.1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="4-rart.html#SP3_1">§3.1</a>, <a href="4-rart.html#SP3_1_2">§3.1.2</a>, <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP8">§8</a>, <a href="4-rart.html#SP8_3">§8.3</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_1_1_1">§1.1.1.1</a>, <a href="4-rsft.html#SP1_1_1_1_1">§1.1.1.1.1</a>, <a href="4-rsft.html#SP1_2">§1.2</a>, <a href="4-rsft.html#SP1_3">§1.3</a></span></button><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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::array_end</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">Emit::array_end</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Jump Labels - <a href="4-jl.html#SP5">§5</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP18_1">§18.1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="4-rart.html#SP4_1">§4.1</a>, <a href="4-rart.html#SP4_1_2">§4.1.2</a>, <a href="4-rart.html#SP5">§5</a>, <a href="4-rart.html#SP9">§9</a>, <a href="4-rart.html#SP9_3">§9.3</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_1_1_1">§1.1.1.1</a>, <a href="4-rsft.html#SP1_1_1_1_1">§1.1.1.1.1</a>, <a href="4-rsft.html#SP1_2">§1.2</a>, <a href="4-rsft.html#SP1_3">§1.3</a></span></button><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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_A</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">"inter array not opened"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_A</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">"inter array not opened"</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">current_A</span><span class="plain-syntax">-></span><span class="element-syntax">array_name_symbol</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">current_A</span><span class="plain-syntax">-></span><span class="element-syntax">array_name_symbol</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::at</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="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::at</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>
|
||||||
|
@ -633,7 +633,7 @@ insert them into the Inter stream close to the top.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">name</span><span class="plain-syntax">;</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_numeric_constant_hex</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">Emit::named_numeric_constant_hex</span></span>:<br/>Fundamental Constants - <a href="4-fc.html#SP1">§1</a><br/>Relations at Run Time - <a href="4-rart.html#SP2">§2</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">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::named_numeric_constant_hex</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">Emit::named_numeric_constant_hex</span></span>:<br/>Fundamental Constants - <a href="4-fc.html#SP1">§1</a><br/>Relations at Run Time - <a href="4-rart.html#SP3">§3</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">inter_ti</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">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">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">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">Produce::annotate_symbol_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">HEX_IANN</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">Produce::annotate_symbol_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">HEX_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||||
|
|
|
@ -1722,11 +1722,11 @@ function togglePopup(material_id) {
|
||||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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">Hierarchy::find</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">Hierarchy::find</span></span>:<br/>Emitting Inter - <a href="2-emt.html#SP2">§2</a>, <a href="2-emt.html#SP3">§3</a><br/>Fundamental Constants - <a href="4-fc.html#SP1">§1</a>, <a href="4-fc.html#SP2">§2</a><br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Routines - <a href="4-rtn.html#SP4_1_2">§4.1.2</a>, <a href="4-rtn.html#SP4_1_3">§4.1.3</a>, <a href="4-rtn.html#SP4_1_4">§4.1.4</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a>, <a href="4-itc.html#SP5">§5</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1">§1</a>, <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP6">§6</a>, <a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP20_1">§20.1</a>, <a href="4-rsfk.html#SP21">§21</a>, <a href="4-rsfk.html#SP26">§26</a>, <a href="4-rsfk.html#SP26_5">§26.5</a>, <a href="4-rsfk.html#SP26_5_1">§26.5.1</a>, <a href="4-rsfk.html#SP26_6_1">§26.6.1</a>, <a href="4-rsfk.html#SP26_6_2">§26.6.2</a>, <a href="4-rsfk.html#SP26_6_3">§26.6.3</a>, <a href="4-rsfk.html#SP26_6_4">§26.6.4</a>, <a href="4-rsfk.html#SP26_6_5">§26.6.5</a>, <a href="4-rsfk.html#SP26_6_6">§26.6.6</a>, <a href="4-rsfk.html#SP27">§27</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP3">§3</a>, <a href="4-vart.html#SP4">§4</a>, <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP2">§2</a>, <a href="4-rart.html#SP3">§3</a>, <a href="4-rart.html#SP3_1_2">§3.1.2</a>, <a href="4-rart.html#SP3_2">§3.2</a>, <a href="4-rart.html#SP3_2_1">§3.2.1</a>, <a href="4-rart.html#SP3_2_5_1">§3.2.5.1</a>, <a href="4-rart.html#SP3_2_6">§3.2.6</a>, <a href="4-rart.html#SP3_2_9">§3.2.9</a>, <a href="4-rart.html#SP3_2_10">§3.2.10</a>, <a href="4-rart.html#SP3_2_11">§3.2.11</a>, <a href="4-rart.html#SP3_2_12">§3.2.12</a>, <a href="4-rart.html#SP3_2_9_1">§3.2.9.1</a>, <a href="4-rart.html#SP3_2_10_1">§3.2.10.1</a>, <a href="4-rart.html#SP3_2_12_1">§3.2.12.1</a>, <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP5">§5</a>, <a href="4-rart.html#SP17_1">§17.1</a>, <a href="4-rart.html#SP17_5">§17.5</a>, <a href="4-rart.html#SP17_6">§17.6</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_1_1_1_1_5">§1.1.1.1.1.5</a>, <a href="4-rsft.html#SP1_2">§1.2</a>, <a href="4-rsft.html#SP1_3">§1.3</a>, <a href="4-rsft.html#SP2">§2</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="function-syntax">Hierarchy::find</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">Hierarchy::find</span></span>:<br/>Emitting Inter - <a href="2-emt.html#SP2">§2</a>, <a href="2-emt.html#SP3">§3</a><br/>Fundamental Constants - <a href="4-fc.html#SP1">§1</a>, <a href="4-fc.html#SP2">§2</a><br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Routines - <a href="4-rtn.html#SP4_1_2">§4.1.2</a>, <a href="4-rtn.html#SP4_1_3">§4.1.3</a>, <a href="4-rtn.html#SP4_1_4">§4.1.4</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a>, <a href="4-itc.html#SP5">§5</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1">§1</a>, <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP6">§6</a>, <a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP20_1">§20.1</a>, <a href="4-rsfk.html#SP21">§21</a>, <a href="4-rsfk.html#SP26">§26</a>, <a href="4-rsfk.html#SP26_5">§26.5</a>, <a href="4-rsfk.html#SP26_5_1">§26.5.1</a>, <a href="4-rsfk.html#SP26_6_1">§26.6.1</a>, <a href="4-rsfk.html#SP26_6_2">§26.6.2</a>, <a href="4-rsfk.html#SP26_6_3">§26.6.3</a>, <a href="4-rsfk.html#SP26_6_4">§26.6.4</a>, <a href="4-rsfk.html#SP26_6_5">§26.6.5</a>, <a href="4-rsfk.html#SP26_6_6">§26.6.6</a>, <a href="4-rsfk.html#SP27">§27</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP3">§3</a>, <a href="4-vart.html#SP4">§4</a>, <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP3">§3</a>, <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_1_2">§4.1.2</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP4_2_1">§4.2.1</a>, <a href="4-rart.html#SP4_2_5_1">§4.2.5.1</a>, <a href="4-rart.html#SP4_2_6">§4.2.6</a>, <a href="4-rart.html#SP4_2_9">§4.2.9</a>, <a href="4-rart.html#SP4_2_10">§4.2.10</a>, <a href="4-rart.html#SP4_2_11">§4.2.11</a>, <a href="4-rart.html#SP4_2_12">§4.2.12</a>, <a href="4-rart.html#SP4_2_9_1">§4.2.9.1</a>, <a href="4-rart.html#SP4_2_10_1">§4.2.10.1</a>, <a href="4-rart.html#SP4_2_12_1">§4.2.12.1</a>, <a href="4-rart.html#SP5">§5</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_1_1_1_1_5">§1.1.1.1.1.5</a>, <a href="4-rsft.html#SP1_2">§1.2</a>, <a href="4-rsft.html#SP1_3">§1.3</a>, <a href="4-rsft.html#SP2">§2</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::find</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::find</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="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::make_available</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">Hierarchy::make_available</span></span>:<br/>Fundamental Constants - <a href="4-fc.html#SP1">§1</a>, <a href="4-fc.html#SP2">§2</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP26">§26</a>, <a href="4-rsfk.html#SP26_6_1">§26.6.1</a>, <a href="4-rsfk.html#SP26_6_2">§26.6.2</a>, <a href="4-rsfk.html#SP26_6_3">§26.6.3</a>, <a href="4-rsfk.html#SP26_6_4">§26.6.4</a>, <a href="4-rsfk.html#SP26_6_5">§26.6.5</a>, <a href="4-rsfk.html#SP26_6_6">§26.6.6</a>, <a href="4-rsfk.html#SP27">§27</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="4-rart.html#SP2">§2</a>, <a href="4-rart.html#SP3">§3</a>, <a href="4-rart.html#SP5">§5</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_2">§1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</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="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::make_available</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">Hierarchy::make_available</span></span>:<br/>Fundamental Constants - <a href="4-fc.html#SP1">§1</a>, <a href="4-fc.html#SP2">§2</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP26">§26</a>, <a href="4-rsfk.html#SP26_6_1">§26.6.1</a>, <a href="4-rsfk.html#SP26_6_2">§26.6.2</a>, <a href="4-rsfk.html#SP26_6_3">§26.6.3</a>, <a href="4-rsfk.html#SP26_6_4">§26.6.4</a>, <a href="4-rsfk.html#SP26_6_5">§26.6.5</a>, <a href="4-rsfk.html#SP26_6_6">§26.6.6</a>, <a href="4-rsfk.html#SP27">§27</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="4-rart.html#SP3">§3</a>, <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP6">§6</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP1_2">§1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</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="identifier-syntax">iname</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">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::get_translation</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::get_translation</span><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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::to_text</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::to_text</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="identifier-syntax">PackageTypes::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">PackageTypes::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">);</span>
|
||||||
|
@ -1754,7 +1754,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="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="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">§2</a><br/>Jump Labels - <a href="4-jl.html#SP2">§2</a><br/>Test Scripts - <a href="4-ts.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP15_1_1">§15.1.1</a>, <a href="4-rsfk.html#SP17">§17</a><br/>Verbs at Run Time - <a href="4-vart.html#SP2">§2</a><br/>Relations at Run Time - <a href="4-rart.html#SP3_1_2">§3.1.2</a>, <a href="4-rart.html#SP8">§8</a>, <a href="4-rart.html#SP8_3">§8.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">§2</a><br/>Jump Labels - <a href="4-jl.html#SP2">§2</a><br/>Test Scripts - <a href="4-ts.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP15_1_1">§15.1.1</a>, <a href="4-rsfk.html#SP17">§17</a><br/>Verbs at Run Time - <a href="4-vart.html#SP2">§2</a><br/>Relations at Run Time - <a href="4-rart.html#SP1">§1</a>, <a href="4-rart.html#SP4_1_2">§4.1.2</a>, <a href="4-rart.html#SP9">§9</a>, <a href="4-rart.html#SP9_3">§9.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><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="plain-syntax">}</span>
|
||||||
|
|
||||||
|
|
|
@ -457,7 +457,7 @@ exceptional case.
|
||||||
<span class="plain-syntax"> </span><a href="4-ct.html#SP5" class="function-link"><span class="function-syntax">CompiledText::from_text_with_options</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="4-ct.html#SP5" class="function-link"><span class="function-syntax">CompiledText::from_text_with_options</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</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">CompiledText::from_text</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">CompiledText::from_text</span></span>:<br/>Relations at Run Time - <a href="4-rart.html#SP3_1_5">§3.1.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">CompiledText::from_text</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">CompiledText::from_text</span></span>:<br/>Relations at Run Time - <a href="4-rart.html#SP4_1_5">§4.1.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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><a href="4-ct.html#SP5" class="function-link"><span class="function-syntax">CompiledText::from_text_with_options</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="4-ct.html#SP5" class="function-link"><span class="function-syntax">CompiledText::from_text_with_options</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">0</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>
|
||||||
</pre>
|
</pre>
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -125,7 +125,7 @@ kinds being compiled to an I6 <span class="extract"><span class="extract-syntax"
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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">Kinds::RunTime::I6_classname</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">Kinds::RunTime::I6_classname</span></span>:<br/><a href="4-rsfk.html#SP27">§27</a><br/>Relations at Run Time - <a href="4-rart.html#SP17_2">§17.2</a>, <a href="4-rart.html#SP17_3">§17.3</a>, <a href="4-rart.html#SP17_4">§17.4</a>, <a href="4-rart.html#SP17_5">§17.5</a>, <a href="4-rart.html#SP17_6">§17.6</a>, <a href="4-rart.html#SP19">§19</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">Kinds::RunTime::I6_classname</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">Kinds::RunTime::I6_classname</span></span>:<br/><a href="4-rsfk.html#SP27">§27</a><br/>Relations at Run Time - <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP20">§20</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_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><a href="4-rsfk.html#SP24" class="function-link"><span class="function-syntax">Kinds::RunTime::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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_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><a href="4-rsfk.html#SP24" class="function-link"><span class="function-syntax">Kinds::RunTime::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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no I6 classname available"</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">"no I6 classname available"</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
@ -222,7 +222,7 @@ chosen), but no problem message has been issued about this, or
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package_in_enclosure</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BLOCK_CONSTANTS_HAP</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">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package_in_enclosure</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BLOCK_CONSTANTS_HAP</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">N</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">BLOCK_CONSTANT_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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</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">BLOCK_CONSTANT_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><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_late_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</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">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_late_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="4-rart.html#SP4" class="function-link"><span class="function-syntax">RTRelations::compile_blank_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="4-rart.html#SP5" class="function-link"><span class="function-syntax">RTRelations::compile_blank_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</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_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</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_end</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">) </span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::holster</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span 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><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::holster</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</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">else</span><span class="plain-syntax"> {</span>
|
||||||
|
@ -673,7 +673,7 @@ turns up. This means remembering everything we've seen, using a new structure:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::RunTime::emit_strong_id</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">Kinds::RunTime::emit_strong_id</span></span>:<br/><a href="4-rsfk.html#SP18_1_1">§18.1.1</a>, <a href="4-rsfk.html#SP18_1_1_1">§18.1.1.1</a>, <a href="4-rsfk.html#SP18_1_1_2">§18.1.1.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP3_1_4">§3.1.4</a>, <a href="4-rart.html#SP4">§4</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::RunTime::emit_strong_id</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">Kinds::RunTime::emit_strong_id</span></span>:<br/><a href="4-rsfk.html#SP18_1_1">§18.1.1</a>, <a href="4-rsfk.html#SP18_1_1_1">§18.1.1.1</a>, <a href="4-rsfk.html#SP18_1_1_2">§18.1.1.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4_1_4">§4.1.4</a>, <a href="4-rart.html#SP5">§5</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">runtime_kind_structure</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks</span><span class="plain-syntax"> = </span><a href="4-rsfk.html#SP15" class="function-link"><span class="function-syntax">Kinds::RunTime::get_rks</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">runtime_kind_structure</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks</span><span class="plain-syntax"> = </span><a href="4-rsfk.html#SP15" class="function-link"><span class="function-syntax">Kinds::RunTime::get_rks</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">rks</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rks</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">rks</span><span class="plain-syntax">-></span><span class="element-syntax">rks_iname</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">rks</span><span class="plain-syntax">-></span><span class="element-syntax">rks_iname</span><span class="plain-syntax">);</span>
|
||||||
|
@ -682,7 +682,7 @@ turns up. This means remembering everything we've seen, using a new structure:
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</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">Kinds::RunTime::emit_strong_id_as_val</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">Kinds::RunTime::emit_strong_id_as_val</span></span>:<br/><a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP21">§21</a><br/>Relations at Run Time - <a href="4-rart.html#SP3">§3</a>, <a href="4-rart.html#SP3_2_9_1">§3.2.9.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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::RunTime::emit_strong_id_as_val</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">Kinds::RunTime::emit_strong_id_as_val</span></span>:<br/><a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP21">§21</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2_9_1">§4.2.9.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">runtime_kind_structure</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks</span><span class="plain-syntax"> = </span><a href="4-rsfk.html#SP15" class="function-link"><span class="function-syntax">Kinds::RunTime::get_rks</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">runtime_kind_structure</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks</span><span class="plain-syntax"> = </span><a href="4-rsfk.html#SP15" class="function-link"><span class="function-syntax">Kinds::RunTime::get_rks</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">rks</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rks</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-></span><span class="element-syntax">rks_iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-></span><span class="element-syntax">rks_iname</span><span class="plain-syntax">);</span>
|
||||||
|
@ -918,7 +918,7 @@ recursively scanned through for us, so that if we have seen a construction
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</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="identifier-syntax">CON_phrase</span><span 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::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_phrase</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Phrases::Constants::compile_default_closure</span><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</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">Phrases::Constants::compile_default_closure</span><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</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><span class="reserved-syntax">if</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="identifier-syntax">CON_relation</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</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="identifier-syntax">CON_relation</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="4-rart.html#SP4" class="function-link"><span class="function-syntax">RTRelations::compile_default_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</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-rart.html#SP5" class="function-link"><span class="function-syntax">RTRelations::compile_default_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</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><span class="reserved-syntax">if</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="identifier-syntax">CON_list_of</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</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="identifier-syntax">CON_list_of</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Lists::compile_default_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</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">Lists::compile_default_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</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>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
@ -1082,7 +1082,7 @@ list of 20 texts. For the cases above, it's always 1.
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">BLK_FLAG_TRUNCMULT</span><span class="plain-syntax"> </span><span class="constant-syntax">0x00000010</span>
|
<span class="definition-keyword">define</span> <span class="constant-syntax">BLK_FLAG_TRUNCMULT</span><span class="plain-syntax"> </span><span class="constant-syntax">0x00000010</span>
|
||||||
</pre>
|
</pre>
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::RunTime::emit_block_value_header</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">Kinds::RunTime::emit_block_value_header</span></span>:<br/><a href="4-rsfk.html#SP5">§5</a><br/>Relations at Run Time - <a href="4-rart.html#SP3_1">§3.1</a>, <a href="4-rart.html#SP4">§4</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">individual</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">size</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::RunTime::emit_block_value_header</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">Kinds::RunTime::emit_block_value_header</span></span>:<br/><a href="4-rsfk.html#SP5">§5</a><br/>Relations at Run Time - <a href="4-rart.html#SP4_1">§4.1</a>, <a href="4-rart.html#SP5">§5</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">individual</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">size</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">individual</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</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">individual</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">w</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">w</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">TargetVMs::is_16_bit</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::vm</span><span class="plain-syntax">())) </span><span class="identifier-syntax">w</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">TargetVMs::is_16_bit</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::vm</span><span class="plain-syntax">())) </span><span class="identifier-syntax">w</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -81,7 +81,7 @@ already been set up, or not. Here's not:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP26_1">§26.1</a>, <a href="4-rsfk.html#SP26_2">§26.2</a>, <a href="4-rsfk.html#SP26_3">§26.3</a>, <a href="4-rsfk.html#SP26_4">§26.4</a>, <a href="4-rsfk.html#SP26_5">§26.5</a>, <a href="4-rsfk.html#SP26_6_1">§26.6.1</a>, <a href="4-rsfk.html#SP26_6_2">§26.6.2</a>, <a href="4-rsfk.html#SP26_6_3">§26.6.3</a>, <a href="4-rsfk.html#SP26_6_4">§26.6.4</a>, <a href="4-rsfk.html#SP26_6_5">§26.6.5</a>, <a href="4-rsfk.html#SP26_6_6">§26.6.6</a>, <a href="4-rsfk.html#SP27">§27</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP3">§3</a>, <a href="4-rart.html#SP3_2">§3.2</a>, <a href="4-rart.html#SP5">§5</a>, <a href="4-rart.html#SP17_1">§17.1</a>, <a href="4-rart.html#SP17_2">§17.2</a>, <a href="4-rart.html#SP17_3">§17.3</a>, <a href="4-rart.html#SP17_4">§17.4</a>, <a href="4-rart.html#SP17_5">§17.5</a>, <a href="4-rart.html#SP17_6">§17.6</a>, <a href="4-rart.html#SP18">§18</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</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">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP26_1">§26.1</a>, <a href="4-rsfk.html#SP26_2">§26.2</a>, <a href="4-rsfk.html#SP26_3">§26.3</a>, <a href="4-rsfk.html#SP26_4">§26.4</a>, <a href="4-rsfk.html#SP26_5">§26.5</a>, <a href="4-rsfk.html#SP26_6_1">§26.6.1</a>, <a href="4-rsfk.html#SP26_6_2">§26.6.2</a>, <a href="4-rsfk.html#SP26_6_3">§26.6.3</a>, <a href="4-rsfk.html#SP26_6_4">§26.6.4</a>, <a href="4-rsfk.html#SP26_6_5">§26.6.5</a>, <a href="4-rsfk.html#SP26_6_6">§26.6.6</a>, <a href="4-rsfk.html#SP27">§27</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-rtn.html#SP3" class="function-link"><span class="function-syntax">Routines::begin_framed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">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">return</span><span class="plain-syntax"> </span><a href="4-rtn.html#SP3" class="function-link"><span class="function-syntax">Routines::begin_framed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">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="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
@ -140,7 +140,7 @@ did not.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::end</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">Routines::end</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP26_1">§26.1</a>, <a href="4-rsfk.html#SP26_2">§26.2</a>, <a href="4-rsfk.html#SP26_3">§26.3</a>, <a href="4-rsfk.html#SP26_4">§26.4</a>, <a href="4-rsfk.html#SP26_5">§26.5</a>, <a href="4-rsfk.html#SP26_6_1">§26.6.1</a>, <a href="4-rsfk.html#SP26_6_2">§26.6.2</a>, <a href="4-rsfk.html#SP26_6_3">§26.6.3</a>, <a href="4-rsfk.html#SP26_6_4">§26.6.4</a>, <a href="4-rsfk.html#SP26_6_5">§26.6.5</a>, <a href="4-rsfk.html#SP26_6_6">§26.6.6</a>, <a href="4-rsfk.html#SP27">§27</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP3">§3</a>, <a href="4-rart.html#SP3_2">§3.2</a>, <a href="4-rart.html#SP5">§5</a>, <a href="4-rart.html#SP17_1">§17.1</a>, <a href="4-rart.html#SP17_2">§17.2</a>, <a href="4-rart.html#SP17_3">§17.3</a>, <a href="4-rart.html#SP17_4">§17.4</a>, <a href="4-rart.html#SP17_5">§17.5</a>, <a href="4-rart.html#SP17_6">§17.6</a>, <a href="4-rart.html#SP18">§18</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a></span></button><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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::end</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">Routines::end</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Test Scripts - <a href="4-ts.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP18_3">§18.3</a>, <a href="4-rsfk.html#SP26_1">§26.1</a>, <a href="4-rsfk.html#SP26_2">§26.2</a>, <a href="4-rsfk.html#SP26_3">§26.3</a>, <a href="4-rsfk.html#SP26_4">§26.4</a>, <a href="4-rsfk.html#SP26_5">§26.5</a>, <a href="4-rsfk.html#SP26_6_1">§26.6.1</a>, <a href="4-rsfk.html#SP26_6_2">§26.6.2</a>, <a href="4-rsfk.html#SP26_6_3">§26.6.3</a>, <a href="4-rsfk.html#SP26_6_4">§26.6.4</a>, <a href="4-rsfk.html#SP26_6_5">§26.6.5</a>, <a href="4-rsfk.html#SP26_6_6">§26.6.6</a>, <a href="4-rsfk.html#SP27">§27</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a></span></button><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="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::deduced_function_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">currently_compiling_in_frame</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">R_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::deduced_function_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">currently_compiling_in_frame</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">kernel_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">public_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">currently_compiling_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">kernel_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">public_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">currently_compiling_iname</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -635,7 +635,7 @@ usages to the debugging log.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">vu</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_vu_created</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">vu</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_vu_created</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">vu</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_vu_created</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">vu</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_vu_created</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="identifier-syntax">VerbMeanings::get_regular_meaning_of_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">Verbs::base_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">VerbUsages::get_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">vu</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="identifier-syntax">VerbMeanings::get_regular_meaning_of_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">Verbs::base_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">VerbUsages::get_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">vu</span><span 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><a href="4-rart.html#SP21" class="function-link"><span class="function-syntax">RTRelations::index_for_verbs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">bp</span><span class="plain-syntax">) </span><a href="4-rart.html#SP22" class="function-link"><span class="function-syntax">RTRelations::index_for_verbs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">return</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="plain-syntax"> </span><span class="identifier-syntax">preposition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prep</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">preposition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prep</span><span class="plain-syntax">;</span>
|
||||||
|
@ -644,7 +644,7 @@ usages to the debugging log.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prep</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_prep_created</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prep</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_prep_created</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">prep</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_prep_created</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">prep</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_prep_created</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="identifier-syntax">VerbMeanings::get_regular_meaning_of_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">Verbs::find_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">copular_verb</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep</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">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::get_regular_meaning_of_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">Verbs::find_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">copular_verb</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep</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><a href="4-rart.html#SP21" class="function-link"><span class="function-syntax">RTRelations::index_for_verbs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">bp</span><span class="plain-syntax">) </span><a href="4-rart.html#SP22" class="function-link"><span class="function-syntax">RTRelations::index_for_verbs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">return</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="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Total memory consumption was 256345K = 250 MB
|
Total memory consumption was 256344K = 250 MB
|
||||||
|
|
||||||
62.4% was used for 1338375 objects, in 273578 frames in 200 x 800K = 160000K = 156 MB:
|
62.4% was used for 1338387 objects, in 273590 frames in 200 x 800K = 160000K = 156 MB:
|
||||||
|
|
||||||
9.8% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
9.8% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
||||||
5.5% text_stream_array 2567 x 100 = 256700 objects, 14457344 bytes
|
5.5% text_stream_array 2567 x 100 = 256700 objects, 14457344 bytes
|
||||||
|
@ -29,8 +29,8 @@ Total memory consumption was 256345K = 250 MB
|
||||||
0.2% dictionary 16348 objects, 784704 bytes
|
0.2% dictionary 16348 objects, 784704 bytes
|
||||||
0.2% dict_entry_array 233 x 100 = 23300 objects, 753056 bytes
|
0.2% dict_entry_array 233 x 100 = 23300 objects, 753056 bytes
|
||||||
0.2% package_request 7931 objects, 697928 bytes
|
0.2% package_request 7931 objects, 697928 bytes
|
||||||
0.2% inter_name_generator_array 16 x 1000 = 16000 objects, 640512 bytes
|
|
||||||
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||||
|
0.2% inter_name_generator_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||||
0.1% local_variable_array 45 x 100 = 4500 objects, 505440 bytes
|
0.1% local_variable_array 45 x 100 = 4500 objects, 505440 bytes
|
||||||
0.1% inference_subject 664 objects, 435584 bytes
|
0.1% inference_subject 664 objects, 435584 bytes
|
||||||
0.1% verb_usage 1128 objects, 388032 bytes
|
0.1% verb_usage 1128 objects, 388032 bytes
|
||||||
|
@ -41,8 +41,8 @@ Total memory consumption was 256345K = 250 MB
|
||||||
0.1% noun 2379 objects, 285480 bytes
|
0.1% noun 2379 objects, 285480 bytes
|
||||||
---- action_name_list_array 3 x 1000 = 3000 objects, 240096 bytes
|
---- action_name_list_array 3 x 1000 = 3000 objects, 240096 bytes
|
||||||
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
|
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
|
||||||
---- binary_predicate 321 objects, 184896 bytes
|
|
||||||
---- inference 1703 objects, 177112 bytes
|
---- inference 1703 objects, 177112 bytes
|
||||||
|
---- binary_predicate 321 objects, 174624 bytes
|
||||||
---- linked_list_item_array 10 x 1000 = 10000 objects, 160320 bytes
|
---- linked_list_item_array 10 x 1000 = 10000 objects, 160320 bytes
|
||||||
---- linguistic_stock_item 3315 objects, 159120 bytes
|
---- linguistic_stock_item 3315 objects, 159120 bytes
|
||||||
---- stacked_variable_owner_list_array 38 x 100 = 3800 objects, 153216 bytes
|
---- stacked_variable_owner_list_array 38 x 100 = 3800 objects, 153216 bytes
|
||||||
|
@ -91,8 +91,8 @@ Total memory consumption was 256345K = 250 MB
|
||||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||||
---- to_phrase_request 59 objects, 15576 bytes
|
---- to_phrase_request 59 objects, 15576 bytes
|
||||||
---- adjective_iname_holder 320 objects, 15360 bytes
|
---- adjective_iname_holder 320 objects, 15360 bytes
|
||||||
|
---- method 280 objects, 13440 bytes
|
||||||
---- plugin 23 objects, 13432 bytes
|
---- plugin 23 objects, 13432 bytes
|
||||||
---- method 275 objects, 13200 bytes
|
|
||||||
---- literal_text 147 objects, 12936 bytes
|
---- literal_text 147 objects, 12936 bytes
|
||||||
---- stopwatch_timer 148 objects, 11840 bytes
|
---- stopwatch_timer 148 objects, 11840 bytes
|
||||||
---- understanding_reference_array 2 x 100 = 200 objects, 11264 bytes
|
---- understanding_reference_array 2 x 100 = 200 objects, 11264 bytes
|
||||||
|
@ -121,15 +121,15 @@ Total memory consumption was 256345K = 250 MB
|
||||||
---- property_setting_bp_data 84 objects, 3360 bytes
|
---- property_setting_bp_data 84 objects, 3360 bytes
|
||||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||||
---- instance_usage_array 1 x 200 objects, 3232 bytes
|
---- instance_usage_array 1 x 200 objects, 3232 bytes
|
||||||
---- compatibility_specification 66 objects, 3168 bytes
|
|
||||||
---- definition 44 objects, 3168 bytes
|
---- definition 44 objects, 3168 bytes
|
||||||
|
---- compatibility_specification 66 objects, 3168 bytes
|
||||||
---- inform_extension 19 objects, 3040 bytes
|
---- inform_extension 19 objects, 3040 bytes
|
||||||
---- property_of_value_storage 93 objects, 2976 bytes
|
---- property_of_value_storage 93 objects, 2976 bytes
|
||||||
---- submodule_request 72 objects, 2880 bytes
|
---- submodule_request 72 objects, 2880 bytes
|
||||||
---- inter_construct 32 objects, 2560 bytes
|
---- inter_construct 32 objects, 2560 bytes
|
||||||
|
---- method_set 77 objects, 2464 bytes
|
||||||
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
||||||
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
||||||
---- method_set 76 objects, 2432 bytes
|
|
||||||
---- equation_symbol 30 objects, 2400 bytes
|
---- equation_symbol 30 objects, 2400 bytes
|
||||||
---- semver_range 22 objects, 2288 bytes
|
---- semver_range 22 objects, 2288 bytes
|
||||||
---- use_option 29 objects, 1856 bytes
|
---- use_option 29 objects, 1856 bytes
|
||||||
|
@ -164,60 +164,61 @@ Total memory consumption was 256345K = 250 MB
|
||||||
---- rulebook_outcome 17 objects, 680 bytes
|
---- rulebook_outcome 17 objects, 680 bytes
|
||||||
---- inform_language 6 objects, 672 bytes
|
---- inform_language 6 objects, 672 bytes
|
||||||
---- inter_warehouse_room 10 objects, 640 bytes
|
---- inter_warehouse_room 10 objects, 640 bytes
|
||||||
---- relation_guard 5 objects, 640 bytes
|
|
||||||
---- I6T_intervention 8 objects, 640 bytes
|
---- I6T_intervention 8 objects, 640 bytes
|
||||||
|
---- relation_guard 5 objects, 640 bytes
|
||||||
---- nascent_array 7 objects, 616 bytes
|
---- nascent_array 7 objects, 616 bytes
|
||||||
---- inbuild_search_result 15 objects, 600 bytes
|
---- inbuild_search_result 15 objects, 600 bytes
|
||||||
---- named_rulebook_outcome 15 objects, 600 bytes
|
---- named_rulebook_outcome 15 objects, 600 bytes
|
||||||
---- label_namespace 10 objects, 560 bytes
|
---- label_namespace 10 objects, 560 bytes
|
||||||
---- small_word_set 11 objects, 528 bytes
|
---- small_word_set 11 objects, 528 bytes
|
||||||
---- inform_kit 5 objects, 520 bytes
|
---- inform_kit 5 objects, 520 bytes
|
||||||
---- i6_memory_setting 13 objects, 416 bytes
|
|
||||||
---- equation 4 objects, 416 bytes
|
---- equation 4 objects, 416 bytes
|
||||||
|
---- i6_memory_setting 13 objects, 416 bytes
|
||||||
---- module_package 10 objects, 400 bytes
|
---- module_package 10 objects, 400 bytes
|
||||||
---- dval_written 10 objects, 400 bytes
|
---- dval_written 10 objects, 400 bytes
|
||||||
|
---- bp_family 12 objects, 384 bytes
|
||||||
---- article_usage 8 objects, 384 bytes
|
---- article_usage 8 objects, 384 bytes
|
||||||
---- source_file 5 objects, 360 bytes
|
---- source_file 5 objects, 360 bytes
|
||||||
---- bp_family 11 objects, 352 bytes
|
|
||||||
---- inbuild_genre 7 objects, 336 bytes
|
---- inbuild_genre 7 objects, 336 bytes
|
||||||
---- door_dir_notice 5 objects, 320 bytes
|
|
||||||
---- grammatical_category 8 objects, 320 bytes
|
|
||||||
---- pronoun 8 objects, 320 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
|
---- up_family 9 objects, 288 bytes
|
||||||
---- build_step 4 objects, 288 bytes
|
---- build_step 4 objects, 288 bytes
|
||||||
---- door_to_notice 5 objects, 280 bytes
|
---- door_to_notice 5 objects, 280 bytes
|
||||||
|
---- explicit_bp_data 5 objects, 280 bytes
|
||||||
---- inform_pipeline 4 objects, 256 bytes
|
---- inform_pipeline 4 objects, 256 bytes
|
||||||
---- verb_usage_tier 5 objects, 240 bytes
|
---- verb_usage_tier 5 objects, 240 bytes
|
||||||
---- test_scenario 1 object, 208 bytes
|
---- test_scenario 1 object, 208 bytes
|
||||||
---- build_skill 5 objects, 200 bytes
|
---- build_skill 5 objects, 200 bytes
|
||||||
---- compilation_unit 5 objects, 200 bytes
|
---- compilation_unit 5 objects, 200 bytes
|
||||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
|
||||||
---- kit_dependency 4 objects, 192 bytes
|
---- kit_dependency 4 objects, 192 bytes
|
||||||
|
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||||
---- inform_project 1 object, 176 bytes
|
---- inform_project 1 object, 176 bytes
|
||||||
---- code_generation_target 4 objects, 160 bytes
|
|
||||||
---- link_instruction 4 objects, 160 bytes
|
|
||||||
---- pointer_allocation 2 objects, 160 bytes
|
|
||||||
---- inter_architecture 4 objects, 160 bytes
|
---- inter_architecture 4 objects, 160 bytes
|
||||||
|
---- code_generation_target 4 objects, 160 bytes
|
||||||
|
---- pointer_allocation 2 objects, 160 bytes
|
||||||
|
---- link_instruction 4 objects, 160 bytes
|
||||||
---- codegen_pipeline 1 object, 128 bytes
|
---- codegen_pipeline 1 object, 128 bytes
|
||||||
---- element_activation 4 objects, 128 bytes
|
---- element_activation 4 objects, 128 bytes
|
||||||
---- inbuild_nest 3 objects, 120 bytes
|
---- inbuild_nest 3 objects, 120 bytes
|
||||||
---- inform_kit_ittt 2 objects, 96 bytes
|
---- inform_kit_ittt 2 objects, 96 bytes
|
||||||
---- article 2 objects, 80 bytes
|
|
||||||
---- compile_task_data 1 object, 80 bytes
|
|
||||||
---- list_together_routine 2 objects, 80 bytes
|
---- list_together_routine 2 objects, 80 bytes
|
||||||
---- inter_warehouse 1 object, 56 bytes
|
---- compile_task_data 1 object, 80 bytes
|
||||||
|
---- article 2 objects, 80 bytes
|
||||||
---- build_methodology 1 object, 56 bytes
|
---- build_methodology 1 object, 56 bytes
|
||||||
|
---- inter_warehouse 1 object, 56 bytes
|
||||||
---- HTML_file_state 1 object, 48 bytes
|
---- HTML_file_state 1 object, 48 bytes
|
||||||
---- star_invention 1 object, 48 bytes
|
---- star_invention 1 object, 48 bytes
|
||||||
---- blorb_figure 1 object, 48 bytes
|
---- blorb_figure 1 object, 48 bytes
|
||||||
---- parse_name_notice 1 object, 40 bytes
|
---- parse_name_notice 1 object, 40 bytes
|
||||||
---- kind_template_definition 1 object, 40 bytes
|
|
||||||
---- by_routine_bp_data 1 object, 40 bytes
|
---- by_routine_bp_data 1 object, 40 bytes
|
||||||
|
---- kind_template_definition 1 object, 40 bytes
|
||||||
---- loop_over_scope 1 object, 40 bytes
|
---- loop_over_scope 1 object, 40 bytes
|
||||||
|
|
||||||
37.5% was used for memory not allocated for objects:
|
37.5% was used for memory not allocated for objects:
|
||||||
|
|
||||||
15.9% text stream storage 41841836 bytes in 263036 claims
|
15.9% text stream storage 41840492 bytes in 263034 claims
|
||||||
3.5% dictionary storage 9266176 bytes in 16348 claims
|
3.5% dictionary storage 9266176 bytes in 16348 claims
|
||||||
---- sorting 1048 bytes in 3 claims
|
---- sorting 1048 bytes in 3 claims
|
||||||
2.7% source text 7200000 bytes in 3 claims
|
2.7% source text 7200000 bytes in 3 claims
|
||||||
|
@ -234,5 +235,5 @@ Total memory consumption was 256345K = 250 MB
|
||||||
---- emitter array storage 14368 bytes in 8 claims
|
---- emitter array storage 14368 bytes in 8 claims
|
||||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||||
|
|
||||||
20.0% was overhead - 52570000 bytes = 51337K = 50 MB
|
20.0% was overhead - 52579688 bytes = 51347K = 50 MB
|
||||||
|
|
||||||
|
|
|
@ -1,35 +1,36 @@
|
||||||
100.0% in inform7 run
|
100.0% in inform7 run
|
||||||
66.6% in compilation to Inter
|
66.2% in compilation to Inter
|
||||||
25.3% in //Phrases::Manager::compile_first_block//
|
25.3% in //Phrases::Manager::compile_first_block//
|
||||||
8.7% in //Phrases::Manager::compile_as_needed//
|
9.0% in //Phrases::Manager::compile_as_needed//
|
||||||
6.9% in //Strings::compile_responses//
|
7.0% in //Strings::compile_responses//
|
||||||
6.1% in //World::Compile::compile//
|
5.9% in //World::Compile::compile//
|
||||||
3.7% in //MajorNodes::pre_pass//
|
3.5% in //MajorNodes::pre_pass//
|
||||||
3.3% in //MajorNodes::pass_1//
|
3.2% in //MajorNodes::pass_1//
|
||||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
||||||
1.8% in //Phrases::Manager::rulebooks_array//
|
1.8% in //Phrases::Manager::rulebooks_array//
|
||||||
1.1% in //RTVerbs::ConjugateVerb//
|
1.0% in //RTVerbs::ConjugateVerb//
|
||||||
0.7% in //Phrases::Manager::traverse//
|
0.8% in //Phrases::Manager::traverse//
|
||||||
|
0.5% in //Phrases::Manager::compile_rulebooks//
|
||||||
0.5% in //Phrases::Manager::parse_rule_parameters//
|
0.5% in //Phrases::Manager::parse_rule_parameters//
|
||||||
0.5% in //World::complete//
|
0.5% in //World::complete//
|
||||||
0.3% in //MajorNodes::pass_2//
|
0.3% in //MajorNodes::pass_2//
|
||||||
0.3% in //Phrases::Manager::compile_rulebooks//
|
|
||||||
0.3% in //RTRelations::compile_defined_relations//
|
0.3% in //RTRelations::compile_defined_relations//
|
||||||
0.1% in //Kinds::RunTime::compile_data_type_support_routines//
|
0.1% in //Kinds::RunTime::compile_data_type_support_routines//
|
||||||
0.1% in //PL::Parsing::Verbs::compile_all//
|
0.1% in //PL::Parsing::Verbs::compile_all//
|
||||||
0.1% in //Task::make_built_in_kind_constructors//
|
0.1% in //Task::make_built_in_kind_constructors//
|
||||||
3.8% not specifically accounted for
|
3.4% not specifically accounted for
|
||||||
30.9% in running Inter pipeline
|
31.5% in running Inter pipeline
|
||||||
10.0% in step preparation
|
10.9% in step preparation
|
||||||
9.7% in inter step 2/12: link
|
10.1% in inter step 2/12: link
|
||||||
7.2% in inter step 12/12: generate inform6 -> auto.inf
|
7.3% in inter step 12/12: generate inform6 -> auto.inf
|
||||||
0.3% in inter step 9/12: make-identifiers-unique
|
0.3% in inter step 9/12: make-identifiers-unique
|
||||||
0.1% in inter step 10/12: reconcile-verbs
|
0.1% in inter step 10/12: reconcile-verbs
|
||||||
0.1% in inter step 11/12: eliminate-redundant-labels
|
0.1% in inter step 11/12: eliminate-redundant-labels
|
||||||
|
0.1% in inter step 4/12: parse-linked-matter
|
||||||
0.1% in inter step 5/12: resolve-conditional-compilation
|
0.1% in inter step 5/12: resolve-conditional-compilation
|
||||||
0.1% in inter step 6/12: assimilate
|
0.1% in inter step 6/12: assimilate
|
||||||
0.1% in inter step 7/12: resolve-external-symbols
|
0.1% in inter step 7/12: resolve-external-symbols
|
||||||
0.1% in inter step 8/12: inspect-plugs
|
0.1% in inter step 8/12: inspect-plugs
|
||||||
2.4% not specifically accounted for
|
1.6% not specifically accounted for
|
||||||
2.0% in supervisor
|
1.8% in supervisor
|
||||||
0.4% not specifically accounted for
|
0.4% not specifically accounted for
|
||||||
|
|
|
@ -39,8 +39,8 @@ int RelationRequests::new_relation_SMF(int task, parse_node *V, wording *NPs) {
|
||||||
"this is too long a name for a single relation to have",
|
"this is too long a name for a single relation to have",
|
||||||
"and would become unwieldy.");
|
"and would become unwieldy.");
|
||||||
else Node::set_new_relation_here(V->next,
|
else Node::set_new_relation_here(V->next,
|
||||||
BinaryPredicates::make_pair_sketchily(explicit_bp_family,
|
Relations::Explicit::make_pair_sketchily(
|
||||||
WordAssemblages::from_wording(RW), Relation_OtoO));
|
WordAssemblages::from_wording(RW)));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -343,6 +343,8 @@ void RelationRequests::new(binary_predicate *bp, relation_request *RR) {
|
||||||
kind *storage_kind = NULL; /* what kind, if any, might be stored in it */
|
kind *storage_kind = NULL; /* what kind, if any, might be stored in it */
|
||||||
inference_subject *storage_infs = NULL; /* summing these up */
|
inference_subject *storage_infs = NULL; /* summing these up */
|
||||||
|
|
||||||
|
explicit_bp_data *ED = RETRIEVE_POINTER_explicit_bp_data(bp->family_specific);
|
||||||
|
|
||||||
int rvno = FALSE, /* relate values not objects? */
|
int rvno = FALSE, /* relate values not objects? */
|
||||||
dynamic = FALSE, /* use dynamic memory allocation for storage? */
|
dynamic = FALSE, /* use dynamic memory allocation for storage? */
|
||||||
provide_prn = FALSE, /* allocate the storage property to the kind? */
|
provide_prn = FALSE, /* allocate the storage property to the kind? */
|
||||||
|
@ -355,7 +357,7 @@ void RelationRequests::new(binary_predicate *bp, relation_request *RR) {
|
||||||
if (rvno) { bp->relates_values_not_objects = TRUE; bpr->relates_values_not_objects = TRUE; }
|
if (rvno) { bp->relates_values_not_objects = TRUE; bpr->relates_values_not_objects = TRUE; }
|
||||||
if (RR->frf) { bp->fast_route_finding = TRUE; bpr->fast_route_finding = TRUE; }
|
if (RR->frf) { bp->fast_route_finding = TRUE; bpr->fast_route_finding = TRUE; }
|
||||||
if (prn) {
|
if (prn) {
|
||||||
bp->i6_storage_property = prn; bpr->i6_storage_property = prn;
|
ED->i6_storage_property = prn;
|
||||||
Properties::Valued::set_stored_relation(prn, bp);
|
Properties::Valued::set_stored_relation(prn, bp);
|
||||||
}
|
}
|
||||||
if (dynamic) {
|
if (dynamic) {
|
||||||
|
@ -434,8 +436,6 @@ void RelationRequests::new(binary_predicate *bp, relation_request *RR) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bpr->form_of_relation = bp->form_of_relation;
|
|
||||||
|
|
||||||
LOGIF(RELATION_DEFINITIONS, "Defined the binary predicate:\n$2\n", bp);
|
LOGIF(RELATION_DEFINITIONS, "Defined the binary predicate:\n$2\n", bp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -526,7 +526,6 @@ omitted from the index.
|
||||||
if ((PK) && (Kinds::Behaviour::is_object(PK) == FALSE)) Properties::Valued::set_kind(prn, PK);
|
if ((PK) && (Kinds::Behaviour::is_object(PK) == FALSE)) Properties::Valued::set_kind(prn, PK);
|
||||||
if (storage_kind) storage_infs = Kinds::Knowledge::as_subject(storage_kind);
|
if (storage_kind) storage_infs = Kinds::Knowledge::as_subject(storage_kind);
|
||||||
else storage_infs = NULL;
|
else storage_infs = NULL;
|
||||||
// if (Kinds::Behaviour::is_object(storage_kind) == FALSE) bp->storage_kind = storage_kind;
|
|
||||||
if (((RR->terms[0].unique) || (RR->terms[1].unique)) && (PK) &&
|
if (((RR->terms[0].unique) || (RR->terms[1].unique)) && (PK) &&
|
||||||
(Kinds::Behaviour::is_object(PK) == FALSE))
|
(Kinds::Behaviour::is_object(PK) == FALSE))
|
||||||
Properties::Valued::now_used_for_non_typesafe_relation(prn);
|
Properties::Valued::now_used_for_non_typesafe_relation(prn);
|
||||||
|
@ -552,7 +551,7 @@ Such a relation consumes run-time storage of $5D$ bytes on the Z-machine
|
||||||
and $14D$ bytes on Glulx, where $D$ is the size of the domain...
|
and $14D$ bytes on Glulx, where $D$ is the size of the domain...
|
||||||
|
|
||||||
@<Complete as an asymmetric one-to-one BP@> =
|
@<Complete as an asymmetric one-to-one BP@> =
|
||||||
bp->form_of_relation = Relation_OtoO;
|
ED->form_of_relation = Relation_OtoO;
|
||||||
provide_prn = TRUE;
|
provide_prn = TRUE;
|
||||||
if (Kinds::Behaviour::is_object(storage_kind)) {
|
if (Kinds::Behaviour::is_object(storage_kind)) {
|
||||||
bp->task_functions[NOW_ATOM_TRUE_TASK] = Calculus::Schemas::new("Relation_Now1to1(*2,%n,*1)", i6_prn_name);
|
bp->task_functions[NOW_ATOM_TRUE_TASK] = Calculus::Schemas::new("Relation_Now1to1(*2,%n,*1)", i6_prn_name);
|
||||||
|
@ -567,7 +566,7 @@ and $14D$ bytes on Glulx, where $D$ is the size of the domain...
|
||||||
@ The |Relation_OtoV| case, or one to various: "R relates one K to various K".
|
@ The |Relation_OtoV| case, or one to various: "R relates one K to various K".
|
||||||
|
|
||||||
@<Complete as a one-to-various BP@> =
|
@<Complete as a one-to-various BP@> =
|
||||||
bp->form_of_relation = Relation_OtoV;
|
ED->form_of_relation = Relation_OtoV;
|
||||||
provide_prn = TRUE;
|
provide_prn = TRUE;
|
||||||
if (Kinds::Behaviour::is_object(storage_kind)) {
|
if (Kinds::Behaviour::is_object(storage_kind)) {
|
||||||
bp->task_functions[NOW_ATOM_TRUE_TASK] = Calculus::Schemas::new("*2.%n = *1", i6_prn_name);
|
bp->task_functions[NOW_ATOM_TRUE_TASK] = Calculus::Schemas::new("*2.%n = *1", i6_prn_name);
|
||||||
|
@ -582,7 +581,7 @@ and $14D$ bytes on Glulx, where $D$ is the size of the domain...
|
||||||
@ The |Relation_VtoO| case, or various to one: "R relates various K to one K".
|
@ The |Relation_VtoO| case, or various to one: "R relates various K to one K".
|
||||||
|
|
||||||
@<Complete as a various-to-one BP@> =
|
@<Complete as a various-to-one BP@> =
|
||||||
bp->form_of_relation = Relation_VtoO;
|
ED->form_of_relation = Relation_VtoO;
|
||||||
provide_prn = TRUE;
|
provide_prn = TRUE;
|
||||||
if (Kinds::Behaviour::is_object(storage_kind)) {
|
if (Kinds::Behaviour::is_object(storage_kind)) {
|
||||||
bp->task_functions[NOW_ATOM_TRUE_TASK] = Calculus::Schemas::new("*1.%n = *2", i6_prn_name);
|
bp->task_functions[NOW_ATOM_TRUE_TASK] = Calculus::Schemas::new("*1.%n = *2", i6_prn_name);
|
||||||
|
@ -598,7 +597,7 @@ and $14D$ bytes on Glulx, where $D$ is the size of the domain...
|
||||||
various K".
|
various K".
|
||||||
|
|
||||||
@<Complete as an asymmetric various-to-various BP@> =
|
@<Complete as an asymmetric various-to-various BP@> =
|
||||||
bp->form_of_relation = Relation_VtoV;
|
ED->form_of_relation = Relation_VtoV;
|
||||||
BinaryPredicates::mark_as_needed(bp);
|
BinaryPredicates::mark_as_needed(bp);
|
||||||
bp->task_functions[TEST_ATOM_TASK] = Calculus::Schemas::new("(Relation_TestVtoV(*1,%n,*2,false))",
|
bp->task_functions[TEST_ATOM_TASK] = Calculus::Schemas::new("(Relation_TestVtoV(*1,%n,*2,false))",
|
||||||
BinaryPredicates::iname(bp));
|
BinaryPredicates::iname(bp));
|
||||||
|
@ -611,7 +610,7 @@ various K".
|
||||||
another".
|
another".
|
||||||
|
|
||||||
@<Complete as a symmetric one-to-one BP@> =
|
@<Complete as a symmetric one-to-one BP@> =
|
||||||
bp->form_of_relation = Relation_Sym_OtoO;
|
ED->form_of_relation = Relation_Sym_OtoO;
|
||||||
provide_prn = TRUE;
|
provide_prn = TRUE;
|
||||||
if (Kinds::Behaviour::is_object(storage_kind)) {
|
if (Kinds::Behaviour::is_object(storage_kind)) {
|
||||||
bp->task_functions[NOW_ATOM_TRUE_TASK] = Calculus::Schemas::new("Relation_NowS1to1(*2,%n,*1)", i6_prn_name);
|
bp->task_functions[NOW_ATOM_TRUE_TASK] = Calculus::Schemas::new("Relation_NowS1to1(*2,%n,*1)", i6_prn_name);
|
||||||
|
@ -627,7 +626,7 @@ another".
|
||||||
to each other".
|
to each other".
|
||||||
|
|
||||||
@<Complete as a symmetric various-to-various BP@> =
|
@<Complete as a symmetric various-to-various BP@> =
|
||||||
bp->form_of_relation = Relation_Sym_VtoV;
|
ED->form_of_relation = Relation_Sym_VtoV;
|
||||||
BinaryPredicates::mark_as_needed(bp);
|
BinaryPredicates::mark_as_needed(bp);
|
||||||
bp->task_functions[TEST_ATOM_TASK] = Calculus::Schemas::new("(Relation_TestVtoV(*1,%n,*2,true))",
|
bp->task_functions[TEST_ATOM_TASK] = Calculus::Schemas::new("(Relation_TestVtoV(*1,%n,*2,true))",
|
||||||
BinaryPredicates::iname(bp));
|
BinaryPredicates::iname(bp));
|
||||||
|
@ -640,10 +639,10 @@ to each other".
|
||||||
other in groups".
|
other in groups".
|
||||||
|
|
||||||
@<Complete as an equivalence-relation BP@> =
|
@<Complete as an equivalence-relation BP@> =
|
||||||
bp->form_of_relation = Relation_Equiv;
|
ED->form_of_relation = Relation_Equiv;
|
||||||
equivalence_bp_data *D = CREATE(equivalence_bp_data);
|
equivalence_bp_data *D = CREATE(equivalence_bp_data);
|
||||||
D->equivalence_partition = NULL;
|
D->equivalence_partition = NULL;
|
||||||
bp->family_specific = STORE_POINTER_equivalence_bp_data(D);
|
ED->equiv_data = D;
|
||||||
provide_prn = TRUE;
|
provide_prn = TRUE;
|
||||||
if (Kinds::Behaviour::is_object(storage_kind)) {
|
if (Kinds::Behaviour::is_object(storage_kind)) {
|
||||||
bp->task_functions[TEST_ATOM_TASK] = Calculus::Schemas::new("(*1.%n == *2.%n)", i6_prn_name, i6_prn_name);
|
bp->task_functions[TEST_ATOM_TASK] = Calculus::Schemas::new("(*1.%n == *2.%n)", i6_prn_name, i6_prn_name);
|
||||||
|
@ -660,11 +659,12 @@ other in groups".
|
||||||
}
|
}
|
||||||
Properties::Valued::set_kind(prn, K_number);
|
Properties::Valued::set_kind(prn, K_number);
|
||||||
|
|
||||||
@ The |Relation_ByRoutine| case, or relation tested by a routine: "R relates
|
@ The case of a relation tested by a routine: "R relates K to L when (some
|
||||||
K to L when (some condition)".
|
condition)".
|
||||||
|
|
||||||
@<Complete as a relation-by-routine BP@> =
|
@<Complete as a relation-by-routine BP@> =
|
||||||
bp->form_of_relation = Relation_ByRoutine;
|
bp->relation_family = by_routine_bp_family;
|
||||||
|
bp->reversal->relation_family = by_routine_bp_family;
|
||||||
package_request *P = BinaryPredicates::package(bp);
|
package_request *P = BinaryPredicates::package(bp);
|
||||||
by_routine_bp_data *D = CREATE(by_routine_bp_data);
|
by_routine_bp_data *D = CREATE(by_routine_bp_data);
|
||||||
D->condition_defn_text = RR->CONW;
|
D->condition_defn_text = RR->CONW;
|
||||||
|
|
|
@ -10,11 +10,15 @@ there are none.
|
||||||
|
|
||||||
= (early code)
|
= (early code)
|
||||||
bp_family *explicit_bp_family = NULL;
|
bp_family *explicit_bp_family = NULL;
|
||||||
|
bp_family *by_routine_bp_family = NULL;
|
||||||
typedef struct explicit_bp_data {
|
typedef struct explicit_bp_data {
|
||||||
|
int form_of_relation; /* one of the |Relation_*| constants defined below */
|
||||||
|
struct property *i6_storage_property; /* provides run-time storage */
|
||||||
|
struct equivalence_bp_data *equiv_data; /* only used for |Relation_Equiv| */
|
||||||
|
struct inter_name *v2v_bitmap_iname; /* only used for |Relation_VtoV| and |Relation_Sym_VtoV| */
|
||||||
CLASS_DEFINITION
|
CLASS_DEFINITION
|
||||||
} explicit_bp_data;
|
} explicit_bp_data;
|
||||||
|
|
||||||
|
|
||||||
@ =
|
@ =
|
||||||
void Relations::Explicit::start(void) {
|
void Relations::Explicit::start(void) {
|
||||||
explicit_bp_family = BinaryPredicateFamilies::new();
|
explicit_bp_family = BinaryPredicateFamilies::new();
|
||||||
|
@ -23,6 +27,90 @@ void Relations::Explicit::start(void) {
|
||||||
METHOD_ADD(explicit_bp_family, SCHEMA_BPF_MTID, Relations::Explicit::REL_compile);
|
METHOD_ADD(explicit_bp_family, SCHEMA_BPF_MTID, Relations::Explicit::REL_compile);
|
||||||
METHOD_ADD(explicit_bp_family, DESCRIBE_FOR_PROBLEMS_BPF_MTID, Relations::Explicit::REL_describe_for_problems);
|
METHOD_ADD(explicit_bp_family, DESCRIBE_FOR_PROBLEMS_BPF_MTID, Relations::Explicit::REL_describe_for_problems);
|
||||||
METHOD_ADD(explicit_bp_family, DESCRIBE_FOR_INDEX_BPF_MTID, Relations::Explicit::REL_describe_briefly);
|
METHOD_ADD(explicit_bp_family, DESCRIBE_FOR_INDEX_BPF_MTID, Relations::Explicit::REL_describe_briefly);
|
||||||
|
by_routine_bp_family = BinaryPredicateFamilies::new();
|
||||||
|
METHOD_ADD(by_routine_bp_family, TYPECHECK_BPF_MTID, Relations::Explicit::REL_typecheck);
|
||||||
|
METHOD_ADD(by_routine_bp_family, ASSERT_BPF_MTID, Relations::Explicit::REL_assert);
|
||||||
|
METHOD_ADD(by_routine_bp_family, SCHEMA_BPF_MTID, Relations::Explicit::REL_compile);
|
||||||
|
METHOD_ADD(by_routine_bp_family, DESCRIBE_FOR_PROBLEMS_BPF_MTID, Relations::Explicit::REL_describe_for_problems);
|
||||||
|
METHOD_ADD(by_routine_bp_family, DESCRIBE_FOR_INDEX_BPF_MTID, Relations::Explicit::REL_br_describe_briefly);
|
||||||
|
}
|
||||||
|
|
||||||
|
int Relations::Explicit::is_explicit_with_runtime_storage(binary_predicate *bp) {
|
||||||
|
if (bp->relation_family == explicit_bp_family) return TRUE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ The following constants are numbered in a way which corresponds to some
|
||||||
|
run-time code supporting relations.
|
||||||
|
|
||||||
|
@d Relation_Implicit -1 /* used to mean "none of the below" */
|
||||||
|
|
||||||
|
@d Relation_OtoO 1 /* one to one: "R relates one K to one K" */
|
||||||
|
@d Relation_OtoV 2 /* one to various: "R relates one K to various K" */
|
||||||
|
@d Relation_VtoO 3 /* various to one: "R relates various K to one K" */
|
||||||
|
@d Relation_VtoV 4 /* various to various: "R relates various K to various K" */
|
||||||
|
@d Relation_Sym_OtoO 5 /* symmetric one to one: "R relates one K to another" */
|
||||||
|
@d Relation_Sym_VtoV 6 /* symmetric various to various: "R relates K to each other" */
|
||||||
|
@d Relation_Equiv 7 /* equivalence relation: "R relates K to each other in groups" */
|
||||||
|
|
||||||
|
@ =
|
||||||
|
int Relations::Explicit::allow_arbitrary_assertions(binary_predicate *bp) {
|
||||||
|
int f = Relations::Explicit::get_form_of_relation(bp);
|
||||||
|
if (f == Relation_Equiv) return TRUE;
|
||||||
|
if (f == Relation_VtoV) return TRUE;
|
||||||
|
if (f == Relation_Sym_VtoV) return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ When the source text declares new relations, it turns out to be convenient
|
||||||
|
to make their BPs in a two-stage process: to make sketchy, mostly-blank BP
|
||||||
|
structures for them early on -- but getting their names registered -- and
|
||||||
|
then fill in the correct details later. This is where such sketchy pairs are
|
||||||
|
made:
|
||||||
|
|
||||||
|
=
|
||||||
|
binary_predicate *Relations::Explicit::make_pair_sketchily(word_assemblage wa) {
|
||||||
|
TEMPORARY_TEXT(relname)
|
||||||
|
WRITE_TO(relname, "%V", WordAssemblages::first_word(&wa));
|
||||||
|
binary_predicate *bp =
|
||||||
|
BinaryPredicates::make_pair(explicit_bp_family,
|
||||||
|
BPTerms::new(NULL), BPTerms::new(NULL),
|
||||||
|
relname, NULL, NULL, NULL, wa);
|
||||||
|
DISCARD_TEXT(relname)
|
||||||
|
explicit_bp_data *ED = CREATE(explicit_bp_data);
|
||||||
|
bp->family_specific = STORE_POINTER_explicit_bp_data(ED);
|
||||||
|
bp->reversal->family_specific = STORE_POINTER_explicit_bp_data(ED);
|
||||||
|
|
||||||
|
ED->equiv_data = NULL;
|
||||||
|
ED->i6_storage_property = NULL;
|
||||||
|
ED->form_of_relation = Relation_OtoO;
|
||||||
|
ED->v2v_bitmap_iname = NULL;
|
||||||
|
|
||||||
|
return bp;
|
||||||
|
}
|
||||||
|
|
||||||
|
property *Relations::Explicit::get_i6_storage_property(binary_predicate *bp) {
|
||||||
|
if (bp->relation_family != explicit_bp_family) return NULL;
|
||||||
|
explicit_bp_data *ED = RETRIEVE_POINTER_explicit_bp_data(bp->family_specific);
|
||||||
|
return ED->i6_storage_property;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Relations::Explicit::get_form_of_relation(binary_predicate *bp) {
|
||||||
|
if (bp->relation_family != explicit_bp_family) return Relation_Implicit;
|
||||||
|
explicit_bp_data *ED = RETRIEVE_POINTER_explicit_bp_data(bp->family_specific);
|
||||||
|
return ED->form_of_relation;
|
||||||
|
}
|
||||||
|
char *Relations::Explicit::form_to_text(binary_predicate *bp) {
|
||||||
|
switch(Relations::Explicit::get_form_of_relation(bp)) {
|
||||||
|
case Relation_OtoO: return "Relation_OtoO";
|
||||||
|
case Relation_OtoV: return "Relation_OtoV";
|
||||||
|
case Relation_VtoO: return "Relation_VtoO";
|
||||||
|
case Relation_VtoV: return "Relation_VtoV";
|
||||||
|
case Relation_Sym_OtoO: return "Relation_Sym_OtoO";
|
||||||
|
case Relation_Sym_VtoV: return "Relation_Sym_VtoV";
|
||||||
|
case Relation_Equiv: return "Relation_Equiv";
|
||||||
|
default: return "Relation_Implicit";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ They typecheck by the default rule only:
|
@ They typecheck by the default rule only:
|
||||||
|
@ -50,13 +138,13 @@ int Relations::Explicit::REL_assert(bp_family *self, binary_predicate *bp,
|
||||||
if ((infs0 == NULL) || (infs1 == NULL)) @<Reject relationship with nothing@>;
|
if ((infs0 == NULL) || (infs1 == NULL)) @<Reject relationship with nothing@>;
|
||||||
if (Relations::Explicit::allow_arbitrary_assertions(bp)) {
|
if (Relations::Explicit::allow_arbitrary_assertions(bp)) {
|
||||||
World::Inferences::draw_relation(bp, infs0, infs1);
|
World::Inferences::draw_relation(bp, infs0, infs1);
|
||||||
if ((BinaryPredicates::get_form_of_relation(bp) == Relation_Sym_VtoV) && (infs0 != infs1))
|
if ((Relations::Explicit::get_form_of_relation(bp) == Relation_Sym_VtoV) && (infs0 != infs1))
|
||||||
World::Inferences::draw_relation(bp, infs1, infs0);
|
World::Inferences::draw_relation(bp, infs1, infs0);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
if (BinaryPredicates::is_explicit_with_runtime_storage(bp)) {
|
if (Relations::Explicit::is_explicit_with_runtime_storage(bp)) {
|
||||||
Relations::Explicit::infer_property_based_relation(bp, infs1, infs0);
|
Relations::Explicit::infer_property_based_relation(bp, infs1, infs0);
|
||||||
if ((BinaryPredicates::get_form_of_relation(bp) == Relation_Sym_OtoO) && (infs0 != infs1))
|
if ((Relations::Explicit::get_form_of_relation(bp) == Relation_Sym_OtoO) && (infs0 != infs1))
|
||||||
Relations::Explicit::infer_property_based_relation(bp, infs0, infs1);
|
Relations::Explicit::infer_property_based_relation(bp, infs0, infs1);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -64,13 +152,6 @@ int Relations::Explicit::REL_assert(bp_family *self, binary_predicate *bp,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Relations::Explicit::allow_arbitrary_assertions(binary_predicate *bp) {
|
|
||||||
if (bp->form_of_relation == Relation_Equiv) return TRUE;
|
|
||||||
if (bp->form_of_relation == Relation_VtoV) return TRUE;
|
|
||||||
if (bp->form_of_relation == Relation_Sym_VtoV) return TRUE;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ This is the point at which non-assertable relations are thrown out.
|
@ This is the point at which non-assertable relations are thrown out.
|
||||||
|
|
||||||
@<Reject non-assertable relations@> =
|
@<Reject non-assertable relations@> =
|
||||||
|
@ -102,12 +183,12 @@ both $R(x,y)$ and $R(x,z)$ will result in contradictory property value
|
||||||
inferences for $y$ and $z$.
|
inferences for $y$ and $z$.
|
||||||
|
|
||||||
=
|
=
|
||||||
void Relations::Explicit::infer_property_based_relation(binary_predicate *relation,
|
void Relations::Explicit::infer_property_based_relation(binary_predicate *bp,
|
||||||
inference_subject *infs0, inference_subject *infs1) {
|
inference_subject *infs0, inference_subject *infs1) {
|
||||||
if (BinaryPredicates::get_form_of_relation(relation) == Relation_VtoO) {
|
if (Relations::Explicit::get_form_of_relation(bp) == Relation_VtoO) {
|
||||||
inference_subject *swap=infs0; infs0=infs1; infs1=swap;
|
inference_subject *swap=infs0; infs0=infs1; infs1=swap;
|
||||||
}
|
}
|
||||||
property *prn = BinaryPredicates::get_i6_storage_property(relation);
|
property *prn = Relations::Explicit::get_i6_storage_property(bp);
|
||||||
World::Inferences::draw_property(infs0, prn, InferenceSubjects::as_constant(infs1));
|
World::Inferences::draw_property(infs0, prn, InferenceSubjects::as_constant(infs1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +206,7 @@ int Relations::Explicit::REL_describe_for_problems(bp_family *self, OUTPUT_STREA
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
void Relations::Explicit::REL_describe_briefly(bp_family *self, OUTPUT_STREAM, binary_predicate *bp) {
|
void Relations::Explicit::REL_describe_briefly(bp_family *self, OUTPUT_STREAM, binary_predicate *bp) {
|
||||||
switch (bp->form_of_relation) {
|
switch (Relations::Explicit::get_form_of_relation(bp)) {
|
||||||
case Relation_OtoO: WRITE("one-to-one"); break;
|
case Relation_OtoO: WRITE("one-to-one"); break;
|
||||||
case Relation_OtoV: WRITE("one-to-various"); break;
|
case Relation_OtoV: WRITE("one-to-various"); break;
|
||||||
case Relation_VtoO: WRITE("various-to-one"); break;
|
case Relation_VtoO: WRITE("various-to-one"); break;
|
||||||
|
@ -133,6 +214,8 @@ void Relations::Explicit::REL_describe_briefly(bp_family *self, OUTPUT_STREAM, b
|
||||||
case Relation_Sym_OtoO: WRITE("one-to-another"); break;
|
case Relation_Sym_OtoO: WRITE("one-to-another"); break;
|
||||||
case Relation_Sym_VtoV: WRITE("various-to-each-other"); break;
|
case Relation_Sym_VtoV: WRITE("various-to-each-other"); break;
|
||||||
case Relation_Equiv: WRITE("in groups"); break;
|
case Relation_Equiv: WRITE("in groups"); break;
|
||||||
case Relation_ByRoutine: WRITE("defined"); break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void Relations::Explicit::REL_br_describe_briefly(bp_family *self, OUTPUT_STREAM, binary_predicate *bp) {
|
||||||
|
WRITE("defined");
|
||||||
|
}
|
||||||
|
|
|
@ -875,10 +875,10 @@ kind *PL::Parsing::Tokens::compile(gpr_kit *gprk, parse_node *pn, int code_mode,
|
||||||
return K_object;
|
return K_object;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
property *prn = BinaryPredicates::get_i6_storage_property(bp);
|
property *prn = Relations::Explicit::get_i6_storage_property(bp);
|
||||||
reverse = FALSE;
|
reverse = FALSE;
|
||||||
if (BinaryPredicates::is_the_wrong_way_round(bp)) reverse = TRUE;
|
if (BinaryPredicates::is_the_wrong_way_round(bp)) reverse = TRUE;
|
||||||
if (BinaryPredicates::get_form_of_relation(bp) == Relation_VtoO) {
|
if (Relations::Explicit::get_form_of_relation(bp) == Relation_VtoO) {
|
||||||
if (reverse) reverse = FALSE; else reverse = TRUE;
|
if (reverse) reverse = FALSE; else reverse = TRUE;
|
||||||
}
|
}
|
||||||
if (prn) {
|
if (prn) {
|
||||||
|
|
|
@ -22,7 +22,7 @@ void KnowledgeAboutRelations::SUBJ_complete_model(inference_subject *infs) {
|
||||||
binary_predicate *bp = InferenceSubjects::as_bp(infs);
|
binary_predicate *bp = InferenceSubjects::as_bp(infs);
|
||||||
|
|
||||||
if (BinaryPredicates::store_dynamically(bp)) return; /* handled at run-time instead */
|
if (BinaryPredicates::store_dynamically(bp)) return; /* handled at run-time instead */
|
||||||
if ((BinaryPredicates::get_form_of_relation(bp) == Relation_Equiv) && (bp->right_way_round)) {
|
if ((Relations::Explicit::get_form_of_relation(bp) == Relation_Equiv) && (bp->right_way_round)) {
|
||||||
RTRelations::equivalence_relation_make_singleton_partitions(bp, domain_size);
|
RTRelations::equivalence_relation_make_singleton_partitions(bp, domain_size);
|
||||||
inference *i;
|
inference *i;
|
||||||
POSITIVE_KNOWLEDGE_LOOP(i, BinaryPredicates::as_subject(bp), ARBITRARY_RELATION_INF) {
|
POSITIVE_KNOWLEDGE_LOOP(i, BinaryPredicates::as_subject(bp), ARBITRARY_RELATION_INF) {
|
||||||
|
@ -37,13 +37,10 @@ void KnowledgeAboutRelations::SUBJ_complete_model(inference_subject *infs) {
|
||||||
|
|
||||||
void KnowledgeAboutRelations::SUBJ_check_model(inference_subject *infs) {
|
void KnowledgeAboutRelations::SUBJ_check_model(inference_subject *infs) {
|
||||||
binary_predicate *bp = InferenceSubjects::as_bp(infs);
|
binary_predicate *bp = InferenceSubjects::as_bp(infs);
|
||||||
if ((bp->right_way_round) &&
|
int f = Relations::Explicit::get_form_of_relation(bp);
|
||||||
((bp->form_of_relation == Relation_OtoO) ||
|
if ((bp->right_way_round) && ((f == Relation_OtoO) || (f == Relation_Sym_OtoO)))
|
||||||
(bp->form_of_relation == Relation_Sym_OtoO)))
|
|
||||||
KnowledgeAboutRelations::check_OtoO_relation(bp);
|
KnowledgeAboutRelations::check_OtoO_relation(bp);
|
||||||
if ((bp->right_way_round) &&
|
if ((bp->right_way_round) && ((f == Relation_OtoV) || (f == Relation_VtoO)))
|
||||||
((bp->form_of_relation == Relation_OtoV) ||
|
|
||||||
(bp->form_of_relation == Relation_VtoO)))
|
|
||||||
KnowledgeAboutRelations::check_OtoV_relation(bp);
|
KnowledgeAboutRelations::check_OtoV_relation(bp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,8 +74,8 @@ void KnowledgeAboutRelations::SUBJ_compile(inference_subject *infs) {
|
||||||
}
|
}
|
||||||
Routines::end(save);
|
Routines::end(save);
|
||||||
} else {
|
} else {
|
||||||
if ((bp->form_of_relation == Relation_VtoV) ||
|
int f = Relations::Explicit::get_form_of_relation(bp);
|
||||||
(bp->form_of_relation == Relation_Sym_VtoV))
|
if ((f == Relation_VtoV) || (f == Relation_Sym_VtoV))
|
||||||
RTRelations::compile_vtov_storage(bp);
|
RTRelations::compile_vtov_storage(bp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -102,7 +99,7 @@ void KnowledgeAboutRelations::check_OtoO_relation(binary_predicate *bp) {
|
||||||
inference **right_second = (inference **)
|
inference **right_second = (inference **)
|
||||||
(Memory::calloc(nc, sizeof(inference *), OBJECT_COMPILATION_MREASON));
|
(Memory::calloc(nc, sizeof(inference *), OBJECT_COMPILATION_MREASON));
|
||||||
|
|
||||||
property *prn = BinaryPredicates::get_i6_storage_property(bp);
|
property *prn = Relations::Explicit::get_i6_storage_property(bp);
|
||||||
|
|
||||||
inference_subject *infs;
|
inference_subject *infs;
|
||||||
LOOP_OVER(infs, inference_subject) right_counts[infs->allocation_id] = 0;
|
LOOP_OVER(infs, inference_subject) right_counts[infs->allocation_id] = 0;
|
||||||
|
@ -187,7 +184,7 @@ void KnowledgeAboutRelations::check_OtoV_relation(binary_predicate *bp) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bp->form_of_relation == Relation_VtoO) {
|
if (Relations::Explicit::get_form_of_relation(bp) == Relation_VtoO) {
|
||||||
LOOP_OVER(infs, inference_subject) {
|
LOOP_OVER(infs, inference_subject) {
|
||||||
if (left_counts[infs->allocation_id] >= 2) {
|
if (left_counts[infs->allocation_id] >= 2) {
|
||||||
StandardProblems::infs_contradiction_problem(_p_(PM_RelationVtoOContradiction),
|
StandardProblems::infs_contradiction_problem(_p_(PM_RelationVtoOContradiction),
|
||||||
|
|
|
@ -2,6 +2,17 @@
|
||||||
|
|
||||||
Relations need both storage and support code at runtime.
|
Relations need both storage and support code at runtime.
|
||||||
|
|
||||||
|
@h The handler.
|
||||||
|
|
||||||
|
=
|
||||||
|
inter_name *RTRelations::handler_iname(binary_predicate *bp) {
|
||||||
|
if (bp->handler_iname == NULL) {
|
||||||
|
package_request *R = BinaryPredicates::package(bp);
|
||||||
|
bp->handler_iname = Hierarchy::make_iname_in(HANDLER_FN_HL, R);
|
||||||
|
}
|
||||||
|
return bp->handler_iname;
|
||||||
|
}
|
||||||
|
|
||||||
@h Relation records.
|
@h Relation records.
|
||||||
The template layer needs to be able to perform certain actions on any given
|
The template layer needs to be able to perform certain actions on any given
|
||||||
relation, regardless of its mode of storage (if any). We abstract all of this
|
relation, regardless of its mode of storage (if any). We abstract all of this
|
||||||
|
@ -99,7 +110,7 @@ void RTRelations::compile_relation_records(void) {
|
||||||
DISCARD_TEXT(A)
|
DISCARD_TEXT(A)
|
||||||
Produce::up(Emit::tree());
|
Produce::up(Emit::tree());
|
||||||
|
|
||||||
switch(bp->form_of_relation) {
|
switch(Relations::Explicit::get_form_of_relation(bp)) {
|
||||||
case Relation_OtoO:
|
case Relation_OtoO:
|
||||||
Produce::inv_call_iname(Emit::tree(), Hierarchy::find(RELATION_TY_OTOOADJECTIVE_HL));
|
Produce::inv_call_iname(Emit::tree(), Hierarchy::find(RELATION_TY_OTOOADJECTIVE_HL));
|
||||||
Produce::down(Emit::tree());
|
Produce::down(Emit::tree());
|
||||||
|
@ -196,7 +207,7 @@ void RTRelations::compile_relation_records(void) {
|
||||||
Emit::array_iname_entry(Hierarchy::find(RELS_LOOKUP_ALL_X_HL));
|
Emit::array_iname_entry(Hierarchy::find(RELS_LOOKUP_ALL_X_HL));
|
||||||
Emit::array_iname_entry(RELS_LIST_iname);
|
Emit::array_iname_entry(RELS_LIST_iname);
|
||||||
}
|
}
|
||||||
switch(dbp->form_of_relation) {
|
switch(Relations::Explicit::get_form_of_relation(dbp)) {
|
||||||
case Relation_Implicit:
|
case Relation_Implicit:
|
||||||
if ((minimal == FALSE) && (BinaryPredicates::can_be_made_true_at_runtime(dbp))) {
|
if ((minimal == FALSE) && (BinaryPredicates::can_be_made_true_at_runtime(dbp))) {
|
||||||
Emit::array_iname_entry(RELS_ASSERT_TRUE_iname);
|
Emit::array_iname_entry(RELS_ASSERT_TRUE_iname);
|
||||||
|
@ -215,7 +226,6 @@ void RTRelations::compile_relation_records(void) {
|
||||||
case Relation_Equiv: Emit::array_iname_entry(RELS_EQUIVALENCE_iname); @<Throw in the full suite@>; break;
|
case Relation_Equiv: Emit::array_iname_entry(RELS_EQUIVALENCE_iname); @<Throw in the full suite@>; break;
|
||||||
case Relation_VtoV: @<Throw in the full suite@>; break;
|
case Relation_VtoV: @<Throw in the full suite@>; break;
|
||||||
case Relation_Sym_VtoV: Emit::array_iname_entry(RELS_SYMMETRIC_iname); @<Throw in the full suite@>; break;
|
case Relation_Sym_VtoV: Emit::array_iname_entry(RELS_SYMMETRIC_iname); @<Throw in the full suite@>; break;
|
||||||
case Relation_ByRoutine: break;
|
|
||||||
default:
|
default:
|
||||||
internal_error("Binary predicate with unknown structural type");
|
internal_error("Binary predicate with unknown structural type");
|
||||||
}
|
}
|
||||||
|
@ -233,29 +243,32 @@ void RTRelations::compile_relation_records(void) {
|
||||||
@<Write the storage field of the relation metadata array@> =
|
@<Write the storage field of the relation metadata array@> =
|
||||||
binary_predicate *dbp = bp;
|
binary_predicate *dbp = bp;
|
||||||
if (bp->right_way_round == FALSE) dbp = bp->reversal;
|
if (bp->right_way_round == FALSE) dbp = bp->reversal;
|
||||||
switch(dbp->form_of_relation) {
|
if (bp->relation_family == by_routine_bp_family) {
|
||||||
case Relation_Implicit: /* Field 0 is not used */
|
/* Field 0 is the routine used to test the relation */
|
||||||
Emit::array_numeric_entry(0); /* which is not the same as |NULL|, unlike in C */
|
by_routine_bp_data *D = RETRIEVE_POINTER_by_routine_bp_data(dbp->family_specific);
|
||||||
break;
|
Emit::array_iname_entry(D->bp_by_routine_iname);
|
||||||
case Relation_OtoO:
|
} else {
|
||||||
case Relation_OtoV:
|
switch(Relations::Explicit::get_form_of_relation(dbp)) {
|
||||||
case Relation_VtoO:
|
case Relation_Implicit: /* Field 0 is not used */
|
||||||
case Relation_Sym_OtoO:
|
Emit::array_numeric_entry(0); /* which is not the same as |NULL|, unlike in C */
|
||||||
case Relation_Equiv: /* Field 0 is the property used for run-time storage */
|
break;
|
||||||
Emit::array_iname_entry(Properties::iname(dbp->i6_storage_property));
|
case Relation_OtoO:
|
||||||
break;
|
case Relation_OtoV:
|
||||||
case Relation_VtoV:
|
case Relation_VtoO:
|
||||||
case Relation_Sym_VtoV: /* Field 0 is the bitmap array used for run-time storage */
|
case Relation_Sym_OtoO:
|
||||||
if (dbp->v2v_bitmap_iname == NULL) internal_error("gaah");
|
case Relation_Equiv: /* Field 0 is the property used for run-time storage */
|
||||||
Emit::array_iname_entry(dbp->v2v_bitmap_iname);
|
Emit::array_iname_entry(
|
||||||
break;
|
Properties::iname(Relations::Explicit::get_i6_storage_property(dbp)));
|
||||||
case Relation_ByRoutine: { /* Field 0 is the routine used to test the relation */
|
break;
|
||||||
by_routine_bp_data *D = RETRIEVE_POINTER_by_routine_bp_data(dbp->family_specific);
|
case Relation_VtoV:
|
||||||
Emit::array_iname_entry(D->bp_by_routine_iname);
|
case Relation_Sym_VtoV: {
|
||||||
break;
|
/* Field 0 is the bitmap array used for run-time storage */
|
||||||
|
explicit_bp_data *ED = RETRIEVE_POINTER_explicit_bp_data(bp->family_specific);
|
||||||
|
if (ED->v2v_bitmap_iname == NULL) internal_error("gaah");
|
||||||
|
Emit::array_iname_entry(ED->v2v_bitmap_iname);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
default:
|
|
||||||
internal_error("Binary predicate with unknown structural type");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@<Write the kind field of the relation record@> =
|
@<Write the kind field of the relation record@> =
|
||||||
|
@ -263,7 +276,7 @@ void RTRelations::compile_relation_records(void) {
|
||||||
|
|
||||||
@<Write the description field of the relation record@> =
|
@<Write the description field of the relation record@> =
|
||||||
TEMPORARY_TEXT(DF)
|
TEMPORARY_TEXT(DF)
|
||||||
if (bp->form_of_relation == Relation_Implicit)
|
if (Relations::Explicit::get_form_of_relation(bp) == Relation_Implicit)
|
||||||
WRITE_TO(DF, "%S", BinaryPredicates::get_log_name(bp));
|
WRITE_TO(DF, "%S", BinaryPredicates::get_log_name(bp));
|
||||||
else CompiledText::from_text(DF, Node::get_text(bp->bp_created_at));
|
else CompiledText::from_text(DF, Node::get_text(bp->bp_created_at));
|
||||||
Emit::array_text_entry(DF);
|
Emit::array_text_entry(DF);
|
||||||
|
@ -277,7 +290,7 @@ void RTRelations::compile_relation_records(void) {
|
||||||
binary_predicate *dbp = bp;
|
binary_predicate *dbp = bp;
|
||||||
if (bp->right_way_round == FALSE) { X = I"Y"; Y = I"X"; dbp = bp->reversal; }
|
if (bp->right_way_round == FALSE) { X = I"Y"; Y = I"X"; dbp = bp->reversal; }
|
||||||
|
|
||||||
handler = BinaryPredicates::handler_iname(bp);
|
handler = RTRelations::handler_iname(bp);
|
||||||
packaging_state save = Routines::begin(handler);
|
packaging_state save = Routines::begin(handler);
|
||||||
inter_symbol *rr_s = LocalVariables::add_named_call_as_symbol(I"rr");
|
inter_symbol *rr_s = LocalVariables::add_named_call_as_symbol(I"rr");
|
||||||
inter_symbol *task_s = LocalVariables::add_named_call_as_symbol(I"task");
|
inter_symbol *task_s = LocalVariables::add_named_call_as_symbol(I"task");
|
||||||
|
@ -366,7 +379,7 @@ void RTRelations::compile_relation_records(void) {
|
||||||
}
|
}
|
||||||
inter_name *shower = NULL;
|
inter_name *shower = NULL;
|
||||||
int par = 0;
|
int par = 0;
|
||||||
switch(dbp->form_of_relation) {
|
switch(Relations::Explicit::get_form_of_relation(dbp)) {
|
||||||
case Relation_OtoO: shower = Hierarchy::find(RELATION_RSHOWOTOO_HL); break;
|
case Relation_OtoO: shower = Hierarchy::find(RELATION_RSHOWOTOO_HL); break;
|
||||||
case Relation_OtoV: shower = Hierarchy::find(RELATION_RSHOWOTOO_HL); break;
|
case Relation_OtoV: shower = Hierarchy::find(RELATION_RSHOWOTOO_HL); break;
|
||||||
case Relation_VtoO: shower = Hierarchy::find(RELATION_SHOWOTOO_HL); break;
|
case Relation_VtoO: shower = Hierarchy::find(RELATION_SHOWOTOO_HL); break;
|
||||||
|
@ -387,7 +400,7 @@ void RTRelations::compile_relation_records(void) {
|
||||||
}
|
}
|
||||||
inter_name *emptier = NULL;
|
inter_name *emptier = NULL;
|
||||||
par = 0;
|
par = 0;
|
||||||
switch(dbp->form_of_relation) {
|
switch(Relations::Explicit::get_form_of_relation(dbp)) {
|
||||||
case Relation_OtoO: emptier = Hierarchy::find(RELATION_EMPTYOTOO_HL); break;
|
case Relation_OtoO: emptier = Hierarchy::find(RELATION_EMPTYOTOO_HL); break;
|
||||||
case Relation_OtoV: emptier = Hierarchy::find(RELATION_EMPTYOTOO_HL); break;
|
case Relation_OtoV: emptier = Hierarchy::find(RELATION_EMPTYOTOO_HL); break;
|
||||||
case Relation_VtoO: emptier = Hierarchy::find(RELATION_EMPTYOTOO_HL); break;
|
case Relation_VtoO: emptier = Hierarchy::find(RELATION_EMPTYOTOO_HL); break;
|
||||||
|
@ -409,7 +422,7 @@ void RTRelations::compile_relation_records(void) {
|
||||||
inter_name *router = NULL;
|
inter_name *router = NULL;
|
||||||
int id_flag = TRUE;
|
int id_flag = TRUE;
|
||||||
int follow = FALSE;
|
int follow = FALSE;
|
||||||
switch(dbp->form_of_relation) {
|
switch(Relations::Explicit::get_form_of_relation(dbp)) {
|
||||||
case Relation_OtoO: router = Hierarchy::find(OTOVRELROUTETO_HL); follow = TRUE; break;
|
case Relation_OtoO: router = Hierarchy::find(OTOVRELROUTETO_HL); follow = TRUE; break;
|
||||||
case Relation_OtoV: router = Hierarchy::find(OTOVRELROUTETO_HL); follow = TRUE; break;
|
case Relation_OtoV: router = Hierarchy::find(OTOVRELROUTETO_HL); follow = TRUE; break;
|
||||||
case Relation_VtoO: router = Hierarchy::find(VTOORELROUTETO_HL); follow = TRUE; break;
|
case Relation_VtoO: router = Hierarchy::find(VTOORELROUTETO_HL); follow = TRUE; break;
|
||||||
|
@ -697,7 +710,7 @@ void RTRelations::compile_relation_records(void) {
|
||||||
Produce::down(Emit::tree());
|
Produce::down(Emit::tree());
|
||||||
Produce::inv_primitive(Emit::tree(), INDIRECT4_BIP);
|
Produce::inv_primitive(Emit::tree(), INDIRECT4_BIP);
|
||||||
Produce::down(Emit::tree());
|
Produce::down(Emit::tree());
|
||||||
Produce::val_iname(Emit::tree(), K_value, BinaryPredicates::handler_iname(dbp));
|
Produce::val_iname(Emit::tree(), K_value, RTRelations::handler_iname(dbp));
|
||||||
Produce::val_symbol(Emit::tree(), K_value, rr_s);
|
Produce::val_symbol(Emit::tree(), K_value, rr_s);
|
||||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(RELS_TEST_HL));
|
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(RELS_TEST_HL));
|
||||||
if (t == 0) {
|
if (t == 0) {
|
||||||
|
@ -797,7 +810,7 @@ void RTRelations::compile_relation_records(void) {
|
||||||
Produce::down(Emit::tree());
|
Produce::down(Emit::tree());
|
||||||
Produce::inv_primitive(Emit::tree(), INDIRECT4_BIP);
|
Produce::inv_primitive(Emit::tree(), INDIRECT4_BIP);
|
||||||
Produce::down(Emit::tree());
|
Produce::down(Emit::tree());
|
||||||
Produce::val_iname(Emit::tree(), K_value, BinaryPredicates::handler_iname(dbp));
|
Produce::val_iname(Emit::tree(), K_value, RTRelations::handler_iname(dbp));
|
||||||
Produce::val_symbol(Emit::tree(), K_value, rr_s);
|
Produce::val_symbol(Emit::tree(), K_value, rr_s);
|
||||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(RELS_TEST_HL));
|
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(RELS_TEST_HL));
|
||||||
if (t == 0) {
|
if (t == 0) {
|
||||||
|
@ -840,7 +853,7 @@ void RTRelations::compile_relation_records(void) {
|
||||||
Produce::down(Emit::tree());
|
Produce::down(Emit::tree());
|
||||||
Produce::inv_primitive(Emit::tree(), INDIRECT4_BIP);
|
Produce::inv_primitive(Emit::tree(), INDIRECT4_BIP);
|
||||||
Produce::down(Emit::tree());
|
Produce::down(Emit::tree());
|
||||||
Produce::val_iname(Emit::tree(), K_value, BinaryPredicates::handler_iname(dbp));
|
Produce::val_iname(Emit::tree(), K_value, RTRelations::handler_iname(dbp));
|
||||||
Produce::val_symbol(Emit::tree(), K_value, rr_s);
|
Produce::val_symbol(Emit::tree(), K_value, rr_s);
|
||||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(RELS_TEST_HL));
|
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(RELS_TEST_HL));
|
||||||
Produce::val_symbol(Emit::tree(), K_value, Z1_s);
|
Produce::val_symbol(Emit::tree(), K_value, Z1_s);
|
||||||
|
@ -990,8 +1003,9 @@ void RTRelations::compile_vtov_storage(binary_predicate *bp) {
|
||||||
@<Allocate a zeroed-out memory cache for relations with fast route-finding@>;
|
@<Allocate a zeroed-out memory cache for relations with fast route-finding@>;
|
||||||
|
|
||||||
package_request *P = BinaryPredicates::package(bp);
|
package_request *P = BinaryPredicates::package(bp);
|
||||||
bp->v2v_bitmap_iname = Hierarchy::make_iname_in(BITMAP_HL, P);
|
explicit_bp_data *ED = RETRIEVE_POINTER_explicit_bp_data(bp->family_specific);
|
||||||
packaging_state save = Emit::named_array_begin(bp->v2v_bitmap_iname, K_value);
|
ED->v2v_bitmap_iname = Hierarchy::make_iname_in(BITMAP_HL, P);
|
||||||
|
packaging_state save = Emit::named_array_begin(ED->v2v_bitmap_iname, K_value);
|
||||||
@<Compile header information in the V-to-V structure@>;
|
@<Compile header information in the V-to-V structure@>;
|
||||||
|
|
||||||
if ((left_count > 0) && (right_count > 0))
|
if ((left_count > 0) && (right_count > 0))
|
||||||
|
@ -1241,12 +1255,12 @@ $$ p(P) = 12, p(S) = 23, p(R) = 25, p(D) = 26, p(O) = 31. $$
|
||||||
=
|
=
|
||||||
void RTRelations::equivalence_relation_make_singleton_partitions(binary_predicate *bp,
|
void RTRelations::equivalence_relation_make_singleton_partitions(binary_predicate *bp,
|
||||||
int domain_size) {
|
int domain_size) {
|
||||||
if (bp->form_of_relation != Relation_Equiv)
|
if (Relations::Explicit::get_form_of_relation(bp) != Relation_Equiv)
|
||||||
internal_error("attempt to make partition for a non-equivalence relation");
|
internal_error("attempt to make partition for a non-equivalence relation");
|
||||||
equivalence_bp_data *D = RETRIEVE_POINTER_equivalence_bp_data(bp->family_specific);
|
explicit_bp_data *D = RETRIEVE_POINTER_explicit_bp_data(bp->family_specific);
|
||||||
int *partition_array = Memory::calloc(domain_size, sizeof(int), PARTITION_MREASON);
|
int *partition_array = Memory::calloc(domain_size, sizeof(int), PARTITION_MREASON);
|
||||||
for (int i=0; i<domain_size; i++) partition_array[i] = i+1;
|
for (int i=0; i<domain_size; i++) partition_array[i] = i+1;
|
||||||
D->equivalence_partition = partition_array;
|
D->equiv_data->equivalence_partition = partition_array;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ The A-parser has meanwhile been reading in facts about the helping relation:
|
@ The A-parser has meanwhile been reading in facts about the helping relation:
|
||||||
|
@ -1282,11 +1296,11 @@ users to set up these relations in a stylistically poor way.
|
||||||
=
|
=
|
||||||
void RTRelations::equivalence_relation_merge_classes(binary_predicate *bp,
|
void RTRelations::equivalence_relation_merge_classes(binary_predicate *bp,
|
||||||
int domain_size, int ix1, int ix2) {
|
int domain_size, int ix1, int ix2) {
|
||||||
if (bp->form_of_relation != Relation_Equiv)
|
if (Relations::Explicit::get_form_of_relation(bp) != Relation_Equiv)
|
||||||
internal_error("attempt to merge classes for a non-equivalence relation");
|
internal_error("attempt to merge classes for a non-equivalence relation");
|
||||||
equivalence_bp_data *D = RETRIEVE_POINTER_equivalence_bp_data(bp->family_specific);
|
explicit_bp_data *D = RETRIEVE_POINTER_explicit_bp_data(bp->family_specific);
|
||||||
if (bp->right_way_round == FALSE) bp = bp->reversal;
|
if (bp->right_way_round == FALSE) bp = bp->reversal;
|
||||||
int *partition_array = D->equivalence_partition;;
|
int *partition_array = D->equiv_data->equivalence_partition;;
|
||||||
if (partition_array == NULL)
|
if (partition_array == NULL)
|
||||||
internal_error("attempt to use null equivalence partition array");
|
internal_error("attempt to use null equivalence partition array");
|
||||||
int little, big; /* or, The Fairies' Parliament */
|
int little, big; /* or, The Fairies' Parliament */
|
||||||
|
@ -1325,17 +1339,18 @@ void RTRelations::equivalence_relation_add_properties(binary_predicate *bp) {
|
||||||
@<Set the partition number property@> =
|
@<Set the partition number property@> =
|
||||||
parse_node *val = Rvalues::from_int(
|
parse_node *val = Rvalues::from_int(
|
||||||
RTRelations::equivalence_relation_get_class(bp, infs->allocation_id), EMPTY_WORDING);
|
RTRelations::equivalence_relation_get_class(bp, infs->allocation_id), EMPTY_WORDING);
|
||||||
Properties::Valued::assert(bp->i6_storage_property, infs, val, CERTAIN_CE);
|
Properties::Valued::assert(Relations::Explicit::get_i6_storage_property(bp),
|
||||||
|
infs, val, CERTAIN_CE);
|
||||||
|
|
||||||
@ Where:
|
@ Where:
|
||||||
|
|
||||||
=
|
=
|
||||||
int RTRelations::equivalence_relation_get_class(binary_predicate *bp, int ix) {
|
int RTRelations::equivalence_relation_get_class(binary_predicate *bp, int ix) {
|
||||||
if (bp->form_of_relation != Relation_Equiv)
|
if (Relations::Explicit::get_form_of_relation(bp) != Relation_Equiv)
|
||||||
internal_error("attempt to merge classes for a non-equivalence relation");
|
internal_error("attempt to merge classes for a non-equivalence relation");
|
||||||
if (bp->right_way_round == FALSE) bp = bp->reversal;
|
if (bp->right_way_round == FALSE) bp = bp->reversal;
|
||||||
equivalence_bp_data *D = RETRIEVE_POINTER_equivalence_bp_data(bp->family_specific);
|
explicit_bp_data *D = RETRIEVE_POINTER_explicit_bp_data(bp->family_specific);
|
||||||
int *partition_array = D->equivalence_partition;;
|
int *partition_array = D->equiv_data->equivalence_partition;;
|
||||||
if (partition_array == NULL)
|
if (partition_array == NULL)
|
||||||
internal_error("attempt to use null equivalence partition array");
|
internal_error("attempt to use null equivalence partition array");
|
||||||
return partition_array[ix];
|
return partition_array[ix];
|
||||||
|
@ -1379,7 +1394,7 @@ void RTRelations::compile_defined_relations(void) {
|
||||||
RTRelations::compile_relation_records();
|
RTRelations::compile_relation_records();
|
||||||
binary_predicate *bp;
|
binary_predicate *bp;
|
||||||
LOOP_OVER(bp, binary_predicate)
|
LOOP_OVER(bp, binary_predicate)
|
||||||
if ((bp->form_of_relation == Relation_ByRoutine) && (bp->right_way_round)) {
|
if ((bp->relation_family == by_routine_bp_family) && (bp->right_way_round)) {
|
||||||
current_sentence = bp->bp_created_at;
|
current_sentence = bp->bp_created_at;
|
||||||
TEMPORARY_TEXT(C)
|
TEMPORARY_TEXT(C)
|
||||||
WRITE_TO(C, "Routine to decide if %S(t_0, t_1)", BinaryPredicates::get_log_name(bp));
|
WRITE_TO(C, "Routine to decide if %S(t_0, t_1)", BinaryPredicates::get_log_name(bp));
|
||||||
|
|
|
@ -64,7 +64,6 @@ and "inside" the wrong way round.
|
||||||
=
|
=
|
||||||
typedef struct binary_predicate {
|
typedef struct binary_predicate {
|
||||||
struct bp_family *relation_family;
|
struct bp_family *relation_family;
|
||||||
int form_of_relation; /* one of the |Relation_*| constants defined below */
|
|
||||||
struct word_assemblage relation_name; /* (which might have length 0) */
|
struct word_assemblage relation_name; /* (which might have length 0) */
|
||||||
struct parse_node *bp_created_at; /* where declared in the source text */
|
struct parse_node *bp_created_at; /* where declared in the source text */
|
||||||
struct text_stream *debugging_log_name; /* used when printing propositions to the debug log */
|
struct text_stream *debugging_log_name; /* used when printing propositions to the debug log */
|
||||||
|
@ -73,7 +72,6 @@ typedef struct binary_predicate {
|
||||||
struct package_request *bp_package;
|
struct package_request *bp_package;
|
||||||
struct inter_name *bp_iname; /* when referred to as a constant */
|
struct inter_name *bp_iname; /* when referred to as a constant */
|
||||||
struct inter_name *handler_iname;
|
struct inter_name *handler_iname;
|
||||||
struct inter_name *v2v_bitmap_iname; /* only relevant for some relations */
|
|
||||||
struct inter_name *initialiser_iname; /* if stored in dynamically allocated memory */
|
struct inter_name *initialiser_iname; /* if stored in dynamically allocated memory */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -91,10 +89,6 @@ typedef struct binary_predicate {
|
||||||
|
|
||||||
/* for optimisation of run-time code: */
|
/* for optimisation of run-time code: */
|
||||||
int dynamic_memory; /* stored in dynamically allocated memory */
|
int dynamic_memory; /* stored in dynamically allocated memory */
|
||||||
#ifdef CORE_MODULE
|
|
||||||
struct property *i6_storage_property; /* provides run-time storage */
|
|
||||||
#endif
|
|
||||||
struct kind *storage_kindXXX; /* kind of property owner */
|
|
||||||
int allow_function_simplification; /* allow Inform to make use of any $f_i$ functions? */
|
int allow_function_simplification; /* allow Inform to make use of any $f_i$ functions? */
|
||||||
int fast_route_finding; /* use fast rather than slow route-finding algorithm? */
|
int fast_route_finding; /* use fast rather than slow route-finding algorithm? */
|
||||||
char *loop_parent_optimisation_proviso; /* if not NULL, optimise loops using object tree */
|
char *loop_parent_optimisation_proviso; /* if not NULL, optimise loops using object tree */
|
||||||
|
@ -107,24 +101,6 @@ typedef struct binary_predicate {
|
||||||
CLASS_DEFINITION
|
CLASS_DEFINITION
|
||||||
} binary_predicate;
|
} binary_predicate;
|
||||||
|
|
||||||
@ The following constants are used to identify the "form" of a BP (in that the
|
|
||||||
|form_of_relation| field of any BP always equals one of these and never changes).
|
|
||||||
These constant names (and values) exactly match a set of constants compiled
|
|
||||||
into every I6 program created by Inform, so they can be used freely both in
|
|
||||||
the Inform source code and also in the I6 template layer.
|
|
||||||
|
|
||||||
@d Relation_Implicit -1 /* all implicit BPs have this form, and all others are explicit */
|
|
||||||
|
|
||||||
@d Relation_OtoO 1 /* one to one: "R relates one K to one K" */
|
|
||||||
@d Relation_OtoV 2 /* one to various: "R relates one K to various K" */
|
|
||||||
@d Relation_VtoO 3 /* various to one: "R relates various K to one K" */
|
|
||||||
@d Relation_VtoV 4 /* various to various: "R relates various K to various K" */
|
|
||||||
@d Relation_Sym_OtoO 5 /* symmetric one to one: "R relates one K to another" */
|
|
||||||
@d Relation_Sym_VtoV 6 /* symmetric various to various: "R relates K to each other" */
|
|
||||||
@d Relation_Equiv 7 /* equivalence relation: "R relates K to each other in groups" */
|
|
||||||
|
|
||||||
@d Relation_ByRoutine 8 /* relation tested by a routine: "R relates K to L when (some condition)" */
|
|
||||||
|
|
||||||
@ That completes the catalogue of the one-off cases, and we can move on
|
@ That completes the catalogue of the one-off cases, and we can move on
|
||||||
to the five families of implicit relations which correspond to other
|
to the five families of implicit relations which correspond to other
|
||||||
structures in the source text.
|
structures in the source text.
|
||||||
|
@ -257,27 +233,6 @@ binary_predicate *BinaryPredicates::make_pair(bp_family *family,
|
||||||
return bp;
|
return bp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ When the source text declares new relations, it turns out to be convenient
|
|
||||||
to make their BPs in a two-stage process: to make sketchy, mostly-blank BP
|
|
||||||
structures for them early on -- but getting their names registered -- and
|
|
||||||
then fill in the correct details later. This is where such sketchy pairs are
|
|
||||||
made:
|
|
||||||
|
|
||||||
=
|
|
||||||
binary_predicate *BinaryPredicates::make_pair_sketchily(bp_family *family,
|
|
||||||
word_assemblage wa, int f) {
|
|
||||||
TEMPORARY_TEXT(relname)
|
|
||||||
WRITE_TO(relname, "%V", WordAssemblages::first_word(&wa));
|
|
||||||
binary_predicate *bp =
|
|
||||||
BinaryPredicates::make_pair(family,
|
|
||||||
BPTerms::new(NULL), BPTerms::new(NULL),
|
|
||||||
relname, NULL, NULL, NULL, wa);
|
|
||||||
DISCARD_TEXT(relname)
|
|
||||||
bp->form_of_relation = f;
|
|
||||||
bp->reversal->form_of_relation = f;
|
|
||||||
return bp;
|
|
||||||
}
|
|
||||||
|
|
||||||
@h BP construction.
|
@h BP construction.
|
||||||
The following routine should only ever be called from the two above: provided
|
The following routine should only ever be called from the two above: provided
|
||||||
we stick to that, we ensure the golden rule that {\it every BP has a reversal
|
we stick to that, we ensure the golden rule that {\it every BP has a reversal
|
||||||
|
@ -296,7 +251,6 @@ binary_predicate *BinaryPredicates::make_single(bp_family *family,
|
||||||
i6_schema *mtf, i6_schema *tf, word_assemblage rn) {
|
i6_schema *mtf, i6_schema *tf, word_assemblage rn) {
|
||||||
binary_predicate *bp = CREATE(binary_predicate);
|
binary_predicate *bp = CREATE(binary_predicate);
|
||||||
bp->relation_family = family;
|
bp->relation_family = family;
|
||||||
bp->form_of_relation = Relation_Implicit;
|
|
||||||
bp->relation_name = rn;
|
bp->relation_name = rn;
|
||||||
bp->bp_created_at = current_sentence;
|
bp->bp_created_at = current_sentence;
|
||||||
bp->debugging_log_name = Str::duplicate(name);
|
bp->debugging_log_name = Str::duplicate(name);
|
||||||
|
@ -305,7 +259,6 @@ binary_predicate *BinaryPredicates::make_single(bp_family *family,
|
||||||
bp->bp_package = NULL;
|
bp->bp_package = NULL;
|
||||||
bp->bp_iname = NULL;
|
bp->bp_iname = NULL;
|
||||||
bp->handler_iname = NULL;
|
bp->handler_iname = NULL;
|
||||||
bp->v2v_bitmap_iname = NULL;
|
|
||||||
bp->initialiser_iname = NULL;
|
bp->initialiser_iname = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -331,10 +284,6 @@ binary_predicate *BinaryPredicates::make_single(bp_family *family,
|
||||||
|
|
||||||
/* for optimisation of run-time code */
|
/* for optimisation of run-time code */
|
||||||
bp->dynamic_memory = FALSE;
|
bp->dynamic_memory = FALSE;
|
||||||
#ifdef CORE_MODULE
|
|
||||||
bp->i6_storage_property = NULL;
|
|
||||||
#endif
|
|
||||||
// bp->storage_kind = NULL;
|
|
||||||
bp->allow_function_simplification = TRUE;
|
bp->allow_function_simplification = TRUE;
|
||||||
bp->fast_route_finding = FALSE;
|
bp->fast_route_finding = FALSE;
|
||||||
bp->loop_parent_optimisation_proviso = NULL;
|
bp->loop_parent_optimisation_proviso = NULL;
|
||||||
|
@ -385,18 +334,20 @@ void BinaryPredicates::log_term_details(bp_term_details *bptd, int i) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinaryPredicates::log(binary_predicate *bp) {
|
void BinaryPredicates::log(binary_predicate *bp) {
|
||||||
int i;
|
|
||||||
if (bp == NULL) { LOG("<null-BP>\n"); return; }
|
if (bp == NULL) { LOG("<null-BP>\n"); return; }
|
||||||
|
#ifdef CORE_MODULE
|
||||||
LOG("BP%d <%S> - %s way round - %s\n",
|
LOG("BP%d <%S> - %s way round - %s\n",
|
||||||
bp->allocation_id, bp->debugging_log_name, bp->right_way_round?"right":"wrong",
|
bp->allocation_id, bp->debugging_log_name, bp->right_way_round?"right":"wrong",
|
||||||
BinaryPredicates::form_to_text(bp));
|
Relations::Explicit::form_to_text(bp));
|
||||||
for (i=0; i<2; i++) BinaryPredicates::log_term_details(&bp->term_details[i], i);
|
#endif
|
||||||
|
#ifndef CORE_MODULE
|
||||||
|
LOG("BP%d <%S> - %s way round\n",
|
||||||
|
bp->allocation_id, bp->debugging_log_name, bp->right_way_round?"right":"wrong");
|
||||||
|
#endif
|
||||||
|
for (int i=0; i<2; i++) BinaryPredicates::log_term_details(&bp->term_details[i], i);
|
||||||
LOG(" test: $i\n", bp->task_functions[TEST_ATOM_TASK]);
|
LOG(" test: $i\n", bp->task_functions[TEST_ATOM_TASK]);
|
||||||
LOG(" make true: $i\n", bp->task_functions[NOW_ATOM_TRUE_TASK]);
|
LOG(" make true: $i\n", bp->task_functions[NOW_ATOM_TRUE_TASK]);
|
||||||
LOG(" make false: $i\n", bp->task_functions[NOW_ATOM_FALSE_TASK]);
|
LOG(" make false: $i\n", bp->task_functions[NOW_ATOM_FALSE_TASK]);
|
||||||
#ifdef CORE_MODULE
|
|
||||||
LOG(" storage property: $Y\n", bp->i6_storage_property);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@h Relation names.
|
@h Relation names.
|
||||||
|
@ -423,30 +374,6 @@ text_stream *BinaryPredicates::get_log_name(binary_predicate *bp) {
|
||||||
@h Miscellaneous access routines.
|
@h Miscellaneous access routines.
|
||||||
|
|
||||||
=
|
=
|
||||||
int BinaryPredicates::get_form_of_relation(binary_predicate *bp) {
|
|
||||||
return bp->form_of_relation;
|
|
||||||
}
|
|
||||||
int BinaryPredicates::is_explicit_with_runtime_storage(binary_predicate *bp) {
|
|
||||||
if (bp->right_way_round == FALSE) bp = bp->reversal;
|
|
||||||
if (bp->form_of_relation == Relation_Implicit) return FALSE;
|
|
||||||
if (bp->form_of_relation == Relation_ByRoutine) return FALSE;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
char *BinaryPredicates::form_to_text(binary_predicate *bp) {
|
|
||||||
switch(bp->form_of_relation) {
|
|
||||||
case Relation_Implicit: return "Relation_Implicit";
|
|
||||||
case Relation_OtoO: return "Relation_OtoO";
|
|
||||||
case Relation_OtoV: return "Relation_OtoV";
|
|
||||||
case Relation_VtoO: return "Relation_VtoO";
|
|
||||||
case Relation_VtoV: return "Relation_VtoV";
|
|
||||||
case Relation_Sym_OtoO: return "Relation_Sym_OtoO";
|
|
||||||
case Relation_Sym_VtoV: return "Relation_Sym_VtoV";
|
|
||||||
case Relation_Equiv: return "Relation_Equiv";
|
|
||||||
case Relation_ByRoutine: return "Relation_ByRoutine";
|
|
||||||
default: return "formless-BP";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
parse_node *BinaryPredicates::get_bp_created_at(binary_predicate *bp) {
|
parse_node *BinaryPredicates::get_bp_created_at(binary_predicate *bp) {
|
||||||
return bp->bp_created_at;
|
return bp->bp_created_at;
|
||||||
}
|
}
|
||||||
|
@ -508,11 +435,6 @@ TERM_DOMAIN_CALCULUS_TYPE *BinaryPredicates::as_subject(binary_predicate *bp) {
|
||||||
@ For use when optimising code.
|
@ For use when optimising code.
|
||||||
|
|
||||||
=
|
=
|
||||||
#ifdef CORE_MODULE
|
|
||||||
property *BinaryPredicates::get_i6_storage_property(binary_predicate *bp) {
|
|
||||||
return bp->i6_storage_property;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
int BinaryPredicates::allows_function_simplification(binary_predicate *bp) {
|
int BinaryPredicates::allows_function_simplification(binary_predicate *bp) {
|
||||||
return bp->allow_function_simplification;
|
return bp->allow_function_simplification;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue